@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.
- package/dist/components/auth/AuthLayout.js +1 -1
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +2 -2
- package/dist/components/common/SettingsComponent.module.css +4 -1
- package/dist/components/common/SolidFieldTooltip.d.ts.map +1 -1
- package/dist/components/common/SolidFieldTooltip.js +1 -1
- package/dist/components/common/SolidFieldTooltip.js.map +1 -1
- package/dist/components/common/SolidFieldTooltip.tsx +1 -0
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +7 -6
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +7 -1
- package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
- package/dist/components/common/SolidThemeProvider.js +127 -11
- package/dist/components/common/SolidThemeProvider.js.map +1 -1
- package/dist/components/common/SolidThemeProvider.tsx +104 -22
- package/dist/components/core/card/CardGrid.d.ts +1 -1
- package/dist/components/core/card/CardGrid.d.ts.map +1 -1
- package/dist/components/core/card/CardGrid.js +2 -2
- package/dist/components/core/card/CardGrid.js.map +1 -1
- package/dist/components/core/card/CardGrid.tsx +4 -0
- package/dist/components/core/card/CardItem.d.ts +2 -0
- package/dist/components/core/card/CardItem.d.ts.map +1 -1
- package/dist/components/core/card/CardItem.js +4 -3
- package/dist/components/core/card/CardItem.js.map +1 -1
- package/dist/components/core/card/CardItem.tsx +15 -0
- package/dist/components/core/card/SolidCardView.d.ts +28 -1
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +99 -44
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +124 -7
- package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js +15 -6
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +34 -0
- package/dist/components/core/card/cardViewRegistry.d.ts +7 -0
- package/dist/components/core/card/cardViewRegistry.d.ts.map +1 -0
- package/dist/components/core/card/cardViewRegistry.js +17 -0
- package/dist/components/core/card/cardViewRegistry.js.map +1 -0
- package/dist/components/core/card/cardViewRegistry.ts +23 -0
- package/dist/components/core/common/PDFViewer.d.ts +9 -5
- package/dist/components/core/common/PDFViewer.d.ts.map +1 -1
- package/dist/components/core/common/PDFViewer.js +10 -102
- package/dist/components/core/common/PDFViewer.js.map +1 -1
- package/dist/components/core/common/PDFViewer.tsx +29 -88
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts +12 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts.map +1 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.js +50 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.js.map +1 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.tsx +91 -0
- package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
- package/dist/components/core/common/SolidCreateButton.js +2 -2
- package/dist/components/core/common/SolidCreateButton.js.map +1 -1
- package/dist/components/core/common/SolidCreateButton.tsx +22 -2
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +137 -134
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +127 -119
- package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.js +21 -21
- package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.tsx +62 -53
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +5 -2
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +7 -2
- package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +2 -2
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +3 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +2 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +4 -2
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +14 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts +3 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +2 -2
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +4 -2
- package/dist/components/core/kanban/SolidKanbanView.d.ts +25 -1
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +89 -50
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +82 -9
- package/dist/components/core/kanban/kanbanViewRegistry.d.ts +7 -0
- package/dist/components/core/kanban/kanbanViewRegistry.d.ts.map +1 -0
- package/dist/components/core/kanban/kanbanViewRegistry.js +17 -0
- package/dist/components/core/kanban/kanbanViewRegistry.js.map +1 -0
- package/dist/components/core/kanban/kanbanViewRegistry.ts +23 -0
- package/dist/components/core/list/PLAN.md +1 -1
- package/dist/components/core/list/SolidListView.d.ts +11 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +11 -6
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +88 -45
- package/dist/components/core/list/SolidListViewConfigure.js +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +2 -1
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +2 -0
- package/dist/components/core/model/FieldMetaData.d.ts +1 -1
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +8 -8
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +2 -2
- package/dist/components/core/model/FieldMetaDataForm.css +119 -0
- package/dist/components/core/model/FieldMetaDataForm.js +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.css +64 -0
- package/dist/components/core/module/ModulePackageDialog.css +117 -12
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +6 -3
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +35 -13
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +15 -10
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +15 -8
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +1 -18
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +3 -21
- package/dist/helpers/resolveActiveUserId.d.ts +13 -0
- package/dist/helpers/resolveActiveUserId.d.ts.map +1 -0
- package/dist/helpers/resolveActiveUserId.js +86 -0
- package/dist/helpers/resolveActiveUserId.js.map +1 -0
- package/dist/helpers/resolveActiveUserId.ts +90 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +5 -0
- package/dist/resources/globals.css +15 -0
- package/dist/resources/solid-custom.css +18 -1
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/resources/themes/solid-dark-enterprise/theme-variables.css +28 -0
- package/dist/resources/themes/solid-dark-enterprise/theme.css +926 -0
- package/dist/resources/themes/solid-dark-modern/theme-variables.css +27 -0
- package/dist/resources/themes/solid-dark-modern/theme.css +600 -0
- package/dist/resources/themes/solid-light-enterprise/theme-variables.css +28 -0
- package/dist/resources/themes/solid-light-enterprise/theme.css +930 -0
- package/dist/resources/themes/solid-light-modern/theme-variables.css +31 -0
- package/dist/resources/themes/solid-light-modern/theme.css +1041 -0
- package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.js +15 -2
- package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.tsx +17 -2
- package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.js +31 -3
- package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.tsx +39 -11
- package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js +15 -2
- package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.tsx +17 -2
- package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +5 -13
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +5 -15
- package/dist/theme/theme-registry.d.ts +6 -0
- package/dist/theme/theme-registry.d.ts.map +1 -0
- package/dist/theme/theme-registry.js +65 -0
- package/dist/theme/theme-registry.js.map +1 -0
- package/dist/theme/theme-registry.ts +78 -0
- package/dist/types/solid-core.d.ts +8 -0
- 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 {
|
|
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,
|
|
424
|
-
const isActive = savedfilter?.systemKey
|
|
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
|
|
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
|
-
|
|
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
|
-
}, [
|
|
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 =
|
|
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
|
-
|
|
1342
|
-
|
|
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
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
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
|
-
|
|
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[] = (
|
|
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,
|
|
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 (
|
|
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
|
-
{
|
|
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
|
-
{
|
|
2260
|
+
{selectableSavedFilters.map((savedfilter: any, index: number) => (
|
|
2253
2261
|
<SavedFilterList
|
|
2254
2262
|
key={savedfilter.id}
|
|
2255
2263
|
savedfilter={savedfilter}
|
|
2256
|
-
|
|
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,
|
|
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
|
|
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",
|
|
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
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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: "
|
|
150
|
-
|
|
151
|
-
|
|
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",
|
|
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",
|
|
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 &&
|