@bsol-oss/react-datatable5 12.0.0-beta.2 → 12.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
@@ -4,12 +4,13 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var react = require('@chakra-ui/react');
5
5
  var ai = require('react-icons/ai');
6
6
  var React = require('react');
7
- var md = require('react-icons/md');
8
7
  var lu = require('react-icons/lu');
9
- var Dayzed = require('@bsol-oss/dayzed-react19');
8
+ var md = require('react-icons/md');
10
9
  var fa6 = require('react-icons/fa6');
11
10
  var bi = require('react-icons/bi');
12
11
  var cg = require('react-icons/cg');
12
+ var Dayzed = require('@bsol-oss/dayzed-react19');
13
+ var hi2 = require('react-icons/hi2');
13
14
  var io = require('react-icons/io');
14
15
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
15
16
  var bindEventListener = require('bind-event-listener');
@@ -17,7 +18,7 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
17
18
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
18
19
  var rafSchd = require('raf-schd');
19
20
  var invariant = require('tiny-invariant');
20
- var hi2 = require('react-icons/hi2');
21
+ var hi = require('react-icons/hi');
21
22
  var reactTable = require('@tanstack/react-table');
22
23
  var matchSorterUtils = require('@tanstack/match-sorter-utils');
23
24
  var bs = require('react-icons/bs');
@@ -25,7 +26,6 @@ var usehooks = require('@uidotdev/usehooks');
25
26
  var reactQuery = require('@tanstack/react-query');
26
27
  var io5 = require('react-icons/io5');
27
28
  var gr = require('react-icons/gr');
28
- var hi = require('react-icons/hi');
29
29
  var reactI18next = require('react-i18next');
30
30
  var axios = require('axios');
31
31
  var reactHookForm = require('react-hook-form');
@@ -98,6 +98,89 @@ react.Dialog.Description;
98
98
  const DialogTrigger = react.Dialog.Trigger;
99
99
  react.Dialog.ActionTrigger;
100
100
 
101
+ const ColumnOrderChanger = ({ columns }) => {
102
+ const [order, setOrder] = React.useState([]);
103
+ const [originalOrder, setOriginalOrder] = React.useState([]);
104
+ const { table } = useDataTableContext();
105
+ const handleChangeOrder = (startIndex, endIndex) => {
106
+ const newOrder = Array.from(order);
107
+ const [removed] = newOrder.splice(startIndex, 1);
108
+ newOrder.splice(endIndex, 0, removed);
109
+ setOrder(newOrder);
110
+ };
111
+ React.useEffect(() => {
112
+ setOrder(columns);
113
+ }, [columns]);
114
+ React.useEffect(() => {
115
+ if (originalOrder.length > 0) {
116
+ return;
117
+ }
118
+ if (columns.length <= 0) {
119
+ return;
120
+ }
121
+ setOriginalOrder(columns);
122
+ }, [columns]);
123
+ return (jsxRuntime.jsxs(react.Flex, { gap: 2, flexFlow: "column", children: [jsxRuntime.jsx(react.Flex, { gap: 2, flexFlow: "column", children: order.map((columnId, index) => (jsxRuntime.jsxs(react.Flex, { gap: 2, alignItems: "center", justifyContent: "space-between", children: [jsxRuntime.jsx(react.IconButton, { onClick: () => {
124
+ const prevIndex = index - 1;
125
+ if (prevIndex >= 0) {
126
+ handleChangeOrder(index, prevIndex);
127
+ }
128
+ }, disabled: index === 0, "aria-label": "", children: jsxRuntime.jsx(md.MdArrowUpward, {}) }), table
129
+ .getAllFlatColumns()
130
+ .filter((column) => {
131
+ return column.id === columnId;
132
+ })
133
+ .map((column) => {
134
+ const displayName = column.columnDef.meta === undefined
135
+ ? column.id
136
+ : column.columnDef.meta.displayName;
137
+ return jsxRuntime.jsx("span", { children: displayName }, column.id);
138
+ }), jsxRuntime.jsx(react.IconButton, { onClick: () => {
139
+ const nextIndex = index + 1;
140
+ if (nextIndex < order.length) {
141
+ handleChangeOrder(index, nextIndex);
142
+ }
143
+ }, disabled: index === order.length - 1, "aria-label": "", children: jsxRuntime.jsx(md.MdArrowDownward, {}) })] }, columnId))) }), jsxRuntime.jsxs(react.Flex, { gap: "0.25rem", children: [jsxRuntime.jsx(react.Button, { onClick: () => {
144
+ table.setColumnOrder(order);
145
+ }, children: "Apply" }), jsxRuntime.jsx(react.Button, { onClick: () => {
146
+ table.setColumnOrder(originalOrder);
147
+ }, children: "Reset" })] })] }));
148
+ };
149
+ const TableOrderer = () => {
150
+ const { table } = useDataTableContext();
151
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(ColumnOrderChanger, { columns: table.getState().columnOrder }) }));
152
+ };
153
+
154
+ const EditOrderButton = ({ text, icon = jsxRuntime.jsx(md.MdOutlineMoveDown, {}), title = "Change Order", }) => {
155
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(DialogRoot, { size: "cover", children: [jsxRuntime.jsx(react.DialogBackdrop, {}), jsxRuntime.jsx(DialogTrigger, { asChild: true, children: jsxRuntime.jsxs(react.Button, { as: react.Box, variant: "ghost", children: [icon, " ", text] }) }), jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsx(DialogCloseTrigger, {}), jsxRuntime.jsxs(DialogHeader, { children: [jsxRuntime.jsx(DialogTitle, {}), title] }), jsxRuntime.jsx(DialogBody, { children: jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: "0.25rem", children: jsxRuntime.jsx(TableOrderer, {}) }) }), jsxRuntime.jsx(DialogFooter, {})] })] }) }));
156
+ };
157
+
158
+ const TableSorter = () => {
159
+ const { table } = useDataTableContext();
160
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsx(jsxRuntime.Fragment, { children: headerGroup.headers.map((header) => {
161
+ const displayName = header.column.columnDef.meta === undefined
162
+ ? header.column.id
163
+ : header.column.columnDef.meta.displayName;
164
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: header.column.getCanSort() && (jsxRuntime.jsxs(react.Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsxRuntime.jsx(react.Text, { children: displayName }), jsxRuntime.jsxs(react.Button, { variant: "ghost", onClick: () => {
165
+ header.column.toggleSorting();
166
+ }, children: [header.column.getIsSorted() === false && jsxRuntime.jsx(fa6.FaUpDown, {}), header.column.getIsSorted() === "asc" && jsxRuntime.jsx(bi.BiDownArrow, {}), header.column.getIsSorted() === "desc" && jsxRuntime.jsx(bi.BiUpArrow, {})] }), header.column.getIsSorted() && (jsxRuntime.jsx(react.Button, { onClick: () => {
167
+ header.column.clearSorting();
168
+ }, children: jsxRuntime.jsx(cg.CgClose, {}) }))] })) }));
169
+ }) }))) }));
170
+ };
171
+
172
+ const ResetSortingButton = ({ text = "Reset Sorting", }) => {
173
+ const { table } = useDataTableContext();
174
+ return (jsxRuntime.jsx(react.Button, { onClick: () => {
175
+ table.resetSorting();
176
+ }, children: text }));
177
+ };
178
+
179
+ const EditSortingButton = ({ text, icon = jsxRuntime.jsx(md.MdOutlineSort, {}), title = "Edit Sorting", }) => {
180
+ const sortingModal = react.useDisclosure();
181
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(DialogRoot, { size: ["full", "full", "md", "md"], children: [jsxRuntime.jsx(react.DialogBackdrop, {}), jsxRuntime.jsx(DialogTrigger, { children: jsxRuntime.jsxs(react.Button, { as: "div", variant: "ghost", onClick: sortingModal.onOpen, children: [icon, " ", text] }) }), jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsx(DialogCloseTrigger, {}), jsxRuntime.jsxs(DialogHeader, { children: [jsxRuntime.jsx(DialogTitle, {}), title] }), jsxRuntime.jsx(DialogBody, { children: jsxRuntime.jsxs(react.Flex, { flexFlow: "column", gap: "0.25rem", children: [jsxRuntime.jsx(TableSorter, {}), jsxRuntime.jsx(ResetSortingButton, {})] }) }), jsxRuntime.jsx(DialogFooter, {})] })] }) }));
182
+ };
183
+
101
184
  const Radio = React__namespace.forwardRef(function Radio(props, ref) {
102
185
  const { children, inputProps, rootRef, ...rest } = props;
103
186
  return (jsxRuntime.jsxs(react.RadioGroup.Item, { ref: rootRef, ...rest, children: [jsxRuntime.jsx(react.RadioGroup.ItemHiddenInput, { ref: ref, ...inputProps }), jsxRuntime.jsx(react.RadioGroup.ItemIndicator, {}), children && (jsxRuntime.jsx(react.RadioGroup.ItemText, { children: children }))] }));
@@ -380,87 +463,138 @@ const FilterDialog = ({ icon = jsxRuntime.jsx(md.MdFilterAlt, {}), }) => {
380
463
  return (jsxRuntime.jsxs(DialogRoot, { size: ["full", "full", "md", "md"], open: filterModal.open, children: [jsxRuntime.jsx(DialogTrigger, { asChild: true, children: jsxRuntime.jsxs(react.Button, { as: react.Box, variant: "ghost", onClick: filterModal.onOpen, children: [icon, " ", translate.t("filterDialog.buttonText")] }) }), jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsx(DialogHeader, { children: jsxRuntime.jsx(DialogTitle, { children: translate.t("filterDialog.title") }) }), jsxRuntime.jsx(DialogBody, { display: "flex", flexFlow: "column", children: jsxRuntime.jsx(TableFilter, {}) }), jsxRuntime.jsxs(DialogFooter, { children: [jsxRuntime.jsx(ResetFilteringButton, { text: translate.t("filterDialog.reset") }), jsxRuntime.jsx(react.Button, { onClick: filterModal.onClose, variant: "subtle", children: translate.t("filterDialog.close") })] }), jsxRuntime.jsx(DialogCloseTrigger, { onClick: filterModal.onClose })] })] }));
381
464
  };
382
465
 
383
- const ColumnOrderChanger = ({ columns }) => {
384
- const [order, setOrder] = React.useState([]);
385
- const [originalOrder, setOriginalOrder] = React.useState([]);
386
- const { table } = useDataTableContext();
387
- const handleChangeOrder = (startIndex, endIndex) => {
388
- const newOrder = Array.from(order);
389
- const [removed] = newOrder.splice(startIndex, 1);
390
- newOrder.splice(endIndex, 0, removed);
391
- setOrder(newOrder);
392
- };
393
- React.useEffect(() => {
394
- setOrder(columns);
395
- }, [columns]);
396
- React.useEffect(() => {
397
- if (originalOrder.length > 0) {
398
- return;
399
- }
400
- if (columns.length <= 0) {
401
- return;
402
- }
403
- setOriginalOrder(columns);
404
- }, [columns]);
405
- return (jsxRuntime.jsxs(react.Flex, { gap: 2, flexFlow: "column", children: [jsxRuntime.jsx(react.Flex, { gap: 2, flexFlow: "column", children: order.map((columnId, index) => (jsxRuntime.jsxs(react.Flex, { gap: 2, alignItems: "center", justifyContent: "space-between", children: [jsxRuntime.jsx(react.IconButton, { onClick: () => {
406
- const prevIndex = index - 1;
407
- if (prevIndex >= 0) {
408
- handleChangeOrder(index, prevIndex);
409
- }
410
- }, disabled: index === 0, "aria-label": "", children: jsxRuntime.jsx(md.MdArrowUpward, {}) }), table
411
- .getAllFlatColumns()
412
- .filter((column) => {
413
- return column.id === columnId;
414
- })
415
- .map((column) => {
416
- const displayName = column.columnDef.meta === undefined
417
- ? column.id
418
- : column.columnDef.meta.displayName;
419
- return jsxRuntime.jsx("span", { children: displayName }, column.id);
420
- }), jsxRuntime.jsx(react.IconButton, { onClick: () => {
421
- const nextIndex = index + 1;
422
- if (nextIndex < order.length) {
423
- handleChangeOrder(index, nextIndex);
424
- }
425
- }, disabled: index === order.length - 1, "aria-label": "", children: jsxRuntime.jsx(md.MdArrowDownward, {}) })] }, columnId))) }), jsxRuntime.jsxs(react.Flex, { gap: "0.25rem", children: [jsxRuntime.jsx(react.Button, { onClick: () => {
426
- table.setColumnOrder(order);
427
- }, children: "Apply" }), jsxRuntime.jsx(react.Button, { onClick: () => {
428
- table.setColumnOrder(originalOrder);
429
- }, children: "Reset" })] })] }));
430
- };
431
- const TableOrderer = () => {
466
+ const MenuContent = React__namespace.forwardRef(function MenuContent(props, ref) {
467
+ const { portalled = true, portalRef, ...rest } = props;
468
+ return (jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: jsxRuntime.jsx(react.Menu.Positioner, { children: jsxRuntime.jsx(react.Menu.Content, { ref: ref, ...rest }) }) }));
469
+ });
470
+ React__namespace.forwardRef(function MenuArrow(props, ref) {
471
+ return (jsxRuntime.jsx(react.Menu.Arrow, { ref: ref, ...props, children: jsxRuntime.jsx(react.Menu.ArrowTip, {}) }));
472
+ });
473
+ React__namespace.forwardRef(function MenuCheckboxItem(props, ref) {
474
+ return (jsxRuntime.jsxs(react.Menu.CheckboxItem, { ref: ref, ...props, children: [jsxRuntime.jsx(react.Menu.ItemIndicator, { hidden: false, children: jsxRuntime.jsx(lu.LuCheck, {}) }), props.children] }));
475
+ });
476
+ React__namespace.forwardRef(function MenuRadioItem(props, ref) {
477
+ const { children, ...rest } = props;
478
+ return (jsxRuntime.jsxs(react.Menu.RadioItem, { ps: "8", ref: ref, ...rest, children: [jsxRuntime.jsx(react.AbsoluteCenter, { axis: "horizontal", left: "4", asChild: true, children: jsxRuntime.jsx(react.Menu.ItemIndicator, { children: jsxRuntime.jsx(lu.LuCheck, {}) }) }), jsxRuntime.jsx(react.Menu.ItemText, { children: children })] }));
479
+ });
480
+ React__namespace.forwardRef(function MenuItemGroup(props, ref) {
481
+ const { title, children, ...rest } = props;
482
+ return (jsxRuntime.jsxs(react.Menu.ItemGroup, { ref: ref, ...rest, children: [title && (jsxRuntime.jsx(react.Menu.ItemGroupLabel, { userSelect: "none", children: title })), children] }));
483
+ });
484
+ React__namespace.forwardRef(function MenuTriggerItem(props, ref) {
485
+ const { startIcon, children, ...rest } = props;
486
+ return (jsxRuntime.jsxs(react.Menu.TriggerItem, { ref: ref, ...rest, children: [startIcon, children, jsxRuntime.jsx(lu.LuChevronRight, {})] }));
487
+ });
488
+ react.Menu.RadioItemGroup;
489
+ react.Menu.ContextTrigger;
490
+ const MenuRoot = react.Menu.Root;
491
+ react.Menu.Separator;
492
+ const MenuItem = react.Menu.Item;
493
+ react.Menu.ItemText;
494
+ react.Menu.ItemCommand;
495
+ const MenuTrigger = react.Menu.Trigger;
496
+
497
+ const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
432
498
  const { table } = useDataTableContext();
433
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(ColumnOrderChanger, { columns: table.getState().columnOrder }) }));
499
+ return (jsxRuntime.jsxs(MenuRoot, { children: [jsxRuntime.jsx(MenuTrigger, { asChild: true, children: jsxRuntime.jsxs(react.Button, { variant: "ghost", gap: "0.5rem", children: [table.getState().pagination.pageSize, " ", jsxRuntime.jsx(bi.BiDownArrow, {})] }) }), jsxRuntime.jsx(MenuContent, { children: pageSizes.map((pageSize) => (jsxRuntime.jsx(MenuItem, { value: `chakra-table-pageSize-${pageSize}`, onClick: () => {
500
+ table.setPageSize(Number(pageSize));
501
+ }, children: pageSize }, `chakra-table-pageSize-${pageSize}`))) })] }));
434
502
  };
435
503
 
436
- const EditOrderButton = ({ text, icon = jsxRuntime.jsx(md.MdOutlineMoveDown, {}), title = "Change Order", }) => {
437
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(DialogRoot, { size: "cover", children: [jsxRuntime.jsx(react.DialogBackdrop, {}), jsxRuntime.jsx(DialogTrigger, { asChild: true, children: jsxRuntime.jsxs(react.Button, { as: react.Box, variant: "ghost", children: [icon, " ", text] }) }), jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsx(DialogCloseTrigger, {}), jsxRuntime.jsxs(DialogHeader, { children: [jsxRuntime.jsx(DialogTitle, {}), title] }), jsxRuntime.jsx(DialogBody, { children: jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: "0.25rem", children: jsxRuntime.jsx(TableOrderer, {}) }) }), jsxRuntime.jsx(DialogFooter, {})] })] }) }));
504
+ const { withContext } = react.createRecipeContext({ key: "button" });
505
+ // Replace "a" with your framework's link component
506
+ const LinkButton = withContext("a");
507
+
508
+ const [RootPropsProvider, useRootProps] = react.createContext({
509
+ name: "RootPropsProvider",
510
+ });
511
+ const variantMap = {
512
+ outline: { default: "ghost", ellipsis: "plain", current: "outline" },
513
+ solid: { default: "outline", ellipsis: "outline", current: "solid" },
514
+ subtle: { default: "ghost", ellipsis: "plain", current: "subtle" },
438
515
  };
516
+ const PaginationRoot = React__namespace.forwardRef(function PaginationRoot(props, ref) {
517
+ const { size = "sm", variant = "outline", getHref, ...rest } = props;
518
+ return (jsxRuntime.jsx(RootPropsProvider, { value: { size, variantMap: variantMap[variant], getHref }, children: jsxRuntime.jsx(react.Pagination.Root, { ref: ref, type: getHref ? "link" : "button", ...rest }) }));
519
+ });
520
+ const PaginationEllipsis = React__namespace.forwardRef(function PaginationEllipsis(props, ref) {
521
+ const { size, variantMap } = useRootProps();
522
+ return (jsxRuntime.jsx(react.Pagination.Ellipsis, { ref: ref, ...props, asChild: true, children: jsxRuntime.jsx(react.Button, { as: "span", variant: variantMap.ellipsis, size: size, children: jsxRuntime.jsx(hi2.HiMiniEllipsisHorizontal, {}) }) }));
523
+ });
524
+ const PaginationItem = React__namespace.forwardRef(function PaginationItem(props, ref) {
525
+ const { page } = react.usePaginationContext();
526
+ const { size, variantMap, getHref } = useRootProps();
527
+ const current = page === props.value;
528
+ const variant = current ? variantMap.current : variantMap.default;
529
+ if (getHref) {
530
+ return (jsxRuntime.jsx(LinkButton, { href: getHref(props.value), variant: variant, size: size, children: props.value }));
531
+ }
532
+ return (jsxRuntime.jsx(react.Pagination.Item, { ref: ref, ...props, asChild: true, children: jsxRuntime.jsx(react.Button, { variant: variant, size: size, children: props.value }) }));
533
+ });
534
+ const PaginationPrevTrigger = React__namespace.forwardRef(function PaginationPrevTrigger(props, ref) {
535
+ const { size, variantMap, getHref } = useRootProps();
536
+ const { previousPage } = react.usePaginationContext();
537
+ if (getHref) {
538
+ return (jsxRuntime.jsx(LinkButton, { href: previousPage != null ? getHref(previousPage) : undefined, variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronLeft, {}) }));
539
+ }
540
+ return (jsxRuntime.jsx(react.Pagination.PrevTrigger, { ref: ref, asChild: true, ...props, children: jsxRuntime.jsx(react.IconButton, { variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronLeft, {}) }) }));
541
+ });
542
+ const PaginationNextTrigger = React__namespace.forwardRef(function PaginationNextTrigger(props, ref) {
543
+ const { size, variantMap, getHref } = useRootProps();
544
+ const { nextPage } = react.usePaginationContext();
545
+ if (getHref) {
546
+ return (jsxRuntime.jsx(LinkButton, { href: nextPage != null ? getHref(nextPage) : undefined, variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronRight, {}) }));
547
+ }
548
+ return (jsxRuntime.jsx(react.Pagination.NextTrigger, { ref: ref, asChild: true, ...props, children: jsxRuntime.jsx(react.IconButton, { variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronRight, {}) }) }));
549
+ });
550
+ const PaginationItems = (props) => {
551
+ return (jsxRuntime.jsx(react.Pagination.Context, { children: ({ pages }) => pages.map((page, index) => {
552
+ return page.type === "ellipsis" ? (jsxRuntime.jsx(PaginationEllipsis, { index: index, ...props }, index)) : (jsxRuntime.jsx(PaginationItem, { type: "page", value: page.value, ...props }, index));
553
+ }) }));
554
+ };
555
+ const PaginationPageText = React__namespace.forwardRef(function PaginationPageText(props, ref) {
556
+ const { format = "compact", ...rest } = props;
557
+ const { page, totalPages, pageRange, count } = react.usePaginationContext();
558
+ const content = React__namespace.useMemo(() => {
559
+ if (format === "short")
560
+ return `${page} / ${totalPages}`;
561
+ if (format === "compact")
562
+ return `${page} / ${totalPages}`;
563
+ return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)} / ${count}`;
564
+ }, [format, page, totalPages, pageRange, count]);
565
+ return (jsxRuntime.jsx(react.Text, { fontWeight: "medium", ref: ref, ...rest, children: content }));
566
+ });
439
567
 
440
- const TableSorter = () => {
441
- const { table } = useDataTableContext();
442
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsx(jsxRuntime.Fragment, { children: headerGroup.headers.map((header) => {
443
- const displayName = header.column.columnDef.meta === undefined
444
- ? header.column.id
445
- : header.column.columnDef.meta.displayName;
446
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: header.column.getCanSort() && (jsxRuntime.jsxs(react.Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsxRuntime.jsx(react.Text, { children: displayName }), jsxRuntime.jsxs(react.Button, { variant: "ghost", onClick: () => {
447
- header.column.toggleSorting();
448
- }, children: [header.column.getIsSorted() === false && jsxRuntime.jsx(fa6.FaUpDown, {}), header.column.getIsSorted() === "asc" && jsxRuntime.jsx(bi.BiDownArrow, {}), header.column.getIsSorted() === "desc" && jsxRuntime.jsx(bi.BiUpArrow, {})] }), header.column.getIsSorted() && (jsxRuntime.jsx(react.Button, { onClick: () => {
449
- header.column.clearSorting();
450
- }, children: jsxRuntime.jsx(cg.CgClose, {}) }))] })) }));
451
- }) }))) }));
568
+ // TODO: not working in client side
569
+ const Pagination = () => {
570
+ const { table, type } = useDataTableContext();
571
+ const getCount = () => {
572
+ if (type === "client") {
573
+ return table.getFilteredRowModel().flatRows.length ?? 0;
574
+ }
575
+ return table.getRowCount();
576
+ };
577
+ return (jsxRuntime.jsx(PaginationRoot, { page: table.getState().pagination.pageIndex + 1, count: getCount(), pageSize: table.getState().pagination.pageSize, onPageChange: (e) => {
578
+ table.setPageIndex(e.page - 1);
579
+ }, children: jsxRuntime.jsxs(react.HStack, { children: [jsxRuntime.jsx(PaginationPrevTrigger, {}), jsxRuntime.jsx(PaginationItems, {}), jsxRuntime.jsx(PaginationNextTrigger, {})] }) }));
452
580
  };
453
581
 
454
- const ResetSortingButton = ({ text = "Reset Sorting", }) => {
582
+ const ResetSelectionButton = ({ text = "Reset Selection", }) => {
455
583
  const { table } = useDataTableContext();
456
584
  return (jsxRuntime.jsx(react.Button, { onClick: () => {
457
- table.resetSorting();
585
+ table.resetRowSelection();
458
586
  }, children: text }));
459
587
  };
460
588
 
461
- const EditSortingButton = ({ text, icon = jsxRuntime.jsx(md.MdOutlineSort, {}), title = "Edit Sorting", }) => {
462
- const sortingModal = react.useDisclosure();
463
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(DialogRoot, { size: ["full", "full", "md", "md"], children: [jsxRuntime.jsx(react.DialogBackdrop, {}), jsxRuntime.jsx(DialogTrigger, { children: jsxRuntime.jsxs(react.Button, { as: "div", variant: "ghost", onClick: sortingModal.onOpen, children: [icon, " ", text] }) }), jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsx(DialogCloseTrigger, {}), jsxRuntime.jsxs(DialogHeader, { children: [jsxRuntime.jsx(DialogTitle, {}), title] }), jsxRuntime.jsx(DialogBody, { children: jsxRuntime.jsxs(react.Flex, { flexFlow: "column", gap: "0.25rem", children: [jsxRuntime.jsx(TableSorter, {}), jsxRuntime.jsx(ResetSortingButton, {})] }) }), jsxRuntime.jsx(DialogFooter, {})] })] }) }));
589
+ const RowCountText = () => {
590
+ const { table, type } = useDataTableContext();
591
+ const getCount = () => {
592
+ if (type === "client") {
593
+ return table.getFilteredRowModel().flatRows.length ?? 0;
594
+ }
595
+ return table.getRowCount();
596
+ };
597
+ return jsxRuntime.jsx(react.Text, { children: getCount() });
464
598
  };
465
599
 
466
600
  // pulling this into a separate file so adapter(s) that don't
@@ -2379,220 +2513,86 @@ function ColumnCard({ columnId }) {
2379
2513
  onDragStart: () => setDragging(true), // NEW
2380
2514
  onDrop: () => setDragging(false), // NEW
2381
2515
  });
2382
- }, [columnId, table]);
2383
- return (jsxRuntime.jsxs(react.Grid, { ref: ref, templateColumns: "auto 1fr", gap: "0.5rem", alignItems: "center", style: dragging ? { opacity: 0.4 } : {}, children: [jsxRuntime.jsx(react.Flex, { alignItems: "center", padding: "0", cursor: 'grab', children: jsxRuntime.jsx(fa6.FaGripLinesVertical, { color: "gray.400" }) }), jsxRuntime.jsx(react.Flex, { justifyContent: "space-between", alignItems: "center", children: jsxRuntime.jsx(CheckboxCard, { variant: "surface", label: displayName, checked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler() }) })] }));
2384
- }
2385
- function CardContainer({ location, children }) {
2386
- const ref = React.useRef(null);
2387
- const [isDraggedOver, setIsDraggedOver] = React.useState(false);
2388
- React.useEffect(() => {
2389
- const el = ref.current;
2390
- invariant(el);
2391
- return dropTargetForElements({
2392
- element: el,
2393
- getData: () => ({ location }),
2394
- onDragEnter: () => setIsDraggedOver(true),
2395
- onDragLeave: () => setIsDraggedOver(false),
2396
- onDrop: () => setIsDraggedOver(false),
2397
- });
2398
- }, [location]);
2399
- // const isDark = (location + location) % 2 === 1;
2400
- function getColor(isDraggedOver) {
2401
- if (isDraggedOver) {
2402
- return {
2403
- backgroundColor: "blue.400",
2404
- _dark: {
2405
- backgroundColor: "blue.400",
2406
- },
2407
- };
2408
- }
2409
- // return isDark ? "lightgrey" : "white";
2410
- return {
2411
- backgroundColor: undefined,
2412
- _dark: {
2413
- backgroundColor: undefined,
2414
- },
2415
- };
2416
- }
2417
- return (jsxRuntime.jsx(react.Box, { ...getColor(isDraggedOver), ref: ref, children: children }));
2418
- }
2419
- const TableViewer = () => {
2420
- const { table } = useDataTableContext();
2421
- const order = table.getState().columnOrder.length > 0
2422
- ? table.getState().columnOrder
2423
- : table.getAllLeafColumns().map(({ id }) => {
2424
- return id;
2425
- });
2426
- React.useEffect(() => {
2427
- return monitorForElements({
2428
- onDrop({ source, location }) {
2429
- const destination = location.current.dropTargets[0];
2430
- if (!destination) {
2431
- return;
2432
- }
2433
- const destinationLocation = destination.data.location;
2434
- // const sourceLocation = source.data.location;
2435
- const sourceColumn = source.data.column;
2436
- const columnOrder = order.map((id) => {
2437
- if (id == sourceColumn.id) {
2438
- return "<marker>";
2439
- }
2440
- return id;
2441
- });
2442
- const columnBefore = columnOrder.slice(0, destinationLocation + 1);
2443
- const columnAfter = columnOrder.slice(destinationLocation + 1, columnOrder.length);
2444
- const newOrder = [
2445
- ...columnBefore,
2446
- sourceColumn.id,
2447
- ...columnAfter,
2448
- ].filter((id) => id != "<marker>");
2449
- table.setColumnOrder(newOrder);
2450
- },
2451
- });
2452
- }, [table]);
2453
- return (jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: "0.25rem", children: order.map((columnId, index) => {
2454
- return (jsxRuntime.jsx(CardContainer, { location: index, children: jsxRuntime.jsx(ColumnCard, { columnId: columnId }) }));
2455
- }) }));
2456
- };
2457
-
2458
- const ViewDialog = ({ icon = jsxRuntime.jsx(io.IoMdEye, {}) }) => {
2459
- const viewModel = react.useDisclosure();
2460
- const { translate } = useDataTableContext();
2461
- return (jsxRuntime.jsxs(DialogRoot, { children: [jsxRuntime.jsx(react.DialogBackdrop, {}), jsxRuntime.jsx(DialogTrigger, { asChild: true, children: jsxRuntime.jsxs(react.Button, { as: react.Box, variant: "ghost", onClick: viewModel.onOpen, children: [icon, " ", translate.t("viewDialog.buttonText")] }) }), jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsx(DialogCloseTrigger, {}), jsxRuntime.jsx(DialogHeader, { children: jsxRuntime.jsx(DialogTitle, { children: translate.t("viewDialog.title") }) }), jsxRuntime.jsx(DialogBody, { children: jsxRuntime.jsx(TableViewer, {}) }), jsxRuntime.jsx(DialogFooter, {})] })] }));
2462
- };
2463
-
2464
- const MenuContent = React__namespace.forwardRef(function MenuContent(props, ref) {
2465
- const { portalled = true, portalRef, ...rest } = props;
2466
- return (jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: jsxRuntime.jsx(react.Menu.Positioner, { children: jsxRuntime.jsx(react.Menu.Content, { ref: ref, ...rest }) }) }));
2467
- });
2468
- React__namespace.forwardRef(function MenuArrow(props, ref) {
2469
- return (jsxRuntime.jsx(react.Menu.Arrow, { ref: ref, ...props, children: jsxRuntime.jsx(react.Menu.ArrowTip, {}) }));
2470
- });
2471
- React__namespace.forwardRef(function MenuCheckboxItem(props, ref) {
2472
- return (jsxRuntime.jsxs(react.Menu.CheckboxItem, { ref: ref, ...props, children: [jsxRuntime.jsx(react.Menu.ItemIndicator, { hidden: false, children: jsxRuntime.jsx(lu.LuCheck, {}) }), props.children] }));
2473
- });
2474
- React__namespace.forwardRef(function MenuRadioItem(props, ref) {
2475
- const { children, ...rest } = props;
2476
- return (jsxRuntime.jsxs(react.Menu.RadioItem, { ps: "8", ref: ref, ...rest, children: [jsxRuntime.jsx(react.AbsoluteCenter, { axis: "horizontal", left: "4", asChild: true, children: jsxRuntime.jsx(react.Menu.ItemIndicator, { children: jsxRuntime.jsx(lu.LuCheck, {}) }) }), jsxRuntime.jsx(react.Menu.ItemText, { children: children })] }));
2477
- });
2478
- React__namespace.forwardRef(function MenuItemGroup(props, ref) {
2479
- const { title, children, ...rest } = props;
2480
- return (jsxRuntime.jsxs(react.Menu.ItemGroup, { ref: ref, ...rest, children: [title && (jsxRuntime.jsx(react.Menu.ItemGroupLabel, { userSelect: "none", children: title })), children] }));
2481
- });
2482
- React__namespace.forwardRef(function MenuTriggerItem(props, ref) {
2483
- const { startIcon, children, ...rest } = props;
2484
- return (jsxRuntime.jsxs(react.Menu.TriggerItem, { ref: ref, ...rest, children: [startIcon, children, jsxRuntime.jsx(lu.LuChevronRight, {})] }));
2485
- });
2486
- react.Menu.RadioItemGroup;
2487
- react.Menu.ContextTrigger;
2488
- const MenuRoot = react.Menu.Root;
2489
- react.Menu.Separator;
2490
- const MenuItem = react.Menu.Item;
2491
- react.Menu.ItemText;
2492
- react.Menu.ItemCommand;
2493
- const MenuTrigger = react.Menu.Trigger;
2494
-
2495
- const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
2496
- const { table } = useDataTableContext();
2497
- return (jsxRuntime.jsxs(MenuRoot, { children: [jsxRuntime.jsx(MenuTrigger, { asChild: true, children: jsxRuntime.jsxs(react.Button, { variant: "ghost", gap: "0.5rem", children: [table.getState().pagination.pageSize, " ", jsxRuntime.jsx(bi.BiDownArrow, {})] }) }), jsxRuntime.jsx(MenuContent, { children: pageSizes.map((pageSize) => (jsxRuntime.jsx(MenuItem, { value: `chakra-table-pageSize-${pageSize}`, onClick: () => {
2498
- table.setPageSize(Number(pageSize));
2499
- }, children: pageSize }, `chakra-table-pageSize-${pageSize}`))) })] }));
2500
- };
2501
-
2502
- const ResetSelectionButton = ({ text = "Reset Selection", }) => {
2503
- const { table } = useDataTableContext();
2504
- return (jsxRuntime.jsx(react.Button, { onClick: () => {
2505
- table.resetRowSelection();
2506
- }, children: text }));
2507
- };
2508
-
2509
- const RowCountText = () => {
2510
- const { table, type } = useDataTableContext();
2511
- const getCount = () => {
2512
- if (type === "client") {
2513
- return table.getFilteredRowModel().flatRows.length ?? 0;
2514
- }
2515
- return table.getRowCount();
2516
- };
2517
- return jsxRuntime.jsx(react.Text, { children: getCount() });
2518
- };
2519
-
2520
- const { withContext } = react.createRecipeContext({ key: "button" });
2521
- // Replace "a" with your framework's link component
2522
- const LinkButton = withContext("a");
2523
-
2524
- const [RootPropsProvider, useRootProps] = react.createContext({
2525
- name: "RootPropsProvider",
2526
- });
2527
- const variantMap = {
2528
- outline: { default: "ghost", ellipsis: "plain", current: "outline" },
2529
- solid: { default: "outline", ellipsis: "outline", current: "solid" },
2530
- subtle: { default: "ghost", ellipsis: "plain", current: "subtle" },
2531
- };
2532
- const PaginationRoot = React__namespace.forwardRef(function PaginationRoot(props, ref) {
2533
- const { size = "sm", variant = "outline", getHref, ...rest } = props;
2534
- return (jsxRuntime.jsx(RootPropsProvider, { value: { size, variantMap: variantMap[variant], getHref }, children: jsxRuntime.jsx(react.Pagination.Root, { ref: ref, type: getHref ? "link" : "button", ...rest }) }));
2535
- });
2536
- const PaginationEllipsis = React__namespace.forwardRef(function PaginationEllipsis(props, ref) {
2537
- const { size, variantMap } = useRootProps();
2538
- return (jsxRuntime.jsx(react.Pagination.Ellipsis, { ref: ref, ...props, asChild: true, children: jsxRuntime.jsx(react.Button, { as: "span", variant: variantMap.ellipsis, size: size, children: jsxRuntime.jsx(hi2.HiMiniEllipsisHorizontal, {}) }) }));
2539
- });
2540
- const PaginationItem = React__namespace.forwardRef(function PaginationItem(props, ref) {
2541
- const { page } = react.usePaginationContext();
2542
- const { size, variantMap, getHref } = useRootProps();
2543
- const current = page === props.value;
2544
- const variant = current ? variantMap.current : variantMap.default;
2545
- if (getHref) {
2546
- return (jsxRuntime.jsx(LinkButton, { href: getHref(props.value), variant: variant, size: size, children: props.value }));
2547
- }
2548
- return (jsxRuntime.jsx(react.Pagination.Item, { ref: ref, ...props, asChild: true, children: jsxRuntime.jsx(react.Button, { variant: variant, size: size, children: props.value }) }));
2549
- });
2550
- const PaginationPrevTrigger = React__namespace.forwardRef(function PaginationPrevTrigger(props, ref) {
2551
- const { size, variantMap, getHref } = useRootProps();
2552
- const { previousPage } = react.usePaginationContext();
2553
- if (getHref) {
2554
- return (jsxRuntime.jsx(LinkButton, { href: previousPage != null ? getHref(previousPage) : undefined, variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronLeft, {}) }));
2555
- }
2556
- return (jsxRuntime.jsx(react.Pagination.PrevTrigger, { ref: ref, asChild: true, ...props, children: jsxRuntime.jsx(react.IconButton, { variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronLeft, {}) }) }));
2557
- });
2558
- const PaginationNextTrigger = React__namespace.forwardRef(function PaginationNextTrigger(props, ref) {
2559
- const { size, variantMap, getHref } = useRootProps();
2560
- const { nextPage } = react.usePaginationContext();
2561
- if (getHref) {
2562
- return (jsxRuntime.jsx(LinkButton, { href: nextPage != null ? getHref(nextPage) : undefined, variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronRight, {}) }));
2516
+ }, [columnId, table]);
2517
+ return (jsxRuntime.jsxs(react.Grid, { ref: ref, templateColumns: "auto 1fr", gap: "0.5rem", alignItems: "center", style: dragging ? { opacity: 0.4 } : {}, children: [jsxRuntime.jsx(react.Flex, { alignItems: "center", padding: "0", cursor: 'grab', children: jsxRuntime.jsx(fa6.FaGripLinesVertical, { color: "gray.400" }) }), jsxRuntime.jsx(react.Flex, { justifyContent: "space-between", alignItems: "center", children: jsxRuntime.jsx(CheckboxCard, { variant: "surface", label: displayName, checked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler() }) })] }));
2518
+ }
2519
+ function CardContainer({ location, children }) {
2520
+ const ref = React.useRef(null);
2521
+ const [isDraggedOver, setIsDraggedOver] = React.useState(false);
2522
+ React.useEffect(() => {
2523
+ const el = ref.current;
2524
+ invariant(el);
2525
+ return dropTargetForElements({
2526
+ element: el,
2527
+ getData: () => ({ location }),
2528
+ onDragEnter: () => setIsDraggedOver(true),
2529
+ onDragLeave: () => setIsDraggedOver(false),
2530
+ onDrop: () => setIsDraggedOver(false),
2531
+ });
2532
+ }, [location]);
2533
+ // const isDark = (location + location) % 2 === 1;
2534
+ function getColor(isDraggedOver) {
2535
+ if (isDraggedOver) {
2536
+ return {
2537
+ backgroundColor: "blue.400",
2538
+ _dark: {
2539
+ backgroundColor: "blue.400",
2540
+ },
2541
+ };
2542
+ }
2543
+ // return isDark ? "lightgrey" : "white";
2544
+ return {
2545
+ backgroundColor: undefined,
2546
+ _dark: {
2547
+ backgroundColor: undefined,
2548
+ },
2549
+ };
2563
2550
  }
2564
- return (jsxRuntime.jsx(react.Pagination.NextTrigger, { ref: ref, asChild: true, ...props, children: jsxRuntime.jsx(react.IconButton, { variant: variantMap.default, size: size, children: jsxRuntime.jsx(hi2.HiChevronRight, {}) }) }));
2565
- });
2566
- const PaginationItems = (props) => {
2567
- return (jsxRuntime.jsx(react.Pagination.Context, { children: ({ pages }) => pages.map((page, index) => {
2568
- return page.type === "ellipsis" ? (jsxRuntime.jsx(PaginationEllipsis, { index: index, ...props }, index)) : (jsxRuntime.jsx(PaginationItem, { type: "page", value: page.value, ...props }, index));
2551
+ return (jsxRuntime.jsx(react.Box, { ...getColor(isDraggedOver), ref: ref, children: children }));
2552
+ }
2553
+ const TableViewer = () => {
2554
+ const { table } = useDataTableContext();
2555
+ const order = table.getState().columnOrder.length > 0
2556
+ ? table.getState().columnOrder
2557
+ : table.getAllLeafColumns().map(({ id }) => {
2558
+ return id;
2559
+ });
2560
+ React.useEffect(() => {
2561
+ return monitorForElements({
2562
+ onDrop({ source, location }) {
2563
+ const destination = location.current.dropTargets[0];
2564
+ if (!destination) {
2565
+ return;
2566
+ }
2567
+ const destinationLocation = destination.data.location;
2568
+ // const sourceLocation = source.data.location;
2569
+ const sourceColumn = source.data.column;
2570
+ const columnOrder = order.map((id) => {
2571
+ if (id == sourceColumn.id) {
2572
+ return "<marker>";
2573
+ }
2574
+ return id;
2575
+ });
2576
+ const columnBefore = columnOrder.slice(0, destinationLocation + 1);
2577
+ const columnAfter = columnOrder.slice(destinationLocation + 1, columnOrder.length);
2578
+ const newOrder = [
2579
+ ...columnBefore,
2580
+ sourceColumn.id,
2581
+ ...columnAfter,
2582
+ ].filter((id) => id != "<marker>");
2583
+ table.setColumnOrder(newOrder);
2584
+ },
2585
+ });
2586
+ }, [table]);
2587
+ return (jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: "0.25rem", children: order.map((columnId, index) => {
2588
+ return (jsxRuntime.jsx(CardContainer, { location: index, children: jsxRuntime.jsx(ColumnCard, { columnId: columnId }) }));
2569
2589
  }) }));
2570
2590
  };
2571
- const PaginationPageText = React__namespace.forwardRef(function PaginationPageText(props, ref) {
2572
- const { format = "compact", ...rest } = props;
2573
- const { page, totalPages, pageRange, count } = react.usePaginationContext();
2574
- const content = React__namespace.useMemo(() => {
2575
- if (format === "short")
2576
- return `${page} / ${totalPages}`;
2577
- if (format === "compact")
2578
- return `${page} / ${totalPages}`;
2579
- return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)} / ${count}`;
2580
- }, [format, page, totalPages, pageRange, count]);
2581
- return (jsxRuntime.jsx(react.Text, { fontWeight: "medium", ref: ref, ...rest, children: content }));
2582
- });
2583
2591
 
2584
- // TODO: not working in client side
2585
- const Pagination = () => {
2586
- const { table, type } = useDataTableContext();
2587
- const getCount = () => {
2588
- if (type === "client") {
2589
- return table.getFilteredRowModel().flatRows.length ?? 0;
2590
- }
2591
- return table.getRowCount();
2592
- };
2593
- return (jsxRuntime.jsx(PaginationRoot, { page: table.getState().pagination.pageIndex + 1, count: getCount(), pageSize: table.getState().pagination.pageSize, onPageChange: (e) => {
2594
- table.setPageIndex(e.page - 1);
2595
- }, children: jsxRuntime.jsxs(react.HStack, { children: [jsxRuntime.jsx(PaginationPrevTrigger, {}), jsxRuntime.jsx(PaginationItems, {}), jsxRuntime.jsx(PaginationNextTrigger, {})] }) }));
2592
+ const ViewDialog = ({ icon = jsxRuntime.jsx(io.IoMdEye, {}) }) => {
2593
+ const viewModel = react.useDisclosure();
2594
+ const { translate } = useDataTableContext();
2595
+ return (jsxRuntime.jsxs(DialogRoot, { children: [jsxRuntime.jsx(react.DialogBackdrop, {}), jsxRuntime.jsx(DialogTrigger, { asChild: true, children: jsxRuntime.jsxs(react.Button, { as: react.Box, variant: "ghost", onClick: viewModel.onOpen, children: [icon, " ", translate.t("viewDialog.buttonText")] }) }), jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsx(DialogCloseTrigger, {}), jsxRuntime.jsx(DialogHeader, { children: jsxRuntime.jsx(DialogTitle, { children: translate.t("viewDialog.title") }) }), jsxRuntime.jsx(DialogBody, { children: jsxRuntime.jsx(TableViewer, {}) }), jsxRuntime.jsx(DialogFooter, {})] })] }));
2596
2596
  };
2597
2597
 
2598
2598
  const CardHeader = ({ row, imageColumnId = undefined, titleColumnId = undefined, tagColumnId = undefined, tagIcon = undefined, showTag = true, imageProps = {}, }) => {
@@ -2603,6 +2603,28 @@ const CardHeader = ({ row, imageColumnId = undefined, titleColumnId = undefined,
2603
2603
  return (jsxRuntime.jsxs(react.Grid, { templateRows: "auto auto", gap: "1rem", children: [!!imageColumnId && (jsxRuntime.jsx(react.Image, { width: "100%", src: row.original[imageColumnId], ...imageProps })), isShowFirstColumn && (jsxRuntime.jsxs(react.Flex, { gap: "0.5rem", flexFlow: "wrap", children: [!!titleColumnId && (jsxRuntime.jsx(react.Text, { fontWeight: "bold", fontSize: "large", children: row.original[titleColumnId] })), showTag && (jsxRuntime.jsx(Tag, { fontSize: "large", startElement: tagIcon && tagIcon({}), children: row.original[tagColumnId] }))] }))] }));
2604
2604
  };
2605
2605
 
2606
+ const DataTableServerContext = React.createContext({
2607
+ url: "",
2608
+ });
2609
+
2610
+ const useDataTableServerContext = () => {
2611
+ const context = React.useContext(DataTableServerContext);
2612
+ const { query } = context;
2613
+ const isEmpty = (query.data?.count ?? 0) <= 0;
2614
+ return { ...context, isEmpty };
2615
+ };
2616
+
2617
+ const EmptyState$1 = ({ title = "No records", description = "Add a new events to get started or refine your search", }) => {
2618
+ const { isEmpty } = useDataTableServerContext();
2619
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: isEmpty && (jsxRuntime.jsx(react.EmptyState.Root, { children: jsxRuntime.jsxs(react.EmptyState.Content, { children: [jsxRuntime.jsx(react.EmptyState.Indicator, { children: jsxRuntime.jsx(hi.HiColorSwatch, {}) }), jsxRuntime.jsxs(react.VStack, { textAlign: "center", children: [jsxRuntime.jsx(react.EmptyState.Title, { children: title }), jsxRuntime.jsx(react.EmptyState.Description, { children: description })] })] }) })) }));
2620
+ };
2621
+
2622
+ const ErrorAlert = ({ showMessage = true }) => {
2623
+ const { query } = useDataTableServerContext();
2624
+ const { isError, error } = query;
2625
+ 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 }))] })] })) }));
2626
+ };
2627
+
2606
2628
  const snakeToLabel = (str) => {
2607
2629
  return str
2608
2630
  .split("_") // Split by underscore
@@ -2849,10 +2871,6 @@ function DataTable({ columns, data, enableRowSelection = true, enableMultiRowSel
2849
2871
  }, children: children }));
2850
2872
  }
2851
2873
 
2852
- const DataTableServerContext = React.createContext({
2853
- url: "",
2854
- });
2855
-
2856
2874
  /**
2857
2875
  * DataTableServer will create a context to hold all values to
2858
2876
  * help the render of the DataTable in serverside
@@ -3036,13 +3054,6 @@ const GlobalFilter = () => {
3036
3054
  } }) }) }));
3037
3055
  };
3038
3056
 
3039
- const useDataTableServerContext = () => {
3040
- const context = React.useContext(DataTableServerContext);
3041
- const { query } = context;
3042
- const isEmpty = (query.data?.count ?? 0) <= 0;
3043
- return { ...context, isEmpty };
3044
- };
3045
-
3046
3057
  const ReloadButton = ({ text = "Reload", variant = "icon", }) => {
3047
3058
  const { url } = useDataTableServerContext();
3048
3059
  const queryClient = reactQuery.useQueryClient();
@@ -3256,12 +3267,12 @@ const TableHeader = ({ canResize = true, pinnedBgColor = { light: "gray.50", dar
3256
3267
  })] }, `chakra-table-headergroup-${headerGroup.id}`))) }));
3257
3268
  };
3258
3269
 
3259
- const EmptyState$1 = React__namespace.forwardRef(function EmptyState(props, ref) {
3270
+ const EmptyState = React__namespace.forwardRef(function EmptyState(props, ref) {
3260
3271
  const { title, description, icon, children, ...rest } = props;
3261
3272
  return (jsxRuntime.jsx(react.EmptyState.Root, { ref: ref, ...rest, children: jsxRuntime.jsxs(react.EmptyState.Content, { children: [icon && (jsxRuntime.jsx(react.EmptyState.Indicator, { children: icon })), description ? (jsxRuntime.jsxs(react.VStack, { textAlign: "center", children: [jsxRuntime.jsx(react.EmptyState.Title, { children: title }), jsxRuntime.jsx(react.EmptyState.Description, { children: description })] })) : (jsxRuntime.jsx(react.EmptyState.Title, { children: title })), children] }) }));
3262
3273
  });
3263
3274
 
3264
- const EmptyResult = (jsxRuntime.jsx(EmptyState$1, { icon: jsxRuntime.jsx(hi.HiColorSwatch, {}), title: "No results found", description: "Try adjusting your search", children: jsxRuntime.jsxs(react.List.Root, { variant: "marker", children: [jsxRuntime.jsx(react.List.Item, { children: "Try removing filters" }), jsxRuntime.jsx(react.List.Item, { children: "Try different keywords" })] }) }));
3275
+ const EmptyResult = (jsxRuntime.jsx(EmptyState, { icon: jsxRuntime.jsx(hi.HiColorSwatch, {}), title: "No results found", description: "Try adjusting your search", children: jsxRuntime.jsxs(react.List.Root, { variant: "marker", children: [jsxRuntime.jsx(react.List.Item, { children: "Try removing filters" }), jsxRuntime.jsx(react.List.Item, { children: "Try different keywords" })] }) }));
3265
3276
  const Table = ({ children, emptyComponent = EmptyResult, canResize = true, ...props }) => {
3266
3277
  const { table } = useDataTableContext();
3267
3278
  if (table.getRowModel().rows.length <= 0) {
@@ -3530,16 +3541,15 @@ const getColumns = ({ schema, include = [], ignore = [], width = [], meta = {},
3530
3541
  return columns;
3531
3542
  };
3532
3543
 
3533
- const EmptyState = ({ title = "No records", description = "Add a new events to get started or refine your search", }) => {
3534
- const { isEmpty } = useDataTableServerContext();
3535
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: isEmpty && (jsxRuntime.jsx(react.EmptyState.Root, { children: jsxRuntime.jsxs(react.EmptyState.Content, { children: [jsxRuntime.jsx(react.EmptyState.Indicator, { children: jsxRuntime.jsx(hi.HiColorSwatch, {}) }), jsxRuntime.jsxs(react.VStack, { textAlign: "center", children: [jsxRuntime.jsx(react.EmptyState.Title, { children: title }), jsxRuntime.jsx(react.EmptyState.Description, { children: description })] })] }) })) }));
3536
- };
3537
-
3538
- const ErrorAlert = ({ showMessage = true }) => {
3539
- const { query } = useDataTableServerContext();
3540
- const { isError, error } = query;
3541
- 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 }))] })] })) }));
3542
- };
3544
+ const AccordionItemTrigger = React__namespace.forwardRef(function AccordionItemTrigger(props, ref) {
3545
+ const { children, indicatorPlacement = "end", ...rest } = props;
3546
+ return (jsxRuntime.jsxs(react.Accordion.ItemTrigger, { ...rest, ref: ref, children: [indicatorPlacement === "start" && (jsxRuntime.jsx(react.Accordion.ItemIndicator, { rotate: { base: "-90deg", _open: "0deg" }, children: jsxRuntime.jsx(lu.LuChevronDown, {}) })), jsxRuntime.jsx(react.HStack, { gap: "4", flex: "1", textAlign: "start", width: "full", children: children }), indicatorPlacement === "end" && (jsxRuntime.jsx(react.Accordion.ItemIndicator, { children: jsxRuntime.jsx(lu.LuChevronDown, {}) }))] }));
3547
+ });
3548
+ const AccordionItemContent = React__namespace.forwardRef(function AccordionItemContent(props, ref) {
3549
+ return (jsxRuntime.jsx(react.Accordion.ItemContent, { children: jsxRuntime.jsx(react.Accordion.ItemBody, { ...props, ref: ref }) }));
3550
+ });
3551
+ const AccordionRoot = react.Accordion.Root;
3552
+ const AccordionItem = react.Accordion.Item;
3543
3553
 
3544
3554
  //@ts-expect-error TODO: find appropriate type
3545
3555
  const SchemaFormContext = React.createContext({
@@ -3562,15 +3572,56 @@ const clearEmptyString = (object) => {
3562
3572
  return Object.fromEntries(Object.entries(object).filter(([, value]) => value !== ""));
3563
3573
  };
3564
3574
 
3565
- const AccordionItemTrigger = React__namespace.forwardRef(function AccordionItemTrigger(props, ref) {
3566
- const { children, indicatorPlacement = "end", ...rest } = props;
3567
- return (jsxRuntime.jsxs(react.Accordion.ItemTrigger, { ...rest, ref: ref, children: [indicatorPlacement === "start" && (jsxRuntime.jsx(react.Accordion.ItemIndicator, { rotate: { base: "-90deg", _open: "0deg" }, children: jsxRuntime.jsx(lu.LuChevronDown, {}) })), jsxRuntime.jsx(react.HStack, { gap: "4", flex: "1", textAlign: "start", width: "full", children: children }), indicatorPlacement === "end" && (jsxRuntime.jsx(react.Accordion.ItemIndicator, { children: jsxRuntime.jsx(lu.LuChevronDown, {}) }))] }));
3568
- });
3569
- const AccordionItemContent = React__namespace.forwardRef(function AccordionItemContent(props, ref) {
3570
- return (jsxRuntime.jsx(react.Accordion.ItemContent, { children: jsxRuntime.jsx(react.Accordion.ItemBody, { ...props, ref: ref }) }));
3571
- });
3572
- const AccordionRoot = react.Accordion.Root;
3573
- const AccordionItem = react.Accordion.Item;
3575
+ const idPickerSanityCheck = (column, foreign_key) => {
3576
+ if (!!foreign_key == false) {
3577
+ throw new Error(`The key foreign_key does not exist in properties of column ${column} when using id-picker.`);
3578
+ }
3579
+ const { table, column: foreignKeyColumn, display_column } = foreign_key;
3580
+ if (!!table == false) {
3581
+ throw new Error(`The key table does not exist in properties of column ${table} when using id-picker.`);
3582
+ }
3583
+ if (!!display_column == false) {
3584
+ throw new Error(`The key display_column does not exist in properties of column ${column} when using id-picker.`);
3585
+ }
3586
+ if (!!foreignKeyColumn == false) {
3587
+ throw new Error(`The key column does not exist in properties of column ${column} when using id-picker.`);
3588
+ }
3589
+ };
3590
+ const FormRoot = ({ schema, idMap, setIdMap, form, serverUrl, translate, children, order = [], ignore = [], include = [], onSubmit = undefined, rowNumber = undefined, requestOptions = {}, getUpdatedData = () => { }, }) => {
3591
+ const [isSuccess, setIsSuccess] = React.useState(false);
3592
+ const [isError, setIsError] = React.useState(false);
3593
+ const [isSubmiting, setIsSubmiting] = React.useState(false);
3594
+ const [isConfirming, setIsConfirming] = React.useState(false);
3595
+ const [validatedData, setValidatedData] = React.useState();
3596
+ const [error, setError] = React.useState();
3597
+ return (jsxRuntime.jsx(SchemaFormContext.Provider, { value: {
3598
+ schema,
3599
+ serverUrl,
3600
+ order,
3601
+ ignore,
3602
+ include,
3603
+ // @ts-expect-error TODO: find appropriate types
3604
+ onSubmit,
3605
+ rowNumber,
3606
+ idMap,
3607
+ setIdMap,
3608
+ translate,
3609
+ requestOptions,
3610
+ isSuccess,
3611
+ setIsSuccess,
3612
+ isError,
3613
+ setIsError,
3614
+ isSubmiting,
3615
+ setIsSubmiting,
3616
+ isConfirming,
3617
+ setIsConfirming,
3618
+ validatedData,
3619
+ setValidatedData,
3620
+ error,
3621
+ setError,
3622
+ getUpdatedData,
3623
+ }, children: jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: children }) }));
3624
+ };
3574
3625
 
3575
3626
  function removeIndex(str) {
3576
3627
  return str.replace(/\.\d+\./g, '.');
@@ -4927,30 +4978,23 @@ const ColumnViewer = ({ column, properties, prefix, }) => {
4927
4978
  return jsxRuntime.jsx(SchemaViewer, { schema: colSchema, prefix, column });
4928
4979
  };
4929
4980
 
4930
- const idPickerSanityCheck = (column, foreign_key) => {
4931
- if (!!foreign_key == false) {
4932
- throw new Error(`The key foreign_key does not exist in properties of column ${column} when using id-picker.`);
4933
- }
4934
- const { table, column: foreignKeyColumn, display_column } = foreign_key;
4935
- if (!!table == false) {
4936
- throw new Error(`The key table does not exist in properties of column ${table} when using id-picker.`);
4937
- }
4938
- if (!!display_column == false) {
4939
- throw new Error(`The key display_column does not exist in properties of column ${column} when using id-picker.`);
4940
- }
4941
- if (!!foreignKeyColumn == false) {
4942
- throw new Error(`The key column does not exist in properties of column ${column} when using id-picker.`);
4943
- }
4981
+ const SubmitButton = () => {
4982
+ const { translate, setValidatedData, setIsError, setIsConfirming } = useSchemaContext();
4983
+ const methods = reactHookForm.useFormContext();
4984
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4985
+ const onValid = (data) => {
4986
+ setValidatedData(data);
4987
+ setIsError(false);
4988
+ setIsConfirming(true);
4989
+ };
4990
+ return (jsxRuntime.jsx(react.Button, { onClick: () => {
4991
+ methods.handleSubmit(onValid)();
4992
+ }, formNoValidate: true, children: translate.t("submit") }));
4944
4993
  };
4945
- const FormInternal = () => {
4946
- const { schema, requestUrl, order, ignore, include, onSubmit, rowNumber, translate, requestOptions, } = useSchemaContext();
4994
+
4995
+ const FormBody = () => {
4996
+ const { schema, requestUrl, order, ignore, include, onSubmit, rowNumber, translate, requestOptions, isSuccess, setIsSuccess, isError, setIsError, isSubmiting, setIsSubmiting, isConfirming, setIsConfirming, validatedData, setValidatedData, error, setError, getUpdatedData, } = useSchemaContext();
4947
4997
  const methods = reactHookForm.useFormContext();
4948
- const [isSuccess, setIsSuccess] = React.useState(false);
4949
- const [isError, setIsError] = React.useState(false);
4950
- const [isSubmiting, setIsSubmiting] = React.useState(false);
4951
- const [isConfirming, setIsConfirming] = React.useState(false);
4952
- const [validatedData, setValidatedData] = React.useState();
4953
- const [error, setError] = React.useState();
4954
4998
  const { properties } = schema;
4955
4999
  const onBeforeSubmit = () => {
4956
5000
  setIsSubmiting(true);
@@ -4958,8 +5002,9 @@ const FormInternal = () => {
4958
5002
  const onAfterSubmit = () => {
4959
5003
  setIsSubmiting(false);
4960
5004
  };
4961
- const onSubmitError = () => {
5005
+ const onSubmitError = (error) => {
4962
5006
  setIsError(true);
5007
+ setError(error);
4963
5008
  };
4964
5009
  const onSubmitSuccess = () => {
4965
5010
  setIsSuccess(true);
@@ -4971,9 +5016,7 @@ const FormInternal = () => {
4971
5016
  onSubmitSuccess();
4972
5017
  }
4973
5018
  catch (error) {
4974
- setIsError(true);
4975
- setError(error);
4976
- onSubmitError();
5019
+ onSubmitError(error);
4977
5020
  }
4978
5021
  finally {
4979
5022
  onAfterSubmit();
@@ -4996,12 +5039,6 @@ const FormInternal = () => {
4996
5039
  }
4997
5040
  await defaultOnSubmit(onSubmit(data));
4998
5041
  };
4999
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
5000
- const onValid = (data) => {
5001
- setValidatedData(data);
5002
- setIsError(false);
5003
- setIsConfirming(true);
5004
- };
5005
5042
  const renderColumns = ({ order, keys, ignore, include, }) => {
5006
5043
  const included = include.length > 0 ? include : keys;
5007
5044
  const not_exist = included.filter((columnA) => !order.some((columnB) => columnA === columnB));
@@ -5016,58 +5053,47 @@ const FormInternal = () => {
5016
5053
  include,
5017
5054
  });
5018
5055
  if (isSuccess) {
5019
- return (jsxRuntime.jsxs(react.Grid, { gap: 2, children: [jsxRuntime.jsx(react.Heading, { children: translate.t("title") }), jsxRuntime.jsxs(react.Alert.Root, { status: "success", children: [jsxRuntime.jsx(react.Alert.Indicator, {}), jsxRuntime.jsx(react.Alert.Title, { children: translate.t("submitSuccess") })] }), jsxRuntime.jsx(react.Flex, { justifyContent: "end", children: jsxRuntime.jsx(Button, { onClick: () => {
5056
+ return (jsxRuntime.jsxs(react.Flex, { flexFlow: "column", gap: "2", children: [jsxRuntime.jsxs(react.Alert.Root, { status: "success", children: [jsxRuntime.jsx(react.Alert.Indicator, {}), jsxRuntime.jsx(react.Alert.Title, { children: translate.t("submitSuccess") })] }), jsxRuntime.jsx(react.Flex, { justifyContent: "end", children: jsxRuntime.jsx(react.Button, { onClick: async () => {
5020
5057
  setIsError(false);
5021
5058
  setIsSubmiting(false);
5022
5059
  setIsSuccess(false);
5023
5060
  setIsConfirming(false);
5024
5061
  setValidatedData(undefined);
5025
- methods.reset();
5062
+ const data = await getUpdatedData();
5063
+ methods.reset(data);
5026
5064
  }, formNoValidate: true, children: translate.t("submitAgain") }) })] }));
5027
5065
  }
5028
5066
  if (isConfirming) {
5029
- return (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) => {
5067
+ return (jsxRuntime.jsxs(react.Flex, { flexFlow: "column", gap: "2", children: [jsxRuntime.jsx(react.Grid, { gap: 4, gridTemplateColumns: "repeat(12, 1fr)", gridTemplateRows: `repeat(${rowNumber ?? "auto-fit"}, auto)`, children: ordered.map((column) => {
5030
5068
  return (jsxRuntime.jsx(ColumnViewer
5031
5069
  // @ts-expect-error find suitable types
5032
5070
  , {
5033
5071
  // @ts-expect-error find suitable types
5034
5072
  properties: properties, prefix: ``, column }, `form-viewer-${column}`));
5035
- }) }), jsxRuntime.jsxs(react.Flex, { justifyContent: "end", gap: "2", children: [jsxRuntime.jsx(Button, { onClick: () => {
5073
+ }) }), jsxRuntime.jsxs(react.Flex, { justifyContent: "end", gap: "2", children: [jsxRuntime.jsx(react.Button, { onClick: () => {
5036
5074
  setIsConfirming(false);
5037
- }, variant: "subtle", children: translate.t("cancel") }), jsxRuntime.jsx(Button, { onClick: () => {
5075
+ }, variant: "subtle", children: translate.t("cancel") }), jsxRuntime.jsx(react.Button, { onClick: () => {
5038
5076
  onFormSubmit(validatedData);
5039
- }, children: translate.t("confirm") })] }), 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)}` })] }) }) }) }) }))] }));
5077
+ }, children: translate.t("confirm") })] }), 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: [], children: jsxRuntime.jsxs(AccordionItem, { value: "b", children: [jsxRuntime.jsxs(AccordionItemTrigger, { children: [jsxRuntime.jsx(react.Alert.Indicator, {}), `${error}`] }), jsxRuntime.jsx(AccordionItemContent, { children: `${JSON.stringify(error)}` })] }) }) }) }) }))] }));
5040
5078
  }
5041
- return (jsxRuntime.jsx(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) => {
5042
- return (jsxRuntime.jsx(ColumnRenderer
5079
+ return (jsxRuntime.jsxs(react.Flex, { flexFlow: "column", gap: "2", children: [jsxRuntime.jsx(react.Grid, { gap: "4", gridTemplateColumns: "repeat(12, 1fr)", gridTemplateRows: `repeat(${rowNumber ?? "auto-fit"}, auto)`, children: ordered.map((column) => {
5080
+ return (jsxRuntime.jsx(ColumnRenderer
5081
+ // @ts-expect-error find suitable types
5082
+ , {
5043
5083
  // @ts-expect-error find suitable types
5044
- , {
5045
- // @ts-expect-error find suitable types
5046
- properties: properties, prefix: ``, column }, `form-input-${column}`));
5047
- }) }), jsxRuntime.jsxs(react.Flex, { justifyContent: "end", gap: "2", children: [jsxRuntime.jsx(Button, { onClick: () => {
5048
- methods.reset();
5049
- }, variant: "subtle", children: translate.t("reset") }), jsxRuntime.jsx(Button, { onClick: () => {
5050
- methods.handleSubmit(onValid)();
5051
- }, formNoValidate: true, children: translate.t("submit") })] })] }) }));
5084
+ properties: properties, prefix: ``, column }, `form-input-${column}`));
5085
+ }) }), jsxRuntime.jsxs(react.Flex, { justifyContent: "end", gap: "2", children: [jsxRuntime.jsx(react.Button, { onClick: () => {
5086
+ methods.reset();
5087
+ }, variant: "subtle", children: translate.t("reset") }), jsxRuntime.jsx(SubmitButton, {})] })] }));
5052
5088
  };
5053
- const Form = ({ schema, idMap, setIdMap, form, serverUrl, translate, order = [], ignore = [], include = [], onSubmit = undefined, rowNumber = undefined, requestOptions = {}, }) => {
5054
- // const { properties } = schema;
5055
- // idListSanityCheck("order", order, properties as object);
5056
- // idListSanityCheck("ignore", ignore, properties as object);
5057
- return (jsxRuntime.jsx(SchemaFormContext.Provider, { value: {
5058
- schema,
5059
- serverUrl,
5060
- order,
5061
- ignore,
5062
- include,
5063
- // @ts-expect-error TODO: find appropriate types
5064
- onSubmit,
5065
- rowNumber,
5066
- idMap,
5067
- setIdMap,
5068
- translate,
5069
- requestOptions,
5070
- }, children: jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: jsxRuntime.jsx(FormInternal, {}) }) }));
5089
+
5090
+ const FormTitle = () => {
5091
+ const { translate } = useSchemaContext();
5092
+ return jsxRuntime.jsx(react.Heading, { children: translate.t("title") });
5093
+ };
5094
+
5095
+ const DefaultForm = ({ formConfig, }) => {
5096
+ return (jsxRuntime.jsx(FormRoot, { ...formConfig, children: jsxRuntime.jsxs(react.Grid, { gap: "2", children: [jsxRuntime.jsx(FormTitle, {}), jsxRuntime.jsx(FormBody, {})] }) }));
5071
5097
  };
5072
5098
 
5073
5099
  const useForm = ({ preLoadedValues, keyPrefix }) => {
@@ -5105,15 +5131,18 @@ exports.DataDisplay = DataDisplay;
5105
5131
  exports.DataTable = DataTable;
5106
5132
  exports.DataTableServer = DataTableServer;
5107
5133
  exports.DefaultCardTitle = DefaultCardTitle;
5134
+ exports.DefaultForm = DefaultForm;
5108
5135
  exports.DefaultTable = DefaultTable;
5109
5136
  exports.DensityToggleButton = DensityToggleButton;
5110
5137
  exports.EditOrderButton = EditOrderButton;
5111
5138
  exports.EditSortingButton = EditSortingButton;
5112
- exports.EmptyState = EmptyState;
5139
+ exports.EmptyState = EmptyState$1;
5113
5140
  exports.ErrorAlert = ErrorAlert;
5114
5141
  exports.FilterDialog = FilterDialog;
5115
5142
  exports.FilterOptions = FilterOptions;
5116
- exports.Form = Form;
5143
+ exports.FormBody = FormBody;
5144
+ exports.FormRoot = FormRoot;
5145
+ exports.FormTitle = FormTitle;
5117
5146
  exports.GlobalFilter = GlobalFilter;
5118
5147
  exports.PageSizeControl = PageSizeControl;
5119
5148
  exports.Pagination = Pagination;