@solidxai/core-ui 0.1.14 → 0.1.15-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 (180) hide show
  1. package/dist/components/auth/AuthLayout.js +1 -1
  2. package/dist/components/auth/AuthLayout.js.map +1 -1
  3. package/dist/components/auth/AuthLayout.tsx +2 -2
  4. package/dist/components/common/DropzonePlaceholder.d.ts +2 -1
  5. package/dist/components/common/DropzonePlaceholder.d.ts.map +1 -1
  6. package/dist/components/common/DropzonePlaceholder.js +10 -7
  7. package/dist/components/common/DropzonePlaceholder.js.map +1 -1
  8. package/dist/components/common/DropzonePlaceholder.tsx +14 -9
  9. package/dist/components/common/SettingsComponent.module.css +4 -1
  10. package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
  11. package/dist/components/common/SolidFormStepper.js +7 -6
  12. package/dist/components/common/SolidFormStepper.js.map +1 -1
  13. package/dist/components/common/SolidFormStepper.tsx +7 -1
  14. package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
  15. package/dist/components/common/SolidThemeProvider.js +127 -11
  16. package/dist/components/common/SolidThemeProvider.js.map +1 -1
  17. package/dist/components/common/SolidThemeProvider.tsx +104 -22
  18. package/dist/components/core/card/CardGrid.d.ts +1 -1
  19. package/dist/components/core/card/CardGrid.d.ts.map +1 -1
  20. package/dist/components/core/card/CardGrid.js +2 -2
  21. package/dist/components/core/card/CardGrid.js.map +1 -1
  22. package/dist/components/core/card/CardGrid.tsx +4 -0
  23. package/dist/components/core/card/CardItem.d.ts +2 -0
  24. package/dist/components/core/card/CardItem.d.ts.map +1 -1
  25. package/dist/components/core/card/CardItem.js +5 -4
  26. package/dist/components/core/card/CardItem.js.map +1 -1
  27. package/dist/components/core/card/CardItem.tsx +16 -1
  28. package/dist/components/core/card/SolidCardView.d.ts +28 -1
  29. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  30. package/dist/components/core/card/SolidCardView.js +99 -44
  31. package/dist/components/core/card/SolidCardView.js.map +1 -1
  32. package/dist/components/core/card/SolidCardView.tsx +119 -7
  33. package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
  34. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  35. package/dist/components/core/card/SolidCardViewConfigure.js +15 -6
  36. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  37. package/dist/components/core/card/SolidCardViewConfigure.tsx +34 -0
  38. package/dist/components/core/common/PDFViewer.d.ts +9 -5
  39. package/dist/components/core/common/PDFViewer.d.ts.map +1 -1
  40. package/dist/components/core/common/PDFViewer.js +10 -102
  41. package/dist/components/core/common/PDFViewer.js.map +1 -1
  42. package/dist/components/core/common/PDFViewer.tsx +29 -88
  43. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
  44. package/dist/components/core/common/SolidCreateButton.js +2 -2
  45. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  46. package/dist/components/core/common/SolidCreateButton.tsx +22 -2
  47. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  48. package/dist/components/core/common/SolidGlobalSearchElement.js +216 -198
  49. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  50. package/dist/components/core/common/SolidGlobalSearchElement.tsx +287 -216
  51. package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
  52. package/dist/components/core/form/SolidFormActionHeader.js +21 -21
  53. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  54. package/dist/components/core/form/SolidFormActionHeader.tsx +62 -53
  55. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  56. package/dist/components/core/form/SolidFormView.js +101 -74
  57. package/dist/components/core/form/SolidFormView.js.map +1 -1
  58. package/dist/components/core/form/SolidFormView.tsx +46 -19
  59. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  60. package/dist/components/core/form/fields/SolidMediaMultipleField.js +3 -2
  61. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  62. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +3 -1
  63. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  64. package/dist/components/core/form/fields/SolidMediaSingleField.js +3 -2
  65. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  66. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +3 -1
  67. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts +1 -0
  68. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  69. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +20 -2
  70. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  71. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +29 -2
  72. package/dist/components/core/form/fields/solidFields.module.css +7 -0
  73. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  74. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  75. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  76. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  77. package/dist/components/core/kanban/KanbanBoard.tsx +3 -1
  78. package/dist/components/core/kanban/KanbanCard.d.ts +2 -0
  79. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  80. package/dist/components/core/kanban/KanbanCard.js +5 -3
  81. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  82. package/dist/components/core/kanban/KanbanCard.tsx +15 -2
  83. package/dist/components/core/kanban/KanbanColumn.d.ts +3 -1
  84. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  85. package/dist/components/core/kanban/KanbanColumn.js +2 -2
  86. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  87. package/dist/components/core/kanban/KanbanColumn.tsx +4 -2
  88. package/dist/components/core/kanban/SolidKanbanView.d.ts +25 -1
  89. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  90. package/dist/components/core/kanban/SolidKanbanView.js +95 -50
  91. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  92. package/dist/components/core/kanban/SolidKanbanView.tsx +87 -9
  93. package/dist/components/core/list/PLAN.md +1 -1
  94. package/dist/components/core/list/SolidListView.d.ts +11 -0
  95. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  96. package/dist/components/core/list/SolidListView.js +51 -90
  97. package/dist/components/core/list/SolidListView.js.map +1 -1
  98. package/dist/components/core/list/SolidListView.tsx +77 -112
  99. package/dist/components/core/list/SolidListViewColumn.d.ts +2 -1
  100. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  101. package/dist/components/core/list/SolidListViewColumn.js +2 -2
  102. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  103. package/dist/components/core/list/SolidListViewColumn.tsx +4 -3
  104. package/dist/components/core/list/SolidListViewConfigure.js +1 -1
  105. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  106. package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
  107. package/dist/components/core/list/columns/SolidRelationColumn.d.ts +1 -1
  108. package/dist/components/core/list/columns/SolidRelationColumn.d.ts.map +1 -1
  109. package/dist/components/core/list/columns/SolidRelationColumn.js +2 -2
  110. package/dist/components/core/list/columns/SolidRelationColumn.js.map +1 -1
  111. package/dist/components/core/list/columns/SolidRelationColumn.tsx +2 -2
  112. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts +2 -2
  113. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  114. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +5 -4
  115. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  116. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +5 -4
  117. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  118. package/dist/components/core/model/CreateModel.js +2 -1
  119. package/dist/components/core/model/CreateModel.js.map +1 -1
  120. package/dist/components/core/model/CreateModel.tsx +2 -0
  121. package/dist/components/core/model/FieldMetaData.d.ts +1 -1
  122. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  123. package/dist/components/core/model/FieldMetaData.js +8 -8
  124. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  125. package/dist/components/core/model/FieldMetaData.tsx +2 -2
  126. package/dist/components/core/model/FieldMetaDataForm.css +119 -0
  127. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  128. package/dist/components/core/model/FieldMetaDataForm.js +147 -97
  129. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  130. package/dist/components/core/model/FieldMetaDataForm.tsx +124 -32
  131. package/dist/components/core/module/ModuleMetadataExplorer.css +64 -0
  132. package/dist/components/core/module/ModulePackageDialog.css +117 -12
  133. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  134. package/dist/components/core/tree/SolidTreeView.js +6 -3
  135. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  136. package/dist/components/core/tree/SolidTreeView.tsx +27 -13
  137. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  138. package/dist/components/layout/AdminHeaderActions.js +16 -11
  139. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  140. package/dist/components/layout/AdminHeaderActions.tsx +16 -9
  141. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  142. package/dist/components/layout/AdminTopHeader.js +1 -18
  143. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  144. package/dist/components/layout/AdminTopHeader.tsx +3 -21
  145. package/dist/helpers/getAcceptedFileTypes.d.ts +12 -2
  146. package/dist/helpers/getAcceptedFileTypes.d.ts.map +1 -1
  147. package/dist/helpers/getAcceptedFileTypes.js +72 -16
  148. package/dist/helpers/getAcceptedFileTypes.js.map +1 -1
  149. package/dist/helpers/getAcceptedFileTypes.tsx +101 -18
  150. package/dist/helpers/registry.js +2 -1
  151. package/dist/helpers/registry.js.map +1 -1
  152. package/dist/helpers/registry.ts +3 -1
  153. package/dist/index.d.ts +6 -1
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +3 -0
  156. package/dist/index.js.map +1 -1
  157. package/dist/index.ts +6 -2
  158. package/dist/resources/globals.css +274 -109
  159. package/dist/resources/solid-custom.css +11 -0
  160. package/dist/resources/solid-responsive.css +1 -5
  161. package/dist/resources/solid-tailwind-generated.css +1 -1
  162. package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
  163. package/dist/routes/pages/admin/core/CardPage.js +15 -2
  164. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  165. package/dist/routes/pages/admin/core/CardPage.tsx +17 -2
  166. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  167. package/dist/routes/pages/admin/core/DashboardPage.js +31 -3
  168. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  169. package/dist/routes/pages/admin/core/DashboardPage.tsx +39 -11
  170. package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
  171. package/dist/routes/pages/admin/core/KanbanPage.js +15 -2
  172. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  173. package/dist/routes/pages/admin/core/KanbanPage.tsx +17 -2
  174. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  175. package/dist/routes/pages/admin/core/ListPage.js +5 -13
  176. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  177. package/dist/routes/pages/admin/core/ListPage.tsx +5 -15
  178. package/dist/types/index.d.ts +2 -4
  179. package/dist/types/solid-core.d.ts +12 -13
  180. package/package.json +1 -1
@@ -29,9 +29,10 @@ import { resolveButtonPresentation } from "../../../helpers/buttonPresentation";
29
29
  import { useDispatch, useSelector } from "react-redux";
30
30
  import styles from "./SolidListViewWrapper.module.css";
31
31
  import { isArchivedListRow } from "./columns/PublishStatusColumnDefaults";
32
- import { SolidBeforeListDataLoad, SolidListUiEventResponse, SolidLoadList, SolidDefinedFilter } from "../../../types/solid-core";
32
+ import { SolidBeforeListDataLoad, SolidListUiEventResponse, SolidLoadList } from "../../../types/solid-core";
33
33
  import { getExtensionFunction } from "../../../helpers/registry";
34
34
  import { useSession } from "../../../hooks/useSession";
35
+ import { resolveActiveUserId } from "../../../helpers/resolveActiveUserId";
35
36
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
36
37
  import { getSettingsMap, resolveRecordClickAction } from "../../../helpers/settingsPayload";
37
38
  import { useGetSolidSettingsQuery } from "../../../redux/api/solidSettingsApi";
@@ -106,6 +107,17 @@ export type SolidListViewHandle = {
106
107
  saved_filter_predicate?: any;
107
108
  predefined_search_predicate?: any;
108
109
  }) => void;
110
+ /**
111
+ * Returns the saved filters currently available in the list view, including
112
+ * any seeded/system filters supplied by the view.
113
+ */
114
+ getSavedFilters: () => any[];
115
+ /**
116
+ * Applies the currently available saved filter with the given name using the
117
+ * same selection path as clicking that filter in the search UI.
118
+ * Returns false when no saved filter with that name is available.
119
+ */
120
+ applySavedFilter: (name: string, variables?: Record<string, any>) => boolean;
109
121
  /**
110
122
  * Updates pagination state directly.
111
123
  * Use this when a caller needs to jump to a specific page window
@@ -197,12 +209,6 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
197
209
  const [showGlobalSearchElement, setShowGlobalSearchElement] = useState(false);
198
210
  const suppressNextFilterPaginationResetRef = useRef(false);
199
211
 
200
- // Filters offered by an onBeforeListDataLoad handler (event.definedFilters).
201
- // Each stays independently removable via the search bar's pill UI rather
202
- // than being baked directly into the outgoing query filter.
203
- const [definedFilters, setDefinedFilters] = useState<SolidDefinedFilter[]>([]);
204
- const definedFilterOverridesRef = useRef<Record<string, boolean>>({});
205
-
206
212
  const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();
207
213
 
208
214
  const handleCustomButtonClick = useHandleListCustomButtonClick();
@@ -219,7 +225,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
219
225
  () => normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || "form"),
220
226
  [editButtonUrl, pathname]
221
227
  );
222
- const rowClickFormMode = useMemo(() => {
228
+ const recordClickFormMode = useMemo(() => {
223
229
  const isSystemModule = solidListViewMetaData?.data?.solidView?.module?.isSystem === true;
224
230
 
225
231
  if (isSystemModule) {
@@ -665,6 +671,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
665
671
  listData: listViewData,
666
672
  totalRecords: totalRecords,
667
673
  type: "onListLoad",
674
+ isInitialLoad: !hasFiredInitialOnListLoadRef.current,
668
675
  viewMetadata: solidListViewMetaData?.data?.solidView,
669
676
  listViewLayout: listLayout,
670
677
  queryParams: {
@@ -677,6 +684,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
677
684
  session: session.data,
678
685
  params: params
679
686
  };
687
+ hasFiredInitialOnListLoadRef.current = true;
680
688
 
681
689
  if (dynamicHeader) {
682
690
  dynamicExtensionFunction = getExtensionFunction(dynamicHeader);
@@ -709,6 +717,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
709
717
  const latestFilterPredicatesRef = useRef<any>(filterPredicates);
710
718
  const latestSortFieldRef = useRef<string>(sortField);
711
719
  const latestSortOrderRef = useRef<1 | -1 | 0>(sortOrder);
720
+ const hasFiredInitialOnBeforeListDataLoadRef = useRef(false);
721
+ const hasFiredInitialOnListLoadRef = useRef(false);
712
722
 
713
723
  useEffect(() => {
714
724
  latestSortFieldRef.current = sortField;
@@ -830,8 +840,11 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
830
840
  // SolidBeforeListDataLoad Event that allows filter modification just before api call
831
841
  const dynamicHeader = solidListViewMetaData?.data?.solidView?.layout?.onBeforeListDataLoad;
832
842
  let dynamicExtensionFunction = null;
843
+ const isInitialLoad = !hasFiredInitialOnBeforeListDataLoadRef.current;
844
+ hasFiredInitialOnBeforeListDataLoadRef.current = true;
833
845
  const event: SolidBeforeListDataLoad = {
834
846
  type: "onBeforeListDataLoad",
847
+ isInitialLoad,
835
848
  fieldsMetadata: solidListViewMetaData?.data?.solidFieldsMetadata,
836
849
  viewMetadata: solidListViewMetaData?.data?.solidView,
837
850
  listViewLayout: solidListViewMetaData?.data.solidView.layout,
@@ -855,48 +868,10 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
855
868
  if (updatedListData && updatedListData?.filterApplied && updatedListData?.newFilter) {
856
869
  queryData = updatedListData?.newFilter;
857
870
  }
858
-
859
- // Reconcile handler-offered filters against any user removals from
860
- // this mount (definedFilterOverridesRef), then merge the ones still
861
- // applied into the outgoing query. Stale keys (no longer offered by
862
- // the handler) are dropped from the override map.
863
- const nextDefinedFilters = updatedListData?.definedFilters ?? [];
864
- const reconciledDefinedFilters: SolidDefinedFilter[] = nextDefinedFilters.map((def) => {
865
- const hasOverride = Object.prototype.hasOwnProperty.call(definedFilterOverridesRef.current, def.key);
866
- const applied = hasOverride ? definedFilterOverridesRef.current[def.key] : def.applied;
867
- definedFilterOverridesRef.current[def.key] = applied;
868
- return { ...def, applied };
869
- });
870
- Object.keys(definedFilterOverridesRef.current).forEach((key) => {
871
- if (!reconciledDefinedFilters.some((def) => def.key === key)) {
872
- delete definedFilterOverridesRef.current[key];
873
- }
874
- });
875
- setDefinedFilters(reconciledDefinedFilters);
876
-
877
- const activeDefinedFilterPredicates = reconciledDefinedFilters
878
- .filter((def) => def.applied)
879
- .map((def) => def.predicate);
880
- if (activeDefinedFilterPredicates.length > 0) {
881
- // queryData.filters may be the same object reference as
882
- // latestFiltersRef.current (see assignment above) when the
883
- // handler didn't return a newFilter. Clone before mutating so we
884
- // never permanently bake handler predicates into that ref -
885
- // otherwise they'd accumulate/duplicate on every subsequent
886
- // fetch (pagination, sort, removal, ...) instead of being
887
- // recomputed fresh each time.
888
- const mergedFilters = queryData.filters ? structuredClone(queryData.filters) : {};
889
- mergedFilters.$and = Array.isArray(mergedFilters.$and) ? mergedFilters.$and : [];
890
- mergedFilters.$and.push(...activeDefinedFilterPredicates);
891
- queryData.filters = mergedFilters;
892
- }
893
871
  } catch (err) {
894
872
  console.error("Error executing onBeforeListDataLoad extension:", err);
895
873
  }
896
874
  }
897
- } else if (Object.keys(definedFilterOverridesRef.current).length > 0) {
898
- definedFilterOverridesRef.current = {};
899
- setDefinedFilters([]);
900
875
  }
901
876
 
902
877
  const queryString = qs.stringify(queryData, { encodeValuesOnly: true });
@@ -908,6 +883,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
908
883
  fileterTobeStored.custom_filter_predicate = latestFilterPredicatesRef.current.custom_filter_predicate || null;
909
884
  fileterTobeStored.search_predicate = latestFilterPredicatesRef.current.search_predicate || null;
910
885
  fileterTobeStored.saved_filter_predicate = latestFilterPredicatesRef.current.saved_filter_predicate || null;
886
+ fileterTobeStored.saved_filter_variables = latestFilterPredicatesRef.current.saved_filter_variables || {};
911
887
  fileterTobeStored.saved_filter_id = latestFilterPredicatesRef.current.saved_filter_id || null;
912
888
  fileterTobeStored.saved_filter_system_key = latestFilterPredicatesRef.current.saved_filter_system_key || null;
913
889
  fileterTobeStored.saved_filter_name = latestFilterPredicatesRef.current.saved_filter_name || null;
@@ -930,7 +906,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
930
906
  queryfilter.$and.push(filterPredicates.search_predicate);
931
907
  }
932
908
  if (filterPredicates.saved_filter_predicate) {
933
- queryfilter.$and.push(filterPredicates.saved_filter_predicate);
909
+ queryfilter.$and.push(filterPredicates.resolved_saved_filter_predicate ||
910
+ resolveActiveUserId(filterPredicates.saved_filter_predicate, user?.id));
934
911
  }
935
912
  if (filterPredicates.predefined_search_predicate) {
936
913
  queryfilter.$and.push(filterPredicates.predefined_search_predicate);
@@ -1012,26 +989,6 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1012
989
  // Force synchronous state updates
1013
990
  };
1014
991
 
1015
- // Removes a single handler-offered filter pill. The override persists for
1016
- // the rest of this mount (setQueryString reconciliation keeps it applied:false
1017
- // on subsequent fetches) but is not persisted beyond it.
1018
- const removeDefinedFilter = (key: string) => {
1019
- definedFilterOverridesRef.current[key] = false;
1020
- setDefinedFilters((prev) => prev.map((def) => (def.key === key ? { ...def, applied: false } : def)));
1021
- setFirst(0);
1022
- void setQueryString();
1023
- };
1024
-
1025
- // Applies a handler-offered filter the user picked from the "defined
1026
- // filters" list (one the handler returned with applied:false by default).
1027
- // Mirrors removeDefinedFilter in the other direction.
1028
- const applyDefinedFilter = (key: string) => {
1029
- definedFilterOverridesRef.current[key] = true;
1030
- setDefinedFilters((prev) => prev.map((def) => (def.key === key ? { ...def, applied: true } : def)));
1031
- setFirst(0);
1032
- void setQueryString();
1033
- };
1034
-
1035
992
  // clear Filter
1036
993
  const clearFilter = () => {
1037
994
  if (solidListViewMetaData) {
@@ -1069,6 +1026,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1069
1026
  applyFilter: (filter) => {
1070
1027
  handleApplyCustomFilter(filter);
1071
1028
  },
1029
+ getSavedFilters: () => solidGlobalSearchElementRef.current?.getSavedFilters?.() ?? [],
1030
+ applySavedFilter: (name, variables) => solidGlobalSearchElementRef.current?.applySavedFilterByName?.(name, variables) ?? false,
1072
1031
  setPagination: (nextFirst, nextRows) => {
1073
1032
  setFirst(nextFirst);
1074
1033
  setRows(nextRows);
@@ -1224,7 +1183,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1224
1183
  column,
1225
1184
  setLightboxUrls,
1226
1185
  setOpenLightbox,
1227
- embeded: params.embeded
1186
+ embeded: params.embeded,
1187
+ recordClickAction: recordClickFormMode
1228
1188
  });
1229
1189
  } else {
1230
1190
  return null;
@@ -1236,7 +1196,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1236
1196
  column,
1237
1197
  setLightboxUrls,
1238
1198
  setOpenLightbox,
1239
- embeded: params.embeded
1199
+ embeded: params.embeded,
1200
+ recordClickAction: recordClickFormMode
1240
1201
  });
1241
1202
  }
1242
1203
  });
@@ -1462,30 +1423,34 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1462
1423
  </p>
1463
1424
  </div> */}
1464
1425
  {params.embeded === false && (
1465
- <div className={`${showGlobalSearchElement ? "flex" : "hidden lg:flex"} mt-3 lg:mt-0 w-full lg:flex lg:min-w-0`}>
1466
- {/* Keep global search mounted for now because list bootstrap/filter hydration still flows through this element. */}
1467
- <SolidGlobalSearchElement
1468
- key={params.modelName}
1469
- viewType="list"
1470
- showSaveFilterPopup={showSaveFilterPopup}
1471
- setShowSaveFilterPopup={setShowSaveFilterPopup}
1472
- ref={solidGlobalSearchElementRef}
1473
- viewData={solidListViewMetaData}
1474
- handleApplyCustomFilter={handleApplyCustomFilter}
1475
- filterPredicates={filterPredicates}
1476
- definedFilters={definedFilters}
1477
- onRemoveDefinedFilter={removeDefinedFilter}
1478
- onApplyDefinedFilter={applyDefinedFilter}
1479
- >
1480
- </SolidGlobalSearchElement>
1481
- </div>
1426
+ <>
1427
+
1428
+ {/* Global search element: always visible on desktop (lg+), toggled via search button below lg */}
1429
+ {/* Base `hidden` must be avoided here: the consuming app's Tailwind CSS loads after this
1430
+ library's generated CSS, so the app's base `.hidden` would override our media-scoped
1431
+ `lg:flex`. Only media-scoped visibility classes are safe on this element. */}
1432
+ <div className={`${showGlobalSearchElement ? "flex" : "max-lg:hidden lg:flex"} w-full mt-3 lg:mt-0 lg:min-w-0`}>
1433
+ {/* Keep global search mounted for now because list bootstrap/filter hydration still flows through this element. */}
1434
+ <SolidGlobalSearchElement
1435
+ key={params.modelName}
1436
+ viewType="list"
1437
+ showSaveFilterPopup={showSaveFilterPopup}
1438
+ setShowSaveFilterPopup={setShowSaveFilterPopup}
1439
+ ref={solidGlobalSearchElementRef}
1440
+ viewData={solidListViewMetaData}
1441
+ handleApplyCustomFilter={handleApplyCustomFilter}
1442
+ filterPredicates={filterPredicates}
1443
+ >
1444
+ </SolidGlobalSearchElement>
1445
+ </div>
1446
+ </>
1482
1447
  )}
1483
1448
 
1484
1449
  </div>
1485
1450
  <div className="flex items-center solid-header-buttons-wrapper solid-list-toolbar-actions lg:ml-auto">
1486
1451
  <SolidHeaderRequestStatus label={headerRequestStatusLabel} />
1487
1452
  {params.embeded === false && (
1488
- <div className="flex lg:hidden">
1453
+ <div className="solid-list-search-toggle">
1489
1454
  <SolidButton
1490
1455
  type="button"
1491
1456
  size="small"
@@ -1675,7 +1640,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1675
1640
  params.handleEditClickForEmbeddedView(rowData?.id);
1676
1641
  } else {
1677
1642
  storeCurrentModelViewContext();
1678
- router.push(`${editBaseUrl}/${rowData?.id}?viewMode=${rowClickFormMode}&${buildEditNavigationQueryString(rowData)}`);
1643
+ router.push(`${editBaseUrl}/${rowData?.id}?viewMode=${recordClickFormMode}&${buildEditNavigationQueryString(rowData)}`);
1679
1644
  }
1680
1645
  }
1681
1646
  }
@@ -1716,30 +1681,30 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1716
1681
  const presentation = resolveButtonPresentation(button?.attrs);
1717
1682
  if (!presentation.showIcon && !presentation.showLabel) return null;
1718
1683
  return (
1719
- <SolidButton
1720
- type="button"
1721
- icon={presentation.icon}
1722
- iconPos={presentation.iconPos}
1723
- label={presentation.label}
1724
- tooltip={presentation.tooltip}
1725
- aria-label={presentation.isIconOnly ? (presentation.tooltip ?? button?.attrs?.action ?? "Action") : undefined}
1726
- className={[
1727
- "solid-inline-row-button w-full text-left gap-2",
1728
- presentation.isIconOnly ? "solid-icon-button" : "",
1729
- presentation.buttonClassName ? presentation.buttonClassName : ""
1730
- ].filter(Boolean).join(" ")}
1731
- size="small"
1732
- variant="ghost"
1733
- onClick={() => {
1734
- const event = {
1735
- params,
1736
- rowData: rowData,
1737
- solidListViewMetaData:
1738
- solidListViewMetaData?.data,
1739
- };
1740
- handleCustomButtonClick(button.attrs, event);
1741
- }}
1742
- />
1684
+ <SolidButton
1685
+ type="button"
1686
+ icon={presentation.icon}
1687
+ iconPos={presentation.iconPos}
1688
+ label={presentation.label}
1689
+ tooltip={presentation.tooltip}
1690
+ aria-label={presentation.isIconOnly ? (presentation.tooltip ?? button?.attrs?.action ?? "Action") : undefined}
1691
+ className={[
1692
+ "solid-inline-row-button w-full text-left gap-2",
1693
+ presentation.isIconOnly ? "solid-icon-button" : "",
1694
+ presentation.buttonClassName ? presentation.buttonClassName : ""
1695
+ ].filter(Boolean).join(" ")}
1696
+ size="small"
1697
+ variant="ghost"
1698
+ onClick={() => {
1699
+ const event = {
1700
+ params,
1701
+ rowData: rowData,
1702
+ solidListViewMetaData:
1703
+ solidListViewMetaData?.data,
1704
+ };
1705
+ handleCustomButtonClick(button.attrs, event);
1706
+ }}
1707
+ />
1743
1708
  );
1744
1709
  })()
1745
1710
  );
@@ -6,9 +6,10 @@ export type SolidListViewColumnParams = {
6
6
  setLightboxUrls?: any;
7
7
  setOpenLightbox?: any;
8
8
  embeded?: boolean;
9
+ recordClickAction?: 'view' | 'edit';
9
10
  };
10
11
  export declare const isFieldSortable: (fieldMetadata: any) => boolean;
11
12
  export declare const getNumberOfInputs: (matchMode: any) => number | null;
12
13
  export declare const applyListColumnLayoutAttrs: (columnElement: React.ReactNode, column: any) => string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined;
13
- export declare const SolidListViewColumn: ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox, embeded }: SolidListViewColumnParams) => string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined;
14
+ export declare const SolidListViewColumn: ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox, embeded, recordClickAction }: SolidListViewColumnParams) => string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined;
14
15
  //# sourceMappingURL=SolidListViewColumn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidListViewColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewColumn.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAqB1B,MAAM,MAAM,yBAAyB,GAAG;IACpC,qBAAqB,EAAE,GAAG,CAAC;IAC3B,aAAa,EAAE,GAAG,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe,kBAAmB,GAAG,KAAG,OAMpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAAe,GAAG,KAAG,MAAM,GAAG,IAyB3D,CAAA;AAUD,eAAO,MAAM,0BAA0B,kBAAmB,MAAM,SAAS,UAAU,GAAG,kJAkCrF,CAAC;AAoBF,eAAO,MAAM,mBAAmB,gGAAiG,yBAAyB,kJAoGzJ,CAAC"}
1
+ {"version":3,"file":"SolidListViewColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewColumn.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAqB1B,MAAM,MAAM,yBAAyB,GAAG;IACpC,qBAAqB,EAAE,GAAG,CAAC;IAC3B,aAAa,EAAE,GAAG,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC,CAAC;AAEF,eAAO,MAAM,eAAe,kBAAmB,GAAG,KAAG,OAMpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAAe,GAAG,KAAG,MAAM,GAAG,IAyB3D,CAAA;AAUD,eAAO,MAAM,0BAA0B,kBAAmB,MAAM,SAAS,UAAU,GAAG,kJAkCrF,CAAC;AAoBF,eAAO,MAAM,mBAAmB,mHAAoH,yBAAyB,kJAoG5K,CAAC"}
@@ -114,7 +114,7 @@ export var applyListColumnLayoutAttrs = function (columnElement, column) {
114
114
  // };
115
115
  export var SolidListViewColumn = function (_a) {
116
116
  var _b;
117
- var solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox, embeded = _a.embeded;
117
+ var solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox, embeded = _a.embeded, recordClickAction = _a.recordClickAction;
118
118
  if (!isFieldSortable(fieldMetadata) && ((_b = column === null || column === void 0 ? void 0 : column.attrs) === null || _b === void 0 ? void 0 : _b.sortable)) {
119
119
  column = __assign(__assign({}, column), { attrs: __assign(__assign({}, column.attrs), { sortable: false }) });
120
120
  }
@@ -160,7 +160,7 @@ export var SolidListViewColumn = function (_a) {
160
160
  renderedColumn = SolidTimeColumn({ solidListViewMetaData: solidListViewMetaData, fieldMetadata: fieldMetadata, column: column });
161
161
  }
162
162
  else if (fieldMetadata.type === 'relation') {
163
- renderedColumn = SolidRelationColumn({ solidListViewMetaData: solidListViewMetaData, fieldMetadata: fieldMetadata, column: column, embeded: embeded });
163
+ renderedColumn = SolidRelationColumn({ solidListViewMetaData: solidListViewMetaData, fieldMetadata: fieldMetadata, column: column, embeded: embeded, recordClickAction: recordClickAction });
164
164
  }
165
165
  else if (fieldMetadata.type === 'mediaSingle') {
166
166
  renderedColumn = SolidMediaSingleColumn({ solidListViewMetaData: solidListViewMetaData, fieldMetadata: fieldMetadata, column: column, setLightboxUrls: setLightboxUrls, setOpenLightbox: setOpenLightbox });
@@ -1 +1 @@
1
- {"version":3,"file":"SolidListViewColumn.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport SolidBigintColumn from \"./columns/SolidBigintColumn\";\nimport SolidBooleanColumn from \"./columns/SolidBooleanColumn\";\nimport SolidComputedColumn from \"./columns/SolidComputedColumn\";\nimport SolidDateColumn from \"./columns/SolidDateColumn\";\nimport SolidDatetimeColumn from \"./columns/SolidDatetimeColumn\";\nimport SolidDecimalColumn from \"./columns/SolidDecimalColumn\";\nimport SolidExternalIdColumn from \"./columns/SolidExternalIdColumn\";\nimport SolidFloatColumn from \"./columns/SolidFloatColumn\";\nimport SolidIntColumn from \"./columns/SolidIntColumn\";\nimport SolidLongTextColumn from \"./columns/SolidLongTextColumn\";\nimport SolidMediaMultipleColumn from \"./columns/SolidMediaMultipleColumn\";\nimport SolidMediaSingleColumn from \"./columns/SolidMediaSingleColumn\";\nimport SolidRelationColumn from \"./columns/SolidRelationColumn\";\nimport SolidRichTextColumn from \"./columns/SolidRichTextColumn\";\nimport SolidSelectionDynamicColumn from \"./columns/SolidSelectionDynamicColumn\";\nimport SolidSelectionStaticColumn from \"./columns/SolidSelectionStaticColumn\";\nimport SolidShortTextColumn from \"./columns/SolidShortTextColumn\";\nimport SolidTimeColumn from \"./columns/SolidTimeColumn\";\nimport SolidUuidColumn from \"./columns/SolidUuidColumn\";\n\nexport type SolidListViewColumnParams = {\n solidListViewMetaData: any;\n fieldMetadata: any,\n column: any,\n setLightboxUrls?: any,\n setOpenLightbox?: any,\n embeded?: boolean; \n};\n\nexport const isFieldSortable = (fieldMetadata: any): boolean => {\n if (!fieldMetadata) return false;\n const type = fieldMetadata.type;\n if (type === 'mediaSingle' || type === 'mediaMultiple') return false;\n if (type === 'relation') return fieldMetadata.relationType === 'many-to-one';\n return true;\n};\n\nexport const getNumberOfInputs = (matchMode: any): number | null => {\n if (matchMode.label && matchMode.label === 'Not In') {\n matchMode = 'notIn';\n }\n\n switch (matchMode) {\n case 'between':\n return 2;\n case 'in':\n case 'notIn':\n return null;\n case 'startsWith':\n case 'contains':\n case 'notContains':\n case 'endsWith':\n case 'equals':\n case 'notEquals':\n case 'lt':\n case 'lte':\n case 'gt':\n case 'gte':\n return 1;\n default:\n return 1; // Default to single input if no specific match is found\n }\n}\n\nconst mergeClassNames = (...classNames: Array<string | undefined | null | false>) =>\n classNames.filter(Boolean).join(\" \");\n\nconst mergeStyles = (...styles: Array<React.CSSProperties | undefined | null>) =>\n styles.reduce<React.CSSProperties>((mergedStyles, style) => {\n return style ? { ...mergedStyles, ...style } : mergedStyles;\n }, {});\n\nexport const applyListColumnLayoutAttrs = (columnElement: React.ReactNode, column: any) => {\n if (!React.isValidElement(columnElement)) {\n return columnElement;\n }\n\n const attrs = column?.attrs ?? {};\n const props = columnElement.props as any;\n const className = mergeClassNames(\n props.className,\n attrs.className,\n attrs.columnClassName,\n attrs.cellClassName,\n );\n const headerClassName = mergeClassNames(\n props.headerClassName,\n attrs.headerClassName,\n );\n const style = mergeStyles(\n props.style,\n attrs.style,\n attrs.columnStyle,\n attrs.cellStyle,\n );\n const headerStyle = mergeStyles(\n props.headerStyle,\n attrs.headerStyle,\n );\n\n return React.cloneElement(columnElement, {\n className: className || undefined,\n headerClassName: headerClassName || undefined,\n style: Object.keys(style).length > 0 ? style : undefined,\n headerStyle: Object.keys(headerStyle).length > 0 ? headerStyle : undefined,\n } as any);\n};\n\n// // @ts-ignore\n// const components = require.context('./columns', false, /Solid.*Column\\.tsx$/);\n\n// // Define a function to dynamically load components based on type\n// const loadComponentByType = async (type: string) => {\n// try {\n// const componentName = `./columns/Solid${type.charAt(0).toUpperCase() + type.slice(1)}Column.tsx`;\n\n// // Dynamically import the component based on type\n// const componentModule = await import(componentName);\n\n// return componentModule.default;\n// } catch (error) {\n// console.error(`Failed to load component for type: ${type}`, error);\n// return null;\n// }\n// };\n\nexport const SolidListViewColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox, embeded }: SolidListViewColumnParams) => {\n\n if (!isFieldSortable(fieldMetadata) && column?.attrs?.sortable) {\n column = { ...column, attrs: { ...column.attrs, sortable: false } };\n }\n\n let renderedColumn: React.ReactNode;\n\n // And finally we can implement additional switching logic based on certain special fields. \n if (fieldMetadata.name === 'id') {\n renderedColumn = SolidIntColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'int') {\n renderedColumn = SolidIntColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'bigint') {\n renderedColumn = SolidBigintColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'float') {\n renderedColumn = SolidFloatColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'decimal') {\n renderedColumn = SolidDecimalColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'shortText') {\n renderedColumn = SolidShortTextColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n else if (fieldMetadata.type === 'longText') {\n renderedColumn = SolidLongTextColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'richText') {\n renderedColumn = SolidRichTextColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'email') {\n renderedColumn = SolidShortTextColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'boolean') {\n renderedColumn = SolidBooleanColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'date') {\n renderedColumn = SolidDateColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'datetime') {\n renderedColumn = SolidDatetimeColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'time') {\n renderedColumn = SolidTimeColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'relation') {\n renderedColumn = SolidRelationColumn({ solidListViewMetaData, fieldMetadata, column, embeded });\n }\n else if (fieldMetadata.type === 'mediaSingle') {\n renderedColumn = SolidMediaSingleColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n else if (fieldMetadata.type === 'mediaMultiple') {\n renderedColumn = SolidMediaMultipleColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n else if (fieldMetadata.type === 'selectionStatic') {\n renderedColumn = SolidSelectionStaticColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'selectionDynamic') {\n renderedColumn = SolidSelectionDynamicColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'computed') {\n renderedColumn = SolidComputedColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'externalId') {\n renderedColumn = SolidExternalIdColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'uuid') {\n renderedColumn = SolidUuidColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else {\n renderedColumn = SolidShortTextColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n\n return applyListColumnLayoutAttrs(renderedColumn, column);\n // // Load everything else based on type and dynamically.\n // else {\n // const ComponentFound = await loadComponentByType(fieldMetadata.type);\n // const ComponentNotFound = ({ solidListViewMetaData, fieldMetadata, column }: SolidListViewColumnParams) => (\n // <Column\n // key={fieldMetadata.name}\n // field={fieldMetadata.name}\n // header={fieldMetadata.displayName}\n // className=\"text-sm\"\n // sortable={false}\n // filter={false}\n // showFilterOperator={false}\n // body={() => (<span>Type not supported</span>)}\n // style={{ minWidth: \"12rem\" }}\n // headerClassName=\"table-header-fs\"\n // ></Column>\n // );\n\n // return ComponentFound ? ComponentFound({ solidListViewMetaData, fieldMetadata, column }) : ComponentNotFound({ solidListViewMetaData, fieldMetadata, column });\n // }\n\n // TODO: we can implement additional switching logic based on the widget type being used to render the list view column.\n\n};\n"]}
1
+ {"version":3,"file":"SolidListViewColumn.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport SolidBigintColumn from \"./columns/SolidBigintColumn\";\nimport SolidBooleanColumn from \"./columns/SolidBooleanColumn\";\nimport SolidComputedColumn from \"./columns/SolidComputedColumn\";\nimport SolidDateColumn from \"./columns/SolidDateColumn\";\nimport SolidDatetimeColumn from \"./columns/SolidDatetimeColumn\";\nimport SolidDecimalColumn from \"./columns/SolidDecimalColumn\";\nimport SolidExternalIdColumn from \"./columns/SolidExternalIdColumn\";\nimport SolidFloatColumn from \"./columns/SolidFloatColumn\";\nimport SolidIntColumn from \"./columns/SolidIntColumn\";\nimport SolidLongTextColumn from \"./columns/SolidLongTextColumn\";\nimport SolidMediaMultipleColumn from \"./columns/SolidMediaMultipleColumn\";\nimport SolidMediaSingleColumn from \"./columns/SolidMediaSingleColumn\";\nimport SolidRelationColumn from \"./columns/SolidRelationColumn\";\nimport SolidRichTextColumn from \"./columns/SolidRichTextColumn\";\nimport SolidSelectionDynamicColumn from \"./columns/SolidSelectionDynamicColumn\";\nimport SolidSelectionStaticColumn from \"./columns/SolidSelectionStaticColumn\";\nimport SolidShortTextColumn from \"./columns/SolidShortTextColumn\";\nimport SolidTimeColumn from \"./columns/SolidTimeColumn\";\nimport SolidUuidColumn from \"./columns/SolidUuidColumn\";\n\nexport type SolidListViewColumnParams = {\n solidListViewMetaData: any;\n fieldMetadata: any,\n column: any,\n setLightboxUrls?: any,\n setOpenLightbox?: any,\n embeded?: boolean,\n recordClickAction?: 'view' | 'edit'; \n};\n\nexport const isFieldSortable = (fieldMetadata: any): boolean => {\n if (!fieldMetadata) return false;\n const type = fieldMetadata.type;\n if (type === 'mediaSingle' || type === 'mediaMultiple') return false;\n if (type === 'relation') return fieldMetadata.relationType === 'many-to-one';\n return true;\n};\n\nexport const getNumberOfInputs = (matchMode: any): number | null => {\n if (matchMode.label && matchMode.label === 'Not In') {\n matchMode = 'notIn';\n }\n\n switch (matchMode) {\n case 'between':\n return 2;\n case 'in':\n case 'notIn':\n return null;\n case 'startsWith':\n case 'contains':\n case 'notContains':\n case 'endsWith':\n case 'equals':\n case 'notEquals':\n case 'lt':\n case 'lte':\n case 'gt':\n case 'gte':\n return 1;\n default:\n return 1; // Default to single input if no specific match is found\n }\n}\n\nconst mergeClassNames = (...classNames: Array<string | undefined | null | false>) =>\n classNames.filter(Boolean).join(\" \");\n\nconst mergeStyles = (...styles: Array<React.CSSProperties | undefined | null>) =>\n styles.reduce<React.CSSProperties>((mergedStyles, style) => {\n return style ? { ...mergedStyles, ...style } : mergedStyles;\n }, {});\n\nexport const applyListColumnLayoutAttrs = (columnElement: React.ReactNode, column: any) => {\n if (!React.isValidElement(columnElement)) {\n return columnElement;\n }\n\n const attrs = column?.attrs ?? {};\n const props = columnElement.props as any;\n const className = mergeClassNames(\n props.className,\n attrs.className,\n attrs.columnClassName,\n attrs.cellClassName,\n );\n const headerClassName = mergeClassNames(\n props.headerClassName,\n attrs.headerClassName,\n );\n const style = mergeStyles(\n props.style,\n attrs.style,\n attrs.columnStyle,\n attrs.cellStyle,\n );\n const headerStyle = mergeStyles(\n props.headerStyle,\n attrs.headerStyle,\n );\n\n return React.cloneElement(columnElement, {\n className: className || undefined,\n headerClassName: headerClassName || undefined,\n style: Object.keys(style).length > 0 ? style : undefined,\n headerStyle: Object.keys(headerStyle).length > 0 ? headerStyle : undefined,\n } as any);\n};\n\n// // @ts-ignore\n// const components = require.context('./columns', false, /Solid.*Column\\.tsx$/);\n\n// // Define a function to dynamically load components based on type\n// const loadComponentByType = async (type: string) => {\n// try {\n// const componentName = `./columns/Solid${type.charAt(0).toUpperCase() + type.slice(1)}Column.tsx`;\n\n// // Dynamically import the component based on type\n// const componentModule = await import(componentName);\n\n// return componentModule.default;\n// } catch (error) {\n// console.error(`Failed to load component for type: ${type}`, error);\n// return null;\n// }\n// };\n\nexport const SolidListViewColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox, embeded, recordClickAction }: SolidListViewColumnParams) => {\n\n if (!isFieldSortable(fieldMetadata) && column?.attrs?.sortable) {\n column = { ...column, attrs: { ...column.attrs, sortable: false } };\n }\n\n let renderedColumn: React.ReactNode;\n\n // And finally we can implement additional switching logic based on certain special fields. \n if (fieldMetadata.name === 'id') {\n renderedColumn = SolidIntColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'int') {\n renderedColumn = SolidIntColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'bigint') {\n renderedColumn = SolidBigintColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'float') {\n renderedColumn = SolidFloatColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'decimal') {\n renderedColumn = SolidDecimalColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'shortText') {\n renderedColumn = SolidShortTextColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n else if (fieldMetadata.type === 'longText') {\n renderedColumn = SolidLongTextColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'richText') {\n renderedColumn = SolidRichTextColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'email') {\n renderedColumn = SolidShortTextColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'boolean') {\n renderedColumn = SolidBooleanColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'date') {\n renderedColumn = SolidDateColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'datetime') {\n renderedColumn = SolidDatetimeColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'time') {\n renderedColumn = SolidTimeColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'relation') {\n renderedColumn = SolidRelationColumn({ solidListViewMetaData, fieldMetadata, column, embeded, recordClickAction });\n }\n else if (fieldMetadata.type === 'mediaSingle') {\n renderedColumn = SolidMediaSingleColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n else if (fieldMetadata.type === 'mediaMultiple') {\n renderedColumn = SolidMediaMultipleColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n else if (fieldMetadata.type === 'selectionStatic') {\n renderedColumn = SolidSelectionStaticColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'selectionDynamic') {\n renderedColumn = SolidSelectionDynamicColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'computed') {\n renderedColumn = SolidComputedColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'externalId') {\n renderedColumn = SolidExternalIdColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else if (fieldMetadata.type === 'uuid') {\n renderedColumn = SolidUuidColumn({ solidListViewMetaData, fieldMetadata, column });\n }\n else {\n renderedColumn = SolidShortTextColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });\n }\n\n return applyListColumnLayoutAttrs(renderedColumn, column);\n // // Load everything else based on type and dynamically.\n // else {\n // const ComponentFound = await loadComponentByType(fieldMetadata.type);\n // const ComponentNotFound = ({ solidListViewMetaData, fieldMetadata, column }: SolidListViewColumnParams) => (\n // <Column\n // key={fieldMetadata.name}\n // field={fieldMetadata.name}\n // header={fieldMetadata.displayName}\n // className=\"text-sm\"\n // sortable={false}\n // filter={false}\n // showFilterOperator={false}\n // body={() => (<span>Type not supported</span>)}\n // style={{ minWidth: \"12rem\" }}\n // headerClassName=\"table-header-fs\"\n // ></Column>\n // );\n\n // return ComponentFound ? ComponentFound({ solidListViewMetaData, fieldMetadata, column }) : ComponentNotFound({ solidListViewMetaData, fieldMetadata, column });\n // }\n\n // TODO: we can implement additional switching logic based on the widget type being used to render the list view column.\n\n};\n"]}
@@ -25,7 +25,8 @@ export type SolidListViewColumnParams = {
25
25
  column: any,
26
26
  setLightboxUrls?: any,
27
27
  setOpenLightbox?: any,
28
- embeded?: boolean;
28
+ embeded?: boolean,
29
+ recordClickAction?: 'view' | 'edit';
29
30
  };
30
31
 
31
32
  export const isFieldSortable = (fieldMetadata: any): boolean => {
@@ -125,7 +126,7 @@ export const applyListColumnLayoutAttrs = (columnElement: React.ReactNode, colum
125
126
  // }
126
127
  // };
127
128
 
128
- export const SolidListViewColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox, embeded }: SolidListViewColumnParams) => {
129
+ export const SolidListViewColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox, embeded, recordClickAction }: SolidListViewColumnParams) => {
129
130
 
130
131
  if (!isFieldSortable(fieldMetadata) && column?.attrs?.sortable) {
131
132
  column = { ...column, attrs: { ...column.attrs, sortable: false } };
@@ -174,7 +175,7 @@ export const SolidListViewColumn = ({ solidListViewMetaData, fieldMetadata, colu
174
175
  renderedColumn = SolidTimeColumn({ solidListViewMetaData, fieldMetadata, column });
175
176
  }
176
177
  else if (fieldMetadata.type === 'relation') {
177
- renderedColumn = SolidRelationColumn({ solidListViewMetaData, fieldMetadata, column, embeded });
178
+ renderedColumn = SolidRelationColumn({ solidListViewMetaData, fieldMetadata, column, embeded, recordClickAction });
178
179
  }
179
180
  else if (fieldMetadata.type === 'mediaSingle') {
180
181
  renderedColumn = SolidMediaSingleColumn({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox });
@@ -158,7 +158,7 @@ export var SolidListViewConfigure = function (_a) {
158
158
  true) && _jsx(SolidDropdownMenuSeparator, {}), isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes("".concat(permissionExpression('userViewMetadata', 'create'))) && (_jsxs(SolidDropdownMenuSub, { children: [_jsxs(SolidDropdownMenuSubTrigger, { className: "solid-header-dropdown-item", children: [_jsx(SlidersHorizontal, { size: 14, className: "solid-header-action-button-icon" }), _jsx("span", { className: "solid-header-action-button-label", children: "Layout" })] }), _jsxs(SolidDropdownMenuSubContent, { className: "customize-layout-panel", children: [showSwitchType && (_jsxs(_Fragment, { children: [_jsx(SolidDropdownMenuLabel, { children: "Switch Type" }), _jsx(SolidDropdownMenuRadioGroup, { value: view, onValueChange: handleViewTypeChange, children: visibleViewModes.map(function (option) { return (_jsx(SolidDropdownMenuRadioItem, { value: option.type, children: capitalize(option.type) }, option.type)); }) }), _jsx(SolidDropdownMenuSeparator, {})] })), _jsx(SolidDropdownMenuLabel, { children: "Row Spacing" }), _jsx(SolidDropdownMenuRadioGroup, { value: size, onValueChange: function (value) { return setSize(value); }, children: sizeOptions.map(function (option) { return (_jsx(SolidDropdownMenuRadioItem, { value: option.value, children: option.label }, option.value)); }) }), _jsx(SolidDropdownMenuSeparator, {}), _jsxs(SolidDropdownMenuItem, { onSelect: function () {
159
159
  setShowColumnSelectorDialog(true);
160
160
  setIsCogMenuOpen(false);
161
- }, children: [_jsx(Table, { size: 14, className: "solid-header-action-button-icon" }), _jsx("span", { className: "solid-header-action-button-label", children: "Column Selector" })] })] })] })), isHeaderActionEnabled('savedFilters') && actionsAllowed.includes("".concat(permissionExpression('savedFilters', 'create'))) && (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () {
161
+ }, children: [_jsx(Table, { size: 14, className: "solid-header-action-button-icon" }), _jsx("span", { className: "solid-header-action-button-label", children: "Columns" })] })] })] })), isHeaderActionEnabled('savedFilters') && actionsAllowed.includes("".concat(permissionExpression('savedFilters', 'create'))) && (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () {
162
162
  setShowSaveFilterPopup(true);
163
163
  setIsCogMenuOpen(false);
164
164
  }, children: [_jsx(Save, { size: 14, className: "solid-header-action-button-icon" }), _jsx("span", { className: "solid-header-action-button-label", children: "Save Custom Filter" })] })), _jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () {