@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.
Files changed (150) hide show
  1. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  2. package/dist/components/auth/SolidInitialLoginOtp.js +0 -5
  3. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  4. package/dist/components/auth/SolidInitialLoginOtp.tsx +0 -5
  5. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  6. package/dist/components/auth/SolidLogin.js +7 -5
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +10 -8
  9. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  10. package/dist/components/common/GeneralSettings.js +48 -47
  11. package/dist/components/common/GeneralSettings.js.map +1 -1
  12. package/dist/components/common/GeneralSettings.tsx +41 -10
  13. package/dist/components/core/common/FilterComponent.js.map +1 -1
  14. package/dist/components/core/common/FilterComponent.tsx +1 -1
  15. package/dist/components/core/common/GroupingComponent.d.ts +54 -0
  16. package/dist/components/core/common/GroupingComponent.d.ts.map +1 -0
  17. package/dist/components/core/common/GroupingComponent.js +196 -0
  18. package/dist/components/core/common/GroupingComponent.js.map +1 -0
  19. package/dist/components/core/common/GroupingComponent.tsx +452 -0
  20. package/dist/components/core/common/SolidGlobalSearchElement.d.ts +18 -1
  21. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  22. package/dist/components/core/common/SolidGlobalSearchElement.js +152 -52
  23. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  24. package/dist/components/core/common/SolidGlobalSearchElement.tsx +212 -35
  25. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts +19 -0
  26. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts.map +1 -0
  27. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js +90 -0
  28. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js.map +1 -0
  29. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.tsx +59 -0
  30. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
  31. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +17 -28
  32. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  33. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +71 -56
  34. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts +2 -0
  35. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts.map +1 -0
  36. package/dist/components/core/filter/SolidOneToManyFilterElement.js +86 -0
  37. package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -0
  38. package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +62 -0
  39. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts +1 -0
  40. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
  41. package/dist/components/core/filter/SolidVarInputsFilterElement.js +4 -1
  42. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  43. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +10 -0
  44. package/dist/components/core/filter/fields/SolidRelationField.d.ts.map +1 -1
  45. package/dist/components/core/filter/fields/SolidRelationField.js +4 -2
  46. package/dist/components/core/filter/fields/SolidRelationField.js.map +1 -1
  47. package/dist/components/core/filter/fields/SolidRelationField.tsx +4 -2
  48. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts +4 -0
  49. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -0
  50. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +25 -0
  51. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -0
  52. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +60 -0
  53. package/dist/components/core/form/SolidFormFooter.js +4 -4
  54. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  55. package/dist/components/core/form/SolidFormFooter.tsx +4 -4
  56. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  57. package/dist/components/core/form/fields/SolidBooleanField.js +11 -8
  58. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  59. package/dist/components/core/form/fields/SolidBooleanField.tsx +20 -8
  60. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts +40 -0
  61. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  62. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +317 -157
  63. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  64. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +463 -243
  65. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +46 -95
  67. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  68. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +57 -113
  69. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +15 -4
  70. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
  71. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +220 -33
  72. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  73. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +167 -36
  74. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  75. package/dist/components/core/kanban/SolidKanbanView.js +13 -12
  76. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  77. package/dist/components/core/kanban/SolidKanbanView.tsx +8 -7
  78. package/dist/components/core/list/SolidListView.d.ts +18 -10
  79. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  80. package/dist/components/core/list/SolidListView.js +176 -177
  81. package/dist/components/core/list/SolidListView.js.map +1 -1
  82. package/dist/components/core/list/SolidListView.tsx +130 -143
  83. package/dist/components/core/list/SolidListViewConfigure.d.ts +7 -0
  84. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  85. package/dist/components/core/list/SolidListViewConfigure.js +6 -5
  86. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  87. package/dist/components/core/list/SolidListViewConfigure.tsx +21 -12
  88. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
  89. package/dist/components/core/list/columns/SolidShortTextColumn.js +1 -37
  90. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  91. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +0 -41
  92. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  93. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +9 -5
  94. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  95. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +14 -3
  96. package/dist/components/core/list/listViewRegistry.js.map +1 -1
  97. package/dist/components/core/list/listViewRegistry.ts +1 -2
  98. package/dist/components/core/tree/SolidTreeView.d.ts +38 -0
  99. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -0
  100. package/dist/components/core/tree/SolidTreeView.js +1179 -0
  101. package/dist/components/core/tree/SolidTreeView.js.map +1 -0
  102. package/dist/components/core/tree/SolidTreeView.tsx +1637 -0
  103. package/dist/components/core/tree/treeViewRegistry.d.ts +7 -0
  104. package/dist/components/core/tree/treeViewRegistry.d.ts.map +1 -0
  105. package/dist/components/core/tree/treeViewRegistry.js +17 -0
  106. package/dist/components/core/tree/treeViewRegistry.js.map +1 -0
  107. package/dist/components/core/tree/treeViewRegistry.ts +23 -0
  108. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  109. package/dist/components/core/users/CreateUser.js +19 -6
  110. package/dist/components/core/users/CreateUser.js.map +1 -1
  111. package/dist/components/core/users/CreateUser.tsx +39 -0
  112. package/dist/helpers/helpers.d.ts +2 -0
  113. package/dist/helpers/helpers.d.ts.map +1 -1
  114. package/dist/helpers/helpers.js +3 -1
  115. package/dist/helpers/helpers.js.map +1 -1
  116. package/dist/helpers/helpers.ts +4 -1
  117. package/dist/helpers/registry.d.ts.map +1 -1
  118. package/dist/helpers/registry.js +5 -1
  119. package/dist/helpers/registry.js.map +1 -1
  120. package/dist/helpers/registry.ts +7 -2
  121. package/dist/index.d.ts +3 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +2 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/index.ts +6 -1
  126. package/dist/resources/globals.css +32 -4
  127. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  128. package/dist/routes/pages/admin/core/ListPage.js +2 -2
  129. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  130. package/dist/routes/pages/admin/core/ListPage.tsx +3 -2
  131. package/dist/routes/pages/admin/core/ModuleHomePage.d.ts.map +1 -1
  132. package/dist/routes/pages/admin/core/ModuleHomePage.js +4 -15
  133. package/dist/routes/pages/admin/core/ModuleHomePage.js.map +1 -1
  134. package/dist/routes/pages/admin/core/ModuleHomePage.tsx +4 -3
  135. package/dist/routes/pages/admin/core/TreePage.d.ts +2 -0
  136. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -0
  137. package/dist/routes/pages/admin/core/TreePage.js +37 -0
  138. package/dist/routes/pages/admin/core/TreePage.js.map +1 -0
  139. package/dist/routes/pages/admin/core/TreePage.tsx +30 -0
  140. package/dist/routes/solidRoutes.d.ts.map +1 -1
  141. package/dist/routes/solidRoutes.js +2 -0
  142. package/dist/routes/solidRoutes.js.map +1 -1
  143. package/dist/routes/solidRoutes.tsx +3 -1
  144. package/dist/routes/types.d.ts +1 -1
  145. package/dist/routes/types.d.ts.map +1 -1
  146. package/dist/routes/types.js.map +1 -1
  147. package/dist/routes/types.ts +1 -0
  148. package/dist/types/index.d.ts +8 -2
  149. package/dist/types/solid-core.d.ts +40 -0
  150. 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;AAKvC,eAAO,MAAM,sBAAsB,+QAoB3B,GAAG,4CA2SV,CAAA"}
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.value === view ? 'solid-active-view' : 'solid-view'), children: [_jsx(RadioButton, { inputId: option.value, name: "views", value: option.value,
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.value); }, checked: option.value === view }), _jsx("label", { htmlFor: option.value, className: "ml-2 flex align-items-center justify-content-between w-full", children: option.label })] }, option.value)); }) }) }), _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
+ 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: string) => {
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: any) => (
283
- <div key={option.value} className={`flex align-items-center ${option.value === view ? 'solid-active-view' : 'solid-view'}`}>
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.value}
294
+ inputId={option.type}
286
295
  name="views"
287
- value={option.value}
296
+ value={option.type}
288
297
  // onChange={(e) => router}
289
- onChange={() => handleViewChange(option.value)}
290
- checked={option.value === view}
298
+ onChange={() => handleViewChange(option)}
299
+ checked={option.type === view}
291
300
  />
292
- <label htmlFor={option.value} className="ml-2 flex align-items-center justify-content-between w-full">
293
- {option.label}
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;AAGnJ,QAAA,MAAM,oBAAoB,uFAAwF,yBAAyB,4CA+E1I,CAAC;AAEF,eAAe,oBAAoB,CAAC;AAapC,eAAO,MAAM,qBAAqB,8DAA+D,yBAAyB,4CAsDzH,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, _f;
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,4CAkCtI,CAAC"}
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
- router.push(newPath);
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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","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 onClick={() => {\n // Get current path from browser\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n\n // The modelName is the second-last segment before \"list\"\n const listIndex = pathSegments.lastIndexOf('list');\n if (listIndex > 0) {\n pathSegments[listIndex - 1] = kebabCase(fieldMetadata?.relationModel?.singularName);\n pathSegments[listIndex] = `form/${manyToOneFieldData?.id}`;\n }\n const newPath = `/${pathSegments.join('/')}?viewMode=view`;\n router.push(newPath);\n }}\n />\n );\n }\n else {\n return <span></span>\n }\n};\n"]}
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
- router.push(newPath);
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};\n\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};"]}
@@ -20,5 +20,4 @@ export const hasListView = (listId: string): boolean => {
20
20
 
21
21
  export const getRegisteredListViewIds = (): string[] => {
22
22
  return Array.from(listViewRegistry.keys());
23
- };
24
-
23
+ };