@bsol-oss/react-datatable5 7.3.2 → 7.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -2
- package/dist/index.js +61 -42
- package/dist/index.mjs +61 -42
- package/dist/types/components/DataTable/components/EmptyState.d.ts +0 -2
- package/dist/types/components/DataTable/context/DataTableContext.d.ts +1 -1
- package/dist/types/components/Form/SchemaFormContext.d.ts +0 -1
- package/dist/types/components/Form/useSchemaContext.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -372,7 +372,7 @@ interface DataTableContext<TData> {
|
|
|
372
372
|
setGlobalFilter: OnChangeFn<string>;
|
|
373
373
|
type: "client" | "server";
|
|
374
374
|
}
|
|
375
|
-
declare const DataTableContext: React$1.Context<DataTableContext<
|
|
375
|
+
declare const DataTableContext: React$1.Context<DataTableContext<unknown>>;
|
|
376
376
|
|
|
377
377
|
declare const useDataTableContext: <TData>() => DataTableContext<TData>;
|
|
378
378
|
|
|
@@ -389,7 +389,6 @@ declare const widthSanityCheck: <K extends unknown>(widthList: number[], ignoreL
|
|
|
389
389
|
declare const getColumns: <TData extends unknown>({ schema, ignore, width, meta, defaultWidth, }: GetColumnsConfigs<TData>) => ColumnDef<TData>[];
|
|
390
390
|
|
|
391
391
|
interface EmptyStateProps {
|
|
392
|
-
query: UseQueryResult;
|
|
393
392
|
title?: string;
|
|
394
393
|
description?: string;
|
|
395
394
|
}
|
package/dist/index.js
CHANGED
|
@@ -1509,7 +1509,7 @@ const EmptyState = ({ title = "No records", description = "Add a new events to g
|
|
|
1509
1509
|
};
|
|
1510
1510
|
|
|
1511
1511
|
const ErrorAlert = ({ showMessage = true }) => {
|
|
1512
|
-
const { query } =
|
|
1512
|
+
const { query } = useDataTableServerContext();
|
|
1513
1513
|
const { isError, error } = query;
|
|
1514
1514
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: isError && (jsxRuntime.jsxs(react.Alert.Root, { status: "error", children: [jsxRuntime.jsx(react.Alert.Indicator, {}), jsxRuntime.jsxs(react.Alert.Content, { children: [jsxRuntime.jsx(react.Alert.Title, { children: error.name }), showMessage && (jsxRuntime.jsx(react.Alert.Description, { children: error.message }))] })] })) }));
|
|
1515
1515
|
};
|
|
@@ -1568,7 +1568,6 @@ const SchemaFormContext = React.createContext({
|
|
|
1568
1568
|
order: [],
|
|
1569
1569
|
ignore: [],
|
|
1570
1570
|
onSubmit: async () => { },
|
|
1571
|
-
preLoadedValues: {},
|
|
1572
1571
|
rowNumber: 0,
|
|
1573
1572
|
displayText: {},
|
|
1574
1573
|
});
|
|
@@ -1652,12 +1651,12 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1652
1651
|
}
|
|
1653
1652
|
const { total, showing, close, typeToSearch, showMore } = displayText;
|
|
1654
1653
|
const { gridColumn, gridRow, title, renderDisplay } = schema.properties[column];
|
|
1655
|
-
const [selectedIds, setSelectedIds] = React.useState([]);
|
|
1656
1654
|
const [searchText, setSearchText] = React.useState();
|
|
1657
1655
|
const [limit, setLimit] = React.useState(10);
|
|
1658
1656
|
const [openSearchResult, setOpenSearchResult] = React.useState();
|
|
1659
1657
|
const [idMap, setIdMap] = React.useState({});
|
|
1660
1658
|
const ref = React.useRef(null);
|
|
1659
|
+
const selectedIds = watch(column) ?? [];
|
|
1661
1660
|
const query = reactQuery.useQuery({
|
|
1662
1661
|
queryKey: [`idpicker`, searchText, in_table, limit],
|
|
1663
1662
|
queryFn: async () => {
|
|
@@ -1668,10 +1667,24 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1668
1667
|
limit: limit,
|
|
1669
1668
|
});
|
|
1670
1669
|
},
|
|
1670
|
+
enabled: (searchText ?? "")?.length > 0,
|
|
1671
|
+
staleTime: 10000,
|
|
1672
|
+
});
|
|
1673
|
+
const idQuery = reactQuery.useQuery({
|
|
1674
|
+
queryKey: [`idpicker`, ...selectedIds],
|
|
1675
|
+
queryFn: async () => {
|
|
1676
|
+
return await getTableData({
|
|
1677
|
+
serverUrl,
|
|
1678
|
+
searching: searchText ?? "",
|
|
1679
|
+
in_table: in_table,
|
|
1680
|
+
limit: limit,
|
|
1681
|
+
});
|
|
1682
|
+
},
|
|
1683
|
+
enabled: (selectedIds ?? []).length > 0,
|
|
1671
1684
|
staleTime: 10000,
|
|
1672
1685
|
});
|
|
1673
1686
|
const { isLoading, isFetching, data, isPending, isError } = query;
|
|
1674
|
-
const dataList = data?.data ?? [];
|
|
1687
|
+
const dataList = React.useMemo(() => data?.data ?? [], [data]);
|
|
1675
1688
|
const count = data?.count ?? 0;
|
|
1676
1689
|
const isDirty = (searchText?.length ?? 0) > 0;
|
|
1677
1690
|
const onSearchChange = async (event) => {
|
|
@@ -1679,19 +1692,44 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1679
1692
|
setLimit(10);
|
|
1680
1693
|
};
|
|
1681
1694
|
const ids = (watch(column) ?? []);
|
|
1682
|
-
const newIdMap = React.useMemo(() =>
|
|
1695
|
+
const newIdMap = React.useMemo(() => {
|
|
1696
|
+
if (dataList === undefined)
|
|
1697
|
+
return;
|
|
1698
|
+
return Object.fromEntries(dataList.map((item) => {
|
|
1699
|
+
return [
|
|
1700
|
+
item[column_ref],
|
|
1701
|
+
{
|
|
1702
|
+
...item,
|
|
1703
|
+
},
|
|
1704
|
+
];
|
|
1705
|
+
}));
|
|
1706
|
+
}, [dataList, column_ref]);
|
|
1707
|
+
const existingIds = React.useMemo(() => Object.fromEntries((idQuery?.data ?? { data: [] }).data.map((item) => {
|
|
1683
1708
|
return [
|
|
1684
1709
|
item[column_ref],
|
|
1685
1710
|
{
|
|
1686
1711
|
...item,
|
|
1687
1712
|
},
|
|
1688
1713
|
];
|
|
1689
|
-
})), [
|
|
1714
|
+
})), [idQuery, column_ref]);
|
|
1715
|
+
const getPickedValue = () => {
|
|
1716
|
+
if (selectedIds.length <= 0) {
|
|
1717
|
+
return "";
|
|
1718
|
+
}
|
|
1719
|
+
if (Object.keys(idMap).length <= 0) {
|
|
1720
|
+
return "";
|
|
1721
|
+
}
|
|
1722
|
+
const record = idMap[selectedIds[0]];
|
|
1723
|
+
if (record === undefined) {
|
|
1724
|
+
return "";
|
|
1725
|
+
}
|
|
1726
|
+
return record[display_column];
|
|
1727
|
+
};
|
|
1690
1728
|
React.useEffect(() => {
|
|
1691
1729
|
setIdMap((state) => {
|
|
1692
|
-
return { ...state, ...newIdMap };
|
|
1730
|
+
return { ...state, ...newIdMap, ...existingIds };
|
|
1693
1731
|
});
|
|
1694
|
-
}, [newIdMap]);
|
|
1732
|
+
}, [newIdMap, existingIds]);
|
|
1695
1733
|
return (jsxRuntime.jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
1696
1734
|
gridRow, children: [isMultiple && (jsxRuntime.jsxs(react.Flex, { flexFlow: "wrap", gap: 1, children: [selectedIds.map((id) => {
|
|
1697
1735
|
const item = idMap[id];
|
|
@@ -1699,16 +1737,15 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1699
1737
|
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: "undefined" });
|
|
1700
1738
|
}
|
|
1701
1739
|
return (jsxRuntime.jsx(Tag, { closable: true, onClick: () => {
|
|
1702
|
-
setSelectedIds((state) => state.filter((id) => id != item[column_ref]));
|
|
1703
1740
|
setValue(column, ids.filter((id) => id != item[column_ref]));
|
|
1704
1741
|
}, children: !!renderDisplay === true
|
|
1705
1742
|
? renderDisplay(item)
|
|
1706
1743
|
: item[display_column] }));
|
|
1707
1744
|
}), jsxRuntime.jsx(Tag, { cursor: "pointer", onClick: () => {
|
|
1708
1745
|
setOpenSearchResult(true);
|
|
1709
|
-
}, children: "Add" })] })), !isMultiple && (jsxRuntime.jsx(Button, { variant: "outline", onClick: (
|
|
1746
|
+
}, children: "Add" })] })), !isMultiple && (jsxRuntime.jsx(Button, { variant: "outline", onClick: () => {
|
|
1710
1747
|
setOpenSearchResult(true);
|
|
1711
|
-
}, children:
|
|
1748
|
+
}, children: getPickedValue() })), jsxRuntime.jsxs(PopoverRoot, { open: openSearchResult, onOpenChange: (e) => setOpenSearchResult(e.open), closeOnInteractOutside: true, initialFocusEl: () => ref.current, positioning: { placement: "bottom-start" }, children: [jsxRuntime.jsx(PopoverTrigger, {}), jsxRuntime.jsx(PopoverContent, { children: jsxRuntime.jsxs(PopoverBody, { children: [jsxRuntime.jsx(react.Input, { placeholder: typeToSearch, onChange: (event) => {
|
|
1712
1749
|
onSearchChange(event);
|
|
1713
1750
|
setOpenSearchResult(true);
|
|
1714
1751
|
}, autoComplete: "off", ref: ref }), jsxRuntime.jsx(PopoverTitle, {}), jsxRuntime.jsxs(react.Grid, { gridTemplateColumns: "repeat(auto-fit, minmax(15rem, 1fr))", overflow: "auto", maxHeight: "50vh", children: [isFetching && jsxRuntime.jsx(jsxRuntime.Fragment, { children: "isFetching" }), isLoading && jsxRuntime.jsx(jsxRuntime.Fragment, { children: "isLoading" }), isPending && jsxRuntime.jsx(jsxRuntime.Fragment, { children: "isPending" }), isError && jsxRuntime.jsx(jsxRuntime.Fragment, { children: "isError" }), jsxRuntime.jsx(react.Text, { children: `${total ?? "Total"} ${count}, ${showing ?? "Showing"} ${limit}` }), jsxRuntime.jsx(Button, { onClick: async () => {
|
|
@@ -1720,7 +1757,6 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1720
1757
|
return (jsxRuntime.jsx(react.Box, { cursor: "pointer", onClick: () => {
|
|
1721
1758
|
if (!isMultiple) {
|
|
1722
1759
|
setOpenSearchResult(false);
|
|
1723
|
-
setSelectedIds(() => [item[column_ref]]);
|
|
1724
1760
|
setValue(column, [item[column_ref]]);
|
|
1725
1761
|
return;
|
|
1726
1762
|
}
|
|
@@ -1728,7 +1764,6 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1728
1764
|
...(ids ?? []),
|
|
1729
1765
|
item[column_ref],
|
|
1730
1766
|
]);
|
|
1731
|
-
setSelectedIds(() => [...newSet]);
|
|
1732
1767
|
setValue(column, [...newSet]);
|
|
1733
1768
|
}, opacity: 0.7, _hover: { opacity: 1 }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true
|
|
1734
1769
|
? renderDisplay(item)
|
|
@@ -1844,21 +1879,18 @@ const AccordionRoot = react.Accordion.Root;
|
|
|
1844
1879
|
const AccordionItem = react.Accordion.Item;
|
|
1845
1880
|
|
|
1846
1881
|
const BooleanPicker = ({ column }) => {
|
|
1847
|
-
const { formState: { errors }, setValue, getValues, } = reactHookForm.useFormContext();
|
|
1882
|
+
const { watch, formState: { errors }, setValue, getValues, } = reactHookForm.useFormContext();
|
|
1848
1883
|
const { schema, displayText } = useSchemaContext();
|
|
1849
1884
|
const { fieldRequired } = displayText;
|
|
1850
1885
|
const { required } = schema;
|
|
1851
1886
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
1887
|
+
const value = watch(column);
|
|
1852
1888
|
if (schema.properties == undefined) {
|
|
1853
1889
|
throw new Error("schema properties when using BooleanPicker");
|
|
1854
1890
|
}
|
|
1855
1891
|
const { gridColumn, gridRow, title } = schema.properties[column];
|
|
1856
1892
|
return (jsxRuntime.jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
1857
|
-
gridRow, children: [jsxRuntime.jsx(CheckboxCard
|
|
1858
|
-
// label={snakeToLabel(column)}
|
|
1859
|
-
, {
|
|
1860
|
-
// label={snakeToLabel(column)}
|
|
1861
|
-
value: getValues(column), variant: "surface", onSelect: () => {
|
|
1893
|
+
gridRow, children: [jsxRuntime.jsx(CheckboxCard, { checked: value, variant: "surface", onSelect: () => {
|
|
1862
1894
|
setValue(column, !getValues(column));
|
|
1863
1895
|
} }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
1864
1896
|
};
|
|
@@ -1933,22 +1965,21 @@ let DatePicker$1 = class DatePicker extends React.Component {
|
|
|
1933
1965
|
};
|
|
1934
1966
|
|
|
1935
1967
|
const DatePicker = ({ column }) => {
|
|
1936
|
-
const { formState: { errors }, setValue,
|
|
1968
|
+
const { watch, formState: { errors }, setValue, } = reactHookForm.useFormContext();
|
|
1937
1969
|
const { schema, displayText } = useSchemaContext();
|
|
1938
1970
|
const { fieldRequired } = displayText;
|
|
1939
1971
|
const { required } = schema;
|
|
1940
1972
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
1941
1973
|
const [open, setOpen] = React.useState(false);
|
|
1974
|
+
const selectedDate = watch(column);
|
|
1942
1975
|
if (schema.properties == undefined) {
|
|
1943
1976
|
throw new Error("schema properties when using DatePicker");
|
|
1944
1977
|
}
|
|
1945
1978
|
const { gridColumn, gridRow, title } = schema.properties[column];
|
|
1946
1979
|
return (jsxRuntime.jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
1947
|
-
gridRow, children: [jsxRuntime.jsxs(PopoverRoot, { open: open, onOpenChange: (e) => setOpen(e.open), closeOnInteractOutside: true,
|
|
1980
|
+
gridRow, children: [jsxRuntime.jsxs(PopoverRoot, { open: open, onOpenChange: (e) => setOpen(e.open), closeOnInteractOutside: true, children: [jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: jsxRuntime.jsx(Button, { size: "sm", variant: "outline", onClick: () => {
|
|
1948
1981
|
setOpen(true);
|
|
1949
|
-
}, children:
|
|
1950
|
-
? dayjs(getValues(column)).format("YYYY-MM-DD")
|
|
1951
|
-
: "" }) }), jsxRuntime.jsx(PopoverContent, { width: "auto", children: jsxRuntime.jsxs(PopoverBody, { children: [jsxRuntime.jsx(PopoverTitle, {}), jsxRuntime.jsx(DatePicker$1, { selected: new Date(getValues(column)), onDateSelected: ({ selected, selectable, date }) => {
|
|
1982
|
+
}, children: selectedDate !== undefined ? selectedDate : "" }) }), jsxRuntime.jsx(PopoverContent, { children: jsxRuntime.jsxs(PopoverBody, { children: [jsxRuntime.jsx(PopoverTitle, {}), jsxRuntime.jsx(DatePicker$1, { selected: new Date(selectedDate), onDateSelected: ({ selected, selectable, date }) => {
|
|
1952
1983
|
setValue(column, dayjs(date).format("YYYY-MM-DD"));
|
|
1953
1984
|
setOpen(false);
|
|
1954
1985
|
} })] }) })] }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
@@ -2180,7 +2211,7 @@ const FilePicker = ({ column }) => {
|
|
|
2180
2211
|
|
|
2181
2212
|
const EnumPicker = ({ column, isMultiple = false }) => {
|
|
2182
2213
|
const { watch, formState: { errors }, setValue, } = reactHookForm.useFormContext();
|
|
2183
|
-
const { schema,
|
|
2214
|
+
const { schema, displayText } = useSchemaContext();
|
|
2184
2215
|
const { fieldRequired } = displayText;
|
|
2185
2216
|
const { required } = schema;
|
|
2186
2217
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
@@ -2188,7 +2219,6 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2188
2219
|
throw new Error("schema properties when using DatePicker");
|
|
2189
2220
|
}
|
|
2190
2221
|
const { gridColumn, gridRow, title, renderDisplay } = schema.properties[column];
|
|
2191
|
-
const [selectedEnums, setSelectedEnums] = React.useState([]);
|
|
2192
2222
|
const [searchText, setSearchText] = React.useState();
|
|
2193
2223
|
const [limit, setLimit] = React.useState(10);
|
|
2194
2224
|
const [openSearchResult, setOpenSearchResult] = React.useState();
|
|
@@ -2203,7 +2233,7 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2203
2233
|
setLimit(10);
|
|
2204
2234
|
};
|
|
2205
2235
|
return (jsxRuntime.jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
2206
|
-
gridRow, children: [isMultiple && (jsxRuntime.jsxs(react.Flex, { flexFlow: "wrap", gap: 1, children: [
|
|
2236
|
+
gridRow, children: [isMultiple && (jsxRuntime.jsxs(react.Flex, { flexFlow: "wrap", gap: 1, children: [watchEnums.map((enumValue) => {
|
|
2207
2237
|
const item = enumValue;
|
|
2208
2238
|
if (item === undefined) {
|
|
2209
2239
|
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: "undefined" });
|
|
@@ -2214,9 +2244,9 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2214
2244
|
}, children: !!renderDisplay === true ? renderDisplay(item) : item }));
|
|
2215
2245
|
}), jsxRuntime.jsx(Tag, { cursor: "pointer", onClick: () => {
|
|
2216
2246
|
setOpenSearchResult(true);
|
|
2217
|
-
}, children: "Add" })] })), !isMultiple && (jsxRuntime.jsx(Button, { variant: "outline", onClick: (
|
|
2247
|
+
}, children: "Add" })] })), !isMultiple && (jsxRuntime.jsx(Button, { variant: "outline", onClick: () => {
|
|
2218
2248
|
setOpenSearchResult(true);
|
|
2219
|
-
}, children:
|
|
2249
|
+
}, children: watchEnums[0] })), jsxRuntime.jsxs(PopoverRoot, { open: openSearchResult, onOpenChange: (e) => setOpenSearchResult(e.open), closeOnInteractOutside: true, initialFocusEl: () => ref.current, positioning: { placement: "bottom-start" }, children: [jsxRuntime.jsx(PopoverTrigger, {}), jsxRuntime.jsx(PopoverContent, { children: jsxRuntime.jsxs(PopoverBody, { children: [jsxRuntime.jsx(react.Input, { placeholder: "Type to search", onChange: (event) => {
|
|
2220
2250
|
onSearchChange(event);
|
|
2221
2251
|
setOpenSearchResult(true);
|
|
2222
2252
|
}, autoComplete: "off", ref: ref }), jsxRuntime.jsx(PopoverTitle, {}), jsxRuntime.jsxs(react.Grid, { gridTemplateColumns: "repeat(auto-fit, minmax(15rem, 1fr))", overflow: "auto", maxHeight: "50vh", children: [jsxRuntime.jsx(react.Text, { children: `Search Result: ${count}, Showing ${limit}` }), jsxRuntime.jsx(Button, { onClick: async () => {
|
|
@@ -2226,12 +2256,10 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2226
2256
|
return (jsxRuntime.jsx(react.Box, { cursor: "pointer", onClick: () => {
|
|
2227
2257
|
if (!isMultiple) {
|
|
2228
2258
|
setOpenSearchResult(false);
|
|
2229
|
-
setSelectedEnums(() => [item]);
|
|
2230
2259
|
setValue(column, [item]);
|
|
2231
2260
|
return;
|
|
2232
2261
|
}
|
|
2233
2262
|
const newSet = new Set([...(watchEnums ?? []), item]);
|
|
2234
|
-
setSelectedEnums(() => [...newSet]);
|
|
2235
2263
|
setValue(column, [...newSet]);
|
|
2236
2264
|
}, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true ? renderDisplay(item) : item }, `${column}-${item}`));
|
|
2237
2265
|
}) }), isDirty && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [dataList.length <= 0 && jsxRuntime.jsx(jsxRuntime.Fragment, { children: "Empty Search Result" }), " "] }))] })] }) })] }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
@@ -2249,7 +2277,7 @@ const idPickerSanityCheck = (column, in_table, column_ref, display_column) => {
|
|
|
2249
2277
|
}
|
|
2250
2278
|
};
|
|
2251
2279
|
const FormInternal = () => {
|
|
2252
|
-
const { schema, serverUrl, displayText, order, ignore, onSubmit,
|
|
2280
|
+
const { schema, serverUrl, displayText, order, ignore, onSubmit, rowNumber } = useSchemaContext();
|
|
2253
2281
|
const { title, submit, empty, cancel, submitSuccess, submitAgain, confirm } = displayText;
|
|
2254
2282
|
const methods = reactHookForm.useFormContext();
|
|
2255
2283
|
const [isSuccess, setIsSuccess] = React.useState(false);
|
|
@@ -2328,14 +2356,6 @@ const FormInternal = () => {
|
|
|
2328
2356
|
value: value,
|
|
2329
2357
|
};
|
|
2330
2358
|
};
|
|
2331
|
-
React.useEffect(() => {
|
|
2332
|
-
const loadData = () => {
|
|
2333
|
-
Object.entries(preLoadedValues).map(([column, value]) => {
|
|
2334
|
-
methods.setValue(column, value);
|
|
2335
|
-
});
|
|
2336
|
-
};
|
|
2337
|
-
loadData();
|
|
2338
|
-
}, [preLoadedValues, methods]);
|
|
2339
2359
|
if (isSuccess) {
|
|
2340
2360
|
return (jsxRuntime.jsxs(react.Grid, { gap: 2, children: [jsxRuntime.jsx(react.Heading, { children: title ?? snakeToLabel(schema.title ?? "") }), jsxRuntime.jsxs(react.Alert.Root, { status: "success", children: [jsxRuntime.jsx(react.Alert.Indicator, {}), jsxRuntime.jsx(react.Alert.Title, { children: submitSuccess ?? "Data uploaded to the server. Fire on!" })] }), jsxRuntime.jsx(Button, { onClick: () => {
|
|
2341
2361
|
setIsError(false);
|
|
@@ -2478,7 +2498,7 @@ const FormInternal = () => {
|
|
|
2478
2498
|
};
|
|
2479
2499
|
const Form = ({ schema, serverUrl, order = [], ignore = [], onSubmit = undefined, preLoadedValues = {}, rowNumber = undefined, displayText = {}, }) => {
|
|
2480
2500
|
const queryClient = new reactQuery.QueryClient();
|
|
2481
|
-
const methods = reactHookForm.useForm();
|
|
2501
|
+
const methods = reactHookForm.useForm({ values: preLoadedValues });
|
|
2482
2502
|
const { properties } = schema;
|
|
2483
2503
|
idListSanityCheck("order", order, properties);
|
|
2484
2504
|
idListSanityCheck("ignore", ignore, properties);
|
|
@@ -2491,7 +2511,6 @@ const Form = ({ schema, serverUrl, order = [], ignore = [], onSubmit = undefined
|
|
|
2491
2511
|
ignore,
|
|
2492
2512
|
// @ts-expect-error TODO: find appropriate types
|
|
2493
2513
|
onSubmit,
|
|
2494
|
-
preLoadedValues,
|
|
2495
2514
|
rowNumber,
|
|
2496
2515
|
}, children: jsxRuntime.jsx(reactHookForm.FormProvider, { ...methods, children: jsxRuntime.jsx(FormInternal, {}) }) }) }));
|
|
2497
2516
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -1489,7 +1489,7 @@ const EmptyState = ({ title = "No records", description = "Add a new events to g
|
|
|
1489
1489
|
};
|
|
1490
1490
|
|
|
1491
1491
|
const ErrorAlert = ({ showMessage = true }) => {
|
|
1492
|
-
const { query } =
|
|
1492
|
+
const { query } = useDataTableServerContext();
|
|
1493
1493
|
const { isError, error } = query;
|
|
1494
1494
|
return (jsx(Fragment, { children: isError && (jsxs(Alert.Root, { status: "error", children: [jsx(Alert.Indicator, {}), jsxs(Alert.Content, { children: [jsx(Alert.Title, { children: error.name }), showMessage && (jsx(Alert.Description, { children: error.message }))] })] })) }));
|
|
1495
1495
|
};
|
|
@@ -1548,7 +1548,6 @@ const SchemaFormContext = createContext({
|
|
|
1548
1548
|
order: [],
|
|
1549
1549
|
ignore: [],
|
|
1550
1550
|
onSubmit: async () => { },
|
|
1551
|
-
preLoadedValues: {},
|
|
1552
1551
|
rowNumber: 0,
|
|
1553
1552
|
displayText: {},
|
|
1554
1553
|
});
|
|
@@ -1632,12 +1631,12 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1632
1631
|
}
|
|
1633
1632
|
const { total, showing, close, typeToSearch, showMore } = displayText;
|
|
1634
1633
|
const { gridColumn, gridRow, title, renderDisplay } = schema.properties[column];
|
|
1635
|
-
const [selectedIds, setSelectedIds] = useState([]);
|
|
1636
1634
|
const [searchText, setSearchText] = useState();
|
|
1637
1635
|
const [limit, setLimit] = useState(10);
|
|
1638
1636
|
const [openSearchResult, setOpenSearchResult] = useState();
|
|
1639
1637
|
const [idMap, setIdMap] = useState({});
|
|
1640
1638
|
const ref = useRef(null);
|
|
1639
|
+
const selectedIds = watch(column) ?? [];
|
|
1641
1640
|
const query = useQuery({
|
|
1642
1641
|
queryKey: [`idpicker`, searchText, in_table, limit],
|
|
1643
1642
|
queryFn: async () => {
|
|
@@ -1648,10 +1647,24 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1648
1647
|
limit: limit,
|
|
1649
1648
|
});
|
|
1650
1649
|
},
|
|
1650
|
+
enabled: (searchText ?? "")?.length > 0,
|
|
1651
|
+
staleTime: 10000,
|
|
1652
|
+
});
|
|
1653
|
+
const idQuery = useQuery({
|
|
1654
|
+
queryKey: [`idpicker`, ...selectedIds],
|
|
1655
|
+
queryFn: async () => {
|
|
1656
|
+
return await getTableData({
|
|
1657
|
+
serverUrl,
|
|
1658
|
+
searching: searchText ?? "",
|
|
1659
|
+
in_table: in_table,
|
|
1660
|
+
limit: limit,
|
|
1661
|
+
});
|
|
1662
|
+
},
|
|
1663
|
+
enabled: (selectedIds ?? []).length > 0,
|
|
1651
1664
|
staleTime: 10000,
|
|
1652
1665
|
});
|
|
1653
1666
|
const { isLoading, isFetching, data, isPending, isError } = query;
|
|
1654
|
-
const dataList = data?.data ?? [];
|
|
1667
|
+
const dataList = useMemo(() => data?.data ?? [], [data]);
|
|
1655
1668
|
const count = data?.count ?? 0;
|
|
1656
1669
|
const isDirty = (searchText?.length ?? 0) > 0;
|
|
1657
1670
|
const onSearchChange = async (event) => {
|
|
@@ -1659,19 +1672,44 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1659
1672
|
setLimit(10);
|
|
1660
1673
|
};
|
|
1661
1674
|
const ids = (watch(column) ?? []);
|
|
1662
|
-
const newIdMap = useMemo(() =>
|
|
1675
|
+
const newIdMap = useMemo(() => {
|
|
1676
|
+
if (dataList === undefined)
|
|
1677
|
+
return;
|
|
1678
|
+
return Object.fromEntries(dataList.map((item) => {
|
|
1679
|
+
return [
|
|
1680
|
+
item[column_ref],
|
|
1681
|
+
{
|
|
1682
|
+
...item,
|
|
1683
|
+
},
|
|
1684
|
+
];
|
|
1685
|
+
}));
|
|
1686
|
+
}, [dataList, column_ref]);
|
|
1687
|
+
const existingIds = useMemo(() => Object.fromEntries((idQuery?.data ?? { data: [] }).data.map((item) => {
|
|
1663
1688
|
return [
|
|
1664
1689
|
item[column_ref],
|
|
1665
1690
|
{
|
|
1666
1691
|
...item,
|
|
1667
1692
|
},
|
|
1668
1693
|
];
|
|
1669
|
-
})), [
|
|
1694
|
+
})), [idQuery, column_ref]);
|
|
1695
|
+
const getPickedValue = () => {
|
|
1696
|
+
if (selectedIds.length <= 0) {
|
|
1697
|
+
return "";
|
|
1698
|
+
}
|
|
1699
|
+
if (Object.keys(idMap).length <= 0) {
|
|
1700
|
+
return "";
|
|
1701
|
+
}
|
|
1702
|
+
const record = idMap[selectedIds[0]];
|
|
1703
|
+
if (record === undefined) {
|
|
1704
|
+
return "";
|
|
1705
|
+
}
|
|
1706
|
+
return record[display_column];
|
|
1707
|
+
};
|
|
1670
1708
|
useEffect(() => {
|
|
1671
1709
|
setIdMap((state) => {
|
|
1672
|
-
return { ...state, ...newIdMap };
|
|
1710
|
+
return { ...state, ...newIdMap, ...existingIds };
|
|
1673
1711
|
});
|
|
1674
|
-
}, [newIdMap]);
|
|
1712
|
+
}, [newIdMap, existingIds]);
|
|
1675
1713
|
return (jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
1676
1714
|
gridRow, children: [isMultiple && (jsxs(Flex, { flexFlow: "wrap", gap: 1, children: [selectedIds.map((id) => {
|
|
1677
1715
|
const item = idMap[id];
|
|
@@ -1679,16 +1717,15 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1679
1717
|
return jsx(Fragment, { children: "undefined" });
|
|
1680
1718
|
}
|
|
1681
1719
|
return (jsx(Tag, { closable: true, onClick: () => {
|
|
1682
|
-
setSelectedIds((state) => state.filter((id) => id != item[column_ref]));
|
|
1683
1720
|
setValue(column, ids.filter((id) => id != item[column_ref]));
|
|
1684
1721
|
}, children: !!renderDisplay === true
|
|
1685
1722
|
? renderDisplay(item)
|
|
1686
1723
|
: item[display_column] }));
|
|
1687
1724
|
}), jsx(Tag, { cursor: "pointer", onClick: () => {
|
|
1688
1725
|
setOpenSearchResult(true);
|
|
1689
|
-
}, children: "Add" })] })), !isMultiple && (jsx(Button, { variant: "outline", onClick: (
|
|
1726
|
+
}, children: "Add" })] })), !isMultiple && (jsx(Button, { variant: "outline", onClick: () => {
|
|
1690
1727
|
setOpenSearchResult(true);
|
|
1691
|
-
}, children:
|
|
1728
|
+
}, children: getPickedValue() })), jsxs(PopoverRoot, { open: openSearchResult, onOpenChange: (e) => setOpenSearchResult(e.open), closeOnInteractOutside: true, initialFocusEl: () => ref.current, positioning: { placement: "bottom-start" }, children: [jsx(PopoverTrigger, {}), jsx(PopoverContent, { children: jsxs(PopoverBody, { children: [jsx(Input, { placeholder: typeToSearch, onChange: (event) => {
|
|
1692
1729
|
onSearchChange(event);
|
|
1693
1730
|
setOpenSearchResult(true);
|
|
1694
1731
|
}, autoComplete: "off", ref: ref }), jsx(PopoverTitle, {}), jsxs(Grid, { gridTemplateColumns: "repeat(auto-fit, minmax(15rem, 1fr))", overflow: "auto", maxHeight: "50vh", children: [isFetching && jsx(Fragment, { children: "isFetching" }), isLoading && jsx(Fragment, { children: "isLoading" }), isPending && jsx(Fragment, { children: "isPending" }), isError && jsx(Fragment, { children: "isError" }), jsx(Text, { children: `${total ?? "Total"} ${count}, ${showing ?? "Showing"} ${limit}` }), jsx(Button, { onClick: async () => {
|
|
@@ -1700,7 +1737,6 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1700
1737
|
return (jsx(Box, { cursor: "pointer", onClick: () => {
|
|
1701
1738
|
if (!isMultiple) {
|
|
1702
1739
|
setOpenSearchResult(false);
|
|
1703
|
-
setSelectedIds(() => [item[column_ref]]);
|
|
1704
1740
|
setValue(column, [item[column_ref]]);
|
|
1705
1741
|
return;
|
|
1706
1742
|
}
|
|
@@ -1708,7 +1744,6 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1708
1744
|
...(ids ?? []),
|
|
1709
1745
|
item[column_ref],
|
|
1710
1746
|
]);
|
|
1711
|
-
setSelectedIds(() => [...newSet]);
|
|
1712
1747
|
setValue(column, [...newSet]);
|
|
1713
1748
|
}, opacity: 0.7, _hover: { opacity: 1 }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true
|
|
1714
1749
|
? renderDisplay(item)
|
|
@@ -1824,21 +1859,18 @@ const AccordionRoot = Accordion.Root;
|
|
|
1824
1859
|
const AccordionItem = Accordion.Item;
|
|
1825
1860
|
|
|
1826
1861
|
const BooleanPicker = ({ column }) => {
|
|
1827
|
-
const { formState: { errors }, setValue, getValues, } = useFormContext();
|
|
1862
|
+
const { watch, formState: { errors }, setValue, getValues, } = useFormContext();
|
|
1828
1863
|
const { schema, displayText } = useSchemaContext();
|
|
1829
1864
|
const { fieldRequired } = displayText;
|
|
1830
1865
|
const { required } = schema;
|
|
1831
1866
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
1867
|
+
const value = watch(column);
|
|
1832
1868
|
if (schema.properties == undefined) {
|
|
1833
1869
|
throw new Error("schema properties when using BooleanPicker");
|
|
1834
1870
|
}
|
|
1835
1871
|
const { gridColumn, gridRow, title } = schema.properties[column];
|
|
1836
1872
|
return (jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
1837
|
-
gridRow, children: [jsx(CheckboxCard
|
|
1838
|
-
// label={snakeToLabel(column)}
|
|
1839
|
-
, {
|
|
1840
|
-
// label={snakeToLabel(column)}
|
|
1841
|
-
value: getValues(column), variant: "surface", onSelect: () => {
|
|
1873
|
+
gridRow, children: [jsx(CheckboxCard, { checked: value, variant: "surface", onSelect: () => {
|
|
1842
1874
|
setValue(column, !getValues(column));
|
|
1843
1875
|
} }), errors[`${column}`] && (jsx(Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
1844
1876
|
};
|
|
@@ -1913,22 +1945,21 @@ let DatePicker$1 = class DatePicker extends React__default.Component {
|
|
|
1913
1945
|
};
|
|
1914
1946
|
|
|
1915
1947
|
const DatePicker = ({ column }) => {
|
|
1916
|
-
const { formState: { errors }, setValue,
|
|
1948
|
+
const { watch, formState: { errors }, setValue, } = useFormContext();
|
|
1917
1949
|
const { schema, displayText } = useSchemaContext();
|
|
1918
1950
|
const { fieldRequired } = displayText;
|
|
1919
1951
|
const { required } = schema;
|
|
1920
1952
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
1921
1953
|
const [open, setOpen] = useState(false);
|
|
1954
|
+
const selectedDate = watch(column);
|
|
1922
1955
|
if (schema.properties == undefined) {
|
|
1923
1956
|
throw new Error("schema properties when using DatePicker");
|
|
1924
1957
|
}
|
|
1925
1958
|
const { gridColumn, gridRow, title } = schema.properties[column];
|
|
1926
1959
|
return (jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
1927
|
-
gridRow, children: [jsxs(PopoverRoot, { open: open, onOpenChange: (e) => setOpen(e.open), closeOnInteractOutside: true,
|
|
1960
|
+
gridRow, children: [jsxs(PopoverRoot, { open: open, onOpenChange: (e) => setOpen(e.open), closeOnInteractOutside: true, children: [jsx(PopoverTrigger, { asChild: true, children: jsx(Button, { size: "sm", variant: "outline", onClick: () => {
|
|
1928
1961
|
setOpen(true);
|
|
1929
|
-
}, children:
|
|
1930
|
-
? dayjs(getValues(column)).format("YYYY-MM-DD")
|
|
1931
|
-
: "" }) }), jsx(PopoverContent, { width: "auto", children: jsxs(PopoverBody, { children: [jsx(PopoverTitle, {}), jsx(DatePicker$1, { selected: new Date(getValues(column)), onDateSelected: ({ selected, selectable, date }) => {
|
|
1962
|
+
}, children: selectedDate !== undefined ? selectedDate : "" }) }), jsx(PopoverContent, { children: jsxs(PopoverBody, { children: [jsx(PopoverTitle, {}), jsx(DatePicker$1, { selected: new Date(selectedDate), onDateSelected: ({ selected, selectable, date }) => {
|
|
1932
1963
|
setValue(column, dayjs(date).format("YYYY-MM-DD"));
|
|
1933
1964
|
setOpen(false);
|
|
1934
1965
|
} })] }) })] }), errors[`${column}`] && (jsx(Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
@@ -2160,7 +2191,7 @@ const FilePicker = ({ column }) => {
|
|
|
2160
2191
|
|
|
2161
2192
|
const EnumPicker = ({ column, isMultiple = false }) => {
|
|
2162
2193
|
const { watch, formState: { errors }, setValue, } = useFormContext();
|
|
2163
|
-
const { schema,
|
|
2194
|
+
const { schema, displayText } = useSchemaContext();
|
|
2164
2195
|
const { fieldRequired } = displayText;
|
|
2165
2196
|
const { required } = schema;
|
|
2166
2197
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
@@ -2168,7 +2199,6 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2168
2199
|
throw new Error("schema properties when using DatePicker");
|
|
2169
2200
|
}
|
|
2170
2201
|
const { gridColumn, gridRow, title, renderDisplay } = schema.properties[column];
|
|
2171
|
-
const [selectedEnums, setSelectedEnums] = useState([]);
|
|
2172
2202
|
const [searchText, setSearchText] = useState();
|
|
2173
2203
|
const [limit, setLimit] = useState(10);
|
|
2174
2204
|
const [openSearchResult, setOpenSearchResult] = useState();
|
|
@@ -2183,7 +2213,7 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2183
2213
|
setLimit(10);
|
|
2184
2214
|
};
|
|
2185
2215
|
return (jsxs(Field, { label: `${title ?? snakeToLabel(column)}`, required: isRequired, alignItems: "stretch", gridColumn,
|
|
2186
|
-
gridRow, children: [isMultiple && (jsxs(Flex, { flexFlow: "wrap", gap: 1, children: [
|
|
2216
|
+
gridRow, children: [isMultiple && (jsxs(Flex, { flexFlow: "wrap", gap: 1, children: [watchEnums.map((enumValue) => {
|
|
2187
2217
|
const item = enumValue;
|
|
2188
2218
|
if (item === undefined) {
|
|
2189
2219
|
return jsx(Fragment, { children: "undefined" });
|
|
@@ -2194,9 +2224,9 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2194
2224
|
}, children: !!renderDisplay === true ? renderDisplay(item) : item }));
|
|
2195
2225
|
}), jsx(Tag, { cursor: "pointer", onClick: () => {
|
|
2196
2226
|
setOpenSearchResult(true);
|
|
2197
|
-
}, children: "Add" })] })), !isMultiple && (jsx(Button, { variant: "outline", onClick: (
|
|
2227
|
+
}, children: "Add" })] })), !isMultiple && (jsx(Button, { variant: "outline", onClick: () => {
|
|
2198
2228
|
setOpenSearchResult(true);
|
|
2199
|
-
}, children:
|
|
2229
|
+
}, children: watchEnums[0] })), jsxs(PopoverRoot, { open: openSearchResult, onOpenChange: (e) => setOpenSearchResult(e.open), closeOnInteractOutside: true, initialFocusEl: () => ref.current, positioning: { placement: "bottom-start" }, children: [jsx(PopoverTrigger, {}), jsx(PopoverContent, { children: jsxs(PopoverBody, { children: [jsx(Input, { placeholder: "Type to search", onChange: (event) => {
|
|
2200
2230
|
onSearchChange(event);
|
|
2201
2231
|
setOpenSearchResult(true);
|
|
2202
2232
|
}, autoComplete: "off", ref: ref }), jsx(PopoverTitle, {}), jsxs(Grid, { gridTemplateColumns: "repeat(auto-fit, minmax(15rem, 1fr))", overflow: "auto", maxHeight: "50vh", children: [jsx(Text, { children: `Search Result: ${count}, Showing ${limit}` }), jsx(Button, { onClick: async () => {
|
|
@@ -2206,12 +2236,10 @@ const EnumPicker = ({ column, isMultiple = false }) => {
|
|
|
2206
2236
|
return (jsx(Box, { cursor: "pointer", onClick: () => {
|
|
2207
2237
|
if (!isMultiple) {
|
|
2208
2238
|
setOpenSearchResult(false);
|
|
2209
|
-
setSelectedEnums(() => [item]);
|
|
2210
2239
|
setValue(column, [item]);
|
|
2211
2240
|
return;
|
|
2212
2241
|
}
|
|
2213
2242
|
const newSet = new Set([...(watchEnums ?? []), item]);
|
|
2214
|
-
setSelectedEnums(() => [...newSet]);
|
|
2215
2243
|
setValue(column, [...newSet]);
|
|
2216
2244
|
}, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true ? renderDisplay(item) : item }, `${column}-${item}`));
|
|
2217
2245
|
}) }), isDirty && (jsxs(Fragment, { children: [dataList.length <= 0 && jsx(Fragment, { children: "Empty Search Result" }), " "] }))] })] }) })] }), errors[`${column}`] && (jsx(Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
@@ -2229,7 +2257,7 @@ const idPickerSanityCheck = (column, in_table, column_ref, display_column) => {
|
|
|
2229
2257
|
}
|
|
2230
2258
|
};
|
|
2231
2259
|
const FormInternal = () => {
|
|
2232
|
-
const { schema, serverUrl, displayText, order, ignore, onSubmit,
|
|
2260
|
+
const { schema, serverUrl, displayText, order, ignore, onSubmit, rowNumber } = useSchemaContext();
|
|
2233
2261
|
const { title, submit, empty, cancel, submitSuccess, submitAgain, confirm } = displayText;
|
|
2234
2262
|
const methods = useFormContext();
|
|
2235
2263
|
const [isSuccess, setIsSuccess] = useState(false);
|
|
@@ -2308,14 +2336,6 @@ const FormInternal = () => {
|
|
|
2308
2336
|
value: value,
|
|
2309
2337
|
};
|
|
2310
2338
|
};
|
|
2311
|
-
useEffect(() => {
|
|
2312
|
-
const loadData = () => {
|
|
2313
|
-
Object.entries(preLoadedValues).map(([column, value]) => {
|
|
2314
|
-
methods.setValue(column, value);
|
|
2315
|
-
});
|
|
2316
|
-
};
|
|
2317
|
-
loadData();
|
|
2318
|
-
}, [preLoadedValues, methods]);
|
|
2319
2339
|
if (isSuccess) {
|
|
2320
2340
|
return (jsxs(Grid, { gap: 2, children: [jsx(Heading, { children: title ?? snakeToLabel(schema.title ?? "") }), jsxs(Alert.Root, { status: "success", children: [jsx(Alert.Indicator, {}), jsx(Alert.Title, { children: submitSuccess ?? "Data uploaded to the server. Fire on!" })] }), jsx(Button, { onClick: () => {
|
|
2321
2341
|
setIsError(false);
|
|
@@ -2458,7 +2478,7 @@ const FormInternal = () => {
|
|
|
2458
2478
|
};
|
|
2459
2479
|
const Form = ({ schema, serverUrl, order = [], ignore = [], onSubmit = undefined, preLoadedValues = {}, rowNumber = undefined, displayText = {}, }) => {
|
|
2460
2480
|
const queryClient = new QueryClient();
|
|
2461
|
-
const methods = useForm();
|
|
2481
|
+
const methods = useForm({ values: preLoadedValues });
|
|
2462
2482
|
const { properties } = schema;
|
|
2463
2483
|
idListSanityCheck("order", order, properties);
|
|
2464
2484
|
idListSanityCheck("ignore", ignore, properties);
|
|
@@ -2471,7 +2491,6 @@ const Form = ({ schema, serverUrl, order = [], ignore = [], onSubmit = undefined
|
|
|
2471
2491
|
ignore,
|
|
2472
2492
|
// @ts-expect-error TODO: find appropriate types
|
|
2473
2493
|
onSubmit,
|
|
2474
|
-
preLoadedValues,
|
|
2475
2494
|
rowNumber,
|
|
2476
2495
|
}, children: jsx(FormProvider, { ...methods, children: jsx(FormInternal, {}) }) }) }));
|
|
2477
2496
|
};
|
|
@@ -6,4 +6,4 @@ export interface DataTableContext<TData> {
|
|
|
6
6
|
setGlobalFilter: OnChangeFn<string>;
|
|
7
7
|
type: "client" | "server";
|
|
8
8
|
}
|
|
9
|
-
export declare const DataTableContext: import("react").Context<DataTableContext<
|
|
9
|
+
export declare const DataTableContext: import("react").Context<DataTableContext<unknown>>;
|
|
@@ -9,7 +9,6 @@ export interface SchemaFormContext<TData extends FieldValues> {
|
|
|
9
9
|
ignore: string[];
|
|
10
10
|
displayText: DisplayTextProps;
|
|
11
11
|
onSubmit?: (data: TData) => Promise<void>;
|
|
12
|
-
preLoadedValues: object;
|
|
13
12
|
rowNumber?: number | string;
|
|
14
13
|
}
|
|
15
14
|
export declare const SchemaFormContext: import("react").Context<SchemaFormContext<unknown>>;
|
|
@@ -4,7 +4,7 @@ export declare const useSchemaContext: () => {
|
|
|
4
4
|
order: string[];
|
|
5
5
|
ignore: string[];
|
|
6
6
|
onSubmit: ((data: unknown) => Promise<void>) | undefined;
|
|
7
|
-
preLoadedValues:
|
|
7
|
+
preLoadedValues: any;
|
|
8
8
|
rowNumber: string | number | undefined;
|
|
9
9
|
displayText: import("./Form").DisplayTextProps;
|
|
10
10
|
};
|