@tsed/react-formio 3.0.0-rc.1 → 3.0.0-rc.10
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/all.js +3 -3
- package/dist/chunks/_baseClone.js +1268 -0
- package/dist/chunks/_baseClone.js.map +1 -0
- package/dist/chunks/_baseSlice.js +70 -0
- package/dist/chunks/_baseSlice.js.map +1 -0
- package/dist/chunks/_stringToArray.js +57 -0
- package/dist/chunks/_stringToArray.js.map +1 -0
- package/dist/chunks/camelCase.js +343 -0
- package/dist/chunks/camelCase.js.map +1 -0
- package/dist/chunks/cloneDeep.js +18 -0
- package/dist/chunks/cloneDeep.js.map +1 -0
- package/dist/chunks/index2.js +24415 -21294
- package/dist/chunks/index2.js.map +1 -1
- package/dist/chunks/isEqual.js +8 -0
- package/dist/chunks/isEqual.js.map +1 -0
- package/dist/chunks/isEqual2.js +251 -0
- package/dist/chunks/isEqual2.js.map +1 -0
- package/dist/chunks/lodash.js +3678 -0
- package/dist/chunks/lodash.js.map +1 -0
- package/dist/chunks/noop.js +15 -0
- package/dist/chunks/noop.js.map +1 -0
- package/dist/chunks/omit.js +325 -0
- package/dist/chunks/omit.js.map +1 -0
- package/dist/interfaces/JSONRecord.d.ts +4 -0
- package/dist/interfaces/JSONRecord.js +2 -0
- package/dist/interfaces/JSONRecord.js.map +1 -0
- package/dist/interfaces/Operation.d.ts +3 -12
- package/dist/interfaces/SubmissionType.d.ts +4 -14
- package/dist/molecules/forms/form-control/FormControl.js +21 -18
- package/dist/molecules/forms/form-control/FormControl.js.map +1 -1
- package/dist/molecules/modal/Modal.js +27 -24
- package/dist/molecules/modal/Modal.js.map +1 -1
- package/dist/molecules/table/Table.d.ts +4 -11
- package/dist/molecules/table/Table.js +34 -33
- package/dist/molecules/table/Table.js.map +1 -1
- package/dist/molecules/table/components/DefaultCellOperations.d.ts +4 -11
- package/dist/molecules/table/components/DefaultCellOperations.js.map +1 -1
- package/dist/molecules/table/components/DefaultOperationButton.d.ts +4 -11
- package/dist/molecules/table/components/DefaultOperationButton.js.map +1 -1
- package/dist/molecules/table/hooks/useTable.d.ts +4 -11
- package/dist/molecules/table/hooks/useTable.js.map +1 -1
- package/dist/molecules/table/utils/mapFormToColumns.js +21 -20
- package/dist/molecules/table/utils/mapFormToColumns.js.map +1 -1
- package/dist/organisms/form/Form.d.ts +3 -11
- package/dist/organisms/form/Form.js.map +1 -1
- package/dist/organisms/form/access/FormAccess.utils.js +3 -3
- package/dist/organisms/form/actions/FormAction.js +5 -5
- package/dist/organisms/form/builder/FormEdit.reducer.js +3 -3
- package/dist/organisms/form/builder/useFormBuilder.js +1 -1
- package/dist/organisms/form/builder/useFormEdit.js +9 -9
- package/dist/organisms/form/settings/FormSettings.js +12 -12
- package/dist/organisms/form/settings/FormSettings.utils.js +1 -1
- package/dist/organisms/form/types.d.ts +1 -9
- package/dist/organisms/form/useForm.d.ts +4 -11
- package/dist/organisms/form/useForm.js.map +1 -1
- package/dist/organisms/table/actions/ActionsTable.js +6 -6
- package/dist/organisms/table/forms/components/FormsCell.js +13 -13
- package/dist/organisms/table/submissions/SubmissionsTable.d.ts +4 -11
- package/dist/organisms/table/submissions/SubmissionsTable.js +1 -4
- package/dist/organisms/table/submissions/SubmissionsTable.js.map +1 -1
- package/dist/organisms/views/FormViews.d.ts +4 -11
- package/dist/organisms/views/FormViews.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +13 -5
- package/src/interfaces/JSONRecord.ts +2 -0
- package/src/interfaces/Operation.ts +3 -6
- package/src/interfaces/SubmissionType.ts +4 -8
- package/src/molecules/table/Table.stories.tsx +26 -0
- package/src/molecules/table/Table.tsx +57 -53
- package/src/molecules/table/components/DefaultCellOperations.tsx +4 -3
- package/src/molecules/table/components/DefaultOperationButton.tsx +4 -4
- package/src/molecules/table/hooks/useTable.tsx +4 -4
- package/src/organisms/form/Form.tsx +3 -3
- package/src/organisms/form/types.ts +1 -6
- package/src/organisms/form/useForm.ts +6 -5
- package/src/organisms/table/submissions/SubmissionsTable.tsx +4 -9
- package/src/organisms/views/FormViews.tsx +6 -9
- package/vite.config.mts +13 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../src/molecules/modal/Modal.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport noop from \"lodash\";\nimport { PropsWithChildren, useEffect, useRef, useState } from \"react\";\n\nexport function useModal() {\n const [show, setShowModal] = useState(false);\n\n return {\n show,\n setShowModal,\n openModal() {\n setShowModal(true);\n },\n closeModal() {\n setShowModal(false);\n }\n };\n}\n\nexport interface ModalProps extends Record<string, any> {\n show?: boolean;\n closeModal?: () => void;\n onClose?: () => void;\n footer?: any;\n title?: string;\n}\n\nexport function Modal({\n show,\n children,\n closeModal = noop as any,\n onClose = noop as any,\n title,\n footer: ModalFooter,\n style,\n className = \"\",\n ...props\n}: PropsWithChildren<ModalProps>) {\n const titleRef: any = useRef<HTMLDivElement>();\n const footerRef: any = useRef<HTMLDivElement>();\n const [maxHeight, setMaxHeight] = useState<string>();\n\n const onClickClose = () => {\n closeModal();\n onClose();\n };\n\n useEffect(() => {\n if (titleRef.current || footerRef.current) {\n const height = (titleRef?.current?.offsetHeight || 0) + (footerRef?.current?.offsetHeight || 0);\n\n setMaxHeight(`calc(85vh - ${height}px)`);\n } else {\n setMaxHeight(\"auto\");\n }\n }, [show]);\n\n if (!show) {\n return null;\n }\n\n return (\n <div role={\"dialog\"} className={`formio-dialog formio-dialog-theme-default ${className}`}>\n <div className='formio-dialog-overlay' onClick={onClickClose} />\n <div style={style} className={\"formio-dialog-content\"}>\n <div className={\"formio-dialog-wrapper\"}>\n {title ? (\n <div className={\"formio-dialog-title\"} ref={titleRef} data-testid={\"modalTitle\"}>\n {title}\n </div>\n ) : null}\n\n <div className='formio-dialog-body' style={{ maxHeight }} data-testid={\"modalBody\"}>\n {show && children}\n </div>\n\n {ModalFooter ? (\n <div className={\"formio-dialog-footer\"} ref={footerRef} data-testid={\"modalFooter\"}>\n <ModalFooter {...props} closeModal={closeModal} onClose={onClickClose} />\n </div>\n ) : null}\n </div>\n <button\n className='formio-dialog-close float-right btn btn-secondary btn-sm'\n aria-label='close'\n data-testid={\"closeModal\"}\n onClick={onClickClose}\n />\n </div>\n </div>\n );\n}\n"],"names":["useModal","show","setShowModal","useState","Modal","children","closeModal","noop","onClose","title","ModalFooter","style","className","props","titleRef","useRef","footerRef","maxHeight","setMaxHeight","onClickClose","useEffect","height","jsx","jsxs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../src/molecules/modal/Modal.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport noop from \"lodash\";\nimport { PropsWithChildren, useEffect, useRef, useState } from \"react\";\n\nexport function useModal() {\n const [show, setShowModal] = useState(false);\n\n return {\n show,\n setShowModal,\n openModal() {\n setShowModal(true);\n },\n closeModal() {\n setShowModal(false);\n }\n };\n}\n\nexport interface ModalProps extends Record<string, any> {\n show?: boolean;\n closeModal?: () => void;\n onClose?: () => void;\n footer?: any;\n title?: string;\n}\n\nexport function Modal({\n show,\n children,\n closeModal = noop as any,\n onClose = noop as any,\n title,\n footer: ModalFooter,\n style,\n className = \"\",\n ...props\n}: PropsWithChildren<ModalProps>) {\n const titleRef: any = useRef<HTMLDivElement>();\n const footerRef: any = useRef<HTMLDivElement>();\n const [maxHeight, setMaxHeight] = useState<string>();\n\n const onClickClose = () => {\n closeModal();\n onClose();\n };\n\n useEffect(() => {\n if (titleRef.current || footerRef.current) {\n const height = (titleRef?.current?.offsetHeight || 0) + (footerRef?.current?.offsetHeight || 0);\n\n setMaxHeight(`calc(85vh - ${height}px)`);\n } else {\n setMaxHeight(\"auto\");\n }\n }, [show]);\n\n if (!show) {\n return null;\n }\n\n return (\n <div role={\"dialog\"} className={`formio-dialog formio-dialog-theme-default ${className}`}>\n <div className='formio-dialog-overlay' onClick={onClickClose} />\n <div style={style} className={\"formio-dialog-content\"}>\n <div className={\"formio-dialog-wrapper\"}>\n {title ? (\n <div className={\"formio-dialog-title\"} ref={titleRef} data-testid={\"modalTitle\"}>\n {title}\n </div>\n ) : null}\n\n <div className='formio-dialog-body' style={{ maxHeight }} data-testid={\"modalBody\"}>\n {show && children}\n </div>\n\n {ModalFooter ? (\n <div className={\"formio-dialog-footer\"} ref={footerRef} data-testid={\"modalFooter\"}>\n <ModalFooter {...props} closeModal={closeModal} onClose={onClickClose} />\n </div>\n ) : null}\n </div>\n <button\n className='formio-dialog-close float-right btn btn-secondary btn-sm'\n aria-label='close'\n data-testid={\"closeModal\"}\n onClick={onClickClose}\n />\n </div>\n </div>\n );\n}\n"],"names":["useModal","show","setShowModal","useState","Modal","children","closeModal","noop","onClose","title","ModalFooter","style","className","props","titleRef","useRef","footerRef","maxHeight","setMaxHeight","onClickClose","useEffect","height","jsx","jsxs"],"mappings":";;;;;;AAKO,SAASA,IAAW;AACzB,QAAM,CAACC,GAAMC,CAAY,IAAIC,EAAS,EAAK;AAE3C,SAAO;AAAA,IACL,MAAAF;AAAA,IACA,cAAAC;AAAA,IACA,YAAY;AACV,MAAAA,EAAa,EAAI;AAAA,IACnB;AAAA,IACA,aAAa;AACX,MAAAA,EAAa,EAAK;AAAA,IACpB;AAAA,EAAA;AAEJ;AAUO,SAASE,EAAM;AAAA,EACpB,MAAAH;AAAA,EACA,UAAAI;AAAA,EACA,YAAAC,IAAaC;AAAA,EACb,SAAAC,IAAUD;AAAA,EACV,OAAAE;AAAA,EACA,QAAQC;AAAA,EACR,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAkC;AAChC,QAAMC,IAAgBC,EAAA,GAChBC,IAAiBD,EAAA,GACjB,CAACE,GAAWC,CAAY,IAAIf,EAAA,GAE5BgB,IAAe,MAAM;AACzB,IAAAb,EAAA,GACAE,EAAA;AAAA,EACF;AAYA,SAVAY,EAAU,MAAM;AACd,QAAIN,EAAS,WAAWE,EAAU,SAAS;AACzC,YAAMK,KAAUP,GAAU,SAAS,gBAAgB,MAAME,GAAW,SAAS,gBAAgB;AAE7F,MAAAE,EAAa,eAAeG,CAAM,KAAK;AAAA,IACzC;AACE,MAAAH,EAAa,MAAM;AAAA,EAEvB,GAAG,CAACjB,CAAI,CAAC,GAEJA,sBAKF,OAAA,EAAI,MAAM,UAAU,WAAW,6CAA6CW,CAAS,IACpF,UAAA;AAAA,IAAA,gBAAAU,EAAC,OAAA,EAAI,WAAU,yBAAwB,SAASH,GAAc;AAAA,IAC9D,gBAAAI,EAAC,OAAA,EAAI,OAAAZ,GAAc,WAAW,yBAC5B,UAAA;AAAA,MAAA,gBAAAY,EAAC,OAAA,EAAI,WAAW,yBACb,UAAA;AAAA,QAAAd,IACC,gBAAAa,EAAC,SAAI,WAAW,uBAAuB,KAAKR,GAAU,eAAa,cAChE,UAAAL,EAAA,CACH,IACE;AAAA,QAEJ,gBAAAa,EAAC,OAAA,EAAI,WAAU,sBAAqB,OAAO,EAAE,WAAAL,EAAA,GAAa,eAAa,aACpE,UAAAhB,KAAQI,EAAA,CACX;AAAA,QAECK,IACC,gBAAAY,EAAC,OAAA,EAAI,WAAW,wBAAwB,KAAKN,GAAW,eAAa,eACnE,UAAA,gBAAAM,EAACZ,KAAa,GAAGG,GAAO,YAAAP,GAAwB,SAASa,GAAc,GACzE,IACE;AAAA,MAAA,GACN;AAAA,MACA,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,cAAW;AAAA,UACX,eAAa;AAAA,UACb,SAASH;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,EAAA,CACF;AAAA,EAAA,GACF,IA/BO;AAiCX;"}
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { JSONRecord } from '../../interfaces/JSONRecord.js';
|
|
3
3
|
import { UseTableProps } from './hooks/useTable';
|
|
4
|
-
export interface TableProps<Data extends {
|
|
5
|
-
[key: string]: JSON;
|
|
6
|
-
} = {
|
|
7
|
-
[key: string]: JSON;
|
|
8
|
-
}> extends UseTableProps<Data> {
|
|
4
|
+
export interface TableProps<Data extends object = JSONRecord> extends UseTableProps<Data> {
|
|
9
5
|
className?: string;
|
|
10
6
|
enableFooter?: boolean;
|
|
7
|
+
enablePagination?: boolean;
|
|
11
8
|
pageSizes?: number[];
|
|
12
9
|
}
|
|
13
|
-
export declare function Table<Data extends {
|
|
14
|
-
[key: string]: JSON;
|
|
15
|
-
} = {
|
|
16
|
-
[key: string]: JSON;
|
|
17
|
-
}>({ className, enableFooter, children, ...props }: PropsWithChildren<TableProps<Data>>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function Table<Data extends object = JSONRecord>({ className, enableFooter, enablePagination, children, ...props }: PropsWithChildren<TableProps<Data>>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,57 +1,58 @@
|
|
|
1
|
-
import { jsxs as l, jsx as
|
|
2
|
-
import { createElement as
|
|
3
|
-
import { flexRender as
|
|
4
|
-
import { c as
|
|
1
|
+
import { jsxs as l, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { createElement as C } from "react";
|
|
3
|
+
import { flexRender as b } from "@tanstack/react-table";
|
|
4
|
+
import { c as x } from "../../chunks/index.js";
|
|
5
5
|
import { getComponent as r } from "../../registries/components.js";
|
|
6
6
|
import { useTable as f } from "./hooks/useTable.js";
|
|
7
|
-
function
|
|
7
|
+
function k({
|
|
8
8
|
className: c,
|
|
9
9
|
enableFooter: g,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
enablePagination: m = !0,
|
|
11
|
+
children: u,
|
|
12
|
+
...o
|
|
12
13
|
}) {
|
|
13
|
-
const { tableInstance:
|
|
14
|
-
return /* @__PURE__ */ l("div", { className:
|
|
15
|
-
/* @__PURE__ */ l("table", { className: "table table-striped table-hover", children: [
|
|
16
|
-
/* @__PURE__ */
|
|
14
|
+
const { tableInstance: n, i18n: d } = f(o), P = r("CellHeader"), p = r("CellFooter"), h = r("Pagination"), { pagination: i } = n.getState();
|
|
15
|
+
return /* @__PURE__ */ l("div", { className: x("table-group", c), children: [
|
|
16
|
+
/* @__PURE__ */ a("div", { className: "table-group-body", children: /* @__PURE__ */ l("table", { className: "table table-striped table-hover", children: [
|
|
17
|
+
/* @__PURE__ */ a("thead", { children: n.getHeaderGroups().map((t) => /* @__PURE__ */ a("tr", { children: t.headers.map((e) => {
|
|
17
18
|
const s = e.column.getIsSorted();
|
|
18
|
-
return /* @__PURE__ */
|
|
19
|
+
return /* @__PURE__ */ a(
|
|
19
20
|
"th",
|
|
20
21
|
{
|
|
21
22
|
"data-testid": `head-cell-${e.id}`,
|
|
22
23
|
"aria-sort": s ? s === "asc" ? "ascending" : "descending" : "none",
|
|
23
|
-
children: e.isPlaceholder ? null : /* @__PURE__ */
|
|
24
|
+
children: e.isPlaceholder ? null : /* @__PURE__ */ a(P, { header: e, i18n: d })
|
|
24
25
|
},
|
|
25
26
|
e.id
|
|
26
27
|
);
|
|
27
28
|
}) }, t.id)) }),
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
g && /* @__PURE__ */
|
|
30
|
-
] }),
|
|
31
|
-
/* @__PURE__ */ l("div", { className: "
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
/* @__PURE__ */ a("tbody", { children: n.getRowModel().rows.map((t) => /* @__PURE__ */ a("tr", { "data-testid": `body-row-${t.id}`, children: t.getVisibleCells().filter((e) => !e.column.columnDef.meta?.hidden).map((e) => /* @__PURE__ */ C("td", { ...e.column.columnDef?.meta?.cellProps, key: e.id, "data-testid": `body-cell-${e.id}` }, b(e.column.columnDef.cell, e.getContext()))) }, t.id)) }),
|
|
30
|
+
g && /* @__PURE__ */ a("tfoot", { children: n.getFooterGroups().map((t) => /* @__PURE__ */ a("tr", { children: t.headers.map((e) => /* @__PURE__ */ a("th", { children: e.isPlaceholder ? null : /* @__PURE__ */ a(p, { header: e, i18n: d }) }, e.id)) }, t.id)) })
|
|
31
|
+
] }) }),
|
|
32
|
+
/* @__PURE__ */ l("div", { className: "table-group-footer", children: [
|
|
33
|
+
o.data.length && i && m ? /* @__PURE__ */ a(
|
|
34
|
+
h,
|
|
34
35
|
{
|
|
35
36
|
className: "flex-1",
|
|
36
|
-
canNextPage:
|
|
37
|
-
canPreviousPage:
|
|
38
|
-
pageIndex:
|
|
39
|
-
pageSize:
|
|
40
|
-
pageSizes:
|
|
41
|
-
i18n:
|
|
42
|
-
pageCount:
|
|
43
|
-
rowCount:
|
|
44
|
-
onPageIndexChange: (t) =>
|
|
45
|
-
onClickPreviousPage: () =>
|
|
46
|
-
onClickNextPage: () =>
|
|
47
|
-
onPageSizeChange: (t) =>
|
|
37
|
+
canNextPage: n.getCanNextPage(),
|
|
38
|
+
canPreviousPage: n.getCanPreviousPage(),
|
|
39
|
+
pageIndex: i.pageIndex,
|
|
40
|
+
pageSize: i.pageSize,
|
|
41
|
+
pageSizes: o.pageSizes,
|
|
42
|
+
i18n: o.i18n,
|
|
43
|
+
pageCount: n.getPageCount(),
|
|
44
|
+
rowCount: o.rowCount,
|
|
45
|
+
onPageIndexChange: (t) => n.setPageIndex(t),
|
|
46
|
+
onClickPreviousPage: () => n.previousPage(),
|
|
47
|
+
onClickNextPage: () => n.nextPage(),
|
|
48
|
+
onPageSizeChange: (t) => n.setPageSize(t)
|
|
48
49
|
}
|
|
49
50
|
) : null,
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
+
/* @__PURE__ */ a("div", { children: u })
|
|
51
52
|
] })
|
|
52
53
|
] });
|
|
53
54
|
}
|
|
54
55
|
export {
|
|
55
|
-
|
|
56
|
+
k as Table
|
|
56
57
|
};
|
|
57
58
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../src/molecules/table/Table.tsx"],"sourcesContent":["import { flexRender } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { PropsWithChildren } from \"react\";\n\nimport type {
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../src/molecules/table/Table.tsx"],"sourcesContent":["import { flexRender } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { PropsWithChildren } from \"react\";\n\nimport type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { getComponent } from \"../../registries/components\";\nimport type { Pagination as DefaultPagination } from \"../pagination/Pagination\";\nimport type { DefaultCellFooter } from \"./components/DefaultCellFooter\";\nimport type { DefaultCellHeader } from \"./components/DefaultCellHeader\";\nimport { useTable, UseTableProps } from \"./hooks/useTable\";\n\nexport interface TableProps<Data extends object = JSONRecord> extends UseTableProps<Data> {\n className?: string;\n\n enableFooter?: boolean;\n enablePagination?: boolean;\n\n pageSizes?: number[];\n}\n\nexport function Table<Data extends object = JSONRecord>({\n className,\n enableFooter,\n enablePagination = true,\n children,\n ...props\n}: PropsWithChildren<TableProps<Data>>) {\n const { tableInstance, i18n } = useTable<Data>(props);\n const CellHeader = getComponent<typeof DefaultCellHeader>(\"CellHeader\");\n const CellFooter = getComponent<typeof DefaultCellFooter>(\"CellFooter\");\n const Pagination = getComponent<typeof DefaultPagination>(\"Pagination\");\n\n const { pagination } = tableInstance.getState();\n\n return (\n <div className={cx(\"table-group\", className)}>\n <div className='table-group-body'>\n <table className='table table-striped table-hover'>\n <thead>\n {tableInstance.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const sort = header.column.getIsSorted();\n return (\n <th\n data-testid={`head-cell-${header.id}`}\n key={header.id}\n aria-sort={sort ? (sort === \"asc\" ? \"ascending\" : \"descending\") : \"none\"}\n >\n {header.isPlaceholder ? null : <CellHeader header={header} i18n={i18n} />}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody>\n {tableInstance.getRowModel().rows.map((row) => {\n return (\n <tr key={row.id} data-testid={`body-row-${row.id}`}>\n {row\n .getVisibleCells()\n .filter((cell) => !cell.column.columnDef.meta?.hidden)\n .map((cell) => {\n return (\n <td {...cell.column.columnDef?.meta?.cellProps} key={cell.id} data-testid={`body-cell-${cell.id}`}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n {enableFooter && (\n <tfoot>\n {tableInstance.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <th key={header.id}>{header.isPlaceholder ? null : <CellFooter header={header} i18n={i18n} />}</th>\n ))}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n </div>\n <div className='table-group-footer'>\n {props.data.length && pagination && enablePagination ? (\n <Pagination\n className={\"flex-1\"}\n canNextPage={tableInstance.getCanNextPage()}\n canPreviousPage={tableInstance.getCanPreviousPage()}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n pageSizes={props.pageSizes}\n i18n={props.i18n}\n pageCount={tableInstance.getPageCount()}\n rowCount={props.rowCount}\n onPageIndexChange={(page) => tableInstance.setPageIndex(page)}\n onClickPreviousPage={() => tableInstance.previousPage()}\n onClickNextPage={() => tableInstance.nextPage()}\n onPageSizeChange={(pageSize) => tableInstance.setPageSize(pageSize)}\n />\n ) : null}\n <div>{children}</div>\n </div>\n </div>\n );\n}\n"],"names":["Table","className","enableFooter","enablePagination","children","props","tableInstance","i18n","useTable","CellHeader","getComponent","CellFooter","Pagination","pagination","cx","jsx","jsxs","headerGroup","header","sort","row","cell","createElement","flexRender","footerGroup","page","pageSize"],"mappings":";;;;;;AAoBO,SAASA,EAAwC;AAAA,EACtD,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,kBAAAC,IAAmB;AAAA,EACnB,UAAAC;AAAA,EACA,GAAGC;AACL,GAAwC;AACtC,QAAM,EAAE,eAAAC,GAAe,MAAAC,MAASC,EAAeH,CAAK,GAC9CI,IAAaC,EAAuC,YAAY,GAChEC,IAAaD,EAAuC,YAAY,GAChEE,IAAaF,EAAuC,YAAY,GAEhE,EAAE,YAAAG,EAAA,IAAeP,EAAc,SAAA;AAErC,2BACG,OAAA,EAAI,WAAWQ,EAAG,eAAeb,CAAS,GACzC,UAAA;AAAA,IAAA,gBAAAc,EAAC,SAAI,WAAU,oBACb,UAAA,gBAAAC,EAAC,SAAA,EAAM,WAAU,mCACf,UAAA;AAAA,MAAA,gBAAAD,EAAC,SAAA,EACE,UAAAT,EAAc,gBAAA,EAAkB,IAAI,CAACW,MACpC,gBAAAF,EAAC,MAAA,EACE,UAAAE,EAAY,QAAQ,IAAI,CAACC,MAAW;AACnC,cAAMC,IAAOD,EAAO,OAAO,YAAA;AAC3B,eACE,gBAAAH;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAa,aAAaG,EAAO,EAAE;AAAA,YAEnC,aAAWC,IAAQA,MAAS,QAAQ,cAAc,eAAgB;AAAA,YAEjE,YAAO,gBAAgB,OAAO,gBAAAJ,EAACN,GAAA,EAAW,QAAAS,GAAgB,MAAAX,EAAA,CAAY;AAAA,UAAA;AAAA,UAHlEW,EAAO;AAAA,QAAA;AAAA,MAMlB,CAAC,EAAA,GAZMD,EAAY,EAarB,CACD,EAAA,CACH;AAAA,MACA,gBAAAF,EAAC,WACE,UAAAT,EAAc,YAAA,EAAc,KAAK,IAAI,CAACc,MAEnC,gBAAAL,EAAC,QAAgB,eAAa,YAAYK,EAAI,EAAE,IAC7C,UAAAA,EACE,kBACA,OAAO,CAACC,MAAS,CAACA,EAAK,OAAO,UAAU,MAAM,MAAM,EACpD,IAAI,CAACA,MAEF,gBAAAC,EAAC,MAAA,EAAI,GAAGD,EAAK,OAAO,WAAW,MAAM,WAAW,KAAKA,EAAK,IAAI,eAAa,aAAaA,EAAK,EAAE,GAAA,GAC5FE,EAAWF,EAAK,OAAO,UAAU,MAAMA,EAAK,WAAA,CAAY,CAC3D,CAEH,EAAA,GAVID,EAAI,EAWb,CAEH,EAAA,CACH;AAAA,MACClB,KACC,gBAAAa,EAAC,SAAA,EACE,UAAAT,EAAc,kBAAkB,IAAI,CAACkB,MACpC,gBAAAT,EAAC,MAAA,EACE,UAAAS,EAAY,QAAQ,IAAI,CAACN,MACxB,gBAAAH,EAAC,MAAA,EAAoB,UAAAG,EAAO,gBAAgB,OAAO,gBAAAH,EAACJ,KAAW,QAAAO,GAAgB,MAAAX,EAAA,CAAY,EAAA,GAAlFW,EAAO,EAA8E,CAC/F,EAAA,GAHMM,EAAY,EAIrB,CACD,EAAA,CACH;AAAA,IAAA,EAAA,CAEJ,EAAA,CACF;AAAA,IACA,gBAAAR,EAAC,OAAA,EAAI,WAAU,sBACZ,UAAA;AAAA,MAAAX,EAAM,KAAK,UAAUQ,KAAcV,IAClC,gBAAAY;AAAA,QAACH;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,UACX,aAAaN,EAAc,eAAA;AAAA,UAC3B,iBAAiBA,EAAc,mBAAA;AAAA,UAC/B,WAAWO,EAAW;AAAA,UACtB,UAAUA,EAAW;AAAA,UACrB,WAAWR,EAAM;AAAA,UACjB,MAAMA,EAAM;AAAA,UACZ,WAAWC,EAAc,aAAA;AAAA,UACzB,UAAUD,EAAM;AAAA,UAChB,mBAAmB,CAACoB,MAASnB,EAAc,aAAamB,CAAI;AAAA,UAC5D,qBAAqB,MAAMnB,EAAc,aAAA;AAAA,UACzC,iBAAiB,MAAMA,EAAc,SAAA;AAAA,UACrC,kBAAkB,CAACoB,MAAapB,EAAc,YAAYoB,CAAQ;AAAA,QAAA;AAAA,MAAA,IAElE;AAAA,MACJ,gBAAAX,EAAC,SAAK,UAAAX,EAAA,CAAS;AAAA,IAAA,EAAA,CACjB;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { CellContext } from '@tanstack/react-table';
|
|
2
|
-
import { CellMetadata,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} = {
|
|
6
|
-
[key: string]: JSON;
|
|
7
|
-
}> {
|
|
2
|
+
import { CellMetadata, Operation } from '../../../interfaces';
|
|
3
|
+
import { JSONRecord } from '../../../interfaces/JSONRecord.js';
|
|
4
|
+
export interface DefaultCellOperationsProps<Data extends object = JSONRecord> {
|
|
8
5
|
info: CellContext<Data, unknown>;
|
|
9
6
|
operations: Operation<Data>[];
|
|
10
7
|
metadata?: CellMetadata;
|
|
11
8
|
i18n: (i18n: string) => string;
|
|
12
9
|
onClick?: (data: any, operation: Operation<Data>) => void;
|
|
13
10
|
}
|
|
14
|
-
export declare function DefaultCellOperations<Data extends {
|
|
15
|
-
[key: string]: JSON;
|
|
16
|
-
} = {
|
|
17
|
-
[key: string]: JSON;
|
|
18
|
-
}>({ info, metadata, operations, i18n, onClick }: DefaultCellOperationsProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function DefaultCellOperations<Data extends object = JSONRecord>({ info, metadata, operations, i18n, onClick }: DefaultCellOperationsProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultCellOperations.js","sources":["../../../../src/molecules/table/components/DefaultCellOperations.tsx"],"sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\n\nimport type { CellMetadata,
|
|
1
|
+
{"version":3,"file":"DefaultCellOperations.js","sources":["../../../../src/molecules/table/components/DefaultCellOperations.tsx"],"sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\n\nimport type { CellMetadata, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { getComponent, registerComponent } from \"../../../registries/components\";\nimport type { DefaultOperationButton } from \"./DefaultOperationButton\";\n\nexport interface DefaultCellOperationsProps<Data extends object = JSONRecord> {\n info: CellContext<Data, unknown>;\n operations: Operation<Data>[];\n metadata?: CellMetadata;\n i18n: (i18n: string) => string;\n onClick?: (data: any, operation: Operation<Data>) => void;\n}\n\nexport function DefaultCellOperations<Data extends object = JSONRecord>({\n info,\n metadata,\n operations,\n i18n,\n onClick\n}: DefaultCellOperationsProps<Data>) {\n const Button = getComponent<typeof DefaultOperationButton<Data>>(\"OperationButton\");\n return (\n <div className='btn-group'>\n {operations\n .filter(({ permissionsResolver, ...operation }) => {\n return !permissionsResolver || permissionsResolver(info.row.original, metadata || {}, operation);\n })\n .map((operation) => {\n return (\n <Button\n data-testid={`operation-${info.row.id}-${operation.action}`}\n key={operation.action}\n operation={operation}\n metadata={metadata}\n info={info}\n i18n={i18n}\n onClick={() => {\n onClick?.(info.row.original, operation);\n }}\n />\n );\n })}\n </div>\n );\n}\n\nregisterComponent(\"CellOperations\", DefaultCellOperations);\n"],"names":["DefaultCellOperations","info","metadata","operations","i18n","onClick","Button","getComponent","jsx","permissionsResolver","operation","registerComponent"],"mappings":";;AAeO,SAASA,EAAwD;AAAA,EACtE,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AACF,GAAqC;AACnC,QAAMC,IAASC,EAAkD,iBAAiB;AAClF,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,aACZ,UAAAL,EACE,OAAO,CAAC,EAAE,qBAAAM,GAAqB,GAAGC,EAAA,MAC1B,CAACD,KAAuBA,EAAoBR,EAAK,IAAI,UAAUC,KAAY,CAAA,GAAIQ,CAAS,CAChG,EACA,IAAI,CAACA,MAEF,gBAAAF;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,eAAa,aAAaL,EAAK,IAAI,EAAE,IAAIS,EAAU,MAAM;AAAA,MAEzD,WAAAA;AAAA,MACA,UAAAR;AAAA,MACA,MAAAD;AAAA,MACA,MAAAG;AAAA,MACA,SAAS,MAAM;AACb,QAAAC,IAAUJ,EAAK,IAAI,UAAUS,CAAS;AAAA,MACxC;AAAA,IAAA;AAAA,IAPKA,EAAU;AAAA,EAAA,CAUpB,EAAA,CACL;AAEJ;AAEAC,EAAkB,kBAAkBX,CAAqB;"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { CellContext } from '@tanstack/react-table';
|
|
2
2
|
import { HTMLAttributes } from 'react';
|
|
3
|
-
import { CellMetadata,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} = {
|
|
7
|
-
[key: string]: JSON;
|
|
8
|
-
}> extends Omit<HTMLAttributes<HTMLButtonElement>, "onClick"> {
|
|
3
|
+
import { CellMetadata, Operation } from '../../../interfaces';
|
|
4
|
+
import { JSONRecord } from '../../../interfaces/JSONRecord.js';
|
|
5
|
+
export interface OperationButtonProps<Data extends object = JSONRecord> extends Omit<HTMLAttributes<HTMLButtonElement>, "onClick"> {
|
|
9
6
|
operation: Operation<Data>;
|
|
10
7
|
info: CellContext<Data, unknown>;
|
|
11
8
|
metadata?: CellMetadata;
|
|
12
9
|
onClick: () => void;
|
|
13
10
|
i18n?: (i18n: string) => string;
|
|
14
11
|
}
|
|
15
|
-
export declare function DefaultOperationButton<Data extends
|
|
16
|
-
[key: string]: JSON;
|
|
17
|
-
} = {
|
|
18
|
-
[key: string]: JSON;
|
|
19
|
-
}>(props: OperationButtonProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function DefaultOperationButton<Data extends object = JSONRecord>(props: OperationButtonProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultOperationButton.js","sources":["../../../../src/molecules/table/components/DefaultOperationButton.tsx"],"sourcesContent":["import { CellContext } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\n\nimport { type CellMetadata, type
|
|
1
|
+
{"version":3,"file":"DefaultOperationButton.js","sources":["../../../../src/molecules/table/components/DefaultOperationButton.tsx"],"sourcesContent":["import { CellContext } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\n\nimport { type CellMetadata, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { registerComponent } from \"../../../registries/components\";\nimport { iconClass } from \"../../../utils/iconClass\";\nimport { stopPropagationWrapper } from \"../../../utils/stopPropagationWrapper\";\n\nexport interface OperationButtonProps<Data extends object = JSONRecord> extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n operation: Operation<Data>;\n info: CellContext<Data, unknown>;\n metadata?: CellMetadata;\n onClick: () => void;\n i18n?: (i18n: string) => string;\n}\n\nexport function DefaultOperationButton<Data extends object = JSONRecord>(props: OperationButtonProps<Data>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { i18n = (f: string) => f, onClick, operation, info, ...extraProps } = props;\n const { className = \"btn\", buttonSize = \"xs\", buttonType = \"primary\", buttonOutline, action, title = \"\", icon = \"\" } = operation;\n\n return (\n <button\n {...extraProps}\n aria-label={\"Operation button: \" + (title || action)}\n className={cx(className, [\"btn\", buttonOutline && \"outline\", buttonType].filter(Boolean).join(\"-\"), `btn-${buttonSize}`)}\n onClick={stopPropagationWrapper(() => onClick())}\n >\n {icon ? (\n <>\n <i className={iconClass(undefined, icon)} /> {title && \" \"}\n </>\n ) : null}\n {title && <span className={icon && title ? \"ml-1\" : \"\"}>{i18n(title)}</span>}\n </button>\n );\n}\n\nregisterComponent(\"OperationButton\", DefaultOperationButton);\n"],"names":["DefaultOperationButton","props","i18n","onClick","operation","info","extraProps","className","buttonSize","buttonType","buttonOutline","action","title","icon","jsxs","cx","stopPropagationWrapper","Fragment","jsx","iconClass","registerComponent"],"mappings":";;;;;AAkBO,SAASA,EAAyDC,GAAmC;AAE1G,QAAM,EAAE,MAAAC,IAAO,CAAC,MAAc,GAAG,SAAAC,GAAS,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,IAAeL,GACvE,EAAE,WAAAM,IAAY,OAAO,YAAAC,IAAa,MAAM,YAAAC,IAAa,WAAW,eAAAC,GAAe,QAAAC,GAAQ,OAAAC,IAAQ,IAAI,MAAAC,IAAO,OAAOT;AAEvH,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,cAAY,wBAAwBM,KAASD;AAAA,MAC7C,WAAWI,EAAGR,GAAW,CAAC,OAAOG,KAAiB,WAAWD,CAAU,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAOD,CAAU,EAAE;AAAA,MACvH,SAASQ,EAAuB,MAAMb,GAAS;AAAA,MAE9C,UAAA;AAAA,QAAAU,IACC,gBAAAC,EAAAG,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAC,EAAC,KAAA,EAAE,WAAWC,EAAU,QAAWN,CAAI,GAAG;AAAA,UAAE;AAAA,UAAED,KAAS;AAAA,QAAA,EAAA,CACzD,IACE;AAAA,QACHA,KAAS,gBAAAM,EAAC,QAAA,EAAK,WAAWL,KAAQD,IAAQ,SAAS,IAAK,UAAAV,EAAKU,CAAK,EAAA,CAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E;AAEAQ,EAAkB,mBAAmBpB,CAAsB;"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { TableOptions, TableState } from '@tanstack/react-table';
|
|
2
|
-
import { FormOptions,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} = {
|
|
6
|
-
[key: string]: JSON;
|
|
7
|
-
}> extends Omit<TableOptions<Data>, "getCoreRowModel" | "onClick"> {
|
|
2
|
+
import { FormOptions, Operation } from '../../../interfaces';
|
|
3
|
+
import { JSONRecord } from '../../../interfaces/JSONRecord.js';
|
|
4
|
+
export interface UseTableProps<Data extends object = JSONRecord> extends Omit<TableOptions<Data>, "getCoreRowModel" | "onClick"> {
|
|
8
5
|
operations: Operation<Data>[];
|
|
9
6
|
metadata?: Record<string, unknown>;
|
|
10
7
|
i18n?: FormOptions["i18n"];
|
|
@@ -13,11 +10,7 @@ export interface UseTableProps<Data extends {
|
|
|
13
10
|
onChange?: (query: TableState) => void;
|
|
14
11
|
pageSizes?: number[];
|
|
15
12
|
}
|
|
16
|
-
export declare function useTable<Data extends {
|
|
17
|
-
[key: string]: JSON;
|
|
18
|
-
} = {
|
|
19
|
-
[key: string]: JSON;
|
|
20
|
-
}>(props: UseTableProps<Data>): {
|
|
13
|
+
export declare function useTable<Data extends object = JSONRecord>(props: UseTableProps<Data>): {
|
|
21
14
|
i18n: (key: string, defaultValue?: string) => string;
|
|
22
15
|
tableInstance: import('@tanstack/table-core').Table<Data>;
|
|
23
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTable.js","sources":["../../../../src/molecules/table/hooks/useTable.tsx"],"sourcesContent":["import {\n type ColumnDef,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type TableOptions,\n type TableState,\n useReactTable\n} from \"@tanstack/react-table\";\nimport { useEffect } from \"react\";\n\nimport { useI18n } from \"../../../hooks/useI18n.js\";\nimport { type FormOptions, type
|
|
1
|
+
{"version":3,"file":"useTable.js","sources":["../../../../src/molecules/table/hooks/useTable.tsx"],"sourcesContent":["import {\n type ColumnDef,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type TableOptions,\n type TableState,\n useReactTable\n} from \"@tanstack/react-table\";\nimport { useEffect } from \"react\";\n\nimport { useI18n } from \"../../../hooks/useI18n.js\";\nimport { type FormOptions, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { getComponent } from \"../../../registries/components\";\nimport type { DefaultCellOperations } from \"../components/DefaultCellOperations\";\n\nexport interface UseTableProps<Data extends object = JSONRecord> extends Omit<TableOptions<Data>, \"getCoreRowModel\" | \"onClick\"> {\n operations: Operation<Data>[];\n metadata?: Record<string, unknown>;\n i18n?: FormOptions[\"i18n\"];\n onClick?: (data: Data, operation: Operation<Data>) => void;\n manualFaceted?: boolean;\n onChange?: (query: TableState) => void;\n pageSizes?: number[];\n}\n\nexport function useTable<Data extends object = JSONRecord>(props: UseTableProps<Data>) {\n const Operations = getComponent<typeof DefaultCellOperations<Data>>(\"CellOperations\");\n const { t } = useI18n(props.i18n);\n\n // const [pagination, setPagination] = useState({\n // pageIndex: 0, //initial page index\n // pageSize: 10 //default page size\n // });\n\n const operations = props.operations.length\n ? ([\n {\n id: \"operations\",\n header: t(\"Operations\"),\n cell: (info) => (\n <Operations info={info} operations={props.operations} metadata={props.metadata} onClick={props.onClick} i18n={t} />\n )\n }\n ] satisfies ColumnDef<Data>[])\n : [];\n\n const tableInstance = useReactTable({\n ...props,\n columns: [...props.columns, ...operations],\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getFilteredRowModel: !props.manualFiltering ? getFilteredRowModel() : undefined,\n getSortedRowModel: !props.manualSorting ? getSortedRowModel() : undefined,\n getFacetedRowModel: !props.manualFaceted ? getFacetedRowModel() : undefined, // client-side faceting\n getFacetedUniqueValues: !props.manualFaceted ? getFacetedUniqueValues() : undefined // generate unique values for select filter/autocomplete\n });\n\n const { columnFilters, sorting, pagination, columnOrder, columnPinning, columnSizing, columnSizingInfo, columnVisibility, globalFilter } =\n tableInstance.getState();\n\n useEffect(() => {\n if (props.onChange) {\n props.onChange(tableInstance.getState());\n }\n }, [columnFilters, sorting, pagination, columnOrder, columnPinning, columnSizing, columnSizingInfo, columnVisibility, globalFilter]);\n\n return {\n i18n: t,\n tableInstance\n };\n}\n"],"names":["useTable","props","Operations","getComponent","useI18n","operations","info","jsx","tableInstance","useReactTable","getCoreRowModel","getPaginationRowModel","getFilteredRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","columnFilters","sorting","pagination","columnOrder","columnPinning","columnSizing","columnSizingInfo","columnVisibility","globalFilter","useEffect"],"mappings":";;;;;AA8BO,SAASA,EAA2CC,GAA4B;AACrF,QAAMC,IAAaC,EAAiD,gBAAgB,GAC9E,EAAE,EAAA,IAAMC,EAAQH,EAAM,IAAI,GAO1BI,IAAaJ,EAAM,WAAW,SAC/B;AAAA,IACC;AAAA,MACE,IAAI;AAAA,MACJ,QAAQ,EAAE,YAAY;AAAA,MACtB,MAAM,CAACK,MACL,gBAAAC,EAACL,GAAA,EAAW,MAAAI,GAAY,YAAYL,EAAM,YAAY,UAAUA,EAAM,UAAU,SAASA,EAAM,SAAS,MAAM,EAAA,CAAG;AAAA,IAAA;AAAA,EAErH,IAEF,CAAA,GAEEO,IAAgBC,EAAc;AAAA,IAClC,GAAGR;AAAA,IACH,SAAS,CAAC,GAAGA,EAAM,SAAS,GAAGI,CAAU;AAAA,IACzC,iBAAiBK,EAAA;AAAA,IACjB,uBAAuBC,EAAA;AAAA,IACvB,qBAAsBV,EAAM,kBAA0C,SAAxBW;IAC9C,mBAAoBX,EAAM,gBAAsC,SAAtBY;IAC1C,oBAAqBZ,EAAM,gBAAuC,SAAvBa;;IAC3C,wBAAyBb,EAAM,gBAA2C,SAA3Bc;;EAA2B,CAC3E,GAEK,EAAE,eAAAC,GAAe,SAAAC,GAAS,YAAAC,GAAY,aAAAC,GAAa,eAAAC,GAAe,cAAAC,GAAc,kBAAAC,GAAkB,kBAAAC,GAAkB,cAAAC,MACxHhB,EAAc,SAAA;AAEhB,SAAAiB,EAAU,MAAM;AACd,IAAIxB,EAAM,YACRA,EAAM,SAASO,EAAc,UAAU;AAAA,EAE3C,GAAG,CAACQ,GAAeC,GAASC,GAAYC,GAAaC,GAAeC,GAAcC,GAAkBC,GAAkBC,CAAY,CAAC,GAE5H;AAAA,IACL,MAAM;AAAA,IACN,eAAAhB;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,38 +1,39 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { c as d } from "../../../chunks/index2.js";
|
|
3
|
-
import { createColumnHelper as
|
|
4
|
-
import C from "
|
|
5
|
-
import g from "
|
|
6
|
-
import { getComponent as
|
|
7
|
-
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { r as f, c as d } from "../../../chunks/index2.js";
|
|
3
|
+
import { createColumnHelper as g } from "@tanstack/react-table";
|
|
4
|
+
import { c as C } from "../../../chunks/cloneDeep.js";
|
|
5
|
+
import { g as x } from "../../../chunks/_commonjsHelpers.js";
|
|
6
|
+
import { getComponent as b } from "../../../registries/components.js";
|
|
7
|
+
var y = f();
|
|
8
|
+
const k = /* @__PURE__ */ x(y), v = {
|
|
8
9
|
number: "range",
|
|
9
10
|
currency: "range",
|
|
10
11
|
checkbox: "boolean"
|
|
11
12
|
};
|
|
12
|
-
function
|
|
13
|
-
const u =
|
|
14
|
-
return
|
|
15
|
-
const t = e, n = d.Components.create(t, {}, null), o = r.findIndex(({ accessorKey:
|
|
16
|
-
let
|
|
17
|
-
return
|
|
13
|
+
function H(c, p = []) {
|
|
14
|
+
const u = g(), r = C(p), l = b("Cell");
|
|
15
|
+
return c.components.flatMap((e) => e.type === "tabs" ? e.components?.flatMap((t) => t.components) : [e]).filter((e) => e?.tableView).map((e) => {
|
|
16
|
+
const t = e, n = d.Components.create(t, {}, null), o = r.findIndex(({ accessorKey: m }) => m === `data.${t.key}`);
|
|
17
|
+
let a = r[o];
|
|
18
|
+
return a && r.splice(o, 1), u.accessor(`data.${t.key}`, {
|
|
18
19
|
header: (t.label || t.title || t.key)?.replace(/:/, ""),
|
|
19
|
-
cell: (
|
|
20
|
+
cell: (m) => /* @__PURE__ */ s(l, { value: m.getValue(), render: (i) => n.asString(i) }),
|
|
20
21
|
meta: {
|
|
21
|
-
filter: { variant:
|
|
22
|
-
...
|
|
22
|
+
filter: { variant: v[t.type] || "text" },
|
|
23
|
+
...a?.meta || {}
|
|
23
24
|
},
|
|
24
|
-
...
|
|
25
|
+
...a || {}
|
|
25
26
|
});
|
|
26
27
|
}).concat(r).map((e, t) => ({
|
|
27
28
|
...e,
|
|
28
29
|
meta: {
|
|
29
30
|
...e.meta || {},
|
|
30
|
-
order:
|
|
31
|
+
order: k(e, "meta.order", t * 10)
|
|
31
32
|
},
|
|
32
|
-
cell: e.cell || ((n) => /* @__PURE__ */
|
|
33
|
+
cell: e.cell || ((n) => /* @__PURE__ */ s(l, { value: n.getValue(), render: (o) => o }))
|
|
33
34
|
})).sort((e, t) => e.meta.order > t.meta.order ? 1 : -1);
|
|
34
35
|
}
|
|
35
36
|
export {
|
|
36
|
-
|
|
37
|
+
H as mapFormToColumns
|
|
37
38
|
};
|
|
38
39
|
//# sourceMappingURL=mapFormToColumns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapFormToColumns.js","sources":["../../../../src/molecules/table/utils/mapFormToColumns.tsx"],"sourcesContent":["import \"../interfaces/extends\";\n\nimport { Components } from \"@formio/js\";\nimport { ColumnDef, ColumnDefResolved, createColumnHelper } from \"@tanstack/react-table\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport get from \"lodash/get\";\n\nimport type { ComponentType, FormType } from \"../../../interfaces\";\nimport { getComponent } from \"../../../registries/components\";\nimport type { DefaultCell } from \"../components/DefaultCell\";\nimport type { FilterVariants } from \"../filters/Filters.js\";\n\nconst MAP_TYPES: Record<string, FilterVariants> = {\n number: \"range\",\n currency: \"range\",\n checkbox: \"boolean\"\n};\n\nexport function mapFormToColumns<Data = any>(form: FormType, columns: ColumnDefResolved<Data, any>[] = []): ColumnDef<Data, any>[] {\n const columnHelper = createColumnHelper<Data>();\n const columnsToKeep = cloneDeep(columns);\n\n const Cell = getComponent<typeof DefaultCell>(\"Cell\");\n\n const columnsFromComponents = form.components\n .flatMap((component) => {\n if (component.type === \"tabs\") {\n return component.components?.flatMap((subComponent: ComponentType) => subComponent.components);\n }\n\n return [component];\n })\n .filter((component) => component?.tableView)\n .map((c) => {\n const component = c as ComponentType;\n const cmp: any = Components.create(component, {}, null);\n\n const columnIndex = columnsToKeep.findIndex(({ accessorKey }) => {\n return accessorKey === `data.${component.key}`;\n });\n\n let column = columnsToKeep[columnIndex];\n\n if (column) {\n columnsToKeep.splice(columnIndex, 1);\n }\n\n return columnHelper.accessor(`data.${component.key}` as any, {\n header: (component.label || component.title || component.key)?.replace(/:/, \"\"),\n cell: (info) => {\n return <Cell value={info.getValue() as Data} render={(value: Data) => cmp.asString(value)} />;\n },\n meta: {\n filter: { variant: MAP_TYPES[component.type!] || \"text\" },\n ...(column?.meta || {})\n },\n ...(column || {})\n });\n });\n\n const mergedColumns = columnsFromComponents.concat(columnsToKeep as any[]).map((column, index) => ({\n ...column,\n meta: {\n ...(column.meta || {}),\n order: get(column, \"meta.order\", index * 10)\n },\n cell:\n column.cell ||\n ((info) => {\n return <Cell value={info.getValue() as Data} render={(value: Data) => value} />;\n })\n }));\n\n return mergedColumns.sort((a, b) => (a.meta.order > b.meta.order ? 1 : -1)) as ColumnDef<Data, any>[];\n}\n"],"names":["MAP_TYPES","mapFormToColumns","form","columns","columnHelper","createColumnHelper","columnsToKeep","cloneDeep","Cell","getComponent","component","subComponent","c","cmp","Components","columnIndex","accessorKey","column","info","jsx","value","index","get","a","b"],"mappings":"
|
|
1
|
+
{"version":3,"file":"mapFormToColumns.js","sources":["../../../../src/molecules/table/utils/mapFormToColumns.tsx"],"sourcesContent":["import \"../interfaces/extends\";\n\nimport { Components } from \"@formio/js\";\nimport { ColumnDef, ColumnDefResolved, createColumnHelper } from \"@tanstack/react-table\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport get from \"lodash/get\";\n\nimport type { ComponentType, FormType } from \"../../../interfaces\";\nimport { getComponent } from \"../../../registries/components\";\nimport type { DefaultCell } from \"../components/DefaultCell\";\nimport type { FilterVariants } from \"../filters/Filters.js\";\n\nconst MAP_TYPES: Record<string, FilterVariants> = {\n number: \"range\",\n currency: \"range\",\n checkbox: \"boolean\"\n};\n\nexport function mapFormToColumns<Data = any>(form: FormType, columns: ColumnDefResolved<Data, any>[] = []): ColumnDef<Data, any>[] {\n const columnHelper = createColumnHelper<Data>();\n const columnsToKeep = cloneDeep(columns);\n\n const Cell = getComponent<typeof DefaultCell>(\"Cell\");\n\n const columnsFromComponents = form.components\n .flatMap((component) => {\n if (component.type === \"tabs\") {\n return component.components?.flatMap((subComponent: ComponentType) => subComponent.components);\n }\n\n return [component];\n })\n .filter((component) => component?.tableView)\n .map((c) => {\n const component = c as ComponentType;\n const cmp: any = Components.create(component, {}, null);\n\n const columnIndex = columnsToKeep.findIndex(({ accessorKey }) => {\n return accessorKey === `data.${component.key}`;\n });\n\n let column = columnsToKeep[columnIndex];\n\n if (column) {\n columnsToKeep.splice(columnIndex, 1);\n }\n\n return columnHelper.accessor(`data.${component.key}` as any, {\n header: (component.label || component.title || component.key)?.replace(/:/, \"\"),\n cell: (info) => {\n return <Cell value={info.getValue() as Data} render={(value: Data) => cmp.asString(value)} />;\n },\n meta: {\n filter: { variant: MAP_TYPES[component.type!] || \"text\" },\n ...(column?.meta || {})\n },\n ...(column || {})\n });\n });\n\n const mergedColumns = columnsFromComponents.concat(columnsToKeep as any[]).map((column, index) => ({\n ...column,\n meta: {\n ...(column.meta || {}),\n order: get(column, \"meta.order\", index * 10)\n },\n cell:\n column.cell ||\n ((info) => {\n return <Cell value={info.getValue() as Data} render={(value: Data) => value} />;\n })\n }));\n\n return mergedColumns.sort((a, b) => (a.meta.order > b.meta.order ? 1 : -1)) as ColumnDef<Data, any>[];\n}\n"],"names":["MAP_TYPES","mapFormToColumns","form","columns","columnHelper","createColumnHelper","columnsToKeep","cloneDeep","Cell","getComponent","component","subComponent","c","cmp","Components","columnIndex","accessorKey","column","info","jsx","value","index","get","a","b"],"mappings":";;;;;;;gCAYMA,IAA4C;AAAA,EAChD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,SAASC,EAA6BC,GAAgBC,IAA0C,IAA4B;AACjI,QAAMC,IAAeC,EAAA,GACfC,IAAgBC,EAAUJ,CAAO,GAEjCK,IAAOC,EAAiC,MAAM;AAmDpD,SAjD8BP,EAAK,WAChC,QAAQ,CAACQ,MACJA,EAAU,SAAS,SACdA,EAAU,YAAY,QAAQ,CAACC,MAAgCA,EAAa,UAAU,IAGxF,CAACD,CAAS,CAClB,EACA,OAAO,CAACA,MAAcA,GAAW,SAAS,EAC1C,IAAI,CAACE,MAAM;AACV,UAAMF,IAAYE,GACZC,IAAWC,EAAAA,WAAW,OAAOJ,GAAW,CAAA,GAAI,IAAI,GAEhDK,IAAcT,EAAc,UAAU,CAAC,EAAE,aAAAU,QACtCA,MAAgB,QAAQN,EAAU,GAAG,EAC7C;AAED,QAAIO,IAASX,EAAcS,CAAW;AAEtC,WAAIE,KACFX,EAAc,OAAOS,GAAa,CAAC,GAG9BX,EAAa,SAAS,QAAQM,EAAU,GAAG,IAAW;AAAA,MAC3D,SAASA,EAAU,SAASA,EAAU,SAASA,EAAU,MAAM,QAAQ,KAAK,EAAE;AAAA,MAC9E,MAAM,CAACQ,MACE,gBAAAC,EAACX,GAAA,EAAK,OAAOU,EAAK,SAAA,GAAoB,QAAQ,CAACE,MAAgBP,EAAI,SAASO,CAAK,EAAA,CAAG;AAAA,MAE7F,MAAM;AAAA,QACJ,QAAQ,EAAE,SAASpB,EAAUU,EAAU,IAAK,KAAK,OAAA;AAAA,QACjD,GAAIO,GAAQ,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEvB,GAAIA,KAAU,CAAA;AAAA,IAAC,CAChB;AAAA,EACH,CAAC,EAEyC,OAAOX,CAAsB,EAAE,IAAI,CAACW,GAAQI,OAAW;AAAA,IACjG,GAAGJ;AAAA,IACH,MAAM;AAAA,MACJ,GAAIA,EAAO,QAAQ,CAAA;AAAA,MACnB,OAAOK,EAAIL,GAAQ,cAAcI,IAAQ,EAAE;AAAA,IAAA;AAAA,IAE7C,MACEJ,EAAO,SACN,CAACC,MACO,gBAAAC,EAACX,KAAK,OAAOU,EAAK,YAAoB,QAAQ,CAACE,MAAgBA,GAAO;AAAA,EAC/E,EACF,EAEmB,KAAK,CAACG,GAAGC,MAAOD,EAAE,KAAK,QAAQC,EAAE,KAAK,QAAQ,IAAI,EAAG;AAC5E;"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JSONRecord } from '../../interfaces/JSONRecord.js';
|
|
2
2
|
import { UseFormProps } from './useForm';
|
|
3
3
|
declare class CSSProperties {
|
|
4
4
|
}
|
|
5
|
-
export interface FormProps<Data extends {
|
|
6
|
-
[key: string]: JSON;
|
|
7
|
-
} = {
|
|
8
|
-
[key: string]: JSON;
|
|
9
|
-
}> extends UseFormProps<Data> {
|
|
5
|
+
export interface FormProps<Data extends object = JSONRecord> extends UseFormProps<Data> {
|
|
10
6
|
["data-testid"]?: string;
|
|
11
7
|
/**
|
|
12
8
|
*
|
|
@@ -14,9 +10,5 @@ export interface FormProps<Data extends {
|
|
|
14
10
|
className?: string;
|
|
15
11
|
style?: CSSProperties;
|
|
16
12
|
}
|
|
17
|
-
export declare function Form<Data extends {
|
|
18
|
-
[key: string]: JSON;
|
|
19
|
-
} = {
|
|
20
|
-
[key: string]: JSON;
|
|
21
|
-
}>({ style, className, "data-testid": dataTestId, ...props }: Partial<FormProps<Data>>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function Form<Data extends object = JSONRecord>({ style, className, "data-testid": dataTestId, ...props }: Partial<FormProps<Data>>): import("react/jsx-runtime").JSX.Element;
|
|
22
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sources":["../../../src/organisms/form/Form.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"Form.js","sources":["../../../src/organisms/form/Form.tsx"],"sourcesContent":["import type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { useForm, UseFormProps } from \"./useForm\";\n\nclass CSSProperties {}\n\nexport interface FormProps<Data extends object = JSONRecord> extends UseFormProps<Data> {\n [\"data-testid\"]?: string;\n /**\n *\n */\n className?: string;\n\n style?: CSSProperties;\n}\n\nexport function Form<Data extends object = JSONRecord>({\n style,\n className,\n \"data-testid\": dataTestId = \"formio-container\",\n ...props\n}: Partial<FormProps<Data>>) {\n const { element } = useForm<Data>(props);\n\n return (\n <div>\n <div data-testid={dataTestId} style={style} className={className} ref={element} />\n </div>\n );\n}\n"],"names":["Form","style","className","dataTestId","props","element","useForm","jsx"],"mappings":";;AAeO,SAASA,EAAuC;AAAA,EACrD,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAeC,IAAa;AAAA,EAC5B,GAAGC;AACL,GAA6B;AAC3B,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAcF,CAAK;AAEvC,SACE,gBAAAG,EAAC,OAAA,EACC,UAAA,gBAAAA,EAAC,OAAA,EAAI,eAAaJ,GAAY,OAAAF,GAAc,WAAAC,GAAsB,KAAKG,EAAA,CAAS,EAAA,CAClF;AAEJ;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import r from "
|
|
2
|
-
import i from "
|
|
3
|
-
import u from "
|
|
1
|
+
import { c as r } from "../../../chunks/cloneDeep.js";
|
|
2
|
+
import { i } from "../../../chunks/isEqual.js";
|
|
3
|
+
import { n as u } from "../../../chunks/noop.js";
|
|
4
4
|
import { getSubmissionPermissionForm as m, getAccessPermissionForm as d } from "./FormAccess.schema.js";
|
|
5
5
|
function f(e) {
|
|
6
6
|
return Object.values(e).map((s) => ({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as m, jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import { g as f } from "../../../chunks/_commonjsHelpers.js";
|
|
3
|
-
import {
|
|
3
|
+
import { a as c } from "../../../chunks/index2.js";
|
|
4
4
|
import { Form as p } from "../Form.js";
|
|
5
5
|
var d = c();
|
|
6
6
|
const n = /* @__PURE__ */ f(d);
|
|
@@ -18,13 +18,13 @@ function b({ action: t, ...s }) {
|
|
|
18
18
|
}), s;
|
|
19
19
|
}
|
|
20
20
|
function v({ actionInfo: t, children: s, onSubmit: r, options: e, ...i }) {
|
|
21
|
-
const { form: u, submission:
|
|
22
|
-
const
|
|
23
|
-
return { form: b(t.settingsForm), submission: { data:
|
|
21
|
+
const { form: u, submission: a } = (() => {
|
|
22
|
+
const o = x(i.submission || {}, t.defaults);
|
|
23
|
+
return { form: b(t.settingsForm), submission: { data: o } };
|
|
24
24
|
})();
|
|
25
25
|
return /* @__PURE__ */ m("div", { children: [
|
|
26
26
|
s,
|
|
27
|
-
/* @__PURE__ */ l(p, { form: u, submission:
|
|
27
|
+
/* @__PURE__ */ l(p, { form: u, submission: a, onSubmit: r, options: e }),
|
|
28
28
|
s
|
|
29
29
|
] });
|
|
30
30
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import p from "
|
|
2
|
-
import e from "
|
|
3
|
-
import l from "
|
|
1
|
+
import { c as p } from "../../../chunks/camelCase.js";
|
|
2
|
+
import { c as e } from "../../../chunks/cloneDeep.js";
|
|
3
|
+
import { i as l } from "../../../chunks/isEqual.js";
|
|
4
4
|
const m = (r, o) => !l(r, o);
|
|
5
5
|
function C(r) {
|
|
6
6
|
return {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { c as l } from "../../../chunks/cloneDeep.js";
|
|
2
2
|
import { useReducer as y, useEffect as g } from "react";
|
|
3
3
|
import { reducer as C, createInitialState as S, hasChanged as b } from "./FormEdit.reducer.js";
|
|
4
4
|
function R(e) {
|
|
5
|
-
const [{ current: t, future: m, past: i }, o] = y(C, S(e)),
|
|
5
|
+
const [{ current: t, future: m, past: i }, o] = y(C, S(e)), a = () => {
|
|
6
6
|
e.onSubmit && typeof e.onSubmit == "function" && e.onSubmit(t);
|
|
7
|
-
},
|
|
7
|
+
}, c = () => {
|
|
8
8
|
e.onSubmit && typeof e.onCopy == "function" && e.onCopy(t);
|
|
9
9
|
};
|
|
10
10
|
g(() => {
|
|
@@ -12,20 +12,20 @@ function R(e) {
|
|
|
12
12
|
}, [e.form]);
|
|
13
13
|
const f = (n) => {
|
|
14
14
|
b(t, { ...t, ...n }) && o({ type: "formChange", value: n });
|
|
15
|
-
},
|
|
16
|
-
f({ ...t, [n]:
|
|
15
|
+
}, u = () => o({ type: "redo" }), r = () => o({ type: "undo" }), d = () => o({ type: "reset" }), h = (n, s) => {
|
|
16
|
+
f({ ...t, [n]: s });
|
|
17
17
|
};
|
|
18
18
|
return {
|
|
19
|
-
form:
|
|
20
|
-
redo:
|
|
19
|
+
form: l(t),
|
|
20
|
+
redo: u,
|
|
21
21
|
undo: r,
|
|
22
22
|
reset: d,
|
|
23
23
|
hasChanged: !!i.length,
|
|
24
24
|
isValid: t.title && t.name && t.path,
|
|
25
25
|
hasUndo: !!i.length,
|
|
26
26
|
hasRedo: !!m.length,
|
|
27
|
-
onSubmit:
|
|
28
|
-
onCopy:
|
|
27
|
+
onSubmit: a,
|
|
28
|
+
onCopy: c,
|
|
29
29
|
formChange: f,
|
|
30
30
|
setChange: h
|
|
31
31
|
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { jsxs as b, jsx as
|
|
2
|
-
import S from "
|
|
3
|
-
import g from "
|
|
1
|
+
import { jsxs as b, jsx as u } from "react/jsx-runtime";
|
|
2
|
+
import { i as S } from "../../../chunks/isEqual.js";
|
|
3
|
+
import { n as g } from "../../../chunks/noop.js";
|
|
4
4
|
import { useState as c, useEffect as l } from "react";
|
|
5
5
|
import { useI18n as f } from "../../../hooks/useI18n.js";
|
|
6
6
|
import { Form as h } from "../Form.js";
|
|
7
7
|
import { getFormSettingsSchema as F } from "./FormSettings.schema.js";
|
|
8
8
|
import { formSettingsToSubmission as d, submissionToFormSettings as y } from "./FormSettings.utils.js";
|
|
9
|
-
function x({ form: t, onSubmit:
|
|
10
|
-
const r = F(), [e, o] = c(!0), [s, i] = c(() => d(t)), p = ({ data:
|
|
11
|
-
|
|
9
|
+
function x({ form: t, onSubmit: m = g }) {
|
|
10
|
+
const r = F(), [e, o] = c(!0), [s, i] = c(() => d(t)), p = ({ data: n, isValid: a }) => {
|
|
11
|
+
a && i({ data: n }), o(a);
|
|
12
12
|
};
|
|
13
13
|
return l(() => {
|
|
14
|
-
const
|
|
15
|
-
t?._id && !S(s.data,
|
|
14
|
+
const n = d(t);
|
|
15
|
+
t?._id && !S(s.data, n.data) && i(n);
|
|
16
16
|
}, [t?._id]), {
|
|
17
17
|
form: r,
|
|
18
18
|
type: t.type,
|
|
@@ -21,15 +21,15 @@ function x({ form: t, onSubmit: n = g }) {
|
|
|
21
21
|
isValid: e,
|
|
22
22
|
setIsValid: o,
|
|
23
23
|
onSubmit: () => {
|
|
24
|
-
|
|
24
|
+
m(y(t, s));
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
function k(t) {
|
|
29
|
-
const { form:
|
|
29
|
+
const { form: m, submission: r, onChange: e, onSubmit: o, isValid: s } = x(t), { t: i } = f(t?.options?.i18n);
|
|
30
30
|
return /* @__PURE__ */ b("div", { children: [
|
|
31
|
-
/* @__PURE__ */
|
|
32
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ u(h, { form: m, submission: r, onChange: e, options: t.options }),
|
|
32
|
+
/* @__PURE__ */ u("button", { "data-testid": "submit", disabled: !s, className: "mt-5 btn btn-primary", onClick: o, type: "submit", children: i("Save settings") })
|
|
33
33
|
] });
|
|
34
34
|
}
|
|
35
35
|
export {
|