Skip to content

Commit 3c86c7d

Browse files
committed
Picker table support (#293)
1 parent 09c8eec commit 3c86c7d

2 files changed

Lines changed: 48 additions & 6 deletions

File tree

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,54 @@
1-
import React from 'react';
1+
import React, { useEffect } from 'react';
2+
import { Picker as DHPicker } from '@deephaven/components';
23
import {
3-
Picker as DHPicker,
4-
PickerProps as DHPickerProps,
5-
} from '@deephaven/components';
4+
Picker as DHPickerJSApi,
5+
PickerProps as DHPickerJSApiProps,
6+
} from '@deephaven/jsapi-components';
7+
import type { Table } from '@deephaven/jsapi-types';
68
import { SerializedPickerEventProps, usePickerProps } from './usePickerProps';
79

8-
function Picker(props: DHPickerProps & SerializedPickerEventProps) {
10+
function Picker({
11+
children,
12+
...props
13+
}: DHPickerJSApiProps & SerializedPickerEventProps) {
914
const pickerProps = usePickerProps(props);
15+
const [table, setTable] = React.useState<Table | null>(null);
1016

17+
const maybeExportedObject = children?.props?.object;
18+
19+
useEffect(() => {
20+
if (maybeExportedObject == null) {
21+
return;
22+
}
23+
24+
let isMounted = true;
25+
async function load() {
26+
console.log('[TESTING] exportedTable:', maybeExportedObject);
27+
const reexportedTable = await maybeExportedObject.reexport();
28+
const newTable = await reexportedTable.fetch<Table>();
29+
30+
if (!isMounted) {
31+
return;
32+
}
33+
34+
setTable(newTable);
35+
}
36+
37+
load();
38+
39+
return () => {
40+
isMounted = false;
41+
};
42+
}, [maybeExportedObject]);
43+
44+
if (maybeExportedObject == null) {
45+
// eslint-disable-next-line react/jsx-props-no-spreading
46+
return <DHPicker {...pickerProps}>{children}</DHPicker>;
47+
}
48+
49+
const { children: _throwAway, ...restProps } = pickerProps;
1150
// eslint-disable-next-line react/jsx-props-no-spreading
12-
return <DHPicker {...pickerProps} />;
51+
return table && <DHPickerJSApi {...restProps} table={table} />;
1352
}
1453

1554
export default Picker;

plugins/ui/src/js/src/elements/usePickerProps.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import ObjectView from './ObjectView';
12
import {
23
SerializedFocusEventCallback,
34
useFocusEventCallback,
@@ -8,6 +9,8 @@ import {
89
} from './spectrum/useKeyboardEventCallback';
910

1011
export interface SerializedPickerEventProps {
12+
children: typeof ObjectView;
13+
1114
/** Handler that is called when the element receives focus. */
1215
onFocus?: SerializedFocusEventCallback;
1316

0 commit comments

Comments
 (0)