@solidxai/core-ui 0.1.3 → 0.1.4-beta.1
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/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +0 -5
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +0 -5
- package/dist/components/auth/SolidLogin.d.ts.map +1 -1
- package/dist/components/auth/SolidLogin.js +7 -5
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +10 -8
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +48 -47
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +41 -10
- package/dist/components/core/common/FilterComponent.js.map +1 -1
- package/dist/components/core/common/FilterComponent.tsx +1 -1
- package/dist/components/core/common/GroupingComponent.d.ts +54 -0
- package/dist/components/core/common/GroupingComponent.d.ts.map +1 -0
- package/dist/components/core/common/GroupingComponent.js +196 -0
- package/dist/components/core/common/GroupingComponent.js.map +1 -0
- package/dist/components/core/common/GroupingComponent.tsx +452 -0
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts +18 -1
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +152 -52
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +212 -35
- package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts +19 -0
- package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js +90 -0
- package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.tsx +59 -0
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +17 -28
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +71 -56
- package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts +2 -0
- package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts.map +1 -0
- package/dist/components/core/filter/SolidOneToManyFilterElement.js +86 -0
- package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -0
- package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +62 -0
- package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts +1 -0
- package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.js +4 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +10 -0
- package/dist/components/core/filter/fields/SolidRelationField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidRelationField.js +4 -2
- package/dist/components/core/filter/fields/SolidRelationField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidRelationField.tsx +4 -2
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts +4 -0
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -0
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +25 -0
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -0
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +60 -0
- package/dist/components/core/form/SolidFormFooter.js +4 -4
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +4 -4
- package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.js +11 -8
- package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.tsx +20 -8
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts +40 -0
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +317 -157
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +463 -243
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +46 -95
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +57 -113
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +15 -4
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +220 -33
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +167 -36
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +13 -12
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +8 -7
- package/dist/components/core/list/SolidListView.d.ts +18 -10
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +176 -177
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +130 -143
- package/dist/components/core/list/SolidListViewConfigure.d.ts +7 -0
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js +6 -5
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +21 -12
- package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.js +1 -37
- package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.tsx +0 -41
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +9 -5
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +14 -3
- package/dist/components/core/list/listViewRegistry.js.map +1 -1
- package/dist/components/core/list/listViewRegistry.ts +1 -2
- package/dist/components/core/tree/SolidTreeView.d.ts +38 -0
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -0
- package/dist/components/core/tree/SolidTreeView.js +1179 -0
- package/dist/components/core/tree/SolidTreeView.js.map +1 -0
- package/dist/components/core/tree/SolidTreeView.tsx +1637 -0
- package/dist/components/core/tree/treeViewRegistry.d.ts +7 -0
- package/dist/components/core/tree/treeViewRegistry.d.ts.map +1 -0
- package/dist/components/core/tree/treeViewRegistry.js +17 -0
- package/dist/components/core/tree/treeViewRegistry.js.map +1 -0
- package/dist/components/core/tree/treeViewRegistry.ts +23 -0
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +19 -6
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +39 -0
- package/dist/helpers/helpers.d.ts +2 -0
- package/dist/helpers/helpers.d.ts.map +1 -1
- package/dist/helpers/helpers.js +3 -1
- package/dist/helpers/helpers.js.map +1 -1
- package/dist/helpers/helpers.ts +4 -1
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +5 -1
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +7 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +6 -1
- package/dist/resources/globals.css +32 -4
- package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +2 -2
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +3 -2
- package/dist/routes/pages/admin/core/ModuleHomePage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/ModuleHomePage.js +4 -15
- package/dist/routes/pages/admin/core/ModuleHomePage.js.map +1 -1
- package/dist/routes/pages/admin/core/ModuleHomePage.tsx +4 -3
- package/dist/routes/pages/admin/core/TreePage.d.ts +2 -0
- package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/TreePage.js +37 -0
- package/dist/routes/pages/admin/core/TreePage.js.map +1 -0
- package/dist/routes/pages/admin/core/TreePage.tsx +30 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +2 -0
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +3 -1
- package/dist/routes/types.d.ts +1 -1
- package/dist/routes/types.d.ts.map +1 -1
- package/dist/routes/types.js.map +1 -1
- package/dist/routes/types.ts +1 -0
- package/dist/types/index.d.ts +8 -2
- package/dist/types/solid-core.d.ts +40 -0
- package/package.json +1 -1
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import "../../common/solid-export.css";
|
|
2
|
+
export type ViewMode = {
|
|
3
|
+
actionId: string;
|
|
4
|
+
actionName: string;
|
|
5
|
+
menuItemId: string;
|
|
6
|
+
menuItemName: string;
|
|
7
|
+
type: string;
|
|
8
|
+
};
|
|
2
9
|
export declare const SolidListViewConfigure: ({ listViewMetaData, solidListViewLayout, setShowArchived, showArchived, viewData, sizeOptions, setSize, size, viewModes, params, actionsAllowed, selectedRecords, setDialogVisible, setShowSaveFilterPopup, filters, handleFetchUpdatedRecords, setRecoverDialogVisible, }: any) => import("react/jsx-runtime").JSX.Element;
|
|
3
10
|
//# sourceMappingURL=SolidListViewConfigure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidListViewConfigure.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"AAiBA,OAAO,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidListViewConfigure.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"AAiBA,OAAO,+BAA+B,CAAC;AAMvC,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,eAAO,MAAM,sBAAsB,+QAoB3B,GAAG,4CA2SV,CAAA"}
|
|
@@ -20,6 +20,7 @@ import "../../common/solid-export.css";
|
|
|
20
20
|
import { SolidGenericImport } from "../common/SolidGenericImport/SolidGenericImport";
|
|
21
21
|
import { hasAnyRole } from "../../../helpers/rolesHelper";
|
|
22
22
|
import { SolidListViewHeaderButton } from "./SolidListViewHeaderButton";
|
|
23
|
+
import { capitalize } from "lodash";
|
|
23
24
|
export var SolidListViewConfigure = function (_a) {
|
|
24
25
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
|
|
25
26
|
var listViewMetaData = _a.listViewMetaData, solidListViewLayout = _a.solidListViewLayout, setShowArchived = _a.setShowArchived, showArchived = _a.showArchived, viewData = _a.viewData, sizeOptions = _a.sizeOptions, setSize = _a.setSize, size = _a.size, viewModes = _a.viewModes, params = _a.params, actionsAllowed = _a.actionsAllowed, selectedRecords = _a.selectedRecords, setDialogVisible = _a.setDialogVisible, setShowSaveFilterPopup = _a.setShowSaveFilterPopup, filters = _a.filters, handleFetchUpdatedRecords = _a.handleFetchUpdatedRecords, setRecoverDialogVisible = _a.setRecoverDialogVisible;
|
|
@@ -35,11 +36,11 @@ export var SolidListViewConfigure = function (_a) {
|
|
|
35
36
|
var _2 = useState(false), exportView = _2[0], setExportView = _2[1];
|
|
36
37
|
var _3 = useState(false), isOverlayOpen = _3[0], setIsOverlayOpen = _3[1];
|
|
37
38
|
var handleViewChange = function (newView) {
|
|
38
|
-
if (view === newView)
|
|
39
|
+
if (view === newView.type)
|
|
39
40
|
return; // Prevent unnecessary updates
|
|
40
41
|
var pathSegments = pathname.split('/').filter(Boolean);
|
|
41
|
-
pathSegments[pathSegments.length - 1] = newView; // Replace the last part with new view
|
|
42
|
-
var newPath = '/' + pathSegments.join('/');
|
|
42
|
+
pathSegments[pathSegments.length - 1] = newView.type; // Replace the last part with new view
|
|
43
|
+
var newPath = '/' + pathSegments.join('/') + "?menuItemId=".concat(newView.menuItemId, "&menuItemName=").concat(newView.menuItemName, "&actionId=").concat(newView.actionId, "&actionName=").concat(newView.actionName);
|
|
43
44
|
router.push(newPath);
|
|
44
45
|
};
|
|
45
46
|
useEffect(function () {
|
|
@@ -134,9 +135,9 @@ export var SolidListViewConfigure = function (_a) {
|
|
|
134
135
|
}, children: _jsx("i", { className: "pi pi-chevron-right text-sm" }) })), isHeaderActionEnabled('savedFilters') && permissionExpression('savedFilters', 'create') && (_jsx(Button, { text: true, icon: 'pi pi-save', label: "Save Custom Filter", size: "small", severity: "secondary", className: "text-left gap-2 text-base", onClick: function () { return setShowSaveFilterPopup(true); } })), _jsx(Button, { text: true, icon: 'pi pi-trash', label: "Clear cache", size: "small", severity: "secondary", className: "text-left gap-2 text-base ", onClick: function () { return clearLocalstorageCache(); } }), _jsx(OverlayPanel, { ref: customizeLayout, className: "customize-layout-panel", style: { minWidth: 250 }, onShow: function () { return setIsOverlayOpen(true); }, onHide: function () {
|
|
135
136
|
setTimeout(function () { return setIsOverlayOpen(false); }, 50); // ✅ Ensure state updates
|
|
136
137
|
}, children: _jsx("div", { className: "solid-layout-accordion", children: _jsxs(Accordion, { multiple: true, expandIcon: "pi pi-chevron-down", collapseIcon: "pi pi-chevron-up", activeIndex: [2], children: [viewModes && viewModes.length > 0 &&
|
|
137
|
-
_jsx(AccordionTab, { header: "Switch Type", children: _jsx("div", { className: "flex flex-column gap-1 p-1", children: viewModes.map(function (option) { return (_jsxs("div", { className: "flex align-items-center ".concat(option.
|
|
138
|
+
_jsx(AccordionTab, { header: "Switch Type", children: _jsx("div", { className: "flex flex-column gap-1 p-1", children: viewModes.map(function (option) { return (_jsxs("div", { className: "flex align-items-center ".concat(option.type === view ? 'solid-active-view' : 'solid-view'), children: [_jsx(RadioButton, { inputId: option.type, name: "views", value: option.type,
|
|
138
139
|
// onChange={(e) => router}
|
|
139
|
-
onChange: function () { return handleViewChange(option
|
|
140
|
+
onChange: function () { return handleViewChange(option); }, checked: option.type === view }), _jsx("label", { htmlFor: option.type, className: "ml-2 flex align-items-center justify-content-between w-full", children: capitalize(option.type) })] }, option.type)); }) }) }), _jsx(AccordionTab, { header: "Row Spacing", children: _jsx("div", { className: "flex flex-column gap-1 p-1flex flex-column gap-1 p-1", children: sizeOptions.map(function (option) { return (_jsxs("div", { className: "flex align-items-center ".concat(option.value === size ? 'solid-active-view' : 'solid-view'), children: [_jsx(RadioButton, { inputId: option.value, name: "sizes", value: option.value, onChange: function (e) { return setSize(e.value); }, checked: option.value === size }), _jsxs("label", { htmlFor: option.value, className: "ml-2 flex align-items-center justify-content-between w-full", children: [option.label, _jsx(Image, { src: option.image, alt: option.value, fill: true, className: 'relative row-spacing-img' })] })] }, option.value)); }) }) }), _jsx(AccordionTab, { header: "Column Selector", headerClassName: "pb-0", children: _jsx(SolidListColumnSelector, { listViewMetaData: listViewMetaData, customizeLayout: customizeLayout }) })] }) }) })] })] }), openImportDialog &&
|
|
140
141
|
_jsx(SolidGenericImport, { openImportDialog: openImportDialog, setOpenImportDialog: setOpenImportDialog, listViewMetaData: listViewMetaData, handleFetchUpdatedRecords: handleFetchUpdatedRecords })] }));
|
|
141
142
|
};
|
|
142
143
|
//# sourceMappingURL=SolidListViewConfigure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidListViewConfigure.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSession } from \"../../../hooks/useSession\";\nimport { permissionExpression } from \"../../../helpers/permissions\";\nimport Image from \"../../common/Image\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { Accordion, AccordionTab } from \"primereact/accordion\";\nimport { Button } from \"primereact/button\";\nimport { Checkbox } from \"primereact/checkbox\";\nimport { Divider } from \"primereact/divider\";\nimport { OverlayPanel } from \"primereact/overlaypanel\";\nimport { RadioButton } from \"primereact/radiobutton\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidListColumnSelector } from \"./SolidColumnSelector/SolidListColumnSelector\";\nimport { SolidExport } from \"../../../components/common/SolidExport\";\nimport { Dialog } from \"primereact/dialog\";\nimport { useHandleListCustomButtonClick } from \"../../../components/common/useHandleListCustomButtonClick\";\nimport { SolidListViewHeaderContextMenuButton } from \"./SolidListViewHeaderContextMenuButton\";\nimport \"../../common/solid-export.css\";\nimport { SolidGenericImport } from \"../common/SolidGenericImport/SolidGenericImport\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { SolidListViewHeaderButton } from \"./SolidListViewHeaderButton\";\n\nexport const SolidListViewConfigure = (\n { listViewMetaData,\n solidListViewLayout,\n setShowArchived,\n showArchived,\n viewData,\n sizeOptions,\n setSize,\n size,\n viewModes,\n params,\n actionsAllowed,\n selectedRecords,\n setDialogVisible,\n setShowSaveFilterPopup,\n filters,\n handleFetchUpdatedRecords,\n setRecoverDialogVisible,\n\n }:\n any) => {\n // const [visible, setVisible] = useState<boolean>(false);\n const handleCustomButtonClick = useHandleListCustomButtonClick();\n const [openImportDialog, setOpenImportDialog] = useState<boolean>(false);\n const op = useRef(null);\n const exportRef = useRef(null);\n const customizeLayout = useRef<OverlayPanel | null>(null);\n const pathname = usePathname();\n const router = useRouter();\n const [view, setView] = useState<string>(\"\");\n const [exportView, setExportView] = useState<boolean>(false);\n const [isOverlayOpen, setIsOverlayOpen] = useState(false);\n\n\n const handleViewChange = (newView: string) => {\n if (view === newView) return; // Prevent unnecessary updates\n const pathSegments = pathname.split('/').filter(Boolean);\n pathSegments[pathSegments.length - 1] = newView; // Replace the last part with new view\n const newPath = '/' + pathSegments.join('/');\n router.push(newPath);\n };\n\n useEffect(() => {\n if (typeof pathname === 'string') {\n const pathSegments = pathname.split('/').filter(Boolean);\n if (pathSegments.length > 0) {\n setView(pathSegments[pathSegments.length - 1]);\n }\n }\n }, [])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n customizeLayout.current &&\n !customizeLayout.current.getElement()?.contains(event.target as Node)\n ) {\n setIsOverlayOpen(false);\n }\n };\n\n if (isOverlayOpen) {\n document.addEventListener(\"click\", handleClickOutside);\n } else {\n document.removeEventListener(\"click\", handleClickOutside);\n }\n\n return () => document.removeEventListener(\"click\", handleClickOutside);\n }, [isOverlayOpen])\n\n\n //Build a map of actionKey → boolean at the top level\n const headerActions = solidListViewLayout?.attrs ?? {};\n\n const normalizeAction = (value: boolean | string[]) => {\n if (value === true) return { enabled: true, roles: [] };\n if (value === false) return { enabled: false, roles: [] };\n if (Array.isArray(value)) return { enabled: true, roles: value };\n return { enabled: true, roles: [] }; // default\n };\n const normalized = {\n import: normalizeAction(headerActions.import),\n export: normalizeAction(headerActions.export),\n customizeLayout: normalizeAction(headerActions.customizeLayout),\n savedFilters: normalizeAction(headerActions.savedFilters),\n };\n\n // Role checks\n const { data: session, status } = useSession();\n const user = session?.user;\n const useRoleCheck = (roles: string[]) => hasAnyRole(user?.roles, roles);\n\n // Map of action → roleCheck\n const roleCheckMap = {\n import: useRoleCheck(normalized.import.roles),\n export: useRoleCheck(normalized.export.roles),\n customizeLayout: useRoleCheck(normalized.customizeLayout.roles),\n savedFilters: useRoleCheck(normalized.savedFilters.roles),\n };\n\n const isHeaderActionEnabled = (action: keyof typeof normalized) => {\n const { enabled, roles } = normalized[action];\n\n // 1. If explicitly disabled\n if (!enabled) return false;\n\n // 2. If roles list exists → must have at least one\n if (roles.length > 0) {\n return roleCheckMap[action] === true;\n }\n // 3. No restrictions → enabled\n return true;\n };\n\n const clearLocalstorageCache = () => {\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Remove from local storage with the URL as the key\n window.location.reload();\n };\n\n return (\n <div className=\"position-relative\">\n <Button\n type=\"button\"\n size=\"small\"\n icon=\"pi pi-cog\"\n severity=\"secondary\"\n className=\"solid-icon-button\"\n outlined\n // @ts-ignore\n onClick={(e) => op.current.toggle(e)}\n />\n <Dialog header=\"Export\" visible={exportView} headerClassName=\"solid-export-dialog-header\" className=\"ExportDialog p-0 m-0\" onHide={() => { if (!exportView) return; setExportView(false); }}>\n <SolidExport listViewMetaData={listViewMetaData} filters={filters} />\n </Dialog>\n <OverlayPanel ref={exportRef} className=\"listview-export-panel\">\n\n </OverlayPanel>\n <OverlayPanel ref={op} className=\"listview-cogwheel-panel\">\n {(\n (actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) &&\n viewData?.data?.solidView?.layout?.attrs?.delete !== false &&\n selectedRecords.length > 0) ||\n isHeaderActionEnabled('import') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) ||\n isHeaderActionEnabled('export') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) ||\n isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) ||\n isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) ||\n (solidListViewLayout?.attrs?.headerButtons\n ?.some((rb: any) => rb.attrs.actionInContextMenu === true)) ||\n viewData?.data?.solidView?.model?.enableSoftDelete\n ) && (\n <>\n <div className=\"p-2\">\n <div className=\"flex flex-column\">\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) && viewData?.data?.solidView?.layout?.attrs?.delete !== false && selectedRecords.length > 0 &&\n <Button\n text\n type=\"button\"\n className=\"text-left gap-2 text-base\"\n label=\"Delete\"\n size=\"small\"\n iconPos=\"left\"\n severity=\"danger\"\n icon={'pi pi-trash'}\n onClick={() => setDialogVisible(true)}\n />}\n {isHeaderActionEnabled(\"import\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) && (\n <Button text icon='pi pi-download' label=\"Import\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base\"\n onClick={() => setOpenImportDialog(true)}\n />\n )}\n {isHeaderActionEnabled(\"export\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) && (\n <Button text icon='pi pi-upload' label=\"Export\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base\"\n // @ts-ignore\n onClick={() => { setExportView((exportView) => !exportView); }} />\n )}\n {solidListViewLayout?.attrs?.headerButtons\n ?.filter((rb: any) => rb.attrs.actionInContextMenu === true)\n ?.map((button: any, index: number) => (\n <SolidListViewHeaderContextMenuButton\n key={index}\n button={button}\n params={params}\n solidListViewMetaData={listViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n />\n ))}\n {viewData?.data?.solidView?.model?.enableSoftDelete && (\n <div className=\"flex align-items-center px-3 gap-2 mt-2 mb-1\">\n <Checkbox\n inputId=\"showArchived\"\n checked={showArchived}\n onChange={() => setShowArchived(!showArchived)}\n />\n <label htmlFor=\"showArchived\" className=\"ml-2 text-base solid-secondary-text-color\">\n Show Archived Records\n </label>\n </div>\n )}\n {showArchived && (\n <Button text icon='pi pi-refresh' label=\"Recover\" size=\"small\" severity=\"secondary\" className=\"flex lg:hidden text-left gap-2 text-base \"\n onClick={() => setRecoverDialogVisible(true)} />\n )}\n\n <div className=\"flex flex-column lg:hidden\">\n {solidListViewLayout?.attrs?.headerButtons\n ?.filter((rb: any) => rb.attrs.actionInContextMenu != true)\n ?.map((button: any, index: number) => (\n <SolidListViewHeaderButton\n key={index}\n button={button}\n params={params}\n solidListViewMetaData={listViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n selectedRecords={selectedRecords}\n filters={filters}\n />\n ))}\n </div>\n\n </div>\n </div>\n <Divider className=\"m-0\" />\n </>\n )}\n <div className=\"p-2 relative flex flex-column gap-1\">\n {isHeaderActionEnabled('customizeLayout') && permissionExpression('userViewMetadata', 'create') && (<Button\n icon='pi pi-sliders-h'\n label=\"Customize Layout\"\n severity={isOverlayOpen ? undefined : \"secondary\"}\n size=\"small\"\n text={isOverlayOpen ? false : true}\n className=\"text-left gap-2 w-full text-base\"\n // @ts-ignore\n onClick={(e) => {\n customizeLayout.current?.toggle(e);\n setIsOverlayOpen((prev) => !prev); // ✅ Ensure state updates when toggled\n }}\n >\n <i className=\"pi pi-chevron-right text-sm\"></i>\n </Button>\n )}\n {isHeaderActionEnabled('savedFilters') && permissionExpression('savedFilters', 'create') && (\n <Button text icon='pi pi-save' label=\"Save Custom Filter\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base\" onClick={() => setShowSaveFilterPopup(true)} />\n )}\n <Button text icon='pi pi-trash' label=\"Clear cache\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base \"\n onClick={() => clearLocalstorageCache()} />\n\n <OverlayPanel ref={customizeLayout} className=\"customize-layout-panel\" style={{ minWidth: 250 }}\n onShow={() => setIsOverlayOpen(true)}\n onHide={() => {\n setTimeout(() => setIsOverlayOpen(false), 50); // ✅ Ensure state updates\n }}\n >\n <div className=\"solid-layout-accordion\">\n <Accordion multiple expandIcon=\"pi pi-chevron-down\" collapseIcon=\"pi pi-chevron-up\" activeIndex={[2]}>\n {viewModes && viewModes.length > 0 &&\n <AccordionTab header=\"Switch Type\">\n <div className=\"flex flex-column gap-1 p-1\">\n {viewModes.map((option: any) => (\n <div key={option.value} className={`flex align-items-center ${option.value === view ? 'solid-active-view' : 'solid-view'}`}>\n <RadioButton\n inputId={option.value}\n name=\"views\"\n value={option.value}\n // onChange={(e) => router}\n onChange={() => handleViewChange(option.value)}\n checked={option.value === view}\n />\n <label htmlFor={option.value} className=\"ml-2 flex align-items-center justify-content-between w-full\">\n {option.label}\n </label>\n </div>\n ))}\n </div>\n </AccordionTab>\n }\n <AccordionTab header=\"Row Spacing\">\n <div className=\"flex flex-column gap-1 p-1flex flex-column gap-1 p-1\">\n {sizeOptions.map((option: any) => (\n <div key={option.value} className={`flex align-items-center ${option.value === size ? 'solid-active-view' : 'solid-view'}`}>\n <RadioButton\n inputId={option.value}\n name=\"sizes\"\n value={option.value}\n onChange={(e) => setSize(e.value)}\n checked={option.value === size}\n />\n <label htmlFor={option.value} className=\"ml-2 flex align-items-center justify-content-between w-full\">\n {option.label}\n <Image\n src={option.image}\n alt={option.value}\n fill\n className='relative row-spacing-img'\n />\n </label>\n </div>\n ))}\n </div>\n </AccordionTab>\n <AccordionTab header=\"Column Selector\" headerClassName=\"pb-0\">\n <SolidListColumnSelector listViewMetaData={listViewMetaData} customizeLayout={customizeLayout} />\n </AccordionTab>\n </Accordion>\n </div>\n </OverlayPanel>\n </div>\n </OverlayPanel>\n {openImportDialog &&\n <SolidGenericImport\n openImportDialog={openImportDialog}\n setOpenImportDialog={setOpenImportDialog}\n listViewMetaData={listViewMetaData}\n handleFetchUpdatedRecords={handleFetchUpdatedRecords}\n />\n }\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidListViewConfigure.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSession } from \"../../../hooks/useSession\";\nimport { permissionExpression } from \"../../../helpers/permissions\";\nimport Image from \"../../common/Image\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { Accordion, AccordionTab } from \"primereact/accordion\";\nimport { Button } from \"primereact/button\";\nimport { Checkbox } from \"primereact/checkbox\";\nimport { Divider } from \"primereact/divider\";\nimport { OverlayPanel } from \"primereact/overlaypanel\";\nimport { RadioButton } from \"primereact/radiobutton\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidListColumnSelector } from \"./SolidColumnSelector/SolidListColumnSelector\";\nimport { SolidExport } from \"../../../components/common/SolidExport\";\nimport { Dialog } from \"primereact/dialog\";\nimport { useHandleListCustomButtonClick } from \"../../../components/common/useHandleListCustomButtonClick\";\nimport { SolidListViewHeaderContextMenuButton } from \"./SolidListViewHeaderContextMenuButton\";\nimport \"../../common/solid-export.css\";\nimport { SolidGenericImport } from \"../common/SolidGenericImport/SolidGenericImport\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { SolidListViewHeaderButton } from \"./SolidListViewHeaderButton\";\nimport { capitalize } from \"lodash\";\n\nexport type ViewMode = {\n actionId: string;\n actionName: string;\n menuItemId: string;\n menuItemName: string;\n type: string;\n}\n\nexport const SolidListViewConfigure = (\n { listViewMetaData,\n solidListViewLayout,\n setShowArchived,\n showArchived,\n viewData,\n sizeOptions,\n setSize,\n size,\n viewModes,\n params,\n actionsAllowed,\n selectedRecords,\n setDialogVisible,\n setShowSaveFilterPopup,\n filters,\n handleFetchUpdatedRecords,\n setRecoverDialogVisible,\n\n }:\n any) => {\n // const [visible, setVisible] = useState<boolean>(false);\n const handleCustomButtonClick = useHandleListCustomButtonClick();\n const [openImportDialog, setOpenImportDialog] = useState<boolean>(false);\n const op = useRef(null);\n const exportRef = useRef(null);\n const customizeLayout = useRef<OverlayPanel | null>(null);\n const pathname = usePathname();\n const router = useRouter();\n const [view, setView] = useState<string>(\"\");\n const [exportView, setExportView] = useState<boolean>(false);\n const [isOverlayOpen, setIsOverlayOpen] = useState(false);\n\n\n const handleViewChange = (newView: ViewMode) => {\n if (view === newView.type) return; // Prevent unnecessary updates\n const pathSegments = pathname.split('/').filter(Boolean);\n pathSegments[pathSegments.length - 1] = newView.type; // Replace the last part with new view\n const newPath = '/' + pathSegments.join('/') + `?menuItemId=${newView.menuItemId}&menuItemName=${newView.menuItemName}&actionId=${newView.actionId}&actionName=${newView.actionName}`;\n router.push(newPath);\n };\n\n useEffect(() => {\n if (typeof pathname === 'string') {\n const pathSegments = pathname.split('/').filter(Boolean);\n if (pathSegments.length > 0) {\n setView(pathSegments[pathSegments.length - 1]);\n }\n }\n }, [])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n customizeLayout.current &&\n !customizeLayout.current.getElement()?.contains(event.target as Node)\n ) {\n setIsOverlayOpen(false);\n }\n };\n\n if (isOverlayOpen) {\n document.addEventListener(\"click\", handleClickOutside);\n } else {\n document.removeEventListener(\"click\", handleClickOutside);\n }\n\n return () => document.removeEventListener(\"click\", handleClickOutside);\n }, [isOverlayOpen])\n\n\n //Build a map of actionKey → boolean at the top level\n const headerActions = solidListViewLayout?.attrs ?? {};\n\n const normalizeAction = (value: boolean | string[]) => {\n if (value === true) return { enabled: true, roles: [] };\n if (value === false) return { enabled: false, roles: [] };\n if (Array.isArray(value)) return { enabled: true, roles: value };\n return { enabled: true, roles: [] }; // default\n };\n const normalized = {\n import: normalizeAction(headerActions.import),\n export: normalizeAction(headerActions.export),\n customizeLayout: normalizeAction(headerActions.customizeLayout),\n savedFilters: normalizeAction(headerActions.savedFilters),\n };\n\n // Role checks\n const { data: session, status } = useSession();\n const user = session?.user;\n const useRoleCheck = (roles: string[]) => hasAnyRole(user?.roles, roles);\n\n // Map of action → roleCheck\n const roleCheckMap = {\n import: useRoleCheck(normalized.import.roles),\n export: useRoleCheck(normalized.export.roles),\n customizeLayout: useRoleCheck(normalized.customizeLayout.roles),\n savedFilters: useRoleCheck(normalized.savedFilters.roles),\n };\n\n const isHeaderActionEnabled = (action: keyof typeof normalized) => {\n const { enabled, roles } = normalized[action];\n\n // 1. If explicitly disabled\n if (!enabled) return false;\n\n // 2. If roles list exists → must have at least one\n if (roles.length > 0) {\n return roleCheckMap[action] === true;\n }\n // 3. No restrictions → enabled\n return true;\n };\n\n const clearLocalstorageCache = () => {\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Remove from local storage with the URL as the key\n window.location.reload();\n };\n\n return (\n <div className=\"position-relative\">\n <Button\n type=\"button\"\n size=\"small\"\n icon=\"pi pi-cog\"\n severity=\"secondary\"\n className=\"solid-icon-button\"\n outlined\n // @ts-ignore\n onClick={(e) => op.current.toggle(e)}\n />\n <Dialog header=\"Export\" visible={exportView} headerClassName=\"solid-export-dialog-header\" className=\"ExportDialog p-0 m-0\" onHide={() => { if (!exportView) return; setExportView(false); }}>\n <SolidExport listViewMetaData={listViewMetaData} filters={filters} />\n </Dialog>\n <OverlayPanel ref={exportRef} className=\"listview-export-panel\">\n\n </OverlayPanel>\n <OverlayPanel ref={op} className=\"listview-cogwheel-panel\">\n {(\n (actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) &&\n viewData?.data?.solidView?.layout?.attrs?.delete !== false &&\n selectedRecords.length > 0) ||\n isHeaderActionEnabled('import') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) ||\n isHeaderActionEnabled('export') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) ||\n isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) ||\n isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) ||\n (solidListViewLayout?.attrs?.headerButtons\n ?.some((rb: any) => rb.attrs.actionInContextMenu === true)) ||\n viewData?.data?.solidView?.model?.enableSoftDelete\n ) && (\n <>\n <div className=\"p-2\">\n <div className=\"flex flex-column\">\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) && viewData?.data?.solidView?.layout?.attrs?.delete !== false && selectedRecords.length > 0 &&\n <Button\n text\n type=\"button\"\n className=\"text-left gap-2 text-base\"\n label=\"Delete\"\n size=\"small\"\n iconPos=\"left\"\n severity=\"danger\"\n icon={'pi pi-trash'}\n onClick={() => setDialogVisible(true)}\n />}\n {isHeaderActionEnabled(\"import\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) && (\n <Button text icon='pi pi-download' label=\"Import\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base\"\n onClick={() => setOpenImportDialog(true)}\n />\n )}\n {isHeaderActionEnabled(\"export\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) && (\n <Button text icon='pi pi-upload' label=\"Export\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base\"\n // @ts-ignore\n onClick={() => { setExportView((exportView) => !exportView); }} />\n )}\n {solidListViewLayout?.attrs?.headerButtons\n ?.filter((rb: any) => rb.attrs.actionInContextMenu === true)\n ?.map((button: any, index: number) => (\n <SolidListViewHeaderContextMenuButton\n key={index}\n button={button}\n params={params}\n solidListViewMetaData={listViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n />\n ))}\n {viewData?.data?.solidView?.model?.enableSoftDelete && (\n <div className=\"flex align-items-center px-3 gap-2 mt-2 mb-1\">\n <Checkbox\n inputId=\"showArchived\"\n checked={showArchived}\n onChange={() => setShowArchived(!showArchived)}\n />\n <label htmlFor=\"showArchived\" className=\"ml-2 text-base solid-secondary-text-color\">\n Show Archived Records\n </label>\n </div>\n )}\n {showArchived && (\n <Button text icon='pi pi-refresh' label=\"Recover\" size=\"small\" severity=\"secondary\" className=\"flex lg:hidden text-left gap-2 text-base \"\n onClick={() => setRecoverDialogVisible(true)} />\n )}\n\n <div className=\"flex flex-column lg:hidden\">\n {solidListViewLayout?.attrs?.headerButtons\n ?.filter((rb: any) => rb.attrs.actionInContextMenu != true)\n ?.map((button: any, index: number) => (\n <SolidListViewHeaderButton\n key={index}\n button={button}\n params={params}\n solidListViewMetaData={listViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n selectedRecords={selectedRecords}\n filters={filters}\n />\n ))}\n </div>\n\n </div>\n </div>\n <Divider className=\"m-0\" />\n </>\n )}\n <div className=\"p-2 relative flex flex-column gap-1\">\n {isHeaderActionEnabled('customizeLayout') && permissionExpression('userViewMetadata', 'create') && (<Button\n icon='pi pi-sliders-h'\n label=\"Customize Layout\"\n severity={isOverlayOpen ? undefined : \"secondary\"}\n size=\"small\"\n text={isOverlayOpen ? false : true}\n className=\"text-left gap-2 w-full text-base\"\n // @ts-ignore\n onClick={(e) => {\n customizeLayout.current?.toggle(e);\n setIsOverlayOpen((prev) => !prev); // ✅ Ensure state updates when toggled\n }}\n >\n <i className=\"pi pi-chevron-right text-sm\"></i>\n </Button>\n )}\n {isHeaderActionEnabled('savedFilters') && permissionExpression('savedFilters', 'create') && (\n <Button text icon='pi pi-save' label=\"Save Custom Filter\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base\" onClick={() => setShowSaveFilterPopup(true)} />\n )}\n <Button text icon='pi pi-trash' label=\"Clear cache\" size=\"small\" severity=\"secondary\" className=\"text-left gap-2 text-base \"\n onClick={() => clearLocalstorageCache()} />\n\n <OverlayPanel ref={customizeLayout} className=\"customize-layout-panel\" style={{ minWidth: 250 }}\n onShow={() => setIsOverlayOpen(true)}\n onHide={() => {\n setTimeout(() => setIsOverlayOpen(false), 50); // ✅ Ensure state updates\n }}\n >\n <div className=\"solid-layout-accordion\">\n <Accordion multiple expandIcon=\"pi pi-chevron-down\" collapseIcon=\"pi pi-chevron-up\" activeIndex={[2]}>\n {viewModes && viewModes.length > 0 &&\n <AccordionTab header=\"Switch Type\">\n <div className=\"flex flex-column gap-1 p-1\">\n {viewModes.map((option: ViewMode) => (\n <div key={option.type} className={`flex align-items-center ${option.type === view ? 'solid-active-view' : 'solid-view'}`}>\n <RadioButton\n inputId={option.type}\n name=\"views\"\n value={option.type}\n // onChange={(e) => router}\n onChange={() => handleViewChange(option)}\n checked={option.type === view}\n />\n <label htmlFor={option.type} className=\"ml-2 flex align-items-center justify-content-between w-full\">\n {capitalize(option.type)}\n </label>\n </div>\n ))}\n </div>\n </AccordionTab>\n }\n <AccordionTab header=\"Row Spacing\">\n <div className=\"flex flex-column gap-1 p-1flex flex-column gap-1 p-1\">\n {sizeOptions.map((option: any) => (\n <div key={option.value} className={`flex align-items-center ${option.value === size ? 'solid-active-view' : 'solid-view'}`}>\n <RadioButton\n inputId={option.value}\n name=\"sizes\"\n value={option.value}\n onChange={(e) => setSize(e.value)}\n checked={option.value === size}\n />\n <label htmlFor={option.value} className=\"ml-2 flex align-items-center justify-content-between w-full\">\n {option.label}\n <Image\n src={option.image}\n alt={option.value}\n fill\n className='relative row-spacing-img'\n />\n </label>\n </div>\n ))}\n </div>\n </AccordionTab>\n <AccordionTab header=\"Column Selector\" headerClassName=\"pb-0\">\n <SolidListColumnSelector listViewMetaData={listViewMetaData} customizeLayout={customizeLayout} />\n </AccordionTab>\n </Accordion>\n </div>\n </OverlayPanel>\n </div>\n </OverlayPanel>\n {openImportDialog &&\n <SolidGenericImport\n openImportDialog={openImportDialog}\n setOpenImportDialog={setOpenImportDialog}\n listViewMetaData={listViewMetaData}\n handleFetchUpdatedRecords={handleFetchUpdatedRecords}\n />\n }\n </div>\n )\n}\n"]}
|
|
@@ -19,6 +19,15 @@ import "../../common/solid-export.css";
|
|
|
19
19
|
import { SolidGenericImport } from "../common/SolidGenericImport/SolidGenericImport";
|
|
20
20
|
import { hasAnyRole } from "../../../helpers/rolesHelper";
|
|
21
21
|
import { SolidListViewHeaderButton } from "./SolidListViewHeaderButton";
|
|
22
|
+
import { capitalize } from "lodash";
|
|
23
|
+
|
|
24
|
+
export type ViewMode = {
|
|
25
|
+
actionId: string;
|
|
26
|
+
actionName: string;
|
|
27
|
+
menuItemId: string;
|
|
28
|
+
menuItemName: string;
|
|
29
|
+
type: string;
|
|
30
|
+
}
|
|
22
31
|
|
|
23
32
|
export const SolidListViewConfigure = (
|
|
24
33
|
{ listViewMetaData,
|
|
@@ -54,11 +63,11 @@ export const SolidListViewConfigure = (
|
|
|
54
63
|
const [isOverlayOpen, setIsOverlayOpen] = useState(false);
|
|
55
64
|
|
|
56
65
|
|
|
57
|
-
const handleViewChange = (newView:
|
|
58
|
-
if (view === newView) return; // Prevent unnecessary updates
|
|
66
|
+
const handleViewChange = (newView: ViewMode) => {
|
|
67
|
+
if (view === newView.type) return; // Prevent unnecessary updates
|
|
59
68
|
const pathSegments = pathname.split('/').filter(Boolean);
|
|
60
|
-
pathSegments[pathSegments.length - 1] = newView; // Replace the last part with new view
|
|
61
|
-
const newPath = '/' + pathSegments.join('/')
|
|
69
|
+
pathSegments[pathSegments.length - 1] = newView.type; // Replace the last part with new view
|
|
70
|
+
const newPath = '/' + pathSegments.join('/') + `?menuItemId=${newView.menuItemId}&menuItemName=${newView.menuItemName}&actionId=${newView.actionId}&actionName=${newView.actionName}`;
|
|
62
71
|
router.push(newPath);
|
|
63
72
|
};
|
|
64
73
|
|
|
@@ -279,18 +288,18 @@ export const SolidListViewConfigure = (
|
|
|
279
288
|
{viewModes && viewModes.length > 0 &&
|
|
280
289
|
<AccordionTab header="Switch Type">
|
|
281
290
|
<div className="flex flex-column gap-1 p-1">
|
|
282
|
-
{viewModes.map((option:
|
|
283
|
-
<div key={option.
|
|
291
|
+
{viewModes.map((option: ViewMode) => (
|
|
292
|
+
<div key={option.type} className={`flex align-items-center ${option.type === view ? 'solid-active-view' : 'solid-view'}`}>
|
|
284
293
|
<RadioButton
|
|
285
|
-
inputId={option.
|
|
294
|
+
inputId={option.type}
|
|
286
295
|
name="views"
|
|
287
|
-
value={option.
|
|
296
|
+
value={option.type}
|
|
288
297
|
// onChange={(e) => router}
|
|
289
|
-
onChange={() => handleViewChange(option
|
|
290
|
-
checked={option.
|
|
298
|
+
onChange={() => handleViewChange(option)}
|
|
299
|
+
checked={option.type === view}
|
|
291
300
|
/>
|
|
292
|
-
<label htmlFor={option.
|
|
293
|
-
{option.
|
|
301
|
+
<label htmlFor={option.type} className="ml-2 flex align-items-center justify-content-between w-full">
|
|
302
|
+
{capitalize(option.type)}
|
|
294
303
|
</label>
|
|
295
304
|
</div>
|
|
296
305
|
))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidShortTextColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidShortTextColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAqB,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAItF,OAAO,EAAE,yBAAyB,EAA4E,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidShortTextColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidShortTextColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAqB,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAItF,OAAO,EAAE,yBAAyB,EAA4E,MAAM,8BAA8B,CAAC;AAEnJ,QAAA,MAAM,oBAAoB,uFAAwF,yBAAyB,4CA+E1I,CAAC;AAEF,eAAe,oBAAoB,CAAC;AAIpC,eAAO,MAAM,qBAAqB,8DAA+D,yBAAyB,4CAuBzH,CAAC"}
|
|
@@ -16,7 +16,6 @@ import { getNumberOfInputs } from '../SolidListViewColumn';
|
|
|
16
16
|
import { InputTypes, SolidVarInputsFilterElement } from "../SolidVarInputsFilterElement";
|
|
17
17
|
import SolidTableRowCell from '../SolidTableRowCell';
|
|
18
18
|
import { getExtensionComponent } from '../../../../helpers/registry';
|
|
19
|
-
import dayjs from 'dayjs';
|
|
20
19
|
var SolidShortTextColumn = function (_a) {
|
|
21
20
|
var _b, _c, _d, _e, _f;
|
|
22
21
|
var solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox;
|
|
@@ -68,46 +67,11 @@ var SolidShortTextColumn = function (_a) {
|
|
|
68
67
|
} }, fieldMetadata.name));
|
|
69
68
|
};
|
|
70
69
|
export default SolidShortTextColumn;
|
|
71
|
-
function parseIsoDate(value) {
|
|
72
|
-
if (!value || typeof value !== "string")
|
|
73
|
-
return null;
|
|
74
|
-
// Fast reject (avoids false positives)
|
|
75
|
-
if (!value.includes("T"))
|
|
76
|
-
return null;
|
|
77
|
-
var d = new Date(value);
|
|
78
|
-
return isNaN(d.getTime()) ? null : d;
|
|
79
|
-
}
|
|
80
70
|
export var DefaultTextListWidget = function (_a) {
|
|
81
|
-
var _b, _c, _d, _e
|
|
71
|
+
var _b, _c, _d, _e;
|
|
82
72
|
var rowData = _a.rowData, solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column;
|
|
83
73
|
var truncateAfter = (_e = (_d = (_c = (_b = solidListViewMetaData === null || solidListViewMetaData === void 0 ? void 0 : solidListViewMetaData.data) === null || _b === void 0 ? void 0 : _b.solidView) === null || _c === void 0 ? void 0 : _c.layout) === null || _d === void 0 ? void 0 : _d.attrs) === null || _e === void 0 ? void 0 : _e.truncateAfter;
|
|
84
74
|
var displayValue = rowData[fieldMetadata.name];
|
|
85
|
-
// if (typeof displayValue === "string" && displayValue.includes("T") && displayValue.endsWith("Z")) {
|
|
86
|
-
// const d = new Date(displayValue);
|
|
87
|
-
// if (!isNaN(d.getTime())) {
|
|
88
|
-
// const year = d.getFullYear();
|
|
89
|
-
// const month = String(d.getMonth() + 1).padStart(2, "0");
|
|
90
|
-
// const day = String(d.getDate()).padStart(2, "0");
|
|
91
|
-
// const hours = String(d.getHours()).padStart(2, "0");
|
|
92
|
-
// const minutes = String(d.getMinutes()).padStart(2, "0");
|
|
93
|
-
// const seconds = String(d.getSeconds()).padStart(2, "0");
|
|
94
|
-
// displayValue = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.000`;
|
|
95
|
-
// }
|
|
96
|
-
// }
|
|
97
|
-
if (typeof displayValue === "string") {
|
|
98
|
-
var parsedDate = parseIsoDate(displayValue);
|
|
99
|
-
if (parsedDate) {
|
|
100
|
-
var format = (_f = column === null || column === void 0 ? void 0 : column.attrs) === null || _f === void 0 ? void 0 : _f.format;
|
|
101
|
-
// 🔵 Explicit format → dayjs
|
|
102
|
-
if (format) {
|
|
103
|
-
displayValue = dayjs(parsedDate).format(format);
|
|
104
|
-
}
|
|
105
|
-
// 🟢 Default → user locale
|
|
106
|
-
else {
|
|
107
|
-
displayValue = parsedDate.toLocaleString();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
75
|
if ((fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.selectionStaticValues) && displayValue) {
|
|
112
76
|
var mapping_1 = {};
|
|
113
77
|
fieldMetadata.selectionStaticValues.forEach(function (entry) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidShortTextColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidShortTextColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { FilterMatchMode } from 'primereact/api';\nimport { Column, ColumnFilterElementTemplateOptions } from \"primereact/column\";\nimport { FormEvent } from \"primereact/ts-helpers\";\nimport { getNumberOfInputs, SolidListViewColumnParams } from '../SolidListViewColumn';\nimport { InputTypes, SolidVarInputsFilterElement } from \"../SolidVarInputsFilterElement\";\nimport SolidTableRowCell from '../SolidTableRowCell';\nimport { getExtensionComponent } from '../../../../helpers/registry';\nimport { SolidListFieldWidgetProps, SolidMediaListFieldWidgetProps, SolidShortTextImageRenderModeWidgetProps } from '../../../../types/solid-core';\nimport dayjs from 'dayjs';\n\nconst SolidShortTextColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox }: SolidListViewColumnParams) => {\n const filterable = column.attrs.filterable;\n const showFilterOperator = false;\n const columnDataType = 'text';\n const filterMatchModeOptions = [\n { label: 'Starts With', value: FilterMatchMode.STARTS_WITH },\n { label: 'Contains', value: FilterMatchMode.CONTAINS },\n { label: 'Not Contains', value: FilterMatchMode.NOT_CONTAINS },\n { label: 'Ends With', value: FilterMatchMode.ENDS_WITH },\n { label: 'Equals', value: FilterMatchMode.EQUALS },\n { label: 'Not Equals', value: FilterMatchMode.NOT_EQUALS },\n { label: 'In', value: FilterMatchMode.IN },\n { label: 'Not In', value: FilterMatchMode.NOT_IN }\n ];\n const filterTemplate = (options: ColumnFilterElementTemplateOptions) => {\n const numberOfInputs = getNumberOfInputs(options.filterModel.matchMode);\n\n return (\n <SolidVarInputsFilterElement\n values={options.value}\n onChange={(e: FormEvent<HTMLInputElement>) => options.filterCallback(e, options.index)}\n numberOfInputs={numberOfInputs}\n inputType={InputTypes.Text}\n solidListViewMetaData={solidListViewMetaData}\n fieldMetadata={fieldMetadata}\n column={column}\n >\n </SolidVarInputsFilterElement >\n )\n };\n\n const truncateAfter = solidListViewMetaData?.data?.solidView?.layout?.attrs?.truncateAfter;\n const header = column.attrs.label ?? fieldMetadata.displayName;\n\n return (\n <Column\n key={fieldMetadata.name}\n field={fieldMetadata.name}\n // header={header}\n // className=\"text-sm\"\n sortable={column.attrs.sortable}\n // filter={filterable}\n dataType={columnDataType}\n showFilterOperator={showFilterOperator}\n filterMatchModeOptions={filterMatchModeOptions}\n filterElement={filterTemplate}\n filterPlaceholder={`Search by ${fieldMetadata.displayName}`}\n // style={{ minWidth: \"12rem\" }}\n // headerClassName=\"table-header-fs\"\n header={() => {\n return (<div style={{ maxWidth: truncateAfter ? `${truncateAfter}ch` : '30ch', whiteSpace: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden' }}>{header}</div>)\n }}\n\n body={(rowData) => {\n //add this widget to render media image in image format - SolidShortTextFieldImageRenderModeWidget \n let viewWidget = column.attrs.viewWidget;\n if (!viewWidget) {\n viewWidget = 'DefaultTextListWidget';\n }\n let DynamicWidget = getExtensionComponent(viewWidget);\n const widgetProps: SolidMediaListFieldWidgetProps = {\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n }\n\n ></Column >\n );\n\n};\n\nexport default SolidShortTextColumn;\n\nfunction parseIsoDate(value: string): Date | null {\n if (!value || typeof value !== \"string\") return null;\n\n // Fast reject (avoids false positives)\n if (!value.includes(\"T\")) return null;\n\n const d = new Date(value);\n return isNaN(d.getTime()) ? null : d;\n}\n\n\nexport const DefaultTextListWidget = ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => {\n const truncateAfter = solidListViewMetaData?.data?.solidView?.layout?.attrs?.truncateAfter;\n let displayValue = rowData[fieldMetadata.name];\n // if (typeof displayValue === \"string\" && displayValue.includes(\"T\") && displayValue.endsWith(\"Z\")) {\n // const d = new Date(displayValue);\n // if (!isNaN(d.getTime())) {\n // const year = d.getFullYear();\n // const month = String(d.getMonth() + 1).padStart(2, \"0\");\n // const day = String(d.getDate()).padStart(2, \"0\");\n // const hours = String(d.getHours()).padStart(2, \"0\");\n // const minutes = String(d.getMinutes()).padStart(2, \"0\");\n // const seconds = String(d.getSeconds()).padStart(2, \"0\");\n\n // displayValue = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.000`;\n // }\n // }\n if (typeof displayValue === \"string\") {\n const parsedDate = parseIsoDate(displayValue);\n\n if (parsedDate) {\n const format = column?.attrs?.format as string | undefined;\n\n // 🔵 Explicit format → dayjs\n if (format) {\n displayValue = dayjs(parsedDate).format(format);\n }\n // 🟢 Default → user locale\n else {\n displayValue = parsedDate.toLocaleString();\n }\n }\n }\n\n\n\n if (fieldMetadata?.selectionStaticValues && displayValue) {\n const mapping: Record<string, string> = {};\n\n fieldMetadata.selectionStaticValues.forEach((entry: string) => {\n const [val, label] = entry.split(\":\");\n mapping[val] = label;\n });\n\n const values = displayValue.split(\",\").map((v: string) => v.trim());\n\n displayValue = values.map((v: string) => mapping[v] || v).join(\", \");\n }\n\n return (\n <SolidTableRowCell\n value={displayValue}\n truncateAfter={truncateAfter}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidShortTextColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidShortTextColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { FilterMatchMode } from 'primereact/api';\nimport { Column, ColumnFilterElementTemplateOptions } from \"primereact/column\";\nimport { FormEvent } from \"primereact/ts-helpers\";\nimport { getNumberOfInputs, SolidListViewColumnParams } from '../SolidListViewColumn';\nimport { InputTypes, SolidVarInputsFilterElement } from \"../SolidVarInputsFilterElement\";\nimport SolidTableRowCell from '../SolidTableRowCell';\nimport { getExtensionComponent } from '../../../../helpers/registry';\nimport { SolidListFieldWidgetProps, SolidMediaListFieldWidgetProps, SolidShortTextImageRenderModeWidgetProps } from '../../../../types/solid-core';\n\nconst SolidShortTextColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox }: SolidListViewColumnParams) => {\n const filterable = column.attrs.filterable;\n const showFilterOperator = false;\n const columnDataType = 'text';\n const filterMatchModeOptions = [\n { label: 'Starts With', value: FilterMatchMode.STARTS_WITH },\n { label: 'Contains', value: FilterMatchMode.CONTAINS },\n { label: 'Not Contains', value: FilterMatchMode.NOT_CONTAINS },\n { label: 'Ends With', value: FilterMatchMode.ENDS_WITH },\n { label: 'Equals', value: FilterMatchMode.EQUALS },\n { label: 'Not Equals', value: FilterMatchMode.NOT_EQUALS },\n { label: 'In', value: FilterMatchMode.IN },\n { label: 'Not In', value: FilterMatchMode.NOT_IN }\n ];\n const filterTemplate = (options: ColumnFilterElementTemplateOptions) => {\n const numberOfInputs = getNumberOfInputs(options.filterModel.matchMode);\n\n return (\n <SolidVarInputsFilterElement\n values={options.value}\n onChange={(e: FormEvent<HTMLInputElement>) => options.filterCallback(e, options.index)}\n numberOfInputs={numberOfInputs}\n inputType={InputTypes.Text}\n solidListViewMetaData={solidListViewMetaData}\n fieldMetadata={fieldMetadata}\n column={column}\n >\n </SolidVarInputsFilterElement >\n )\n };\n\n const truncateAfter = solidListViewMetaData?.data?.solidView?.layout?.attrs?.truncateAfter;\n const header = column.attrs.label ?? fieldMetadata.displayName;\n\n return (\n <Column\n key={fieldMetadata.name}\n field={fieldMetadata.name}\n // header={header}\n // className=\"text-sm\"\n sortable={column.attrs.sortable}\n // filter={filterable}\n dataType={columnDataType}\n showFilterOperator={showFilterOperator}\n filterMatchModeOptions={filterMatchModeOptions}\n filterElement={filterTemplate}\n filterPlaceholder={`Search by ${fieldMetadata.displayName}`}\n // style={{ minWidth: \"12rem\" }}\n // headerClassName=\"table-header-fs\"\n header={() => {\n return (<div style={{ maxWidth: truncateAfter ? `${truncateAfter}ch` : '30ch', whiteSpace: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden' }}>{header}</div>)\n }}\n\n body={(rowData) => {\n //add this widget to render media image in image format - SolidShortTextFieldImageRenderModeWidget \n let viewWidget = column.attrs.viewWidget;\n if (!viewWidget) {\n viewWidget = 'DefaultTextListWidget';\n }\n let DynamicWidget = getExtensionComponent(viewWidget);\n const widgetProps: SolidMediaListFieldWidgetProps = {\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n }\n\n ></Column >\n );\n\n};\n\nexport default SolidShortTextColumn;\n\n\n\nexport const DefaultTextListWidget = ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => {\n const truncateAfter = solidListViewMetaData?.data?.solidView?.layout?.attrs?.truncateAfter;\n let displayValue = rowData[fieldMetadata.name];\n\n if (fieldMetadata?.selectionStaticValues && displayValue) {\n const mapping: Record<string, string> = {};\n\n fieldMetadata.selectionStaticValues.forEach((entry: string) => {\n const [val, label] = entry.split(\":\");\n mapping[val] = label;\n });\n\n const values = displayValue.split(\",\").map((v: string) => v.trim());\n\n displayValue = values.map((v: string) => mapping[v] || v).join(\", \");\n }\n\n return (\n <SolidTableRowCell\n value={displayValue}\n truncateAfter={truncateAfter}\n />\n );\n};\n"]}
|
|
@@ -7,7 +7,6 @@ import { InputTypes, SolidVarInputsFilterElement } from "../SolidVarInputsFilter
|
|
|
7
7
|
import SolidTableRowCell from '../SolidTableRowCell';
|
|
8
8
|
import { getExtensionComponent } from '../../../../helpers/registry';
|
|
9
9
|
import { SolidListFieldWidgetProps, SolidMediaListFieldWidgetProps, SolidShortTextImageRenderModeWidgetProps } from '../../../../types/solid-core';
|
|
10
|
-
import dayjs from 'dayjs';
|
|
11
10
|
|
|
12
11
|
const SolidShortTextColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox }: SolidListViewColumnParams) => {
|
|
13
12
|
const filterable = column.attrs.filterable;
|
|
@@ -92,51 +91,11 @@ const SolidShortTextColumn = ({ solidListViewMetaData, fieldMetadata, column, se
|
|
|
92
91
|
|
|
93
92
|
export default SolidShortTextColumn;
|
|
94
93
|
|
|
95
|
-
function parseIsoDate(value: string): Date | null {
|
|
96
|
-
if (!value || typeof value !== "string") return null;
|
|
97
|
-
|
|
98
|
-
// Fast reject (avoids false positives)
|
|
99
|
-
if (!value.includes("T")) return null;
|
|
100
|
-
|
|
101
|
-
const d = new Date(value);
|
|
102
|
-
return isNaN(d.getTime()) ? null : d;
|
|
103
|
-
}
|
|
104
94
|
|
|
105
95
|
|
|
106
96
|
export const DefaultTextListWidget = ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => {
|
|
107
97
|
const truncateAfter = solidListViewMetaData?.data?.solidView?.layout?.attrs?.truncateAfter;
|
|
108
98
|
let displayValue = rowData[fieldMetadata.name];
|
|
109
|
-
// if (typeof displayValue === "string" && displayValue.includes("T") && displayValue.endsWith("Z")) {
|
|
110
|
-
// const d = new Date(displayValue);
|
|
111
|
-
// if (!isNaN(d.getTime())) {
|
|
112
|
-
// const year = d.getFullYear();
|
|
113
|
-
// const month = String(d.getMonth() + 1).padStart(2, "0");
|
|
114
|
-
// const day = String(d.getDate()).padStart(2, "0");
|
|
115
|
-
// const hours = String(d.getHours()).padStart(2, "0");
|
|
116
|
-
// const minutes = String(d.getMinutes()).padStart(2, "0");
|
|
117
|
-
// const seconds = String(d.getSeconds()).padStart(2, "0");
|
|
118
|
-
|
|
119
|
-
// displayValue = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.000`;
|
|
120
|
-
// }
|
|
121
|
-
// }
|
|
122
|
-
if (typeof displayValue === "string") {
|
|
123
|
-
const parsedDate = parseIsoDate(displayValue);
|
|
124
|
-
|
|
125
|
-
if (parsedDate) {
|
|
126
|
-
const format = column?.attrs?.format as string | undefined;
|
|
127
|
-
|
|
128
|
-
// 🔵 Explicit format → dayjs
|
|
129
|
-
if (format) {
|
|
130
|
-
displayValue = dayjs(parsedDate).format(format);
|
|
131
|
-
}
|
|
132
|
-
// 🟢 Default → user locale
|
|
133
|
-
else {
|
|
134
|
-
displayValue = parsedDate.toLocaleString();
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
99
|
|
|
141
100
|
if (fieldMetadata?.selectionStaticValues && displayValue) {
|
|
142
101
|
const mapping: Record<string, string> = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidRelationManyToOneColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAK5E,QAAA,MAAM,4BAA4B,qDAAsD,yBAAyB,4CAiEhH,CAAC;AAEF,eAAe,4BAA4B,CAAC;AAG5C,eAAO,MAAM,kCAAkC,8DAA+D,yBAAyB,
|
|
1
|
+
{"version":3,"file":"SolidRelationManyToOneColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAK5E,QAAA,MAAM,4BAA4B,qDAAsD,yBAAyB,4CAiEhH,CAAC;AAEF,eAAe,4BAA4B,CAAC;AAG5C,eAAO,MAAM,kCAAkC,8DAA+D,yBAAyB,4CA6CtI,CAAC"}
|
|
@@ -61,18 +61,22 @@ export var DefaultRelationManyToOneListWidget = function (_a) {
|
|
|
61
61
|
// Since this is a many-to-one field, we fetch the user key field of the associated model.
|
|
62
62
|
var userKeyField = ((_b = column === null || column === void 0 ? void 0 : column.attrs) === null || _b === void 0 ? void 0 : _b.coModelFieldToDisplay) ? (_c = column === null || column === void 0 ? void 0 : column.attrs) === null || _c === void 0 ? void 0 : _c.coModelFieldToDisplay : (_e = (_d = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _d === void 0 ? void 0 : _d.userKeyField) === null || _e === void 0 ? void 0 : _e.name;
|
|
63
63
|
var manyToOneColVal = manyToOneFieldData[userKeyField];
|
|
64
|
-
return (_jsx(Button, { label: manyToOneColVal, link: true, onClick: function () {
|
|
65
|
-
var _a;
|
|
66
|
-
// Get current path from browser
|
|
64
|
+
return (_jsx(Button, { label: manyToOneColVal, link: true, icon: "pi pi-external-link", iconPos: "right", className: "w-auto", onClick: function () {
|
|
65
|
+
var _a, _b;
|
|
67
66
|
var pathSegments = window.location.pathname.split('/').filter(Boolean);
|
|
68
|
-
// The modelName is the second-last segment before "list"
|
|
69
67
|
var listIndex = pathSegments.lastIndexOf('list');
|
|
70
68
|
if (listIndex > 0) {
|
|
71
69
|
pathSegments[listIndex - 1] = kebabCase((_a = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _a === void 0 ? void 0 : _a.singularName);
|
|
72
70
|
pathSegments[listIndex] = "form/".concat(manyToOneFieldData === null || manyToOneFieldData === void 0 ? void 0 : manyToOneFieldData.id);
|
|
73
71
|
}
|
|
72
|
+
else if (pathSegments[pathSegments.length - 2] === "form") {
|
|
73
|
+
pathSegments[pathSegments.length - 3] = kebabCase((_b = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _b === void 0 ? void 0 : _b.singularName);
|
|
74
|
+
pathSegments[pathSegments.length - 2] = "form";
|
|
75
|
+
pathSegments[pathSegments.length - 1] = manyToOneFieldData === null || manyToOneFieldData === void 0 ? void 0 : manyToOneFieldData.id;
|
|
76
|
+
}
|
|
74
77
|
var newPath = "/".concat(pathSegments.join('/'), "?viewMode=view");
|
|
75
|
-
|
|
78
|
+
// open in new tab
|
|
79
|
+
window.open(newPath, "_blank");
|
|
76
80
|
} }));
|
|
77
81
|
}
|
|
78
82
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidRelationManyToOneColumn.js","sourceRoot":"","sources":["../../../../../../src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SolidRelationManyToOneColumn.js","sourceRoot":"","sources":["../../../../../../src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { FilterMatchMode } from 'primereact/api';\nimport { Column, ColumnFilterElementTemplateOptions } from \"primereact/column\";\nimport { FormEvent } from \"primereact/ts-helpers\";\nimport { SolidListViewColumnParams } from '../../../../../components/core/list/SolidListViewColumn';\nimport { InputTypes, SolidVarInputsFilterElement } from '../../../../../components/core/list/SolidVarInputsFilterElement';\nimport { getExtensionComponent } from '../../../../../helpers/registry';\nimport { SolidListFieldWidgetProps } from '../../../../../types/solid-core';\nimport { Button } from 'primereact/button';\nimport { useRouter } from \"../../../../../hooks/useRouter\";\nimport { kebabCase } from 'change-case';\n\nconst SolidRelationManyToOneColumn = ({ solidListViewMetaData, fieldMetadata, column }: SolidListViewColumnParams) => {\n const filterable = column.attrs.filterable;\n const showFilterOperator = false;\n const filterMatchModeOptions = [\n { label: 'In', value: FilterMatchMode.IN },\n { label: 'Not In', value: FilterMatchMode.NOT_IN },\n ];\n const columnDataType = undefined;\n\n\n\n const filterTemplate = (options: ColumnFilterElementTemplateOptions) => {\n\n return (\n <SolidVarInputsFilterElement\n values={options.value}\n onChange={(e: FormEvent<HTMLInputElement>) => options.filterCallback(e, options.index)}\n inputType={InputTypes.RelationManyToOne}\n solidListViewMetaData={solidListViewMetaData}\n fieldMetadata={fieldMetadata}\n column={column}\n >\n </SolidVarInputsFilterElement>\n )\n };\n\n const header = column.attrs.label ?? fieldMetadata.displayName;\n\n return (\n <Column\n key={fieldMetadata.name}\n field={fieldMetadata.name}\n header={header}\n // className=\"text-sm\"\n sortable={column.attrs.sortable}\n // filter={filterable}\n dataType={columnDataType}\n showFilterOperator={showFilterOperator}\n filterMatchModeOptions={filterMatchModeOptions}\n filterElement={filterTemplate}\n body={(rowData) => {\n let viewWidget = column.attrs.viewWidget;\n if (!viewWidget) {\n viewWidget = 'DefaultRelationManyToOneListWidget';\n }\n let DynamicWidget = getExtensionComponent(viewWidget);\n const widgetProps: SolidListFieldWidgetProps = {\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n }\n filterPlaceholder={`Search by ${fieldMetadata.displayName}`}\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n ></Column>\n );\n\n};\n\nexport default SolidRelationManyToOneColumn;\n\n\nexport const DefaultRelationManyToOneListWidget = ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => {\n const router = useRouter();\n const manyToOneFieldData = rowData[column.attrs.name];\n\n // This is the userkey that will be present within the rowData.\n if (manyToOneFieldData) {\n // Since this is a many-to-one field, we fetch the user key field of the associated model.\n const userKeyField = column?.attrs?.coModelFieldToDisplay ? column?.attrs?.coModelFieldToDisplay : fieldMetadata?.relationModel?.userKeyField?.name;\n\n const manyToOneColVal = manyToOneFieldData[userKeyField];\n\n return (\n <Button\n label={manyToOneColVal}\n link\n icon=\"pi pi-external-link\"\n iconPos=\"right\"\n className=\"w-auto\"\n onClick={() => {\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n\n const listIndex = pathSegments.lastIndexOf('list');\n\n if (listIndex > 0) {\n pathSegments[listIndex - 1] = kebabCase(fieldMetadata?.relationModel?.singularName);\n pathSegments[listIndex] = `form/${manyToOneFieldData?.id}`;\n }\n else if (pathSegments[pathSegments.length - 2] === \"form\") {\n pathSegments[pathSegments.length - 3] = kebabCase(fieldMetadata?.relationModel?.singularName);\n pathSegments[pathSegments.length - 2] = \"form\";\n pathSegments[pathSegments.length - 1] = manyToOneFieldData?.id;\n }\n\n const newPath = `/${pathSegments.join('/')}?viewMode=view`;\n\n // open in new tab\n window.open(newPath, \"_blank\");\n\n }}\n />\n );\n }\n else {\n return <span></span>\n }\n};\n"]}
|
|
@@ -95,18 +95,29 @@ export const DefaultRelationManyToOneListWidget = ({ rowData, solidListViewMetaD
|
|
|
95
95
|
<Button
|
|
96
96
|
label={manyToOneColVal}
|
|
97
97
|
link
|
|
98
|
+
icon="pi pi-external-link"
|
|
99
|
+
iconPos="right"
|
|
100
|
+
className="w-auto"
|
|
98
101
|
onClick={() => {
|
|
99
|
-
// Get current path from browser
|
|
100
102
|
const pathSegments = window.location.pathname.split('/').filter(Boolean);
|
|
101
103
|
|
|
102
|
-
// The modelName is the second-last segment before "list"
|
|
103
104
|
const listIndex = pathSegments.lastIndexOf('list');
|
|
105
|
+
|
|
104
106
|
if (listIndex > 0) {
|
|
105
107
|
pathSegments[listIndex - 1] = kebabCase(fieldMetadata?.relationModel?.singularName);
|
|
106
108
|
pathSegments[listIndex] = `form/${manyToOneFieldData?.id}`;
|
|
107
109
|
}
|
|
110
|
+
else if (pathSegments[pathSegments.length - 2] === "form") {
|
|
111
|
+
pathSegments[pathSegments.length - 3] = kebabCase(fieldMetadata?.relationModel?.singularName);
|
|
112
|
+
pathSegments[pathSegments.length - 2] = "form";
|
|
113
|
+
pathSegments[pathSegments.length - 1] = manyToOneFieldData?.id;
|
|
114
|
+
}
|
|
115
|
+
|
|
108
116
|
const newPath = `/${pathSegments.join('/')}?viewMode=view`;
|
|
109
|
-
|
|
117
|
+
|
|
118
|
+
// open in new tab
|
|
119
|
+
window.open(newPath, "_blank");
|
|
120
|
+
|
|
110
121
|
}}
|
|
111
122
|
/>
|
|
112
123
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listViewRegistry.js","sourceRoot":"","sources":["../../../../src/components/core/list/listViewRegistry.ts"],"names":[],"mappings":"AAEA,IAAM,gBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;AAEhE,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,MAAc,EAAE,MAA2B;IAC1E,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,MAAc;IAC/C,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,MAAc;IACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,MAAc;IACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,wBAAwB,GAAG;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC","sourcesContent":["import type { SolidListViewHandle } from \"./SolidListView\";\n\nconst listViewRegistry = new Map<string, SolidListViewHandle>();\n\nexport const registerListView = (listId: string, handle: SolidListViewHandle): void => {\n listViewRegistry.set(listId, handle);\n};\n\nexport const unregisterListView = (listId: string): void => {\n listViewRegistry.delete(listId);\n};\n\nexport const getListView = (listId: string): SolidListViewHandle | undefined => {\n return listViewRegistry.get(listId);\n};\n\nexport const hasListView = (listId: string): boolean => {\n return listViewRegistry.has(listId);\n};\n\nexport const getRegisteredListViewIds = (): string[] => {\n return Array.from(listViewRegistry.keys());\n}
|
|
1
|
+
{"version":3,"file":"listViewRegistry.js","sourceRoot":"","sources":["../../../../src/components/core/list/listViewRegistry.ts"],"names":[],"mappings":"AAEA,IAAM,gBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;AAEhE,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,MAAc,EAAE,MAA2B;IAC1E,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,MAAc;IAC/C,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,MAAc;IACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,MAAc;IACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,wBAAwB,GAAG;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC","sourcesContent":["import type { SolidListViewHandle } from \"./SolidListView\";\n\nconst listViewRegistry = new Map<string, SolidListViewHandle>();\n\nexport const registerListView = (listId: string, handle: SolidListViewHandle): void => {\n listViewRegistry.set(listId, handle);\n};\n\nexport const unregisterListView = (listId: string): void => {\n listViewRegistry.delete(listId);\n};\n\nexport const getListView = (listId: string): SolidListViewHandle | undefined => {\n return listViewRegistry.get(listId);\n};\n\nexport const hasListView = (listId: string): boolean => {\n return listViewRegistry.has(listId);\n};\n\nexport const getRegisteredListViewIds = (): string[] => {\n return Array.from(listViewRegistry.keys());\n};"]}
|