@bsol-oss/react-datatable5 11.0.0-beta.2 → 11.0.0-beta.3

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.js CHANGED
@@ -28,8 +28,8 @@ var gr = require('react-icons/gr');
28
28
  var hi = require('react-icons/hi');
29
29
  var reactI18next = require('react-i18next');
30
30
  var axios = require('axios');
31
- var reactHookForm = require('react-hook-form');
32
31
  var dayjs = require('dayjs');
32
+ var reactHookForm = require('react-hook-form');
33
33
  var ti = require('react-icons/ti');
34
34
 
35
35
  function _interopNamespaceDefault(e) {
@@ -3567,28 +3567,15 @@ const SchemaFormContext = React.createContext({
3567
3567
  requestOptions: {},
3568
3568
  });
3569
3569
 
3570
- const PopoverContent = React__namespace.forwardRef(function PopoverContent(props, ref) {
3570
+ const HoverCardContent = React__namespace.forwardRef(function HoverCardContent(props, ref) {
3571
3571
  const { portalled = true, portalRef, ...rest } = props;
3572
- return (jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: jsxRuntime.jsx(react.Popover.Positioner, { children: jsxRuntime.jsx(react.Popover.Content, { ref: ref, ...rest }) }) }));
3573
- });
3574
- React__namespace.forwardRef(function PopoverArrow(props, ref) {
3575
- return (jsxRuntime.jsx(react.Popover.Arrow, { ...props, ref: ref, children: jsxRuntime.jsx(react.Popover.ArrowTip, {}) }));
3576
- });
3577
- React__namespace.forwardRef(function PopoverCloseTrigger(props, ref) {
3578
- return (jsxRuntime.jsx(react.Popover.CloseTrigger, { position: "absolute", top: "1", insetEnd: "1", ...props, asChild: true, ref: ref, children: jsxRuntime.jsx(CloseButton, { size: "sm" }) }));
3572
+ return (jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: jsxRuntime.jsx(react.HoverCard.Positioner, { children: jsxRuntime.jsx(react.HoverCard.Content, { ref: ref, ...rest }) }) }));
3579
3573
  });
3580
- const PopoverTitle = react.Popover.Title;
3581
- react.Popover.Description;
3582
- react.Popover.Footer;
3583
- react.Popover.Header;
3584
- const PopoverRoot = react.Popover.Root;
3585
- const PopoverBody = react.Popover.Body;
3586
- const PopoverTrigger = react.Popover.Trigger;
3587
-
3588
- const Field = React__namespace.forwardRef(function Field(props, ref) {
3589
- const { label, children, helperText, errorText, optionalText, ...rest } = props;
3590
- return (jsxRuntime.jsxs(react.Field.Root, { ref: ref, ...rest, children: [label && (jsxRuntime.jsxs(react.Field.Label, { children: [label, jsxRuntime.jsx(react.Field.RequiredIndicator, { fallback: optionalText })] })), children, helperText && (jsxRuntime.jsx(react.Field.HelperText, { children: helperText })), errorText && (jsxRuntime.jsx(react.Field.ErrorText, { children: errorText }))] }));
3574
+ const HoverCardArrow = React__namespace.forwardRef(function HoverCardArrow(props, ref) {
3575
+ return (jsxRuntime.jsx(react.HoverCard.Arrow, { ref: ref, ...props, children: jsxRuntime.jsx(react.HoverCard.ArrowTip, {}) }));
3591
3576
  });
3577
+ const HoverCardRoot = react.HoverCard.Root;
3578
+ const HoverCardTrigger = react.HoverCard.Trigger;
3592
3579
 
3593
3580
  const useSchemaContext = () => {
3594
3581
  const { schema, serverUrl, requestUrl, order, ignore, onSubmit, rowNumber, idMap, setIdMap, translate, requestOptions, } = React.useContext(SchemaFormContext);
@@ -3607,148 +3594,6 @@ const useSchemaContext = () => {
3607
3594
  };
3608
3595
  };
3609
3596
 
3610
- const getTableData = async ({ serverUrl, in_table, searching = "", where = [], limit = 10, offset = 0, }) => {
3611
- if (serverUrl === undefined || serverUrl.length == 0) {
3612
- throw new Error("The serverUrl is missing");
3613
- }
3614
- if (in_table === undefined || in_table.length == 0) {
3615
- throw new Error("The in_table is missing");
3616
- }
3617
- const options = {
3618
- method: "GET",
3619
- url: `${serverUrl}/api/g/${in_table}`,
3620
- params: {
3621
- searching,
3622
- where,
3623
- limit,
3624
- offset
3625
- },
3626
- };
3627
- try {
3628
- const { data } = await axios.request(options);
3629
- console.log(data);
3630
- return data;
3631
- }
3632
- catch (error) {
3633
- console.error(error);
3634
- throw error;
3635
- }
3636
- };
3637
-
3638
- const IdPicker = ({ column, isMultiple = false }) => {
3639
- const { watch, formState: { errors }, setValue, } = reactHookForm.useFormContext();
3640
- const { schema, serverUrl, idMap, setIdMap, translate } = useSchemaContext();
3641
- const { required } = schema;
3642
- const isRequired = required?.some((columnId) => columnId === column);
3643
- if (schema.properties == undefined) {
3644
- throw new Error("schema properties is undefined when using DatePicker");
3645
- }
3646
- const { gridColumn, gridRow, renderDisplay, foreign_key } = schema.properties[column];
3647
- const { table, column: column_ref, display_column, } = foreign_key;
3648
- const [searchText, setSearchText] = React.useState();
3649
- const [limit, setLimit] = React.useState(10);
3650
- const [openSearchResult, setOpenSearchResult] = React.useState();
3651
- const [page, setPage] = React.useState(0);
3652
- const ref = React.useRef(null);
3653
- const selectedIds = watch(column) ?? [];
3654
- const query = reactQuery.useQuery({
3655
- queryKey: [`idpicker`, { column, searchText, limit, page }],
3656
- queryFn: async () => {
3657
- const data = await getTableData({
3658
- serverUrl,
3659
- searching: searchText ?? "",
3660
- in_table: table,
3661
- limit: limit,
3662
- offset: page * 10,
3663
- });
3664
- const newMap = Object.fromEntries((data ?? { data: [] }).data.map((item) => {
3665
- return [
3666
- item[column_ref],
3667
- {
3668
- ...item,
3669
- },
3670
- ];
3671
- }));
3672
- setIdMap((state) => {
3673
- return { ...state, ...newMap };
3674
- });
3675
- return data;
3676
- },
3677
- enabled: (searchText ?? "")?.length > 0,
3678
- staleTime: 300000,
3679
- });
3680
- const { isLoading, isFetching, data, isPending, isError } = query;
3681
- const dataList = data?.data ?? [];
3682
- const count = data?.count ?? 0;
3683
- const isDirty = (searchText?.length ?? 0) > 0;
3684
- const onSearchChange = async (event) => {
3685
- setSearchText(event.target.value);
3686
- setPage(0);
3687
- setLimit(10);
3688
- };
3689
- const watchId = watch(column);
3690
- const watchIds = (watch(column) ?? []);
3691
- const getPickedValue = () => {
3692
- if (Object.keys(idMap).length <= 0) {
3693
- return "";
3694
- }
3695
- const record = idMap[watchId];
3696
- if (record === undefined) {
3697
- return "";
3698
- }
3699
- return record[display_column];
3700
- };
3701
- return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn,
3702
- gridRow, children: [isMultiple && (jsxRuntime.jsxs(react.Flex, { flexFlow: "wrap", gap: 1, children: [selectedIds.map((id) => {
3703
- const item = idMap[id];
3704
- if (item === undefined) {
3705
- return jsxRuntime.jsx(react.Text, { children: "undefined" }, id);
3706
- }
3707
- return (jsxRuntime.jsx(Tag, { closable: true, onClick: () => {
3708
- setValue(column, watchIds.filter((id) => id != item[column_ref]));
3709
- }, children: !!renderDisplay === true
3710
- ? renderDisplay(item)
3711
- : item[display_column] }, id));
3712
- }), jsxRuntime.jsx(Tag, { cursor: "pointer", onClick: () => {
3713
- setOpenSearchResult(true);
3714
- }, children: "Add" })] })), !isMultiple && (jsxRuntime.jsx(Button, { variant: "outline", onClick: () => {
3715
- setOpenSearchResult(true);
3716
- }, children: getPickedValue() })), jsxRuntime.jsxs(PopoverRoot, { open: openSearchResult, onOpenChange: (e) => setOpenSearchResult(e.open), closeOnInteractOutside: true, initialFocusEl: () => ref.current, positioning: { placement: "bottom-start", strategy: "fixed" }, children: [jsxRuntime.jsx(PopoverTrigger, {}), jsxRuntime.jsx(PopoverContent, { children: jsxRuntime.jsxs(PopoverBody, { display: "grid", gap: 1, children: [jsxRuntime.jsx(react.Input, { placeholder: translate.t(`${column}.typeToSearch`), onChange: (event) => {
3717
- onSearchChange(event);
3718
- setOpenSearchResult(true);
3719
- }, autoComplete: "off", ref: ref }), jsxRuntime.jsx(PopoverTitle, {}), (searchText?.length ?? 0) > 0 && (jsxRuntime.jsxs(jsxRuntime.Fragment, { 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, { justifySelf: "center", children: `${translate.t(`${column}.total`)} ${count}, ${translate.t(`${column}.showing`)} ${limit}` }), jsxRuntime.jsxs(react.Grid, { gridTemplateColumns: "repeat(auto-fit, minmax(15rem, 1fr))", overflow: "auto", maxHeight: "50vh", children: [jsxRuntime.jsx(react.Flex, { flexFlow: "column wrap", children:
3720
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3721
- dataList.map((item) => {
3722
- const selected = isMultiple
3723
- ? watchIds.some((id) => item[column_ref] === id)
3724
- : watchId === item[column_ref];
3725
- return (jsxRuntime.jsx(react.Box, { cursor: "pointer", onClick: () => {
3726
- if (!isMultiple) {
3727
- setOpenSearchResult(false);
3728
- setValue(column, item[column_ref]);
3729
- return;
3730
- }
3731
- const newSet = new Set([
3732
- ...(watchIds ?? []),
3733
- item[column_ref],
3734
- ]);
3735
- setValue(column, [...newSet]);
3736
- }, opacity: 0.7, _hover: { opacity: 1 }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true
3737
- ? renderDisplay(item)
3738
- : item[display_column] }, item[column_ref]));
3739
- }) }), isDirty && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: dataList.length <= 0 && (jsxRuntime.jsx(react.Text, { children: translate.t(`${column}.emptySearchResult`) })) }))] }), jsxRuntime.jsx(PaginationRoot, { justifySelf: "center", count: query?.data?.count ?? 0, pageSize: 10, defaultPage: 1, page: page + 1, onPageChange: (e) => setPage(e.page - 1), children: jsxRuntime.jsxs(react.HStack, { gap: "4", children: [jsxRuntime.jsx(PaginationPrevTrigger, {}), jsxRuntime.jsx(PaginationPageText, {}), jsxRuntime.jsx(PaginationNextTrigger, {})] }) })] }))] }) })] }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
3740
- };
3741
-
3742
- const HoverCardContent = React__namespace.forwardRef(function HoverCardContent(props, ref) {
3743
- const { portalled = true, portalRef, ...rest } = props;
3744
- return (jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: jsxRuntime.jsx(react.HoverCard.Positioner, { children: jsxRuntime.jsx(react.HoverCard.Content, { ref: ref, ...rest }) }) }));
3745
- });
3746
- const HoverCardArrow = React__namespace.forwardRef(function HoverCardArrow(props, ref) {
3747
- return (jsxRuntime.jsx(react.HoverCard.Arrow, { ref: ref, ...props, children: jsxRuntime.jsx(react.HoverCard.ArrowTip, {}) }));
3748
- });
3749
- const HoverCardRoot = react.HoverCard.Root;
3750
- const HoverCardTrigger = react.HoverCard.Trigger;
3751
-
3752
3597
  const IdViewer = ({ value, column }) => {
3753
3598
  const { schema, idMap, translate } = useSchemaContext();
3754
3599
  if (schema.properties == undefined) {
@@ -3765,38 +3610,6 @@ const IdViewer = ({ value, column }) => {
3765
3610
  return (jsxRuntime.jsxs(react.Flex, { flexFlow: "column", children: [jsxRuntime.jsx(react.Text, { children: translate.t(`${column}.fieldLabel`) }), jsxRuntime.jsxs(HoverCardRoot, { children: [jsxRuntime.jsx(HoverCardTrigger, { asChild: true, children: jsxRuntime.jsx(react.Text, { cursor: 'pointer', children: idMap[value][display_column] }) }), jsxRuntime.jsxs(HoverCardContent, { children: [jsxRuntime.jsx(HoverCardArrow, {}), jsxRuntime.jsx(RecordDisplay, { object: idMap[value] })] })] })] }));
3766
3611
  };
3767
3612
 
3768
- const NumberInputRoot = React__namespace.forwardRef(function NumberInput(props, ref) {
3769
- const { children, ...rest } = props;
3770
- return (jsxRuntime.jsxs(react.NumberInput.Root, { ref: ref, variant: "outline", ...rest, children: [children, jsxRuntime.jsxs(react.NumberInput.Control, { children: [jsxRuntime.jsx(react.NumberInput.IncrementTrigger, {}), jsxRuntime.jsx(react.NumberInput.DecrementTrigger, {})] })] }));
3771
- });
3772
- const NumberInputField$1 = react.NumberInput.Input;
3773
- react.NumberInput.Scrubber;
3774
- react.NumberInput.Label;
3775
-
3776
- const NumberInputField = ({ column }) => {
3777
- const { register, formState: { errors }, } = reactHookForm.useFormContext();
3778
- const { schema, translate } = useSchemaContext();
3779
- const { required } = schema;
3780
- const isRequired = required?.some((columnId) => columnId === column);
3781
- if (schema.properties == undefined) {
3782
- throw new Error("schema properties when using String Input Field");
3783
- }
3784
- const { gridColumn, gridRow } = schema.properties[column];
3785
- return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, gridColumn, gridRow, children: [jsxRuntime.jsx(NumberInputRoot, { children: jsxRuntime.jsx(NumberInputField$1, { ...register(column, { required: isRequired }) }) }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
3786
- };
3787
-
3788
- const StringInputField = ({ column }) => {
3789
- const { register, formState: { errors }, } = reactHookForm.useFormContext();
3790
- const { schema, translate } = useSchemaContext();
3791
- const { required } = schema;
3792
- const isRequired = required?.some((columnId) => columnId === column);
3793
- if (schema.properties == undefined) {
3794
- throw new Error("schema properties when using String Input Field");
3795
- }
3796
- const { gridColumn, gridRow } = schema.properties[column];
3797
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, gridColumn: gridColumn ?? "span 4", gridRow: gridRow ?? "span 1", children: [jsxRuntime.jsx(react.Input, { ...register(column, { required: isRequired }), autoComplete: "off" }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }) }));
3798
- };
3799
-
3800
3613
  const clearEmptyString = (object) => {
3801
3614
  return Object.fromEntries(Object.entries(object).filter(([, value]) => value !== ""));
3802
3615
  };
@@ -3826,20 +3639,22 @@ const DataListItem = React__namespace.forwardRef(function DataListItem(props, re
3826
3639
  return (jsxRuntime.jsxs(react.DataList.Item, { ref: ref, ...rest, children: [jsxRuntime.jsxs(react.DataList.ItemLabel, { flex: grow ? "1" : undefined, children: [label, info && jsxRuntime.jsx(InfoTip, { children: info })] }), jsxRuntime.jsx(react.DataList.ItemValue, { flex: grow ? "1" : undefined, children: value }), children] }));
3827
3640
  });
3828
3641
 
3829
- const BooleanPicker = ({ column }) => {
3642
+ const Field = React__namespace.forwardRef(function Field(props, ref) {
3643
+ const { label, children, helperText, errorText, optionalText, ...rest } = props;
3644
+ return (jsxRuntime.jsxs(react.Field.Root, { ref: ref, ...rest, children: [label && (jsxRuntime.jsxs(react.Field.Label, { children: [label, jsxRuntime.jsx(react.Field.RequiredIndicator, { fallback: optionalText })] })), children, helperText && (jsxRuntime.jsx(react.Field.HelperText, { children: helperText })), errorText && (jsxRuntime.jsx(react.Field.ErrorText, { children: errorText }))] }));
3645
+ });
3646
+
3647
+ const BooleanPicker = ({ schema, column, prefix }) => {
3830
3648
  const { watch, formState: { errors }, setValue, } = reactHookForm.useFormContext();
3831
- const { schema, translate } = useSchemaContext();
3832
- const { required } = schema;
3649
+ const { translate } = useSchemaContext();
3650
+ const { required, gridColumn, gridRow } = schema;
3833
3651
  const isRequired = required?.some((columnId) => columnId === column);
3834
- const value = watch(column);
3835
- if (schema.properties == undefined) {
3836
- throw new Error("schema properties when using BooleanPicker");
3837
- }
3838
- const { gridColumn, gridRow } = schema.properties[column];
3839
- return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn,
3652
+ const colLabel = `${prefix}${column}`;
3653
+ const value = watch(colLabel);
3654
+ return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${colLabel}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn,
3840
3655
  gridRow, children: [jsxRuntime.jsx(CheckboxCard, { checked: value, variant: "surface", onSelect: () => {
3841
- setValue(column, !value);
3842
- } }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
3656
+ setValue(colLabel, !value);
3657
+ } }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${colLabel}.fieldRequired`) }))] }));
3843
3658
  };
3844
3659
 
3845
3660
  const monthNamesShort = [
@@ -3911,18 +3726,33 @@ let DatePicker$1 = class DatePicker extends React.Component {
3911
3726
  }
3912
3727
  };
3913
3728
 
3914
- const DatePicker = ({ column }) => {
3729
+ const PopoverContent = React__namespace.forwardRef(function PopoverContent(props, ref) {
3730
+ const { portalled = true, portalRef, ...rest } = props;
3731
+ return (jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: jsxRuntime.jsx(react.Popover.Positioner, { children: jsxRuntime.jsx(react.Popover.Content, { ref: ref, ...rest }) }) }));
3732
+ });
3733
+ React__namespace.forwardRef(function PopoverArrow(props, ref) {
3734
+ return (jsxRuntime.jsx(react.Popover.Arrow, { ...props, ref: ref, children: jsxRuntime.jsx(react.Popover.ArrowTip, {}) }));
3735
+ });
3736
+ React__namespace.forwardRef(function PopoverCloseTrigger(props, ref) {
3737
+ return (jsxRuntime.jsx(react.Popover.CloseTrigger, { position: "absolute", top: "1", insetEnd: "1", ...props, asChild: true, ref: ref, children: jsxRuntime.jsx(CloseButton, { size: "sm" }) }));
3738
+ });
3739
+ const PopoverTitle = react.Popover.Title;
3740
+ react.Popover.Description;
3741
+ react.Popover.Footer;
3742
+ react.Popover.Header;
3743
+ const PopoverRoot = react.Popover.Root;
3744
+ const PopoverBody = react.Popover.Body;
3745
+ const PopoverTrigger = react.Popover.Trigger;
3746
+
3747
+ const DatePicker = ({ column, schema, prefix }) => {
3915
3748
  const { watch, formState: { errors }, setValue, } = reactHookForm.useFormContext();
3916
- const { schema, translate } = useSchemaContext();
3917
- const { required } = schema;
3749
+ const { translate } = useSchemaContext();
3750
+ const { required, gridColumn, gridRow } = schema;
3918
3751
  const isRequired = required?.some((columnId) => columnId === column);
3752
+ const colLabel = `${prefix}${column}`;
3919
3753
  const [open, setOpen] = React.useState(false);
3920
- const selectedDate = watch(column);
3921
- if (schema.properties == undefined) {
3922
- throw new Error("schema properties when using DatePicker");
3923
- }
3924
- const { gridColumn, gridRow } = schema.properties[column];
3925
- return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn,
3754
+ const selectedDate = watch(colLabel);
3755
+ return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${colLabel}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn,
3926
3756
  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: () => {
3927
3757
  setOpen(true);
3928
3758
  }, children: selectedDate !== undefined ? selectedDate : "" }) }), jsxRuntime.jsx(PopoverContent, { children: jsxRuntime.jsxs(PopoverBody, { children: [jsxRuntime.jsx(PopoverTitle, {}), jsxRuntime.jsx(DatePicker$1
@@ -3931,7 +3761,7 @@ const DatePicker = ({ column }) => {
3931
3761
  // @ts-expect-error TODO: find appropriate types
3932
3762
  selected: new Date(selectedDate),
3933
3763
  // @ts-expect-error TODO: find appropriate types
3934
- onDateSelected: ({ selected, selectable, date }) => {
3764
+ onDateSelected: ({ date }) => {
3935
3765
  setValue(column, dayjs(date).format("YYYY-MM-DD"));
3936
3766
  setOpen(false);
3937
3767
  } })] }) })] }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
@@ -3947,29 +3777,26 @@ function filterArray(array, searchTerm) {
3947
3777
  });
3948
3778
  }
3949
3779
 
3950
- const EnumPicker = ({ column, isMultiple = false }) => {
3780
+ const EnumPicker = ({ column, isMultiple = false, schema, prefix, }) => {
3951
3781
  const { watch, formState: { errors }, setValue, } = reactHookForm.useFormContext();
3952
- const { schema, translate } = useSchemaContext();
3782
+ const { translate } = useSchemaContext();
3953
3783
  const { required } = schema;
3954
3784
  const isRequired = required?.some((columnId) => columnId === column);
3955
- if (schema.properties == undefined) {
3956
- throw new Error("schema properties when using DatePicker");
3957
- }
3958
- const { gridColumn, gridRow, renderDisplay } = schema.properties[column];
3785
+ const { gridColumn, gridRow, renderDisplay } = schema;
3959
3786
  const [searchText, setSearchText] = React.useState();
3960
3787
  const [limit, setLimit] = React.useState(10);
3961
3788
  const [openSearchResult, setOpenSearchResult] = React.useState();
3962
3789
  const ref = React.useRef(null);
3963
3790
  const watchEnum = watch(column);
3964
3791
  const watchEnums = (watch(column) ?? []);
3965
- const properties = (schema.properties[column] ?? {});
3966
- const dataList = properties.enum ?? [];
3967
- const count = properties.enum?.length ?? 0;
3792
+ const dataList = schema.enum ?? [];
3793
+ const count = schema.enum?.length ?? 0;
3968
3794
  const isDirty = (searchText?.length ?? 0) > 0;
3969
3795
  const onSearchChange = async (event) => {
3970
3796
  setSearchText(event.target.value);
3971
3797
  setLimit(10);
3972
3798
  };
3799
+ const col = `${prefix}${column}`;
3973
3800
  return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn,
3974
3801
  gridRow, children: [isMultiple && (jsxRuntime.jsxs(react.Flex, { flexFlow: "wrap", gap: 1, children: [watchEnums.map((enumValue) => {
3975
3802
  const item = enumValue;
@@ -3999,8 +3826,10 @@ const EnumPicker = ({ column, isMultiple = false }) => {
3999
3826
  }
4000
3827
  const newSet = new Set([...(watchEnums ?? []), item]);
4001
3828
  setValue(column, [...newSet]);
4002
- }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true ? renderDisplay(item) : item }, `${column}-${item}`));
4003
- }) }), 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: translate.t(`${column}.fieldRequired`) }))] }));
3829
+ }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true
3830
+ ? renderDisplay(item)
3831
+ : translate.t(`${col}.${item}`) }, `${column}-${item}`));
3832
+ }) }), isDirty && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: dataList.length <= 0 && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: translate.t(`${col}.emptySearchResult`) })) }))] })] }) })] }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${col}.fieldRequired`) }))] }));
4004
3833
  };
4005
3834
 
4006
3835
  function isEnteringWindow(_ref) {
@@ -4355,41 +4184,193 @@ const FileDropzone = ({ children = undefined, gridProps = {}, onDrop = () => { }
4355
4184
  return (jsxRuntime.jsxs(react.Grid, { ...getColor(isDraggedOver), ref: ref, cursor: "pointer", onClick: handleClick, borderStyle: "dashed", borderColor: "gray.400", alignContent: "center", justifyContent: "center", borderWidth: 1, borderRadius: 4, ...gridProps, children: [children, !!children === false && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(react.Flex, { children: placeholder }), jsxRuntime.jsx(react.Input, { type: "file", multiple: true, style: { display: "none" }, ref: fileInput, onChange: handleChange })] }))] }));
4356
4185
  };
4357
4186
 
4358
- const FilePicker = ({ column }) => {
4187
+ const FilePicker = ({ column, schema, prefix }) => {
4359
4188
  const { setValue, formState: { errors }, watch, } = reactHookForm.useFormContext();
4360
- const { schema, translate } = useSchemaContext();
4361
- const { required } = schema;
4189
+ const { translate } = useSchemaContext();
4190
+ const { required, gridColumn, gridRow } = schema;
4362
4191
  const isRequired = required?.some((columnId) => columnId === column);
4363
- if (schema.properties == undefined) {
4364
- throw new Error("schema properties when using String Input Field");
4365
- }
4366
- const { gridColumn, gridRow } = schema.properties[column];
4367
4192
  const currentFiles = (watch(column) ?? []);
4368
- return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, gridColumn: gridColumn ?? "span 4", gridRow: gridRow ?? "span 1", display: "grid", gridTemplateRows: "auto 1fr auto", alignItems: "stretch", children: [jsxRuntime.jsx(FileDropzone, { onDrop: ({ files }) => {
4193
+ const col = `${prefix}${column}`;
4194
+ return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${col}.fieldLabel`)}`, required: isRequired, gridColumn: gridColumn ?? "span 4", gridRow: gridRow ?? "span 1", display: "grid", gridTemplateRows: "auto 1fr auto", alignItems: "stretch", children: [jsxRuntime.jsx(FileDropzone, { onDrop: ({ files }) => {
4369
4195
  const newFiles = files.filter(({ name }) => !currentFiles.some((cur) => cur.name === name));
4370
- setValue(column, [...currentFiles, ...newFiles]);
4371
- }, placeholder: translate.t(`${column}.fileDropzone`) }), jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: 1, children: currentFiles.map((file) => {
4196
+ setValue(col, [...currentFiles, ...newFiles]);
4197
+ }, placeholder: translate.t(`${col}.fileDropzone`) }), jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: 1, children: currentFiles.map((file) => {
4372
4198
  return (jsxRuntime.jsx(react.Card.Root, { variant: "subtle", children: jsxRuntime.jsxs(react.Card.Body, { gap: "2", cursor: "pointer", onClick: () => {
4373
4199
  setValue(column, currentFiles.filter(({ name }) => {
4374
4200
  return name !== file.name;
4375
4201
  }));
4376
- }, display: "flex", flexFlow: 'row', alignItems: 'center', padding: '2', children: [jsxRuntime.jsx(react.Box, { children: file.name }), jsxRuntime.jsx(ti.TiDeleteOutline, {})] }) }, file.name));
4377
- }) }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
4202
+ }, display: "flex", flexFlow: "row", alignItems: "center", padding: "2", children: [jsxRuntime.jsx(react.Box, { children: file.name }), jsxRuntime.jsx(ti.TiDeleteOutline, {})] }) }, file.name));
4203
+ }) }), errors[`${col}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${col}.fieldRequired`) }))] }));
4204
+ };
4205
+
4206
+ const getTableData = async ({ serverUrl, in_table, searching = "", where = [], limit = 10, offset = 0, }) => {
4207
+ if (serverUrl === undefined || serverUrl.length == 0) {
4208
+ throw new Error("The serverUrl is missing");
4209
+ }
4210
+ if (in_table === undefined || in_table.length == 0) {
4211
+ throw new Error("The in_table is missing");
4212
+ }
4213
+ const options = {
4214
+ method: "GET",
4215
+ url: `${serverUrl}/api/g/${in_table}`,
4216
+ params: {
4217
+ searching,
4218
+ where,
4219
+ limit,
4220
+ offset
4221
+ },
4222
+ };
4223
+ try {
4224
+ const { data } = await axios.request(options);
4225
+ console.log(data);
4226
+ return data;
4227
+ }
4228
+ catch (error) {
4229
+ console.error(error);
4230
+ throw error;
4231
+ }
4232
+ };
4233
+
4234
+ const IdPicker = ({ column, schema, prefix, isMultiple = false, }) => {
4235
+ const { watch, formState: { errors }, setValue, } = reactHookForm.useFormContext();
4236
+ const { serverUrl, idMap, setIdMap, translate } = useSchemaContext();
4237
+ const { required, gridColumn, gridRow, renderDisplay, foreign_key } = schema;
4238
+ const isRequired = required?.some((columnId) => columnId === column);
4239
+ const { table, column: column_ref, display_column, } = foreign_key;
4240
+ const [searchText, setSearchText] = React.useState();
4241
+ const [limit, setLimit] = React.useState(10);
4242
+ const [openSearchResult, setOpenSearchResult] = React.useState();
4243
+ const [page, setPage] = React.useState(0);
4244
+ const ref = React.useRef(null);
4245
+ const selectedIds = watch(column) ?? [];
4246
+ const colLabel = `${prefix}${column}`;
4247
+ const query = reactQuery.useQuery({
4248
+ queryKey: [`idpicker`, { column, searchText, limit, page }],
4249
+ queryFn: async () => {
4250
+ const data = await getTableData({
4251
+ serverUrl,
4252
+ searching: searchText ?? "",
4253
+ in_table: table,
4254
+ limit: limit,
4255
+ offset: page * 10,
4256
+ });
4257
+ const newMap = Object.fromEntries((data ?? { data: [] }).data.map((item) => {
4258
+ return [
4259
+ item[column_ref],
4260
+ {
4261
+ ...item,
4262
+ },
4263
+ ];
4264
+ }));
4265
+ setIdMap((state) => {
4266
+ return { ...state, ...newMap };
4267
+ });
4268
+ return data;
4269
+ },
4270
+ enabled: (searchText ?? "")?.length > 0,
4271
+ staleTime: 300000,
4272
+ });
4273
+ const { isLoading, isFetching, data, isPending, isError } = query;
4274
+ const dataList = data?.data ?? [];
4275
+ const count = data?.count ?? 0;
4276
+ const isDirty = (searchText?.length ?? 0) > 0;
4277
+ const onSearchChange = async (event) => {
4278
+ setSearchText(event.target.value);
4279
+ setPage(0);
4280
+ setLimit(10);
4281
+ };
4282
+ const watchId = watch(column);
4283
+ const watchIds = (watch(column) ?? []);
4284
+ const getPickedValue = () => {
4285
+ if (Object.keys(idMap).length <= 0) {
4286
+ return "";
4287
+ }
4288
+ const record = idMap[watchId];
4289
+ if (record === undefined) {
4290
+ return "";
4291
+ }
4292
+ return record[display_column];
4293
+ };
4294
+ return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${colLabel}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn,
4295
+ gridRow, children: [isMultiple && (jsxRuntime.jsxs(react.Flex, { flexFlow: "wrap", gap: 1, children: [selectedIds.map((id) => {
4296
+ const item = idMap[id];
4297
+ if (item === undefined) {
4298
+ return (jsxRuntime.jsxs(react.Text, { children: [" ", translate.t(`${colLabel}.undefined`)] }, id));
4299
+ }
4300
+ return (jsxRuntime.jsx(Tag, { closable: true, onClick: () => {
4301
+ setValue(column, watchIds.filter((id) => id != item[column_ref]));
4302
+ }, children: !!renderDisplay === true
4303
+ ? renderDisplay(item)
4304
+ : item[display_column] }, id));
4305
+ }), jsxRuntime.jsx(Tag, { cursor: "pointer", onClick: () => {
4306
+ setOpenSearchResult(true);
4307
+ }, children: translate.t(`${colLabel}.addMore`) })] })), !isMultiple && (jsxRuntime.jsx(Button, { variant: "outline", onClick: () => {
4308
+ setOpenSearchResult(true);
4309
+ }, children: getPickedValue() })), jsxRuntime.jsxs(PopoverRoot, { open: openSearchResult, onOpenChange: (e) => setOpenSearchResult(e.open), closeOnInteractOutside: true, initialFocusEl: () => ref.current, positioning: { placement: "bottom-start", strategy: "fixed" }, children: [jsxRuntime.jsx(PopoverTrigger, {}), jsxRuntime.jsx(PopoverContent, { children: jsxRuntime.jsxs(PopoverBody, { display: "grid", gap: 1, children: [jsxRuntime.jsx(react.Input, { placeholder: translate.t(`${colLabel}.typeToSearch`), onChange: (event) => {
4310
+ onSearchChange(event);
4311
+ setOpenSearchResult(true);
4312
+ }, autoComplete: "off", ref: ref }), jsxRuntime.jsx(PopoverTitle, {}), (searchText?.length ?? 0) > 0 && (jsxRuntime.jsxs(jsxRuntime.Fragment, { 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, { justifySelf: "center", children: `${translate.t(`${colLabel}.total`)} ${count}, ${translate.t(`${colLabel}.showing`)} ${limit}` }), jsxRuntime.jsxs(react.Grid, { gridTemplateColumns: "repeat(auto-fit, minmax(15rem, 1fr))", overflow: "auto", maxHeight: "50vh", children: [jsxRuntime.jsx(react.Flex, { flexFlow: "column wrap", children:
4313
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4314
+ dataList.map((item) => {
4315
+ const selected = isMultiple
4316
+ ? watchIds.some((id) => item[column_ref] === id)
4317
+ : watchId === item[column_ref];
4318
+ return (jsxRuntime.jsx(react.Box, { cursor: "pointer", onClick: () => {
4319
+ if (!isMultiple) {
4320
+ setOpenSearchResult(false);
4321
+ setValue(colLabel, item[column_ref]);
4322
+ return;
4323
+ }
4324
+ const newSet = new Set([
4325
+ ...(watchIds ?? []),
4326
+ item[column_ref],
4327
+ ]);
4328
+ setValue(column, [...newSet]);
4329
+ }, opacity: 0.7, _hover: { opacity: 1 }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true
4330
+ ? renderDisplay(item)
4331
+ : item[display_column] }, item[column_ref]));
4332
+ }) }), isDirty && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: dataList.length <= 0 && (jsxRuntime.jsx(react.Text, { children: translate.t(`${colLabel}.emptySearchResult`) })) }))] }), jsxRuntime.jsx(PaginationRoot, { justifySelf: "center", count: query?.data?.count ?? 0, pageSize: 10, defaultPage: 1, page: page + 1, onPageChange: (e) => setPage(e.page - 1), children: jsxRuntime.jsxs(react.HStack, { gap: "4", children: [jsxRuntime.jsx(PaginationPrevTrigger, {}), jsxRuntime.jsx(PaginationPageText, {}), jsxRuntime.jsx(PaginationNextTrigger, {})] }) })] }))] }) })] }), errors[`${colLabel}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${colLabel}.fieldRequired`) }))] }));
4378
4333
  };
4379
4334
 
4380
- const ObjectInput = ({ column }) => {
4335
+ const NumberInputRoot = React__namespace.forwardRef(function NumberInput(props, ref) {
4336
+ const { children, ...rest } = props;
4337
+ return (jsxRuntime.jsxs(react.NumberInput.Root, { ref: ref, variant: "outline", ...rest, children: [children, jsxRuntime.jsxs(react.NumberInput.Control, { children: [jsxRuntime.jsx(react.NumberInput.IncrementTrigger, {}), jsxRuntime.jsx(react.NumberInput.DecrementTrigger, {})] })] }));
4338
+ });
4339
+ const NumberInputField$1 = react.NumberInput.Input;
4340
+ react.NumberInput.Scrubber;
4341
+ react.NumberInput.Label;
4342
+
4343
+ const NumberInputField = ({ schema, column, prefix, }) => {
4344
+ const { register, formState: { errors }, } = reactHookForm.useFormContext();
4345
+ const { translate } = useSchemaContext();
4346
+ const { required, gridColumn, gridRow } = schema;
4347
+ const isRequired = required?.some((columnId) => columnId === column);
4348
+ const colLabel = `${prefix}${column}`;
4349
+ return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${colLabel}.fieldLabel`)}`, required: isRequired, gridColumn, gridRow, children: [jsxRuntime.jsx(NumberInputRoot, { children: jsxRuntime.jsx(NumberInputField$1, { ...register(`${colLabel}`, { required: isRequired }) }) }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${colLabel}.fieldRequired`) }))] }));
4350
+ };
4351
+
4352
+ const ObjectInput = ({ schema, column, prefix }) => {
4353
+ const { properties } = schema;
4354
+ if (properties === undefined) {
4355
+ throw new Error(`properties is undefined when using ObjectInput`);
4356
+ }
4357
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: Object.keys(properties ?? {}).map((key) => {
4358
+ console.log(properties, key, "gkor");
4359
+ return (jsxRuntime.jsx(ColumnRenderer, { column: `${key}`,
4360
+ prefix: `${prefix}${column}.`,
4361
+ properties }, `form-${column}`));
4362
+ }) }));
4363
+ };
4364
+
4365
+ const RecordInput = ({ column, schema, prefix }) => {
4381
4366
  const { formState: { errors }, setValue, getValues, } = reactHookForm.useFormContext();
4382
- const { schema, translate } = useSchemaContext();
4383
- const { required } = schema;
4367
+ const { translate } = useSchemaContext();
4368
+ const { required, gridColumn, gridRow } = schema;
4384
4369
  const isRequired = required?.some((columnId) => columnId === column);
4385
4370
  const entries = Object.entries(getValues(column) ?? {});
4386
4371
  const [showNewEntries, setShowNewEntries] = React.useState(false);
4387
4372
  const [newKey, setNewKey] = React.useState();
4388
4373
  const [newValue, setNewValue] = React.useState();
4389
- if (schema.properties == undefined) {
4390
- throw new Error("schema properties when using DatePicker");
4391
- }
4392
- const { gridColumn, gridRow } = schema.properties[column];
4393
4374
  return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, alignItems: "stretch", gridColumn, gridRow, children: [entries.map(([key, value]) => {
4394
4375
  return (jsxRuntime.jsxs(react.Grid, { templateColumns: "1fr 1fr auto", gap: 1, children: [jsxRuntime.jsx(react.Input, { value: key, onChange: (e) => {
4395
4376
  const filtered = entries.filter(([target]) => {
@@ -4433,6 +4414,15 @@ const ObjectInput = ({ column }) => {
4433
4414
  }, children: translate.t(`${column}.addNew`) }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
4434
4415
  };
4435
4416
 
4417
+ const StringInputField = ({ column, schema, prefix, }) => {
4418
+ const { register, formState: { errors }, } = reactHookForm.useFormContext();
4419
+ const { translate } = useSchemaContext();
4420
+ const { required, gridColumn, gridRow } = schema;
4421
+ const isRequired = required?.some((columnId) => columnId === column);
4422
+ const colLabel = `${prefix}${column}`;
4423
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(Field, { label: `${translate.t(`${colLabel}.fieldLabel`)}`, required: isRequired, gridColumn: gridColumn ?? "span 4", gridRow: gridRow ?? "span 1", children: [jsxRuntime.jsx(react.Input, { ...register(`${colLabel}`, { required: isRequired }), autoComplete: "off" }), errors[colLabel] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${colLabel}.fieldRequired`) }))] }) }));
4424
+ };
4425
+
4436
4426
  const RadioCardItem = React__namespace.forwardRef(function RadioCardItem(props, ref) {
4437
4427
  const { inputProps, label, description, addon, icon, indicator = jsxRuntime.jsx(react.RadioCard.ItemIndicator, {}), indicatorPlacement = "end", ...rest } = props;
4438
4428
  const hasContent = label || description || icon;
@@ -4528,6 +4518,62 @@ const TagPicker = ({ column }) => {
4528
4518
  }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: (errors[`${column}`]?.message ?? "No error message") }))] }));
4529
4519
  };
4530
4520
 
4521
+ const ColumnRenderer = ({ column, properties, prefix, }) => {
4522
+ if (properties === undefined) {
4523
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
4524
+ }
4525
+ console.log(`${column} does not exist when using ColumnRenderer`, { properties,
4526
+ column,
4527
+ prefix, }, "fdpok");
4528
+ const colSchema = properties[column];
4529
+ if (colSchema === undefined) {
4530
+ throw new Error(`${column} does not exist when using ColumnRenderer`);
4531
+ }
4532
+ const { type, variant, foreign_key, properties: innerProperties } = colSchema;
4533
+ if (type === "string") {
4534
+ if ((properties[column].enum ?? []).length > 0) {
4535
+ return jsxRuntime.jsx(EnumPicker, { schema: colSchema, prefix, column });
4536
+ }
4537
+ if (variant === "id-picker") {
4538
+ idPickerSanityCheck(column, foreign_key);
4539
+ return jsxRuntime.jsx(IdPicker, { schema: colSchema, prefix, column });
4540
+ }
4541
+ if (variant === "date-picker") {
4542
+ return jsxRuntime.jsx(DatePicker, { schema: colSchema, prefix, column });
4543
+ }
4544
+ return jsxRuntime.jsx(StringInputField, { schema: colSchema, prefix, column });
4545
+ }
4546
+ if (type === "number" || type === "integer") {
4547
+ return jsxRuntime.jsx(NumberInputField, { schema: colSchema, prefix, column });
4548
+ }
4549
+ if (type === "boolean") {
4550
+ return jsxRuntime.jsx(BooleanPicker, { schema: colSchema, prefix, column });
4551
+ }
4552
+ if (type === "object") {
4553
+ if (innerProperties) {
4554
+ return jsxRuntime.jsx(ObjectInput, { schema: colSchema, prefix, column });
4555
+ }
4556
+ return jsxRuntime.jsx(RecordInput, { schema: colSchema, prefix, column });
4557
+ }
4558
+ if (type === "array") {
4559
+ if (variant === "id-picker") {
4560
+ idPickerSanityCheck(column, foreign_key);
4561
+ return (jsxRuntime.jsx(IdPicker, { schema: colSchema, prefix, column, isMultiple: true }));
4562
+ }
4563
+ if (variant === "tag-picker") {
4564
+ return jsxRuntime.jsx(TagPicker, { schema: colSchema, prefix, column });
4565
+ }
4566
+ if (variant === "file-picker") {
4567
+ return jsxRuntime.jsx(FilePicker, { schema: colSchema, prefix, column });
4568
+ }
4569
+ return jsxRuntime.jsx(react.Text, { children: `array ${column}` });
4570
+ }
4571
+ if (type === "null") {
4572
+ return jsxRuntime.jsx(react.Text, { children: `null ${column}` });
4573
+ }
4574
+ return jsxRuntime.jsx(react.Text, { children: "missing type" });
4575
+ };
4576
+
4531
4577
  const idPickerSanityCheck = (column, foreign_key) => {
4532
4578
  if (!!foreign_key == false) {
4533
4579
  throw new Error(`The key foreign_key does not exist in properties of column ${column} when using id-picker.`);
@@ -4715,59 +4761,11 @@ const FormInternal = () => {
4715
4761
  }, variant: "subtle", children: translate.t("cancel") }), isSubmiting && (jsxRuntime.jsx(react.Box, { pos: "absolute", inset: "0", bg: "bg/80", children: jsxRuntime.jsx(react.Center, { h: "full", children: jsxRuntime.jsx(react.Spinner, { color: "teal.500" }) }) })), isError && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(react.Alert.Root, { status: "error", children: jsxRuntime.jsx(react.Alert.Title, { children: jsxRuntime.jsx(AccordionRoot, { collapsible: true, defaultValue: ["b"], children: jsxRuntime.jsxs(AccordionItem, { value: "b", children: [jsxRuntime.jsxs(AccordionItemTrigger, { children: [jsxRuntime.jsx(react.Alert.Indicator, {}), `${error}`] }), jsxRuntime.jsx(AccordionItemContent, { children: `${JSON.stringify(error)}` })] }) }) }) }) }))] }));
4716
4762
  }
4717
4763
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(react.Grid, { gap: 2, children: [jsxRuntime.jsxs(react.Heading, { children: [" ", translate.t("title")] }), jsxRuntime.jsx(react.Grid, { gap: 4, gridTemplateColumns: "repeat(12, 1fr)", gridTemplateRows: `repeat(${rowNumber ?? "auto-fit"}, auto)`, children: ordered.map((column) => {
4718
- if (properties === undefined) {
4719
- return jsxRuntime.jsx(jsxRuntime.Fragment, {});
4720
- }
4721
- const key = column;
4722
- const values = properties[column];
4723
- const shouldIgnore = ignore.some((column) => {
4724
- return column == key;
4725
- });
4726
- if (shouldIgnore) {
4727
- return jsxRuntime.jsx(jsxRuntime.Fragment, {});
4728
- }
4729
- //@ts-expect-error TODO: add more fields to support form-creation
4730
- const { type, variant, foreign_key } = values;
4731
- if (type === "string") {
4732
- // @ts-expect-error enum should exists
4733
- if ((values.enum ?? []).length > 0) {
4734
- return jsxRuntime.jsx(EnumPicker, { column: key }, `form-${key}`);
4735
- }
4736
- if (variant === "id-picker") {
4737
- idPickerSanityCheck(column, foreign_key);
4738
- return jsxRuntime.jsx(IdPicker, { column: key }, `form-${key}`);
4739
- }
4740
- if (variant === "date-picker") {
4741
- return jsxRuntime.jsx(DatePicker, { column: key }, `form-${key}`);
4742
- }
4743
- return jsxRuntime.jsx(StringInputField, { column: key }, `form-${key}`);
4744
- }
4745
- if (type === "number" || type === "integer") {
4746
- return jsxRuntime.jsx(NumberInputField, { column: key }, `form-${key}`);
4747
- }
4748
- if (type === "boolean") {
4749
- return jsxRuntime.jsx(BooleanPicker, { column: key }, `form-${key}`);
4750
- }
4751
- if (type === "object") {
4752
- return jsxRuntime.jsx(ObjectInput, { column: key }, `form-${key}`);
4753
- }
4754
- if (type === "array") {
4755
- if (variant === "id-picker") {
4756
- idPickerSanityCheck(column, foreign_key);
4757
- return jsxRuntime.jsx(IdPicker, { column: key, isMultiple: true }, `form-${key}`);
4758
- }
4759
- if (variant === "tag-picker") {
4760
- return jsxRuntime.jsx(TagPicker, { column: key }, `form-${key}`);
4761
- }
4762
- if (variant === "file-picker") {
4763
- return jsxRuntime.jsx(FilePicker, { column: key }, `form-${key}`);
4764
- }
4765
- return jsxRuntime.jsx(react.Text, { children: `array ${column}` }, `form-${key}`);
4766
- }
4767
- if (type === "null") {
4768
- return jsxRuntime.jsx(react.Text, { children: `null ${column}` }, `form-${key}`);
4769
- }
4770
- return jsxRuntime.jsx(react.Text, { children: "missing type" }, `form-${key}`);
4764
+ return (jsxRuntime.jsx(ColumnRenderer
4765
+ // @ts-expect-error find suitable types
4766
+ , {
4767
+ // @ts-expect-error find suitable types
4768
+ properties: properties, prefix: ``, column }, `form-${column}`));
4771
4769
  }) }), jsxRuntime.jsx(Button, { onClick: () => {
4772
4770
  methods.handleSubmit(onValid)();
4773
4771
  }, formNoValidate: true, children: translate.t("submit") })] }), isError && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: ["isError", jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [" ", `${error}`] })] }))] }));
@@ -4862,6 +4860,7 @@ exports.ViewDialog = ViewDialog;
4862
4860
  exports.getColumns = getColumns;
4863
4861
  exports.getMultiDates = getMultiDates;
4864
4862
  exports.getRangeDates = getRangeDates;
4863
+ exports.idPickerSanityCheck = idPickerSanityCheck;
4865
4864
  exports.useDataTable = useDataTable;
4866
4865
  exports.useDataTableContext = useDataTableContext;
4867
4866
  exports.useDataTableServer = useDataTableServer;