@solidxai/core-ui 0.1.4-beta.0 → 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 (61) hide show
  1. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  2. package/dist/components/core/common/SolidGlobalSearchElement.js +6 -5
  3. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  4. package/dist/components/core/common/SolidGlobalSearchElement.tsx +21 -17
  5. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
  6. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +15 -30
  7. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  8. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +46 -36
  9. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts +40 -0
  10. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  11. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +315 -160
  12. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  13. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +459 -249
  14. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  15. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +46 -95
  16. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  17. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +57 -113
  18. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +15 -5
  19. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
  20. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +203 -67
  21. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  22. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +147 -67
  23. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  24. package/dist/components/core/kanban/SolidKanbanView.js +8 -7
  25. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  26. package/dist/components/core/kanban/SolidKanbanView.tsx +3 -2
  27. package/dist/components/core/list/SolidListView.d.ts +8 -5
  28. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  29. package/dist/components/core/list/SolidListView.js +70 -59
  30. package/dist/components/core/list/SolidListView.js.map +1 -1
  31. package/dist/components/core/list/SolidListView.tsx +51 -57
  32. package/dist/components/core/list/SolidListViewConfigure.d.ts +7 -0
  33. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  34. package/dist/components/core/list/SolidListViewConfigure.js +6 -5
  35. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  36. package/dist/components/core/list/SolidListViewConfigure.tsx +21 -12
  37. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
  38. package/dist/components/core/list/columns/SolidShortTextColumn.js +1 -37
  39. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  40. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +0 -41
  41. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  42. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +9 -5
  43. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  44. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +14 -3
  45. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  46. package/dist/components/core/tree/SolidTreeView.js +23 -14
  47. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  48. package/dist/components/core/tree/SolidTreeView.tsx +50 -16
  49. package/dist/helpers/registry.js +3 -1
  50. package/dist/helpers/registry.js.map +1 -1
  51. package/dist/helpers/registry.ts +4 -1
  52. package/dist/resources/globals.css +14 -0
  53. package/dist/routes/pages/admin/core/ListPage.js +1 -1
  54. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  55. package/dist/routes/pages/admin/core/ListPage.tsx +1 -1
  56. package/dist/routes/pages/admin/core/ModuleHomePage.d.ts.map +1 -1
  57. package/dist/routes/pages/admin/core/ModuleHomePage.js +4 -15
  58. package/dist/routes/pages/admin/core/ModuleHomePage.js.map +1 -1
  59. package/dist/routes/pages/admin/core/ModuleHomePage.tsx +4 -3
  60. package/dist/types/solid-core.d.ts +1 -1
  61. package/package.json +1 -1
@@ -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":"SolidTreeView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/tree/SolidTreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAqCf,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,uBAAuB,CAAC,EAAE,GAAG,CAAC;QAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;QACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;QAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC,KAAK,IAAI,CAAC;IACX,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACpE,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAsCF,eAAO,MAAM,aAAa,iGA48CxB,CAAC"}
1
+ {"version":3,"file":"SolidTreeView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/tree/SolidTreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAsCf,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,uBAAuB,CAAC,EAAE,GAAG,CAAC;QAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;QACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;QAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC,KAAK,IAAI,CAAC;IACX,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACpE,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAsCF,eAAO,MAAM,aAAa,iGA6+CxB,CAAC"}
@@ -54,7 +54,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
54
54
  }
55
55
  return to.concat(ar || Array.prototype.slice.call(from));
56
56
  };
57
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
57
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
58
58
  import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState, } from "react";
59
59
  import { Toast } from "primereact/toast";
60
60
  import { useDispatch, useSelector } from "react-redux";
@@ -81,10 +81,10 @@ import CozyImage from '../../../resources/images/layout/images/cozy.png';
81
81
  import ComfortableImage from '../../../resources/images/layout/images/comfortable.png';
82
82
  import { Divider } from "primereact/divider";
83
83
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
84
- import { getSingularAndPlural } from "../../../helpers/helpers";
85
84
  import { getFilterObjectFromLocalStorage, setFilterObjectToLocalStorage } from "../list/SolidListView";
86
85
  import { HomePageModuleSvg } from "../../Svg/HomePageModuleSvg";
87
86
  import { getExtensionFunction } from "../../../helpers/registry";
87
+ import { Tooltip } from "primereact/tooltip";
88
88
  var DEFAULT_PAGE_SIZE = 25;
89
89
  // ─── Component ────────────────────────────────────────────────────────────────
90
90
  export var SolidTreeView = forwardRef(function (params, ref) {
@@ -222,6 +222,12 @@ export var SolidTreeView = forwardRef(function (params, ref) {
222
222
  var activeGroupingRules = useMemo(function () { return (groupingRules || []).filter(function (rule) { return !!(rule === null || rule === void 0 ? void 0 : rule.fieldName); }); }, [groupingRules]);
223
223
  useEffect(function () { latestFiltersRef.current = filters; }, [filters]);
224
224
  useEffect(function () { latestFilterPredicatesRef.current = filterPredicates; }, [filterPredicates]);
225
+ useEffect(function () {
226
+ var _a;
227
+ if (solidTreeViewMetaData) {
228
+ setViewModes((_a = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _a === void 0 ? void 0 : _a.viewModes);
229
+ }
230
+ }, [solidTreeViewMetaData]);
225
231
  useEffect(function () {
226
232
  var _a, _b, _c, _d, _e, _f;
227
233
  var solidFieldsMetadata = (_a = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _a === void 0 ? void 0 : _a.solidFieldsMetadata;
@@ -502,10 +508,10 @@ export var SolidTreeView = forwardRef(function (params, ref) {
502
508
  mergedFilters = mergeFiltersWithImplicit(implicitFilters);
503
509
  if (mergedFilters)
504
510
  queryData.filters = mergedFilters;
505
- dynamicHeader = (_c = (_b = (_a = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _a === void 0 ? void 0 : _a.solidView) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.onBeforeTreeLoad;
511
+ dynamicHeader = (_c = (_b = (_a = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _a === void 0 ? void 0 : _a.solidView) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.onBeforeTreeDataLoad;
506
512
  dynamicExtensionFunction = null;
507
513
  event = {
508
- type: "onBeforeTreeLoad",
514
+ type: "onBeforeTreeDataLoad",
509
515
  level: ruleIndex,
510
516
  levelFieldName: rule.fieldName,
511
517
  fieldsMetadata: (_d = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _d === void 0 ? void 0 : _d.solidFieldsMetadata,
@@ -537,7 +543,7 @@ export var SolidTreeView = forwardRef(function (params, ref) {
537
543
  return [3 /*break*/, 4];
538
544
  case 3:
539
545
  err_1 = _f.sent();
540
- console.error("Error executing onBeforeTreeLoad extension:", err_1);
546
+ console.error("Error executing onBeforeTreeDataLoad extension:", err_1);
541
547
  return [3 /*break*/, 4];
542
548
  case 4:
543
549
  queryString = qs.stringify(queryData, { encodeValuesOnly: true });
@@ -565,10 +571,10 @@ export var SolidTreeView = forwardRef(function (params, ref) {
565
571
  mergedFilters = mergeFiltersWithImplicit(implicitFilters);
566
572
  if (mergedFilters)
567
573
  queryData.filters = mergedFilters;
568
- dynamicHeader = (_c = (_b = (_a = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _a === void 0 ? void 0 : _a.solidView) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.onBeforeTreeLoad;
574
+ dynamicHeader = (_c = (_b = (_a = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _a === void 0 ? void 0 : _a.solidView) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.onBeforeTreeDataLoad;
569
575
  dynamicExtensionFunction = null;
570
576
  event = {
571
- type: "onBeforeTreeLoad",
577
+ type: "onBeforeTreeDataLoad",
572
578
  level: groupPath.length,
573
579
  levelFieldName: groupPath[groupPath.length - 1].fieldName,
574
580
  fieldsMetadata: (_d = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _d === void 0 ? void 0 : _d.solidFieldsMetadata,
@@ -600,7 +606,7 @@ export var SolidTreeView = forwardRef(function (params, ref) {
600
606
  return [3 /*break*/, 4];
601
607
  case 3:
602
608
  err_2 = _f.sent();
603
- console.error("Error executing onBeforeTreeLoad extension:", err_2);
609
+ console.error("Error executing onBeforeTreeDataLoad extension:", err_2);
604
610
  return [3 /*break*/, 4];
605
611
  case 4:
606
612
  queryString = qs.stringify(queryData, { encodeValuesOnly: true });
@@ -1022,9 +1028,10 @@ export var SolidTreeView = forwardRef(function (params, ref) {
1022
1028
  return null;
1023
1029
  var originalBody = (_b = listColumn === null || listColumn === void 0 ? void 0 : listColumn.props) === null || _b === void 0 ? void 0 : _b.body;
1024
1030
  var originalProps = (listColumn === null || listColumn === void 0 ? void 0 : listColumn.props) || {};
1031
+ var mergedColumnStyle = __assign({ minWidth: "12rem" }, (originalProps.style || {}));
1025
1032
  return (_jsx(Column, { field: (_c = originalProps.field) !== null && _c !== void 0 ? _c : fieldMetadata.name, header: originalProps.header,
1026
1033
  // sortable
1027
- style: originalProps.style, className: originalProps.className, headerClassName: originalProps.headerClassName, bodyClassName: originalProps.bodyClassName, align: originalProps.align, alignHeader: originalProps.alignHeader, body: function (node, options) {
1034
+ style: mergedColumnStyle, className: originalProps.className, headerClassName: originalProps.headerClassName, bodyClassName: originalProps.bodyClassName, align: originalProps.align, alignHeader: originalProps.alignHeader, body: function (node, options) {
1028
1035
  var _a, _b;
1029
1036
  var rowData = (_a = node === null || node === void 0 ? void 0 : node.data) !== null && _a !== void 0 ? _a : node;
1030
1037
  var nodeMeta = rowData === null || rowData === void 0 ? void 0 : rowData.__treeMeta;
@@ -1065,7 +1072,9 @@ export var SolidTreeView = forwardRef(function (params, ref) {
1065
1072
  if ((nodeMeta === null || nodeMeta === void 0 ? void 0 : nodeMeta.nodeType) !== "group")
1066
1073
  return _jsx("span", { children: "\u00A0" });
1067
1074
  var label = (_a = nodeMeta.groupLabel) !== null && _a !== void 0 ? _a : "";
1068
- return _jsx("span", { className: "font-semibold", children: label });
1075
+ var truncateAfter = 30;
1076
+ return (_jsxs("div", { className: "flex align-items-center", children: [_jsx("div", { className: "solid-table-row", style: { maxWidth: "".concat(truncateAfter, "ch") }, children: _jsx("span", { className: "font-semibold", children: label }) }), truncateAfter && label.length > truncateAfter &&
1077
+ _jsxs(_Fragment, { children: [_jsx(Tooltip, { target: ".solid-field-tooltip-icon" }), _jsx("i", { className: "pi pi-info-circle solid-field-tooltip-icon", "data-pr-tooltip": label })] })] }));
1069
1078
  };
1070
1079
  // ─── Root pagination bar ──────────────────────────────────────────────────
1071
1080
  var RootPaginationBar = function () {
@@ -1115,7 +1124,7 @@ export var SolidTreeView = forwardRef(function (params, ref) {
1115
1124
  ((_s = (_r = (_q = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _q === void 0 ? void 0 : _q.solidView) === null || _r === void 0 ? void 0 : _r.layout) === null || _s === void 0 ? void 0 : _s.attrs.delete) !== false &&
1116
1125
  selectedRecords.length > 0 && (_jsx(Button, { type: "button", label: "Delete", size: "small", onClick: function () { return setDeleteRecordsDialogVisible(true); }, className: "small-button", severity: "danger" })), _jsx(Button, { type: "button", size: "small", icon: "pi pi-refresh", severity: "secondary", className: "solid-icon-button", outlined: true, onClick: function () { void loadRootGroups(getPagination("root").offset); } }), showArchived && (_jsx(Button, { type: "button", icon: "pi pi-refresh", label: "Recover", size: "small", severity: "secondary", className: "hidden lg:flex solid-icon-button ", onClick: function () { return setRecoverDialogVisible(true); } })), params.embeded === false &&
1117
1126
  ((_t = solidTreeViewLayout === null || solidTreeViewLayout === void 0 ? void 0 : solidTreeViewLayout.attrs) === null || _t === void 0 ? void 0 : _t.configureView) !== false && (_jsx(SolidListViewConfigure, { listViewMetaData: solidTreeViewMetaData, solidListViewLayout: solidTreeViewLayout, setShowArchived: setShowArchived, showArchived: showArchived, viewData: solidTreeViewMetaData, sizeOptions: sizeOptions, setSize: setSize, size: size, viewModes: viewModes, params: params, actionsAllowed: actionsAllowed, selectedRecords: selectedRecords, setDialogVisible: setDeleteRecordsDialogVisible, setShowSaveFilterPopup: setShowSaveFilterPopup, filters: filters, handleFetchUpdatedRecords: handleFetchUpdatedRecords, setRecoverDialogVisible: setRecoverDialogVisible }))] })] }), ((_w = (_v = (_u = solidTreeViewMetaData === null || solidTreeViewMetaData === void 0 ? void 0 : solidTreeViewMetaData.data) === null || _u === void 0 ? void 0 : _u.solidView) === null || _v === void 0 ? void 0 : _v.layout) === null || _w === void 0 ? void 0 : _w.attrs.enableGlobalSearch) === true &&
1118
- showGlobalSearchElement && (_jsx("div", { className: "flex lg:hidden", children: _jsx(SolidGlobalSearchElement, { viewType: "tree", showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidTreeViewMetaData, handleApplyCustomFilter: handleApplyCustomFilter }) }))] }), _jsx("style", { children: ".p-datatable .p-datatable-loading-overlay, .p-treetable .p-treetable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}" }), _jsx("div", { className: "solid-datatable-wrapper solid-treetable-wrapper flex-1 min-h-0", children: activeGroupingRules.length === 0 ? (_jsxs("div", { className: "flex flex-column align-items-center justify-content-center h-full p-6 text-center", children: [_jsx("div", { className: "mb-4", style: { opacity: 0.1 }, children: _jsx(HomePageModuleSvg, {}) }), _jsx("h3", { className: "m-0 mb-2", style: { color: "var(--solid-dark-title)", fontWeight: 700, fontSize: '1.5rem' }, children: "Tree View" }), _jsxs("p", { className: "m-0 text-sl", style: { maxWidth: '35rem', lineHeight: '1.5', color: 'var(--text-color)' }, children: ["To visualize your data in a hierarchical structure, please apply a ", _jsx("strong", { children: "Grouping Rule" }), " from the Global Search bar above."] })] })) : (_jsxs(TreeTable, { value: treeNodes, lazy: true, loading: treeLoading, expandedKeys: expandedKeys, onToggle: function (event) { return setExpandedKeys(event.value); }, onExpand: handleNodeExpand, scrollable: true, tableClassName: "solid-data-table", selectionMode: "checkbox", selectionKeys: selectedNodeKeys, sortField: sortField, sortOrder: sortOrder, removableSort: true, onSort: function (e) {
1127
+ showGlobalSearchElement && (_jsx("div", { className: "flex lg:hidden", children: _jsx(SolidGlobalSearchElement, { viewType: "tree", showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidTreeViewMetaData, handleApplyCustomFilter: handleApplyCustomFilter }) }))] }), _jsx("style", { children: "\n \n " }), _jsx("div", { className: "solid-datatable-wrapper solid-treetable-wrapper flex-1 min-h-0 overflow-auto", children: activeGroupingRules.length === 0 ? (_jsxs("div", { className: "flex flex-column align-items-center justify-content-center h-full p-6 text-center", children: [_jsx("div", { className: "mb-4", style: { opacity: 0.1 }, children: _jsx(HomePageModuleSvg, {}) }), _jsx("h3", { className: "m-0 mb-2", style: { color: "var(--solid-dark-title)", fontWeight: 700, fontSize: '1.5rem' }, children: "Tree View" }), _jsxs("p", { className: "m-0 text-sl", style: { maxWidth: '35rem', lineHeight: '1.5', color: 'var(--text-color)' }, children: ["To visualize your data in a hierarchical structure, please apply a ", _jsx("strong", { children: "Grouping Rule" }), " from the Global Search bar above."] })] })) : (_jsxs(TreeTable, { value: treeNodes, lazy: true, loading: treeLoading, expandedKeys: expandedKeys, onToggle: function (event) { return setExpandedKeys(event.value); }, onExpand: handleNodeExpand, scrollable: true, tableStyle: { minWidth: "max-content" }, tableClassName: "solid-data-table", resizableColumns: true, columnResizeMode: "expand", selectionMode: "checkbox", selectionKeys: selectedNodeKeys, sortField: sortField, sortOrder: sortOrder, removableSort: true, onSort: function (e) {
1119
1128
  setSortField(e.sortField);
1120
1129
  setSortOrder(e.sortOrder);
1121
1130
  }, onSelectionChange: function (e) {
@@ -1131,8 +1140,8 @@ export var SolidTreeView = forwardRef(function (params, ref) {
1131
1140
  });
1132
1141
  return next;
1133
1142
  });
1134
- }, children: [_jsx(Column, { field: "__group", header: "Group", sortable: true, expander: function (node) { var _a, _b; return ((_b = (_a = node === null || node === void 0 ? void 0 : node.data) === null || _a === void 0 ? void 0 : _a.__treeMeta) === null || _b === void 0 ? void 0 : _b.nodeType) === "group"; }, body: groupColumnBody, style: { minWidth: "18rem" } }, "tree-group-column"), renderColumnsDynamically(), renderAggregateColumns(), _jsx(Column, { header: "", style: { width: "20rem" }, body: function (node) {
1135
- var _a, _b, _c, _d, _e;
1143
+ }, children: [_jsx(Column, { field: "__group", header: "Group", sortable: true, expander: function (node) { var _a, _b; return ((_b = (_a = node === null || node === void 0 ? void 0 : node.data) === null || _a === void 0 ? void 0 : _a.__treeMeta) === null || _b === void 0 ? void 0 : _b.nodeType) === "group"; }, body: groupColumnBody, style: { minWidth: "18rem", display: "flex", alignItems: "center" } }, "tree-group-column"), renderColumnsDynamically(), renderAggregateColumns(), _jsx(Column, { header: "", style: { width: "20rem" }, body: function (node) {
1144
+ var _a, _b, _c, _d;
1136
1145
  var rowData = node === null || node === void 0 ? void 0 : node.data;
1137
1146
  var nodeMeta = rowData === null || rowData === void 0 ? void 0 : rowData.__treeMeta;
1138
1147
  if ((nodeMeta === null || nodeMeta === void 0 ? void 0 : nodeMeta.nodeType) !== "group")
@@ -1161,7 +1170,7 @@ export var SolidTreeView = forwardRef(function (params, ref) {
1161
1170
  // Use displayName if available, fallback to fieldName
1162
1171
  return (_c = (_b = fieldMeta === null || fieldMeta === void 0 ? void 0 : fieldMeta.displayName) !== null && _b !== void 0 ? _b : fieldMeta === null || fieldMeta === void 0 ? void 0 : fieldMeta.name) !== null && _c !== void 0 ? _c : fieldName;
1163
1172
  })();
1164
- return (_jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.2rem", justifyContent: "flex-end" }, onClick: function (e) { return e.stopPropagation(); }, children: [_jsxs("span", { style: { fontSize: "0.9rem", color: "var(--text-color-secondary)", whiteSpace: "nowrap" }, children: [pagEntry.offset + 1, "\u2013", Math.min(pagEntry.offset + pagEntry.limit, pagEntry.total), " of ", pagEntry.total, " ", (_e = getSingularAndPlural(ofLabel).toPlural) !== null && _e !== void 0 ? _e : ofLabel, " in ", inLabel] }), _jsx(Button, { type: "button", icon: "pi pi-angle-left", size: "small", rounded: true, outlined: true, disabled: !canPrev || treeLoading, style: { padding: 0, border: "none", width: "2rem" }, className: "small-button", onClick: function () { return handleNodePageChange(nodeKey, "prev"); } }), _jsx(Button, { type: "button", icon: "pi pi-angle-right", size: "small", rounded: true, outlined: true, disabled: !canNext || treeLoading, style: { padding: 0, border: "none", width: "2rem" }, className: "small-button", onClick: function () { return handleNodePageChange(nodeKey, "next"); } })] }));
1173
+ return (_jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.2rem", justifyContent: "flex-end" }, onClick: function (e) { return e.stopPropagation(); }, children: [_jsx(Button, { type: "button", icon: "pi pi-angle-left", size: "small", rounded: true, outlined: true, disabled: !canPrev || treeLoading, style: { padding: 0, border: "none", width: "2rem" }, className: "small-button", onClick: function () { return handleNodePageChange(nodeKey, "prev"); } }), _jsx(Button, { type: "button", icon: "pi pi-angle-right", size: "small", rounded: true, outlined: true, disabled: !canNext || treeLoading, style: { padding: 0, border: "none", width: "2rem" }, className: "small-button", onClick: function () { return handleNodePageChange(nodeKey, "next"); } })] }));
1165
1174
  } }, "tree-last-frozen-column")] })) }), _jsx(RootPaginationBar, {}), _jsxs(Dialog, { visible: isDeleteRecordsDialogVisible, header: "Confirm Delete", onHide: function () { return setDeleteRecordsDialogVisible(false); }, headerClassName: "py-2", contentClassName: "px-0 pb-0",
1166
1175
  // style={{ width: '20vw' }}
1167
1176
  breakpoints: { '1199px': '30rem', '550px': '85vw' }, children: [_jsx(Divider, { className: "m-0" }), _jsxs("div", { className: "p-4", children: [_jsx("p", { className: "m-0 solid-primary-title", style: { fontSize: 16 }, children: "Are you sure you want to delete the selected records?" }), _jsxs("div", { className: "flex align-items-center gap-2 mt-3", children: [_jsx(Button, { label: "Delete", severity: "danger", size: "small", autoFocus: true, onClick: deleteBulk }), _jsx(Button, { label: "Cancel", size: "small", onClick: onDeleteClose, outlined: true, className: 'bg-primary-reverse' })] })] })] }), _jsx(Dialog, { visible: isRecoverDialogVisible, header: "Confirm Recover", modal: true, className: "solid-confirm-dialog", footer: function () { return (_jsxs("div", { className: "flex justify-content-center", children: [_jsx(Button, { label: "Yes", icon: "pi pi-check", severity: "danger", autoFocus: true, onClick: recoverAll }), _jsx(Button, { label: "No", icon: "pi pi-times", onClick: function () { return setRecoverDialogVisible(false); } })] })); }, onHide: function () { return setRecoverDialogVisible(false); }, children: _jsx("p", { children: "Are you sure you want to recover all records?" }) })] }));