@solidxai/core-ui 0.1.14-beta.4 → 0.1.14-beta.9

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 (176) 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/SettingsComponent.module.css +4 -1
  5. package/dist/components/common/SolidFieldTooltip.d.ts.map +1 -1
  6. package/dist/components/common/SolidFieldTooltip.js +1 -1
  7. package/dist/components/common/SolidFieldTooltip.js.map +1 -1
  8. package/dist/components/common/SolidFieldTooltip.tsx +1 -0
  9. package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
  10. package/dist/components/common/SolidFormStepper.js +7 -6
  11. package/dist/components/common/SolidFormStepper.js.map +1 -1
  12. package/dist/components/common/SolidFormStepper.tsx +7 -1
  13. package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
  14. package/dist/components/common/SolidThemeProvider.js +127 -11
  15. package/dist/components/common/SolidThemeProvider.js.map +1 -1
  16. package/dist/components/common/SolidThemeProvider.tsx +104 -22
  17. package/dist/components/core/card/CardGrid.d.ts +1 -1
  18. package/dist/components/core/card/CardGrid.d.ts.map +1 -1
  19. package/dist/components/core/card/CardGrid.js +2 -2
  20. package/dist/components/core/card/CardGrid.js.map +1 -1
  21. package/dist/components/core/card/CardGrid.tsx +4 -0
  22. package/dist/components/core/card/CardItem.d.ts +2 -0
  23. package/dist/components/core/card/CardItem.d.ts.map +1 -1
  24. package/dist/components/core/card/CardItem.js +4 -3
  25. package/dist/components/core/card/CardItem.js.map +1 -1
  26. package/dist/components/core/card/CardItem.tsx +15 -0
  27. package/dist/components/core/card/SolidCardView.d.ts +28 -1
  28. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  29. package/dist/components/core/card/SolidCardView.js +99 -44
  30. package/dist/components/core/card/SolidCardView.js.map +1 -1
  31. package/dist/components/core/card/SolidCardView.tsx +124 -7
  32. package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
  33. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  34. package/dist/components/core/card/SolidCardViewConfigure.js +15 -6
  35. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  36. package/dist/components/core/card/SolidCardViewConfigure.tsx +34 -0
  37. package/dist/components/core/card/cardViewRegistry.d.ts +7 -0
  38. package/dist/components/core/card/cardViewRegistry.d.ts.map +1 -0
  39. package/dist/components/core/card/cardViewRegistry.js +17 -0
  40. package/dist/components/core/card/cardViewRegistry.js.map +1 -0
  41. package/dist/components/core/card/cardViewRegistry.ts +23 -0
  42. package/dist/components/core/common/PDFViewer.d.ts +9 -5
  43. package/dist/components/core/common/PDFViewer.d.ts.map +1 -1
  44. package/dist/components/core/common/PDFViewer.js +10 -102
  45. package/dist/components/core/common/PDFViewer.js.map +1 -1
  46. package/dist/components/core/common/PDFViewer.tsx +29 -88
  47. package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts +12 -0
  48. package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts.map +1 -0
  49. package/dist/components/core/common/SolidCollectionRowActionMenuItems.js +50 -0
  50. package/dist/components/core/common/SolidCollectionRowActionMenuItems.js.map +1 -0
  51. package/dist/components/core/common/SolidCollectionRowActionMenuItems.tsx +91 -0
  52. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
  53. package/dist/components/core/common/SolidCreateButton.js +2 -2
  54. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  55. package/dist/components/core/common/SolidCreateButton.tsx +22 -2
  56. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  57. package/dist/components/core/common/SolidGlobalSearchElement.js +137 -134
  58. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  59. package/dist/components/core/common/SolidGlobalSearchElement.tsx +127 -119
  60. package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
  61. package/dist/components/core/form/SolidFormActionHeader.js +21 -21
  62. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  63. package/dist/components/core/form/SolidFormActionHeader.tsx +62 -53
  64. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  65. package/dist/components/core/form/SolidFormView.js +5 -2
  66. package/dist/components/core/form/SolidFormView.js.map +1 -1
  67. package/dist/components/core/form/SolidFormView.tsx +7 -2
  68. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  69. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  70. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  71. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  72. package/dist/components/core/kanban/KanbanBoard.tsx +3 -1
  73. package/dist/components/core/kanban/KanbanCard.d.ts +2 -0
  74. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  75. package/dist/components/core/kanban/KanbanCard.js +4 -2
  76. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  77. package/dist/components/core/kanban/KanbanCard.tsx +14 -1
  78. package/dist/components/core/kanban/KanbanColumn.d.ts +3 -1
  79. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  80. package/dist/components/core/kanban/KanbanColumn.js +2 -2
  81. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  82. package/dist/components/core/kanban/KanbanColumn.tsx +4 -2
  83. package/dist/components/core/kanban/SolidKanbanView.d.ts +25 -1
  84. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  85. package/dist/components/core/kanban/SolidKanbanView.js +89 -50
  86. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  87. package/dist/components/core/kanban/SolidKanbanView.tsx +82 -9
  88. package/dist/components/core/kanban/kanbanViewRegistry.d.ts +7 -0
  89. package/dist/components/core/kanban/kanbanViewRegistry.d.ts.map +1 -0
  90. package/dist/components/core/kanban/kanbanViewRegistry.js +17 -0
  91. package/dist/components/core/kanban/kanbanViewRegistry.js.map +1 -0
  92. package/dist/components/core/kanban/kanbanViewRegistry.ts +23 -0
  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 +11 -6
  97. package/dist/components/core/list/SolidListView.js.map +1 -1
  98. package/dist/components/core/list/SolidListView.tsx +88 -45
  99. package/dist/components/core/list/SolidListViewConfigure.js +1 -1
  100. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  101. package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
  102. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  103. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
  104. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  105. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
  106. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  107. package/dist/components/core/model/CreateModel.js +2 -1
  108. package/dist/components/core/model/CreateModel.js.map +1 -1
  109. package/dist/components/core/model/CreateModel.tsx +2 -0
  110. package/dist/components/core/model/FieldMetaData.d.ts +1 -1
  111. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  112. package/dist/components/core/model/FieldMetaData.js +8 -8
  113. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  114. package/dist/components/core/model/FieldMetaData.tsx +2 -2
  115. package/dist/components/core/model/FieldMetaDataForm.css +119 -0
  116. package/dist/components/core/model/FieldMetaDataForm.js +1 -1
  117. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  118. package/dist/components/core/model/FieldMetaDataForm.tsx +1 -1
  119. package/dist/components/core/module/ModuleMetadataExplorer.css +64 -0
  120. package/dist/components/core/module/ModulePackageDialog.css +117 -12
  121. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  122. package/dist/components/core/tree/SolidTreeView.js +6 -3
  123. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  124. package/dist/components/core/tree/SolidTreeView.tsx +35 -13
  125. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  126. package/dist/components/layout/AdminHeaderActions.js +15 -10
  127. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  128. package/dist/components/layout/AdminHeaderActions.tsx +15 -8
  129. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  130. package/dist/components/layout/AdminTopHeader.js +1 -18
  131. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  132. package/dist/components/layout/AdminTopHeader.tsx +3 -21
  133. package/dist/helpers/resolveActiveUserId.d.ts +13 -0
  134. package/dist/helpers/resolveActiveUserId.d.ts.map +1 -0
  135. package/dist/helpers/resolveActiveUserId.js +86 -0
  136. package/dist/helpers/resolveActiveUserId.js.map +1 -0
  137. package/dist/helpers/resolveActiveUserId.ts +90 -0
  138. package/dist/index.d.ts +5 -0
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +3 -0
  141. package/dist/index.js.map +1 -1
  142. package/dist/index.ts +5 -0
  143. package/dist/resources/globals.css +15 -0
  144. package/dist/resources/solid-custom.css +18 -1
  145. package/dist/resources/solid-tailwind-generated.css +1 -1
  146. package/dist/resources/themes/solid-dark-enterprise/theme-variables.css +28 -0
  147. package/dist/resources/themes/solid-dark-enterprise/theme.css +926 -0
  148. package/dist/resources/themes/solid-dark-modern/theme-variables.css +27 -0
  149. package/dist/resources/themes/solid-dark-modern/theme.css +600 -0
  150. package/dist/resources/themes/solid-light-enterprise/theme-variables.css +28 -0
  151. package/dist/resources/themes/solid-light-enterprise/theme.css +930 -0
  152. package/dist/resources/themes/solid-light-modern/theme-variables.css +31 -0
  153. package/dist/resources/themes/solid-light-modern/theme.css +1041 -0
  154. package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
  155. package/dist/routes/pages/admin/core/CardPage.js +15 -2
  156. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  157. package/dist/routes/pages/admin/core/CardPage.tsx +17 -2
  158. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  159. package/dist/routes/pages/admin/core/DashboardPage.js +31 -3
  160. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  161. package/dist/routes/pages/admin/core/DashboardPage.tsx +39 -11
  162. package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
  163. package/dist/routes/pages/admin/core/KanbanPage.js +15 -2
  164. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  165. package/dist/routes/pages/admin/core/KanbanPage.tsx +17 -2
  166. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  167. package/dist/routes/pages/admin/core/ListPage.js +5 -13
  168. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  169. package/dist/routes/pages/admin/core/ListPage.tsx +5 -15
  170. package/dist/theme/theme-registry.d.ts +6 -0
  171. package/dist/theme/theme-registry.d.ts.map +1 -0
  172. package/dist/theme/theme-registry.js +65 -0
  173. package/dist/theme/theme-registry.js.map +1 -0
  174. package/dist/theme/theme-registry.ts +78 -0
  175. package/dist/types/solid-core.d.ts +8 -0
  176. package/package.json +1 -1
@@ -1,10 +1,7 @@
1
1
  import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
2
2
  import FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from "../../../components/core/common/FilterComponent";
3
3
  import { toTitleCase } from "../../../helpers/helpers";
4
- import { usePathname } from "../../../hooks/usePathname";
5
- import { useRouter } from "../../../hooks/useRouter";
6
- import { useSearchParams } from "../../../hooks/useSearchParams";
7
- import {clearFilterObjectFromLocalStorage,getFilterObjectFromLocalStorage,
4
+ import {clearFilterObjectFromLocalStorage,getFilterObjectFromLocalStorage,setFilterObjectToLocalStorage,
8
5
  } from "./globalSearchPersistence";
9
6
  import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
10
7
  import qs from "qs";
@@ -12,6 +9,7 @@ import { SolidSaveCustomFilterForm } from "./SolidSaveCustomFilterForm";
12
9
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
13
10
  import { hydrateRelationRules } from "../../../helpers/hydrateRelationRules";
14
11
  import { useSession } from '../../../hooks/useSession'
12
+ import { getUnboundSavedFilterVariableNames, parseSavedFilterQueryJson, resolveSavedFilterVariables } from '../../../helpers/resolveActiveUserId';
15
13
  import GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from "./GroupingComponent";
16
14
  import { Bookmark, Check, Filter, ListFilter, Pencil, Plus, Search, SearchX, Trash2, X } from "lucide-react";
17
15
  import { SolidButton } from "../../shad-cn-ui/SolidButton";
@@ -420,8 +418,10 @@ export const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedF
420
418
  return filters;
421
419
  }
422
420
 
423
- const SavedFilterList = ({ savedfilter, activeSavedFilter, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible, isFocused, onMouseEnter }: any) => {
424
- const isActive = savedfilter?.systemKey ? activeSavedFilter === savedfilter.systemKey : Number(activeSavedFilter) == savedfilter.id;
421
+ const SavedFilterList = ({ savedfilter, activeSavedFilterReference, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible, isFocused, onMouseEnter }: any) => {
422
+ const isActive = savedfilter?.systemKey
423
+ ? activeSavedFilterReference === savedfilter.systemKey
424
+ : String(activeSavedFilterReference) === String(savedfilter.id);
425
425
 
426
426
  return (
427
427
  <div className="solid-saved-filter-item" onMouseEnter={onMouseEnter}>
@@ -608,18 +608,11 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
608
608
  ];
609
609
 
610
610
  const [initialState, setInitialState] = useState(defaultState);
611
- const pathname = usePathname();
612
611
  const searchableEntityLabel =
613
612
  viewData?.data?.solidView?.displayName ||
614
613
  viewData?.data?.solidView?.model?.displayName ||
615
614
  "records";
616
615
 
617
-
618
- const searchParams = useSearchParams() // Converts the query params to a string
619
- const activeSavedFilter = searchParams?.get("savedQuery");
620
-
621
- const router = useRouter();
622
-
623
616
  const chipsRef = useRef<HTMLDivElement | null | any>(null);
624
617
 
625
618
  // filterRules is used to maintian the ui of custom filter
@@ -662,6 +655,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
662
655
  // currentSavedFilterData is used to save the whole object of saved filter
663
656
  const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();
664
657
  const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();
658
+ const [currentSavedFilterVariables, setCurrentSavedFilterVariables] = useState<Record<string, any>>({});
665
659
  const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();
666
660
  const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);
667
661
 
@@ -720,12 +714,23 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
720
714
  };
721
715
  }, [isDraftPublishWorkflowEnabled]);
722
716
 
723
- const availableSavedFilters = useMemo(
717
+ const allAvailableSavedFilters = useMemo(
724
718
  () => workflowPublishedVersionsSavedFilter
725
719
  ? [workflowPublishedVersionsSavedFilter, ...(savedFilters || [])]
726
720
  : (savedFilters || []),
727
721
  [workflowPublishedVersionsSavedFilter, savedFilters]
728
722
  );
723
+ const availableSavedFilters = allAvailableSavedFilters;
724
+ const selectableSavedFilters = useMemo(
725
+ () => allAvailableSavedFilters.filter((filter: any) => {
726
+ try {
727
+ return getUnboundSavedFilterVariableNames(parseSavedFilterQueryJson(filter.filterQueryJson || "{}")).length === 0;
728
+ } catch {
729
+ return false;
730
+ }
731
+ }),
732
+ [allAvailableSavedFilters]
733
+ );
729
734
 
730
735
  const entityApi = createSolidEntityApi("savedFilters");
731
736
  const {
@@ -755,20 +760,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
755
760
 
756
761
  const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);
757
762
 
758
- const buildSavedFilterUrl = (savedQueryId?: string | number | null) => {
759
- const params = new URLSearchParams(searchParams.toString());
760
-
761
- if (savedQueryId === null || savedQueryId === undefined || savedQueryId === "") {
762
- params.delete("savedQuery");
763
- } else {
764
- params.set("savedQuery", String(savedQueryId));
765
- }
766
-
767
- const queryString = params.toString();
768
- return queryString ? `${pathname}?${queryString}` : pathname;
769
- };
770
-
771
-
772
763
  useEffect(() => {
773
764
  const fn = async () => {
774
765
  if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {
@@ -814,7 +805,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
814
805
  }
815
806
  fn()
816
807
  }, [
817
- activeSavedFilter,
818
808
  savedFilterFetchDataRefreshKey,
819
809
  viewData?.data?.solidView?.id,
820
810
  viewData?.data?.solidView?.model?.id,
@@ -829,7 +819,12 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
829
819
  ? queryObject.custom_filter_predicate
830
820
  : null;
831
821
  const nextPredefinedBaseFilter = queryObject?.predefined_search_predicate || null;
822
+ const nextPredefinedSearchChip =
823
+ nextPredefinedBaseFilter && queryObject?.predefined_search_chip
824
+ ? queryObject.predefined_search_chip
825
+ : null;
832
826
  const nextSavedFilter = queryObject?.saved_filter_predicate || null;
827
+ const nextSavedFilterVariables = queryObject?.saved_filter_variables ?? {};
833
828
  const nextSavedFilterData = nextSavedFilter
834
829
  ? availableSavedFilters.find((savedFilter: any) => {
835
830
  if (queryObject?.saved_filter_system_key) {
@@ -851,8 +846,10 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
851
846
  setSearchChips((prev) => areFilterStateValuesEqual(prev, nextSearchChips) ? prev : nextSearchChips);
852
847
  setCustomFilter((prev: any) => areFilterStateValuesEqual(prev, nextCustomFilter) ? prev : nextCustomFilter);
853
848
  setPredefinedSearchBaseFilter((prev: any) => areFilterStateValuesEqual(prev, nextPredefinedBaseFilter) ? prev : nextPredefinedBaseFilter);
849
+ setPredefinedSearchChip((prev) => areFilterStateValuesEqual(prev, nextPredefinedSearchChip) ? prev : nextPredefinedSearchChip);
854
850
  setCurrentSavedFilterData((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilterData) ? prev : nextSavedFilterData);
855
851
  setCurrentSavedFilterQuery((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilter) ? prev : nextSavedFilter);
852
+ setCurrentSavedFilterVariables((prev) => areFilterStateValuesEqual(prev, nextSavedFilterVariables) ? prev : nextSavedFilterVariables);
856
853
 
857
854
  if (nextCustomFilter && viewData?.data) {
858
855
  const rules: FilterRule = transformFiltersToRules(nextCustomFilter);
@@ -899,6 +896,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
899
896
  setPredefinedSearchBaseFilter(null);
900
897
  setCurrentSavedFilterData(null);
901
898
  setCurrentSavedFilterQuery(null);
899
+ setCurrentSavedFilterVariables({});
902
900
  setCurrentSavedFilterRules(null);
903
901
  if (!preserveGrouping) {
904
902
  setGroupingRules(defaultGroupingRules);
@@ -909,13 +907,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
909
907
  setInputValue("");
910
908
  clearFilterObjectFromLocalStorage();
911
909
 
912
- if (activeSavedFilter) {
913
- const params = new URLSearchParams(searchParams.toString());
914
- params.delete("savedQuery");
915
- const nextUrl = params.toString() ? `${pathname}?${params.toString()}` : pathname;
916
- router.replace(nextUrl);
917
- }
918
-
919
910
  setHasSearched(true);
920
911
  setRefreshKey((prev) => prev + 1);
921
912
  };
@@ -924,6 +915,15 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
924
915
  clearFilter: () => {
925
916
  resetAppliedFilters();
926
917
  },
918
+ getSavedFilters: () => availableSavedFilters.map((filter: any) => ({ ...filter })),
919
+ applySavedFilterByName: (name: string, variables: Record<string, any> = {}) => {
920
+ const savedFilter = allAvailableSavedFilters.find((filter: any) => filter?.name === name);
921
+ if (!savedFilter) {
922
+ return false;
923
+ }
924
+
925
+ return applySavedFilter(savedFilter, variables);
926
+ },
927
927
  clearAppliedFilters: (options?: { preserveGrouping?: boolean }) => {
928
928
  resetAppliedFilters(options);
929
929
  },
@@ -945,35 +945,15 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
945
945
  useEffect(() => {
946
946
  const fn = async () => {
947
947
  if (savedFiltersLoaded) {
948
-
949
- if (activeSavedFilter && availableSavedFilters.length === 0) return;
950
-
951
948
  const queryObject = getFilterObjectFromLocalStorage();
952
- let nextQueryObject = queryObject;
953
- if (activeSavedFilter) {
954
- const currentSavedFilterId = Number(activeSavedFilter);
955
- const currentSavedFilterData: any = availableSavedFilters.find((savedFilter: any) => savedFilter.id === currentSavedFilterId);
956
- if (currentSavedFilterData) {
957
- const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);
958
- if (filterJson) {
959
- nextQueryObject = {
960
- ...(queryObject || {}),
961
- saved_filter_predicate: filterJson,
962
- saved_filter_id: currentSavedFilterData.id,
963
- saved_filter_system_key: currentSavedFilterData.systemKey,
964
- saved_filter_name: currentSavedFilterData.name,
965
- };
966
- }
967
- }
968
- }
969
- await syncFilterUiStateFromSharedSource(nextQueryObject);
949
+ await syncFilterUiStateFromSharedSource(queryObject);
970
950
 
971
951
  setRefreshKey((prev) => prev + 1)
972
952
  setHasSearched(true);
973
953
  }
974
954
  }
975
955
  fn()
976
- }, [activeSavedFilter, availableSavedFilters, savedFiltersLoaded, syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id])
956
+ }, [availableSavedFilters, savedFiltersLoaded, syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id])
977
957
 
978
958
  useEffect(() => {
979
959
  const fn = async () => {
@@ -1263,6 +1243,16 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1263
1243
 
1264
1244
  const finalCustomFilter = customFilter
1265
1245
  const finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules)
1246
+ finalFilter.predefined_search_chip =
1247
+ finalPredefinedFilter && predefinedSearchChip
1248
+ ? predefinedSearchChip
1249
+ : null;
1250
+ if (finalSavedFilter && Object.keys(finalSavedFilter).length > 0) {
1251
+ const resolved = resolveSavedFilterVariables(finalSavedFilter, user?.id, currentSavedFilterVariables);
1252
+ if (resolved.missingVariables.length > 0) return;
1253
+ finalFilter.resolved_saved_filter_predicate = resolved.value;
1254
+ finalFilter.saved_filter_variables = currentSavedFilterVariables;
1255
+ }
1266
1256
  if (currentSavedFilterData?.id) {
1267
1257
  finalFilter.saved_filter_id = currentSavedFilterData.id;
1268
1258
  }
@@ -1291,7 +1281,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1291
1281
 
1292
1282
  const openSavedCustomFilter = async (savedfilter: any) => {
1293
1283
  //Open custom filter popup
1294
- // router.push(`?savedQuery=${savedfilter.id}`);
1295
1284
  // setShowGlobalSearchElement(true);
1296
1285
  // // dont refetch the data yet
1297
1286
  // const customFilter = JSON.parse(savedfilter.filterQueryJson);
@@ -1309,15 +1298,13 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1309
1298
  setPredefinedSearchChip(null);
1310
1299
  setPredefinedSearchBaseFilter(null);
1311
1300
 
1312
- // push the savedQuery=1 in url
1313
1301
  if (savedfilter?.id) {
1314
1302
  const savedfilterId = savedfilter.id;
1315
- // router.push(`?savedQuery=${savedfilter.id}`);
1316
1303
  setShowOverlay(false);
1317
1304
  const currentSavedFilterData: any = availableSavedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);
1318
1305
  setCurrentSavedFilterData(currentSavedFilterData);
1319
1306
  if (currentSavedFilterData) {
1320
- const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);
1307
+ const filterJson = parseSavedFilterQueryJson(currentSavedFilterData?.filterQueryJson);
1321
1308
  if (filterJson) {
1322
1309
  let finalSavedFilter = filterJson
1323
1310
  setCurrentSavedFilterQuery(finalSavedFilter)
@@ -1335,14 +1322,50 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1335
1322
  }
1336
1323
  }
1337
1324
 
1325
+ const persistActiveSavedFilter = (savedFilter: any, filterJson: any, variables: Record<string, any>) => {
1326
+ const persistedFilter = {
1327
+ ...(getFilterObjectFromLocalStorage() || {}),
1328
+ custom_filter_predicate: null,
1329
+ search_predicate: null,
1330
+ predefined_search_predicate: null,
1331
+ predefined_search_chip: null,
1332
+ saved_filter_predicate: filterJson,
1333
+ saved_filter_variables: variables,
1334
+ saved_filter_id: savedFilter?.id ?? null,
1335
+ saved_filter_system_key: savedFilter?.systemKey ?? null,
1336
+ saved_filter_name: savedFilter?.name ?? null,
1337
+ };
1338
+ delete persistedFilter.finalFullFilter;
1339
+ setFilterObjectToLocalStorage(persistedFilter);
1340
+ };
1341
+
1342
+ const clearActiveSavedFilter = () => {
1343
+ setCurrentSavedFilterData(null);
1344
+ setCurrentSavedFilterQuery(null);
1345
+ setCurrentSavedFilterVariables({});
1346
+ setCurrentSavedFilterRules(null);
1347
+ setShowSavedFilterComponent(false);
1348
+
1349
+ const persistedFilter = {
1350
+ ...(getFilterObjectFromLocalStorage() || {}),
1351
+ saved_filter_predicate: null,
1352
+ saved_filter_variables: {},
1353
+ saved_filter_id: null,
1354
+ saved_filter_system_key: null,
1355
+ saved_filter_name: null,
1356
+ };
1357
+ delete persistedFilter.finalFullFilter;
1358
+ setFilterObjectToLocalStorage(persistedFilter);
1359
+
1360
+ setHasSearched(true);
1361
+ setRefreshKey((prev) => prev + 1);
1362
+ };
1363
+
1338
1364
  const deleteSavedFilter = async () => {
1339
1365
  // delte the saved filter with id
1340
1366
  await deleteEntity(savedFilterTobeDeleted);
1341
- // triggerGetSolidEntities(savedFilterQueryString);
1342
- let parsedSearchParams = searchParams;
1343
- const savedQuery = parsedSearchParams?.get("savedQuery");
1344
- if (savedFilterTobeDeleted == savedQuery) {
1345
- router.push(buildSavedFilterUrl(null));
1367
+ if (String(savedFilterTobeDeleted) === String(currentSavedFilterData?.id)) {
1368
+ clearActiveSavedFilter();
1346
1369
  }
1347
1370
  setIsDeleteSQDialogVisible(false);
1348
1371
  setTimeout(() => {
@@ -1371,8 +1394,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1371
1394
  setCustomFilter(null)
1372
1395
  setPredefinedSearchChip(null);
1373
1396
  setPredefinedSearchBaseFilter(null);
1374
- clearFilterObjectFromLocalStorage();
1375
-
1376
1397
  // Apply the rename immediately, both to the active filter and to
1377
1398
  // the cached list — otherwise the list still holds the pre-rename
1378
1399
  // entry, which wins the id-based lookup the next time saved-filter
@@ -1382,12 +1403,9 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1382
1403
  setSavedFilters((prev) => prev.map((f: any) => String(f?.id) === String(formValues.id) ? { ...f, ...savedFilterRecord } : f));
1383
1404
  setCurrentSavedFilterData(savedFilterRecord);
1384
1405
  setCurrentSavedFilterQuery(filterJson);
1406
+ persistActiveSavedFilter(savedFilterRecord, filterJson, currentSavedFilterVariables);
1385
1407
  setHasSearched(true);
1386
1408
  setRefreshKey((prev) => prev + 1);
1387
-
1388
- setTimeout(() => {
1389
- router.push(buildSavedFilterUrl(formValues.id));
1390
- }, 500)
1391
1409
  } else {
1392
1410
 
1393
1411
  const filterJson = customFilter;
@@ -1406,21 +1424,16 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1406
1424
  setCustomFilter(null)
1407
1425
  setPredefinedSearchChip(null);
1408
1426
  setPredefinedSearchBaseFilter(null);
1409
- clearFilterObjectFromLocalStorage();
1410
-
1411
1427
  // The custom filter just became this saved filter — apply it, and
1412
1428
  // seed the cached list with it, immediately (see rename branch above).
1413
1429
  const savedFilterRecord = { id: result.data.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson, null, 2) };
1414
1430
  setSavedFilters((prev) => [savedFilterRecord, ...prev]);
1415
1431
  setCurrentSavedFilterData(savedFilterRecord);
1416
1432
  setCurrentSavedFilterQuery(filterJson);
1433
+ setCurrentSavedFilterVariables({});
1434
+ persistActiveSavedFilter(savedFilterRecord, filterJson, {});
1417
1435
  setHasSearched(true);
1418
1436
  setRefreshKey((prev) => prev + 1);
1419
-
1420
- setTimeout(() => {
1421
- router.push(buildSavedFilterUrl(result.data.id));
1422
- }, 500)
1423
-
1424
1437
  }
1425
1438
  } catch (error) {
1426
1439
 
@@ -1496,7 +1509,25 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1496
1509
 
1497
1510
  //saved filter related code start
1498
1511
 
1499
- const applySavedFilter = (savedfilter: any) => {
1512
+ const applySavedFilter = (savedfilter: any, variables: Record<string, any> = {}) => {
1513
+ if (!savedfilter?.id && !savedfilter?.systemKey) {
1514
+ console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);
1515
+ return false;
1516
+ }
1517
+
1518
+ let filterJson: any;
1519
+ try {
1520
+ filterJson = parseSavedFilterQueryJson(savedfilter?.filterQueryJson);
1521
+ } catch {
1522
+ console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);
1523
+ return false;
1524
+ }
1525
+
1526
+ const resolved = resolveSavedFilterVariables(filterJson, user?.id, variables);
1527
+ if (resolved.missingVariables.length > 0) {
1528
+ console.error(`Unable to apply saved filter '${savedfilter?.name}': missing variables ${resolved.missingVariables.join(", ")}`);
1529
+ return false;
1530
+ }
1500
1531
 
1501
1532
  setSearchChips([]);
1502
1533
  setSearchFilter(null);
@@ -1504,41 +1535,18 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1504
1535
  setCustomFilter(null)
1505
1536
  setPredefinedSearchChip(null);
1506
1537
  setPredefinedSearchBaseFilter(null);
1507
- clearFilterObjectFromLocalStorage();
1508
- if (savedfilter?.systemKey) {
1509
- setCurrentSavedFilterData(savedfilter);
1510
- try {
1511
- const filterJson = JSON.parse(savedfilter.filterQueryJson);
1512
- if (filterJson) {
1513
- setCurrentSavedFilterQuery(filterJson);
1514
- }
1515
- } catch {
1516
- console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);
1517
- }
1518
- setShowOverlay(false);
1519
- setHasSearched(true);
1520
- setRefreshKey((prev) => prev + 1);
1521
- return;
1522
- }
1523
- // push the savedQuery=1 in url
1524
- if (savedfilter?.id) {
1525
- router.push(buildSavedFilterUrl(savedfilter.id));
1526
- setShowOverlay(false);
1527
- } else {
1528
- console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);
1529
- }
1538
+ setCurrentSavedFilterData(savedfilter);
1539
+ setCurrentSavedFilterQuery(filterJson);
1540
+ setCurrentSavedFilterVariables(variables);
1541
+ persistActiveSavedFilter(savedfilter, filterJson, variables);
1542
+ setShowOverlay(false);
1543
+ setHasSearched(true);
1544
+ setRefreshKey((prev) => prev + 1);
1545
+ return true;
1530
1546
  }
1531
1547
 
1532
1548
  const removeSavedFilter = () => {
1533
- setCurrentSavedFilterData(null);
1534
- setCurrentSavedFilterQuery(null);
1535
- setCurrentSavedFilterRules(null);
1536
- setShowSavedFilterComponent(false);
1537
- if (searchParams.has("savedQuery")) {
1538
- router.replace(buildSavedFilterUrl(null));
1539
- }
1540
- setHasSearched(true);
1541
- setRefreshKey((prev) => prev + 1);
1549
+ clearActiveSavedFilter();
1542
1550
  }
1543
1551
 
1544
1552
  const SavedFiltersChip = () => {
@@ -1759,7 +1767,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1759
1767
  predefined: p,
1760
1768
  }))
1761
1769
  : [];
1762
- const saved: OverlayOption[] = (availableSavedFilters || []).map((s: any) => ({
1770
+ const saved: OverlayOption[] = (selectableSavedFilters || []).map((s: any) => ({
1763
1771
  id: `saved:${s.id}`,
1764
1772
  kind: "saved" as const,
1765
1773
  saved: s,
@@ -1777,7 +1785,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1777
1785
  : [];
1778
1786
 
1779
1787
  return [...fields, ...predefined, ...saved, ...custom, ...grouping];
1780
- }, [inputValue, searchableFields, predefinedSearches, availableSavedFilters, viewType]);
1788
+ }, [inputValue, searchableFields, predefinedSearches, selectableSavedFilters, viewType]);
1781
1789
 
1782
1790
  const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
1783
1791
  const currentValue = inputValue?.trim() || "";
@@ -1842,7 +1850,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
1842
1850
  } else if (predefinedSearchChip) {
1843
1851
  setPredefinedSearchChip(null);
1844
1852
  setPredefinedSearchBaseFilter(null);
1845
- } else if (activeSavedFilter) {
1853
+ } else if (currentSavedFilterData) {
1846
1854
  removeSavedFilter();
1847
1855
  }
1848
1856
  setHasSearched(true);
@@ -2234,7 +2242,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
2234
2242
  <div className="solid-filter-dialog-sep" />
2235
2243
  </>
2236
2244
  }
2237
- {availableSavedFilters.length > 0 &&
2245
+ {selectableSavedFilters.length > 0 &&
2238
2246
  <>
2239
2247
  <div className="p-3 solid-search-overlay-section">
2240
2248
  <div className="solid-search-overlay-panel-callout solid-search-overlay-panel-callout-compact">
@@ -2249,11 +2257,11 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
2249
2257
  </div>
2250
2258
  </div>
2251
2259
  <div className="flex flex-col solid-search-overlay-saved-list">
2252
- {availableSavedFilters.map((savedfilter: any, index: number) => (
2260
+ {selectableSavedFilters.map((savedfilter: any, index: number) => (
2253
2261
  <SavedFilterList
2254
2262
  key={savedfilter.id}
2255
2263
  savedfilter={savedfilter}
2256
- activeSavedFilter={activeSavedFilter || currentSavedFilterData?.systemKey || currentSavedFilterData?.id}
2264
+ activeSavedFilterReference={currentSavedFilterData?.systemKey || currentSavedFilterData?.id}
2257
2265
  applySavedFilter={applySavedFilter}
2258
2266
  openSavedCustomFilter={openSavedCustomFilter}
2259
2267
  setSavedFilterTobeDeleted={setSavedFilterTobeDeleted}
@@ -1 +1 @@
1
- {"version":3,"file":"SolidFormActionHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormActionHeader.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,qBAAqB,2dAA4d,GAAG,4CAooBhgB,CAAA"}
1
+ {"version":3,"file":"SolidFormActionHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormActionHeader.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,qBAAqB,2dAA4d,GAAG,4CA6oBhgB,CAAA"}
@@ -103,7 +103,7 @@ export var SolidFormActionHeader = function (_a) {
103
103
  var FormActionDropdown = function () {
104
104
  var _a, _b;
105
105
  var closeMenu = function () { return setFormActionsMenuOpen(false); };
106
- return (_jsxs(SolidPopover, { open: formActionsMenuOpen, onOpenChange: setFormActionsMenuOpen, children: [_jsxs("div", { className: "flex gap-2", children: [_jsx(SolidPopoverTrigger, { asChild: true, children: _jsx(SolidButton, { variant: "outline", type: "button", icon: 'si si-cog', size: "sm", className: "solid-icon-button hidden bg-[var(--surface-card)] md:flex" }) }), _jsx(SolidPopoverTrigger, { asChild: true, children: _jsx(SolidButton, { variant: "outline", type: "button", icon: 'si si-cog', size: "sm", className: "solid-icon-button bg-[var(--surface-card)] md:hidden" }) })] }), _jsx(SolidPopoverContent, { side: "bottom", align: "end", className: "solid-form-actions-popover", onClick: function (event) { return event.stopPropagation(); }, children: _jsxs("div", { className: "solid-row-actions-menu solid-form-actions-menu", children: [params.embeded !== true &&
106
+ return (_jsxs(SolidPopover, { open: formActionsMenuOpen, onOpenChange: setFormActionsMenuOpen, children: [_jsxs("div", { className: "flex gap-2", children: [_jsx(SolidPopoverTrigger, { asChild: true, children: _jsx(SolidButton, { variant: "outline", type: "button", icon: 'si si-cog', size: "sm", className: "solid-icon-button bg-[var(--surface-card)] max-[576px]:hidden sm:hidden lg:flex" }) }), _jsx(SolidPopoverTrigger, { asChild: true, children: _jsx(SolidButton, { variant: "outline", type: "button", icon: 'si si-cog', size: "sm", className: "solid-icon-button bg-[var(--surface-card)] lg:hidden" }) })] }), _jsx(SolidPopoverContent, { side: "bottom", align: "end", className: "solid-form-actions-popover", onClick: function (event) { return event.stopPropagation(); }, children: _jsxs("div", { className: "solid-row-actions-menu solid-form-actions-menu", children: [params.embeded !== true &&
107
107
  params.id !== "new" &&
108
108
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'delete'))) &&
109
109
  !isPublished &&
@@ -126,41 +126,41 @@ export var SolidFormActionHeader = function (_a) {
126
126
  };
127
127
  return (_jsx(_Fragment, { children: _jsx("div", { className: "page-header solid-list-toolbar flex-col lg:flex-row", children: _jsx("div", { className: "flex justify-between w-full solid-form-toolbar-row", children: params.id === "new" ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex gap-4 items-center solid-form-toolbar-left", children: [params.embeded == true &&
128
128
  _jsx("p", { className: "m-0 view-title solid-text-wrapper", children: createHeaderTitle }), params.embeded !== true &&
129
- _jsx(SolidFormStepper, { solidFormViewMetaData: solidFormViewMetaData, initialEntityData: initialEntityData, modelName: params.modelName, id: params.id, solidWorkflowFieldValue: solidWorkflowFieldValue, setSolidWorkflowFieldValue: setSolidWorkflowFieldValue, onStepperUpdate: onStepperUpdate })] }), _jsxs("div", { className: "flex items-center solid-header-buttons-wrapper solid-form-toolbar-actions", children: [_jsx(SolidHeaderRequestStatus, { label: activeHeaderRequestStatusLabel }), _jsx("div", { className: "hidden lg:flex solid-header-buttons-wrapper", children: normalHeaderButtons.map(function (button, index) {
129
+ _jsx(SolidFormStepper, { solidFormViewMetaData: solidFormViewMetaData, initialEntityData: initialEntityData, modelName: params.modelName, id: params.id, solidWorkflowFieldValue: solidWorkflowFieldValue, setSolidWorkflowFieldValue: setSolidWorkflowFieldValue, onStepperUpdate: onStepperUpdate })] }), _jsxs("div", { className: "flex items-center solid-header-buttons-wrapper solid-form-toolbar-actions", children: [_jsx(SolidHeaderRequestStatus, { label: activeHeaderRequestStatusLabel }), _jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex solid-header-buttons-wrapper", children: normalHeaderButtons.map(function (button, index) {
130
130
  return (_jsx(SolidFormViewNormalHeaderButton, { button: button, params: params, formik: formik, formData: formData, solidFormViewMetaData: solidFormViewMetaData, handleCustomButtonClick: handleCustomButtonClick }, index));
131
131
  }) }), params.embeded !== true &&
132
132
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) &&
133
133
  !formViewLayout.attrs.readonly &&
134
- _jsxs("div", { children: [_jsx(SolidButton, { label: "Save", size: "sm", type: "submit", className: "hidden lg:flex", loading: isSubmitting, disabled: isSubmitting }), _jsx(SolidButton, { size: "sm", type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting })] }), _jsx("div", { className: "hidden lg:flex", children: params.embeded !== true && params.draftEnabled &&
134
+ _jsxs("div", { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx(SolidButton, { label: "Save", size: "sm", type: "submit", loading: isSubmitting, disabled: isSubmitting }) }), _jsx(SolidButton, { size: "sm", type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting })] }), _jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: params.embeded !== true && params.draftEnabled &&
135
135
  !formViewLayout.attrs.readonly && params.publish !== 'null' &&
136
136
  formik.dirty &&
137
137
  _jsx("div", { children: _jsx(SolidButton, { label: "Draft", size: "sm", type: "button" }) }) }), params.embeded == true &&
138
138
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) &&
139
139
  !formViewLayout.attrs.readonly &&
140
- _jsx(_Fragment, { children: showEmbeddedRelationSaveAndNew ? (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx(SolidButton, { label: "Save & Close", size: "sm", onClick: function () {
140
+ _jsx(_Fragment, { children: showEmbeddedRelationSaveAndNew ? (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx(SolidButton, { label: "Save & Close", size: "sm", onClick: function () {
141
+ setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("close");
142
+ setRedirectToList(params.redirectToPath ? true : false);
143
+ }, type: "submit", loading: isSubmitting, disabled: isSubmitting }) }), _jsx(SolidButton, { size: "sm", onClick: function () {
141
144
  setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("close");
142
145
  setRedirectToList(params.redirectToPath ? true : false);
143
- }, type: "submit", className: "hidden lg:flex", loading: isSubmitting, disabled: isSubmitting }), _jsx(SolidButton, { size: "sm", onClick: function () {
144
- setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("close");
145
- setRedirectToList(params.redirectToPath ? true : false);
146
- }, type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting, "aria-label": "Save & Close" })] }), _jsxs("div", { children: [_jsx(SolidButton, { label: "Save & New", size: "sm", variant: "outline", onClick: function () {
146
+ }, type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting, "aria-label": "Save & Close" })] }), _jsxs("div", { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx(SolidButton, { label: "Save & New", size: "sm", variant: "outline", onClick: function () {
147
+ setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("new");
148
+ setRedirectToList(false);
149
+ }, type: "submit", className: "bg-[var(--primary-color-text)]", loading: isSubmitting, disabled: isSubmitting }) }), _jsx(SolidButton, { size: "sm", variant: "outline", onClick: function () {
147
150
  setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("new");
148
151
  setRedirectToList(false);
149
- }, type: "submit", className: "hidden lg:flex bg-[var(--primary-color-text)]", loading: isSubmitting, disabled: isSubmitting }), _jsx(SolidButton, { size: "sm", variant: "outline", onClick: function () {
150
- setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("new");
151
- setRedirectToList(false);
152
- }, type: "submit", className: "lg:hidden solid-icon-button bg-[var(--primary-color-text)]", icon: "si si-plus", loading: isSubmitting, disabled: isSubmitting, "aria-label": "Save & New" })] })] })) : (_jsxs("div", { children: [_jsx(SolidButton, { label: "Save", size: "sm", onClick: function () {
153
- setRedirectToList(params.redirectToPath ? true : false);
154
- }, type: "submit", className: "hidden lg:flex", loading: isSubmitting, disabled: isSubmitting }), _jsx(SolidButton, { size: "sm", onClick: function () {
152
+ }, type: "submit", className: "lg:hidden solid-icon-button bg-[var(--primary-color-text)]", icon: "si si-plus", loading: isSubmitting, disabled: isSubmitting, "aria-label": "Save & New" })] })] })) : (_jsxs("div", { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx(SolidButton, { label: "Save", size: "sm", onClick: function () {
153
+ setRedirectToList(params.redirectToPath ? true : false);
154
+ }, type: "submit", loading: isSubmitting, disabled: isSubmitting }) }), _jsx(SolidButton, { size: "sm", onClick: function () {
155
155
  setRedirectToList(params.redirectToPath ? true : false);
156
156
  }, type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting })] })) }), params.embeded == true &&
157
- _jsxs(_Fragment, { children: [_jsx("div", { className: "hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", label: "Close", onClick: function () { return params.handlePopupClose(); }, className: 'bg-[var(--primary-color-text)]', style: { minWidth: 66 } }) }) }), _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", icon: "si si-times", onClick: function () { return params.handlePopupClose(); }, className: 'solid-icon-button bg-[var(--primary-color-text)]' }) })] }), ((_c = formViewLayout === null || formViewLayout === void 0 ? void 0 : formViewLayout.attrs) === null || _c === void 0 ? void 0 : _c.showCogWheelFormButton) !== false &&
157
+ _jsxs(_Fragment, { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", label: "Close", onClick: function () { return params.handlePopupClose(); }, className: 'bg-[var(--primary-color-text)]', style: { minWidth: 66 } }) }) }), _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", icon: "si si-times", onClick: function () { return params.handlePopupClose(); }, className: 'solid-icon-button bg-[var(--primary-color-text)]' }) })] }), ((_c = formViewLayout === null || formViewLayout === void 0 ? void 0 : formViewLayout.attrs) === null || _c === void 0 ? void 0 : _c.showCogWheelFormButton) !== false &&
158
158
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'update'))) &&
159
159
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) &&
160
160
  _jsx(FormActionDropdown, {}), showMobileOpenChatter &&
161
161
  _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { type: "button", icon: "si si-comments", size: "sm", className: "solid-icon-button", onClick: onMobileOpenChatter, "aria-label": "Open chatter" }) })] })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex gap-4 items-center solid-form-toolbar-left", children: [params.embeded !== true &&
162
162
  _jsx(SolidFormStepper, { solidFormViewMetaData: solidFormViewMetaData, initialEntityData: initialEntityData, modelName: params.modelName, id: params.id, solidWorkflowFieldValue: solidWorkflowFieldValue, setSolidWorkflowFieldValue: setSolidWorkflowFieldValue, onStepperUpdate: onStepperUpdate }), params.embeded == true &&
163
- _jsx("p", { className: "m-0 view-title solid-text-wrapper", children: viewMode === "edit" ? editHeaderTitle : solidView.model.displayName })] }), _jsxs("div", { className: "flex items-center solid-header-buttons-wrapper solid-form-toolbar-actions", children: [_jsx(SolidHeaderRequestStatus, { label: activeHeaderRequestStatusLabel }), _jsx("div", { className: "hidden lg:flex solid-header-buttons-wrapper", children: normalHeaderButtons.map(function (button, index) {
163
+ _jsx("p", { className: "m-0 view-title solid-text-wrapper", children: viewMode === "edit" ? editHeaderTitle : solidView.model.displayName })] }), _jsxs("div", { className: "flex items-center solid-header-buttons-wrapper solid-form-toolbar-actions", children: [_jsx(SolidHeaderRequestStatus, { label: activeHeaderRequestStatusLabel }), _jsx("div", { className: "hidden items-center lg:flex solid-header-buttons-wrapper", children: normalHeaderButtons.map(function (button, index) {
164
164
  return (
165
165
  // <SolidButton
166
166
  // text
@@ -187,7 +187,7 @@ export var SolidFormActionHeader = function (_a) {
187
187
  params.embeded !== true &&
188
188
  viewMode === "view" &&
189
189
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) &&
190
- _jsxs(_Fragment, { children: [_jsx("div", { className: "hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { type: "button", label: "Add", size: 'sm', onClick: function () {
190
+ _jsxs(_Fragment, { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { type: "button", label: "Add", size: 'sm', onClick: function () {
191
191
  setIsNavigating(true);
192
192
  router.replace("".concat(normalizeSolidFormActionPath(pathname, "form"), "/new?viewMode=edit"));
193
193
  }, loading: isNavigating, disabled: isNavigating }) }) }), _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { type: "button", icon: "si si-plus", size: 'sm', onClick: function () {
@@ -199,12 +199,12 @@ export var SolidFormActionHeader = function (_a) {
199
199
  viewMode === "view" &&
200
200
  isLatestVersion &&
201
201
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'update'))) &&
202
- _jsxs(_Fragment, { children: [_jsx("div", { className: "hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { label: "Edit", size: "sm", onClick: function () { return updateViewMode("edit"); }, type: "button" }) }) }), _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { icon: "si si-pencil", size: "sm", onClick: function () { return updateViewMode("edit"); }, type: "button", className: "solid-icon-button" }) })] }), params.embeded !== true &&
202
+ _jsxs(_Fragment, { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { label: "Edit", size: "sm", onClick: function () { return updateViewMode("edit"); }, type: "button" }) }) }), _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { icon: "si si-pencil", size: "sm", onClick: function () { return updateViewMode("edit"); }, type: "button", className: "solid-icon-button" }) })] }), params.embeded !== true &&
203
203
  isLatestVersion &&
204
204
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'update'))) &&
205
205
  !formViewLayout.attrs.readonly &&
206
206
  shouldShowSaveForExistingRecord &&
207
- _jsxs("div", { children: [_jsx(SolidButton, { label: "Save", size: "sm", type: "submit", className: "hidden lg:flex", loading: isSubmitting, disabled: isSubmitting }), _jsx(SolidButton, { size: "sm", type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting })] }), params.embeded !== true &&
207
+ _jsxs("div", { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx(SolidButton, { label: "Save", size: "sm", type: "submit", loading: isSubmitting, disabled: isSubmitting }) }), _jsx(SolidButton, { size: "sm", type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting })] }), params.embeded !== true &&
208
208
  showDraftPublishActions &&
209
209
  !formViewLayout.attrs.readonly &&
210
210
  !isPublished &&
@@ -219,7 +219,7 @@ export var SolidFormActionHeader = function (_a) {
219
219
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'update'))) &&
220
220
  !formViewLayout.attrs.readonly &&
221
221
  shouldShowSaveForExistingRecord &&
222
- _jsxs("div", { children: [_jsx(SolidButton, { label: "Save", size: "sm", type: "submit", className: "hidden lg:flex", loading: isSubmitting, disabled: isSubmitting }), _jsx(SolidButton, { size: "sm", type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting })] }), params.embeded == true &&
222
+ _jsxs("div", { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx(SolidButton, { label: "Save", size: "sm", type: "submit", loading: isSubmitting, disabled: isSubmitting }) }), _jsx(SolidButton, { size: "sm", type: "submit", className: "lg:hidden solid-icon-button", icon: "si si-check", loading: isSubmitting, disabled: isSubmitting })] }), params.embeded == true &&
223
223
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'delete'))) &&
224
224
  ((_f = formViewLayout.attrs) === null || _f === void 0 ? void 0 : _f.showDeleteFormButton) !== false &&
225
225
  !formViewLayout.attrs.readonly &&
@@ -235,7 +235,7 @@ export var SolidFormActionHeader = function (_a) {
235
235
  isPublished &&
236
236
  actionsAllowed.includes(permissionExpression(params.modelName, 'unpublish')) &&
237
237
  _jsx("div", { children: _jsx(SolidButton, { label: "Unpublish", size: "sm", type: "button", variant: "destructive", onClick: function () { return handleDraftPublishWorkFlow('unpublish'); } }) }), params.embeded == true &&
238
- _jsxs(_Fragment, { children: [_jsx("div", { className: "hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", label: "Close", onClick: function () { return params.handlePopupClose(); }, className: 'bg-[var(--primary-color-text)]', style: { minWidth: 66 } }) }) }), _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", icon: "si si-times", onClick: function () { return params.handlePopupClose(); }, className: 'solid-icon-button bg-[var(--primary-color-text)]' }) })] }), ((_g = formViewLayout === null || formViewLayout === void 0 ? void 0 : formViewLayout.attrs) === null || _g === void 0 ? void 0 : _g.showCogWheelFormButton) !== false &&
238
+ _jsxs(_Fragment, { children: [_jsx("div", { className: "max-[576px]:hidden sm:hidden lg:flex", children: _jsx("div", { children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", label: "Close", onClick: function () { return params.handlePopupClose(); }, className: 'bg-[var(--primary-color-text)]', style: { minWidth: 66 } }) }) }), _jsx("div", { className: "lg:hidden", children: _jsx(SolidButton, { variant: "outline", size: "sm", type: "button", icon: "si si-times", onClick: function () { return params.handlePopupClose(); }, className: 'solid-icon-button bg-[var(--primary-color-text)]' }) })] }), ((_g = formViewLayout === null || formViewLayout === void 0 ? void 0 : formViewLayout.attrs) === null || _g === void 0 ? void 0 : _g.showCogWheelFormButton) !== false &&
239
239
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'update'))) &&
240
240
  actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) &&
241
241
  _jsx(FormActionDropdown, {}), showMobileOpenChatter &&