@solidxai/core-ui 0.1.3 → 0.1.4-beta.0

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 (127) 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 +146 -47
  23. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  24. package/dist/components/core/common/SolidGlobalSearchElement.tsx +191 -18
  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 +7 -3
  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 +45 -40
  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.map +1 -1
  61. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +26 -21
  62. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  63. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +27 -17
  64. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +1 -0
  65. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +51 -0
  67. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  68. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +51 -0
  69. package/dist/components/core/kanban/SolidKanbanView.js +5 -5
  70. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  71. package/dist/components/core/kanban/SolidKanbanView.tsx +5 -5
  72. package/dist/components/core/list/SolidListView.d.ts +12 -7
  73. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  74. package/dist/components/core/list/SolidListView.js +138 -150
  75. package/dist/components/core/list/SolidListView.js.map +1 -1
  76. package/dist/components/core/list/SolidListView.tsx +84 -91
  77. package/dist/components/core/list/listViewRegistry.js.map +1 -1
  78. package/dist/components/core/list/listViewRegistry.ts +1 -2
  79. package/dist/components/core/tree/SolidTreeView.d.ts +38 -0
  80. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -0
  81. package/dist/components/core/tree/SolidTreeView.js +1170 -0
  82. package/dist/components/core/tree/SolidTreeView.js.map +1 -0
  83. package/dist/components/core/tree/SolidTreeView.tsx +1603 -0
  84. package/dist/components/core/tree/treeViewRegistry.d.ts +7 -0
  85. package/dist/components/core/tree/treeViewRegistry.d.ts.map +1 -0
  86. package/dist/components/core/tree/treeViewRegistry.js +17 -0
  87. package/dist/components/core/tree/treeViewRegistry.js.map +1 -0
  88. package/dist/components/core/tree/treeViewRegistry.ts +23 -0
  89. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  90. package/dist/components/core/users/CreateUser.js +19 -6
  91. package/dist/components/core/users/CreateUser.js.map +1 -1
  92. package/dist/components/core/users/CreateUser.tsx +39 -0
  93. package/dist/helpers/helpers.d.ts +2 -0
  94. package/dist/helpers/helpers.d.ts.map +1 -1
  95. package/dist/helpers/helpers.js +3 -1
  96. package/dist/helpers/helpers.js.map +1 -1
  97. package/dist/helpers/helpers.ts +4 -1
  98. package/dist/helpers/registry.d.ts.map +1 -1
  99. package/dist/helpers/registry.js +2 -0
  100. package/dist/helpers/registry.js.map +1 -1
  101. package/dist/helpers/registry.ts +3 -1
  102. package/dist/index.d.ts +3 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +2 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/index.ts +6 -1
  107. package/dist/resources/globals.css +18 -4
  108. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  109. package/dist/routes/pages/admin/core/ListPage.js +1 -1
  110. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  111. package/dist/routes/pages/admin/core/ListPage.tsx +2 -1
  112. package/dist/routes/pages/admin/core/TreePage.d.ts +2 -0
  113. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -0
  114. package/dist/routes/pages/admin/core/TreePage.js +37 -0
  115. package/dist/routes/pages/admin/core/TreePage.js.map +1 -0
  116. package/dist/routes/pages/admin/core/TreePage.tsx +30 -0
  117. package/dist/routes/solidRoutes.d.ts.map +1 -1
  118. package/dist/routes/solidRoutes.js +2 -0
  119. package/dist/routes/solidRoutes.js.map +1 -1
  120. package/dist/routes/solidRoutes.tsx +3 -1
  121. package/dist/routes/types.d.ts +1 -1
  122. package/dist/routes/types.d.ts.map +1 -1
  123. package/dist/routes/types.js.map +1 -1
  124. package/dist/routes/types.ts +1 -0
  125. package/dist/types/index.d.ts +8 -2
  126. package/dist/types/solid-core.d.ts +40 -0
  127. package/package.json +1 -1
@@ -66,7 +66,7 @@ const getRandomInt = (min: number, max: number) => {
66
66
  return Math.floor(Math.random() * (max - min + 1)) + min;
67
67
  };
68
68
 
69
- export const queryStringToQueryObject = () => {
69
+ export const getFilterObjectFromLocalStorage = () => {
70
70
  const currentPageUrl = window.location.pathname; // Get the current page URL
71
71
  const encodedQueryString = localStorage.getItem(currentPageUrl); // Retrieve the encoded query string from local storage
72
72
 
@@ -85,7 +85,7 @@ export const queryStringToQueryObject = () => {
85
85
  };
86
86
 
87
87
 
88
- export const queryStringToQueryObjectByUrl = (url) => {
88
+ export const getFilterObjectFromLocalStorageByUrl = (url) => {
89
89
  const currentPageUrl = url; // Get the current page URL
90
90
  const encodedQueryString = localStorage.getItem(currentPageUrl); // Retrieve the encoded query string from local storage
91
91
 
@@ -103,7 +103,7 @@ export const queryStringToQueryObjectByUrl = (url) => {
103
103
  }
104
104
  };
105
105
 
106
- export const queryObjectToQueryString = (queryObject: string) => {
106
+ export const setFilterObjectToLocalStorage = (queryObject: string) => {
107
107
  if (queryObject) {
108
108
  const stringifiedObject = JSON.stringify(queryObject);
109
109
  // const stringifiedObject = qs.stringify(queryObject, { encodeValuesOnly: true, arrayFormat: "brackets" });
@@ -116,7 +116,7 @@ export const queryObjectToQueryString = (queryObject: string) => {
116
116
  };
117
117
 
118
118
 
119
- export const queryObjectToQueryStringByUrl = (url, queryObject: string) => {
119
+ export const setFilterObjectToLocalStorageByUrl = (url, queryObject: string) => {
120
120
  if (queryObject) {
121
121
  const stringifiedObject = JSON.stringify(queryObject);
122
122
  // const stringifiedObject = qs.stringify(queryObject, { encodeValuesOnly: true, arrayFormat: "brackets" });
@@ -175,7 +175,7 @@ export type SolidListViewHandle = {
175
175
  * Updates sorting state and resets page offset to the first page.
176
176
  * Use this for programmatic sort controls to match DataTable behavior.
177
177
  */
178
- setSort: (nextSortField: string, nextSortOrder: 1 | -1 | 0) => void;
178
+ setSort: (nextMultiSortMeta: { field: string; order: 1 | -1 }[]) => void;
179
179
  /**
180
180
  * Toggles inclusion of archived/soft-deleted records.
181
181
  * Use this to switch between active-only and inclusive list views.
@@ -188,8 +188,7 @@ export type SolidListViewHandle = {
188
188
  getState: () => {
189
189
  first: number;
190
190
  rows: number;
191
- sortField: string;
192
- sortOrder: 1 | -1 | 0;
191
+ multiSortMeta: { field: string; order: 1 | -1 }[];
193
192
  showArchived: boolean;
194
193
  filters: any;
195
194
  filterPredicates: any;
@@ -217,8 +216,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
217
216
  const [totalRecords, setTotalRecords] = useState(0);
218
217
  const [first, setFirst] = useState(0);
219
218
  const [rows, setRows] = useState(solidListViewLayout?.attrs?.defaultPageSize ? solidListViewLayout?.attrs?.defaultPageSize : 10);
220
- const [sortField, setSortField] = useState("id");
221
- const [sortOrder, setSortOrder] = useState(-1);
219
+ const [multiSortMeta, setMultiSortMeta] = useState<{ field: string; order: 1 | -1 }[]>([{ field: "id", order: -1 }]);
222
220
  const [toPopulate, setToPopulate] = useState<string[]>([]);
223
221
  const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);
224
222
 
@@ -488,9 +486,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
488
486
  const populate = toPopulate;
489
487
  const populateMedia = toPopulateMedia;
490
488
  const rows = currentLayout?.attrs?.defaultPageSize ?? 25;
491
- const sortField = "id";
492
- const sortOrder = -1;
493
- return { sortField, sortOrder, rows, populate, populateMedia };
489
+ const multiSortMeta = [{ field: "id", order: -1 }];
490
+ return { multiSortMeta, rows, populate, populateMedia };
494
491
  };
495
492
 
496
493
 
@@ -646,7 +643,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
646
643
  );
647
644
  setQueryDataLoaded(false)
648
645
  if (solidListViewMetaData && solidListViewLayout) {
649
- const queryObject = queryStringToQueryObject();
646
+ const queryObject = getFilterObjectFromLocalStorage();
650
647
 
651
648
  if (queryObject) {
652
649
  const queryData = {
@@ -654,51 +651,29 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
654
651
  limit: queryObject.limit || 25,
655
652
  populate: queryObject.populate,
656
653
  populateMedia: queryObject.populateMedia,
657
- sort: queryObject.sort
658
- ? queryObject.sort?.map((sortItem: string) => {
659
- const [field, order] = sortItem.split(":");
660
- return { field, order };
661
- })
662
- : [`id:desc`],
654
+ sort: queryObject.sort,
663
655
  filters: queryObject.filters,
664
656
  };
665
- // const filters = {
666
- // $and: [],
667
- // };
668
-
669
- // if (queryObject.custom_filter_predicate) {
670
- // filters.$and.push(queryObject.custom_filter_predicate);
671
- // }
672
- // if (queryObject.search_predicate) {
673
- // filters.$and.push(queryObject.search_predicate);
674
- // }
675
- // if (queryObject.saved_filter_predicate) {
676
- // filters.$and.push(queryObject.saved_filter_predicate);
677
- // }
678
- // if (queryObject.predefined_search_predicate) {
679
- // filters.$and.push(queryObject.predefined_search_predicate);
680
- // }
681
-
682
- // if (queryObject.s_filter) {
683
- // filters.$and.push(queryObject.s_filter);
684
- // }
685
- // if (queryObject.c_filter) {
686
- // filters.$and.push(queryObject.c_filter);
687
- // }
657
+
688
658
  setRows(Number(queryData.limit));
689
659
  setFirst(Number(queryData?.offset));
690
- setSortField(queryData?.sort[0]?.field);
691
- setSortOrder(queryData?.sort[0]?.order);
692
- // latestFiltersRef.current = filters;
693
- const { sortField, sortOrder, rows, populate, populateMedia } = initialFilterMethod();
660
+ const parsedMultiSortMeta: { field: string; order: 1 | -1 }[] =
661
+ Array.isArray(queryData.sort) && queryData.sort.length > 0
662
+ ? queryData.sort.map((sortItem: string) => {
663
+ const [field, order] = sortItem.split(":");
664
+ return { field, order: order === "asc" ? 1 : -1 } as { field: string; order: 1 | -1 };
665
+ })
666
+ : [{ field: "id", order: -1 }];
667
+
668
+ setMultiSortMeta(parsedMultiSortMeta);
669
+ const { multiSortMeta, rows, populate, populateMedia } = initialFilterMethod();
694
670
  setToPopulate(populate);
695
671
  setToPopulateMedia(populateMedia);
696
672
 
697
673
  } else {
698
- const { sortField, sortOrder, rows, populate, populateMedia } = initialFilterMethod();
674
+ const { multiSortMeta, rows, populate, populateMedia } = initialFilterMethod();
699
675
  setRows(rows);
700
- setSortField(sortField);
701
- setSortOrder(sortOrder);
676
+ setMultiSortMeta(multiSortMeta);
702
677
  setToPopulate(populate);
703
678
  setToPopulateMedia(populateMedia);
704
679
  setFirst(0);
@@ -777,6 +752,13 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
777
752
  // Create a ref that always has the latest filters
778
753
  const latestFiltersRef = useRef(filters);
779
754
  const latestFilterPredicatesRef = useRef(filterPredicates);
755
+ // 1. Add the ref (near the other latestXxxRef declarations)
756
+ const latestMultiSortMetaRef = useRef(multiSortMeta);
757
+
758
+ // 2. Keep it in sync
759
+ useEffect(() => {
760
+ latestMultiSortMetaRef.current = multiSortMeta;
761
+ }, [multiSortMeta]);
780
762
 
781
763
  // Keep refs in sync
782
764
  useEffect(() => {
@@ -789,20 +771,19 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
789
771
 
790
772
 
791
773
  useEffect(() => {
792
- console.log(`useEffect: [first- ${first}, rows- ${rows}, sortField- ${sortField}, sortOrder- ${sortOrder}, showArchived- ${showArchived}, toPopulate- ${toPopulate}, toPopulateMedia- ${toPopulateMedia}, queryDataLoaded- ${queryDataLoaded}, filterPredicates- ${filterPredicates}]`);
774
+ console.log(`useEffect: [first- ${first}, rows- ${rows}, multiSortMeta- ${multiSortMeta}, showArchived- ${showArchived}, toPopulate- ${toPopulate}, toPopulateMedia- ${toPopulateMedia}, queryDataLoaded- ${queryDataLoaded}, filterPredicates- ${filterPredicates}]`);
793
775
  if (queryDataLoaded && filters && (filterPredicates || params.embeded == true)) {
794
776
  setQueryString();
795
777
  }
796
778
  }, [
797
779
  first,
798
780
  rows,
799
- sortField,
800
- sortOrder,
801
- filters,
781
+ multiSortMeta,
802
782
  showArchived,
803
783
  toPopulate,
804
784
  toPopulateMedia,
805
785
  queryDataLoaded,
786
+ filters,
806
787
  filterPredicates
807
788
  ]);
808
789
 
@@ -813,13 +794,27 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
813
794
  };
814
795
 
815
796
  // Handle sort event.
797
+ // const onSort = (event: DataTableStateEvent) => {
798
+ // const { sortField, sortOrder } = event;
799
+ // const validSortOrder = sortOrder === 1 || sortOrder === -1 ? sortOrder : 0;
800
+ // setSortField(sortField);
801
+ // setSortOrder(validSortOrder);
802
+ // setFirst(0);
803
+
804
+ // };
805
+
816
806
  const onSort = (event: DataTableStateEvent) => {
817
- const { sortField, sortOrder } = event;
818
- const validSortOrder = sortOrder === 1 || sortOrder === -1 ? sortOrder : 0;
819
- setSortField(sortField);
820
- setSortOrder(validSortOrder);
821
- setFirst(0);
807
+ const meta = event.multiSortMeta || [];
822
808
 
809
+ const validMeta = meta
810
+ .filter((m) => m.order === 1 || m.order === -1)
811
+ .map((m) => ({
812
+ field: m.field,
813
+ order: m.order as 1 | -1,
814
+ }));
815
+
816
+ setMultiSortMeta(validMeta);
817
+ setFirst(0);
823
818
  };
824
819
 
825
820
  // handle change in the records which are currently selected...
@@ -853,22 +848,23 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
853
848
 
854
849
 
855
850
 
856
- if (sortField && solidFieldsMetadata && solidFieldsMetadata[sortField]) {
857
- const sortFieldMetadata = solidFieldsMetadata[sortField];
858
- if (
859
- sortFieldMetadata?.type === "relation" &&
860
- sortFieldMetadata?.relationType === "many-to-one"
861
- ) {
862
- sortField = `${sortField}.${sortFieldMetadata?.relationModel?.userKeyField?.name}`;
863
- }
864
- queryData.sort = [
865
- `${sortField}:${sortOrder == 0 ? null : sortOrder == 1 ? "asc" : "desc"
866
- }`,
867
- ];
851
+ // Use ref instead of stale closure value
852
+ const currentSortMeta = latestMultiSortMetaRef.current;
853
+
854
+ if (currentSortMeta && currentSortMeta.length > 0) {
855
+ queryData.sort = currentSortMeta.map(({ field, order }) => {
856
+ const meta = solidFieldsMetadata?.[field];
857
+ let resolvedField = field;
858
+ if (meta?.type === "relation" && meta?.relationType === "many-to-one") {
859
+ resolvedField = `${field}.${meta?.relationModel?.userKeyField?.name}`;
860
+ }
861
+ return `${resolvedField}:${order === 1 ? "asc" : "desc"}`;
862
+ });
868
863
  } else {
869
864
  queryData.sort = [`id:desc`];
870
865
  }
871
866
 
867
+
872
868
  if (showArchived) {
873
869
  queryData.showSoftDeleted = "inclusive";
874
870
  }
@@ -910,14 +906,13 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
910
906
  const queryString = qs.stringify(queryData, { encodeValuesOnly: true });
911
907
 
912
908
  if (latestFilterPredicatesRef.current && latestFilterPredicatesRef.current.persistFilter) {
913
- let url;
914
- const urlData = structuredClone(queryData);
915
- delete urlData.filters;
916
- urlData.custom_filter_predicate = latestFilterPredicatesRef.current.custom_filter_predicate || null;
917
- urlData.search_predicate = latestFilterPredicatesRef.current.search_predicate || null;
918
- urlData.saved_filter_predicate = latestFilterPredicatesRef.current.saved_filter_predicate || null;
919
- urlData.predefined_search_predicate = latestFilterPredicatesRef.current.predefined_search_predicate || null;
920
- queryObjectToQueryString(urlData);
909
+ const fileterTobeStored = structuredClone(queryData);
910
+ delete fileterTobeStored.filters;
911
+ fileterTobeStored.custom_filter_predicate = latestFilterPredicatesRef.current.custom_filter_predicate || null;
912
+ fileterTobeStored.search_predicate = latestFilterPredicatesRef.current.search_predicate || null;
913
+ fileterTobeStored.saved_filter_predicate = latestFilterPredicatesRef.current.saved_filter_predicate || null;
914
+ fileterTobeStored.predefined_search_predicate = latestFilterPredicatesRef.current.predefined_search_predicate || null;
915
+ setFilterObjectToLocalStorage(fileterTobeStored);
921
916
  }
922
917
  triggerGetSolidEntities(queryString);
923
918
  };
@@ -956,10 +951,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
956
951
  // clear Filter
957
952
  const clearFilter = () => {
958
953
  if (solidListViewMetaData) {
959
- const { sortField, sortOrder, rows, populate, populateMedia } = initialFilterMethod();
954
+ const { multiSortMeta, rows, populate, populateMedia } = initialFilterMethod();
960
955
  setRows(rows);
961
- setSortField(sortField);
962
- setSortOrder(sortOrder);
956
+ setMultiSortMeta(multiSortMeta);
963
957
  setToPopulate(populate);
964
958
  setToPopulateMedia(populateMedia);
965
959
  }
@@ -993,9 +987,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
993
987
  setFirst(nextFirst);
994
988
  setRows(nextRows);
995
989
  },
996
- setSort: (nextSortField, nextSortOrder) => {
997
- setSortField(nextSortField);
998
- setSortOrder(nextSortOrder);
990
+ setSort: (nextMultiSortMeta) => {
991
+ setMultiSortMeta(nextMultiSortMeta);
999
992
  setFirst(0);
1000
993
  },
1001
994
  setShowArchived: (value) => {
@@ -1004,8 +997,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1004
997
  getState: () => ({
1005
998
  first,
1006
999
  rows,
1007
- sortField,
1008
- sortOrder,
1000
+ multiSortMeta,
1009
1001
  showArchived,
1010
1002
  filters,
1011
1003
  filterPredicates,
@@ -1016,8 +1008,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1016
1008
  }), [
1017
1009
  first,
1018
1010
  rows,
1019
- sortField,
1020
- sortOrder,
1011
+ multiSortMeta,
1021
1012
  showArchived,
1022
1013
  filters,
1023
1014
  filterPredicates,
@@ -1408,6 +1399,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1408
1399
  <div className="hidden lg:flex">
1409
1400
  <SolidGlobalSearchElement
1410
1401
  key={params.modelName}
1402
+ viewType="list"
1411
1403
  showSaveFilterPopup={showSaveFilterPopup}
1412
1404
  setShowSaveFilterPopup={setShowSaveFilterPopup}
1413
1405
  ref={solidGlobalSearchElementRef}
@@ -1537,6 +1529,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1537
1529
  params.embeded === false && (
1538
1530
  <div className="flex lg:hidden">
1539
1531
  <SolidGlobalSearchElement
1532
+ viewType="list"
1540
1533
  showSaveFilterPopup={showSaveFilterPopup}
1541
1534
  setShowSaveFilterPopup={setShowSaveFilterPopup}
1542
1535
  ref={solidGlobalSearchElementRef}
@@ -1612,8 +1605,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1612
1605
  first={first}
1613
1606
  onPage={onPageChange}
1614
1607
  onSort={(e: DataTableStateEvent) => onSort(e)}
1615
- sortField={sortField}
1616
- sortOrder={sortOrder === 1 || sortOrder === -1 ? sortOrder : 0}
1608
+ multiSortMeta={multiSortMeta}
1617
1609
  loading={false}
1618
1610
  // loading={loading || isLoading}
1619
1611
  // loadingIcon="pi pi-spinner"
@@ -1626,7 +1618,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1626
1618
  params.embeded === true ? undefined : onSelectionChange
1627
1619
  }
1628
1620
  selectionMode={params.embeded === true ? null : "checkbox"}
1629
- removableSort
1621
+ removableSort={solidListViewLayout?.attrs?.removableSort ?? true}
1622
+ sortMode={solidListViewLayout?.attrs?.sortMode ?? "multiple"}
1630
1623
  filterIcon={<FilterIcon />}
1631
1624
  tableClassName="solid-data-table"
1632
1625
  paginatorClassName="solid-paginator"
@@ -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
+ };
@@ -0,0 +1,38 @@
1
+ import React from "react";
2
+ type SolidTreeViewParams = {
3
+ moduleName: string;
4
+ modelName: string;
5
+ inlineCreate?: boolean;
6
+ handlePopUpOpen?: any;
7
+ embeded?: boolean;
8
+ customLayout?: any;
9
+ customFilter?: any;
10
+ };
11
+ export type SolidTreeViewHandle = {
12
+ refresh: () => void;
13
+ clearFilters: () => void;
14
+ applyFilter: (filter: {
15
+ custom_filter_predicate?: any;
16
+ search_predicate?: any;
17
+ saved_filter_predicate?: any;
18
+ predefined_search_predicate?: any;
19
+ }) => void;
20
+ setPagination: (nextFirst: number, nextRows: number) => void;
21
+ setSort: (nextSortField: string, nextSortOrder: 1 | -1 | 0) => void;
22
+ setShowArchived: (value: boolean) => void;
23
+ getState: () => {
24
+ first: number;
25
+ rows: number;
26
+ sortField: string;
27
+ sortOrder: 1 | -1 | 0;
28
+ showArchived: boolean;
29
+ filters: any;
30
+ filterPredicates: any;
31
+ listData: any[];
32
+ totalRecords: number;
33
+ loading: boolean;
34
+ };
35
+ };
36
+ export declare const SolidTreeView: React.ForwardRefExoticComponent<SolidTreeViewParams & React.RefAttributes<SolidTreeViewHandle>>;
37
+ export {};
38
+ //# sourceMappingURL=SolidTreeView.d.ts.map
@@ -0,0 +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"}