@solidxai/core-ui 0.1.14-beta.9 → 0.1.14
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 +1 -4
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +6 -7
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +1 -7
- package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
- package/dist/components/common/SolidThemeProvider.js +11 -127
- package/dist/components/common/SolidThemeProvider.js.map +1 -1
- package/dist/components/common/SolidThemeProvider.tsx +22 -104
- 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 +0 -4
- package/dist/components/core/card/CardItem.d.ts +0 -2
- package/dist/components/core/card/CardItem.d.ts.map +1 -1
- package/dist/components/core/card/CardItem.js +3 -4
- package/dist/components/core/card/CardItem.js.map +1 -1
- package/dist/components/core/card/CardItem.tsx +0 -15
- package/dist/components/core/card/SolidCardView.d.ts +1 -28
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +44 -99
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +7 -124
- 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 +6 -15
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +0 -34
- package/dist/components/core/common/PDFViewer.d.ts +5 -9
- package/dist/components/core/common/PDFViewer.d.ts.map +1 -1
- package/dist/components/core/common/PDFViewer.js +102 -10
- package/dist/components/core/common/PDFViewer.js.map +1 -1
- package/dist/components/core/common/PDFViewer.tsx +88 -29
- 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 +2 -22
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +134 -137
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +119 -127
- 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 +53 -62
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +2 -5
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +2 -7
- 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 +1 -3
- package/dist/components/core/kanban/KanbanCard.d.ts +0 -2
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +2 -4
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +1 -14
- package/dist/components/core/kanban/KanbanColumn.d.ts +1 -3
- 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 +2 -4
- package/dist/components/core/kanban/SolidKanbanView.d.ts +1 -25
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +50 -89
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +9 -82
- package/dist/components/core/list/PLAN.md +1 -1
- package/dist/components/core/list/SolidListView.d.ts +0 -11
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +3 -8
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +43 -82
- 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/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +1 -2
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +0 -2
- 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 +0 -119
- 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 +0 -64
- package/dist/components/core/module/ModulePackageDialog.css +12 -117
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +3 -6
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +13 -35
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +10 -15
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +8 -15
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +18 -1
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +21 -3
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/index.ts +0 -5
- package/dist/resources/globals.css +0 -15
- package/dist/resources/solid-custom.css +0 -11
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/resources/themes/solid-light-modern/theme.css +3 -4
- package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.js +2 -15
- package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.tsx +2 -17
- package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.js +3 -31
- package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.tsx +11 -39
- package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js +2 -15
- package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.tsx +2 -17
- package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +13 -5
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +15 -5
- package/dist/types/solid-core.d.ts +0 -8
- package/package.json +1 -1
|
@@ -1,7 +1,10 @@
|
|
|
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 {
|
|
4
|
+
import { usePathname } from "../../../hooks/usePathname";
|
|
5
|
+
import { useRouter } from "../../../hooks/useRouter";
|
|
6
|
+
import { useSearchParams } from "../../../hooks/useSearchParams";
|
|
7
|
+
import {clearFilterObjectFromLocalStorage,getFilterObjectFromLocalStorage,
|
|
5
8
|
} from "./globalSearchPersistence";
|
|
6
9
|
import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
|
|
7
10
|
import qs from "qs";
|
|
@@ -9,7 +12,6 @@ import { SolidSaveCustomFilterForm } from "./SolidSaveCustomFilterForm";
|
|
|
9
12
|
import { ERROR_MESSAGES } from "../../../constants/error-messages";
|
|
10
13
|
import { hydrateRelationRules } from "../../../helpers/hydrateRelationRules";
|
|
11
14
|
import { useSession } from '../../../hooks/useSession'
|
|
12
|
-
import { getUnboundSavedFilterVariableNames, parseSavedFilterQueryJson, resolveSavedFilterVariables } from '../../../helpers/resolveActiveUserId';
|
|
13
15
|
import GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from "./GroupingComponent";
|
|
14
16
|
import { Bookmark, Check, Filter, ListFilter, Pencil, Plus, Search, SearchX, Trash2, X } from "lucide-react";
|
|
15
17
|
import { SolidButton } from "../../shad-cn-ui/SolidButton";
|
|
@@ -418,10 +420,8 @@ export const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedF
|
|
|
418
420
|
return filters;
|
|
419
421
|
}
|
|
420
422
|
|
|
421
|
-
const SavedFilterList = ({ savedfilter,
|
|
422
|
-
const isActive = savedfilter?.systemKey
|
|
423
|
-
? activeSavedFilterReference === savedfilter.systemKey
|
|
424
|
-
: String(activeSavedFilterReference) === String(savedfilter.id);
|
|
423
|
+
const SavedFilterList = ({ savedfilter, activeSavedFilter, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible, isFocused, onMouseEnter }: any) => {
|
|
424
|
+
const isActive = savedfilter?.systemKey ? activeSavedFilter === savedfilter.systemKey : Number(activeSavedFilter) == savedfilter.id;
|
|
425
425
|
|
|
426
426
|
return (
|
|
427
427
|
<div className="solid-saved-filter-item" onMouseEnter={onMouseEnter}>
|
|
@@ -608,11 +608,18 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
608
608
|
];
|
|
609
609
|
|
|
610
610
|
const [initialState, setInitialState] = useState(defaultState);
|
|
611
|
+
const pathname = usePathname();
|
|
611
612
|
const searchableEntityLabel =
|
|
612
613
|
viewData?.data?.solidView?.displayName ||
|
|
613
614
|
viewData?.data?.solidView?.model?.displayName ||
|
|
614
615
|
"records";
|
|
615
616
|
|
|
617
|
+
|
|
618
|
+
const searchParams = useSearchParams() // Converts the query params to a string
|
|
619
|
+
const activeSavedFilter = searchParams?.get("savedQuery");
|
|
620
|
+
|
|
621
|
+
const router = useRouter();
|
|
622
|
+
|
|
616
623
|
const chipsRef = useRef<HTMLDivElement | null | any>(null);
|
|
617
624
|
|
|
618
625
|
// filterRules is used to maintian the ui of custom filter
|
|
@@ -655,7 +662,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
655
662
|
// currentSavedFilterData is used to save the whole object of saved filter
|
|
656
663
|
const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();
|
|
657
664
|
const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();
|
|
658
|
-
const [currentSavedFilterVariables, setCurrentSavedFilterVariables] = useState<Record<string, any>>({});
|
|
659
665
|
const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();
|
|
660
666
|
const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);
|
|
661
667
|
|
|
@@ -714,23 +720,12 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
714
720
|
};
|
|
715
721
|
}, [isDraftPublishWorkflowEnabled]);
|
|
716
722
|
|
|
717
|
-
const
|
|
723
|
+
const availableSavedFilters = useMemo(
|
|
718
724
|
() => workflowPublishedVersionsSavedFilter
|
|
719
725
|
? [workflowPublishedVersionsSavedFilter, ...(savedFilters || [])]
|
|
720
726
|
: (savedFilters || []),
|
|
721
727
|
[workflowPublishedVersionsSavedFilter, savedFilters]
|
|
722
728
|
);
|
|
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
|
-
);
|
|
734
729
|
|
|
735
730
|
const entityApi = createSolidEntityApi("savedFilters");
|
|
736
731
|
const {
|
|
@@ -760,6 +755,20 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
760
755
|
|
|
761
756
|
const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);
|
|
762
757
|
|
|
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
|
+
|
|
763
772
|
useEffect(() => {
|
|
764
773
|
const fn = async () => {
|
|
765
774
|
if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {
|
|
@@ -805,6 +814,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
805
814
|
}
|
|
806
815
|
fn()
|
|
807
816
|
}, [
|
|
817
|
+
activeSavedFilter,
|
|
808
818
|
savedFilterFetchDataRefreshKey,
|
|
809
819
|
viewData?.data?.solidView?.id,
|
|
810
820
|
viewData?.data?.solidView?.model?.id,
|
|
@@ -819,12 +829,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
819
829
|
? queryObject.custom_filter_predicate
|
|
820
830
|
: null;
|
|
821
831
|
const nextPredefinedBaseFilter = queryObject?.predefined_search_predicate || null;
|
|
822
|
-
const nextPredefinedSearchChip =
|
|
823
|
-
nextPredefinedBaseFilter && queryObject?.predefined_search_chip
|
|
824
|
-
? queryObject.predefined_search_chip
|
|
825
|
-
: null;
|
|
826
832
|
const nextSavedFilter = queryObject?.saved_filter_predicate || null;
|
|
827
|
-
const nextSavedFilterVariables = queryObject?.saved_filter_variables ?? {};
|
|
828
833
|
const nextSavedFilterData = nextSavedFilter
|
|
829
834
|
? availableSavedFilters.find((savedFilter: any) => {
|
|
830
835
|
if (queryObject?.saved_filter_system_key) {
|
|
@@ -846,10 +851,8 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
846
851
|
setSearchChips((prev) => areFilterStateValuesEqual(prev, nextSearchChips) ? prev : nextSearchChips);
|
|
847
852
|
setCustomFilter((prev: any) => areFilterStateValuesEqual(prev, nextCustomFilter) ? prev : nextCustomFilter);
|
|
848
853
|
setPredefinedSearchBaseFilter((prev: any) => areFilterStateValuesEqual(prev, nextPredefinedBaseFilter) ? prev : nextPredefinedBaseFilter);
|
|
849
|
-
setPredefinedSearchChip((prev) => areFilterStateValuesEqual(prev, nextPredefinedSearchChip) ? prev : nextPredefinedSearchChip);
|
|
850
854
|
setCurrentSavedFilterData((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilterData) ? prev : nextSavedFilterData);
|
|
851
855
|
setCurrentSavedFilterQuery((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilter) ? prev : nextSavedFilter);
|
|
852
|
-
setCurrentSavedFilterVariables((prev) => areFilterStateValuesEqual(prev, nextSavedFilterVariables) ? prev : nextSavedFilterVariables);
|
|
853
856
|
|
|
854
857
|
if (nextCustomFilter && viewData?.data) {
|
|
855
858
|
const rules: FilterRule = transformFiltersToRules(nextCustomFilter);
|
|
@@ -896,7 +899,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
896
899
|
setPredefinedSearchBaseFilter(null);
|
|
897
900
|
setCurrentSavedFilterData(null);
|
|
898
901
|
setCurrentSavedFilterQuery(null);
|
|
899
|
-
setCurrentSavedFilterVariables({});
|
|
900
902
|
setCurrentSavedFilterRules(null);
|
|
901
903
|
if (!preserveGrouping) {
|
|
902
904
|
setGroupingRules(defaultGroupingRules);
|
|
@@ -907,6 +909,13 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
907
909
|
setInputValue("");
|
|
908
910
|
clearFilterObjectFromLocalStorage();
|
|
909
911
|
|
|
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
|
+
|
|
910
919
|
setHasSearched(true);
|
|
911
920
|
setRefreshKey((prev) => prev + 1);
|
|
912
921
|
};
|
|
@@ -915,15 +924,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
915
924
|
clearFilter: () => {
|
|
916
925
|
resetAppliedFilters();
|
|
917
926
|
},
|
|
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,15 +945,35 @@ 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
|
+
|
|
948
951
|
const queryObject = getFilterObjectFromLocalStorage();
|
|
949
|
-
|
|
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);
|
|
950
970
|
|
|
951
971
|
setRefreshKey((prev) => prev + 1)
|
|
952
972
|
setHasSearched(true);
|
|
953
973
|
}
|
|
954
974
|
}
|
|
955
975
|
fn()
|
|
956
|
-
}, [availableSavedFilters, savedFiltersLoaded, syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id])
|
|
976
|
+
}, [activeSavedFilter, availableSavedFilters, savedFiltersLoaded, syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id])
|
|
957
977
|
|
|
958
978
|
useEffect(() => {
|
|
959
979
|
const fn = async () => {
|
|
@@ -1243,16 +1263,6 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1243
1263
|
|
|
1244
1264
|
const finalCustomFilter = customFilter
|
|
1245
1265
|
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
|
-
}
|
|
1256
1266
|
if (currentSavedFilterData?.id) {
|
|
1257
1267
|
finalFilter.saved_filter_id = currentSavedFilterData.id;
|
|
1258
1268
|
}
|
|
@@ -1281,6 +1291,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1281
1291
|
|
|
1282
1292
|
const openSavedCustomFilter = async (savedfilter: any) => {
|
|
1283
1293
|
//Open custom filter popup
|
|
1294
|
+
// router.push(`?savedQuery=${savedfilter.id}`);
|
|
1284
1295
|
// setShowGlobalSearchElement(true);
|
|
1285
1296
|
// // dont refetch the data yet
|
|
1286
1297
|
// const customFilter = JSON.parse(savedfilter.filterQueryJson);
|
|
@@ -1298,13 +1309,15 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1298
1309
|
setPredefinedSearchChip(null);
|
|
1299
1310
|
setPredefinedSearchBaseFilter(null);
|
|
1300
1311
|
|
|
1312
|
+
// push the savedQuery=1 in url
|
|
1301
1313
|
if (savedfilter?.id) {
|
|
1302
1314
|
const savedfilterId = savedfilter.id;
|
|
1315
|
+
// router.push(`?savedQuery=${savedfilter.id}`);
|
|
1303
1316
|
setShowOverlay(false);
|
|
1304
1317
|
const currentSavedFilterData: any = availableSavedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);
|
|
1305
1318
|
setCurrentSavedFilterData(currentSavedFilterData);
|
|
1306
1319
|
if (currentSavedFilterData) {
|
|
1307
|
-
const filterJson =
|
|
1320
|
+
const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);
|
|
1308
1321
|
if (filterJson) {
|
|
1309
1322
|
let finalSavedFilter = filterJson
|
|
1310
1323
|
setCurrentSavedFilterQuery(finalSavedFilter)
|
|
@@ -1322,50 +1335,14 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1322
1335
|
}
|
|
1323
1336
|
}
|
|
1324
1337
|
|
|
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
|
-
|
|
1364
1338
|
const deleteSavedFilter = async () => {
|
|
1365
1339
|
// delte the saved filter with id
|
|
1366
1340
|
await deleteEntity(savedFilterTobeDeleted);
|
|
1367
|
-
|
|
1368
|
-
|
|
1341
|
+
// triggerGetSolidEntities(savedFilterQueryString);
|
|
1342
|
+
let parsedSearchParams = searchParams;
|
|
1343
|
+
const savedQuery = parsedSearchParams?.get("savedQuery");
|
|
1344
|
+
if (savedFilterTobeDeleted == savedQuery) {
|
|
1345
|
+
router.push(buildSavedFilterUrl(null));
|
|
1369
1346
|
}
|
|
1370
1347
|
setIsDeleteSQDialogVisible(false);
|
|
1371
1348
|
setTimeout(() => {
|
|
@@ -1394,6 +1371,8 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1394
1371
|
setCustomFilter(null)
|
|
1395
1372
|
setPredefinedSearchChip(null);
|
|
1396
1373
|
setPredefinedSearchBaseFilter(null);
|
|
1374
|
+
clearFilterObjectFromLocalStorage();
|
|
1375
|
+
|
|
1397
1376
|
// Apply the rename immediately, both to the active filter and to
|
|
1398
1377
|
// the cached list — otherwise the list still holds the pre-rename
|
|
1399
1378
|
// entry, which wins the id-based lookup the next time saved-filter
|
|
@@ -1403,9 +1382,12 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1403
1382
|
setSavedFilters((prev) => prev.map((f: any) => String(f?.id) === String(formValues.id) ? { ...f, ...savedFilterRecord } : f));
|
|
1404
1383
|
setCurrentSavedFilterData(savedFilterRecord);
|
|
1405
1384
|
setCurrentSavedFilterQuery(filterJson);
|
|
1406
|
-
persistActiveSavedFilter(savedFilterRecord, filterJson, currentSavedFilterVariables);
|
|
1407
1385
|
setHasSearched(true);
|
|
1408
1386
|
setRefreshKey((prev) => prev + 1);
|
|
1387
|
+
|
|
1388
|
+
setTimeout(() => {
|
|
1389
|
+
router.push(buildSavedFilterUrl(formValues.id));
|
|
1390
|
+
}, 500)
|
|
1409
1391
|
} else {
|
|
1410
1392
|
|
|
1411
1393
|
const filterJson = customFilter;
|
|
@@ -1424,16 +1406,21 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1424
1406
|
setCustomFilter(null)
|
|
1425
1407
|
setPredefinedSearchChip(null);
|
|
1426
1408
|
setPredefinedSearchBaseFilter(null);
|
|
1409
|
+
clearFilterObjectFromLocalStorage();
|
|
1410
|
+
|
|
1427
1411
|
// The custom filter just became this saved filter — apply it, and
|
|
1428
1412
|
// seed the cached list with it, immediately (see rename branch above).
|
|
1429
1413
|
const savedFilterRecord = { id: result.data.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson, null, 2) };
|
|
1430
1414
|
setSavedFilters((prev) => [savedFilterRecord, ...prev]);
|
|
1431
1415
|
setCurrentSavedFilterData(savedFilterRecord);
|
|
1432
1416
|
setCurrentSavedFilterQuery(filterJson);
|
|
1433
|
-
setCurrentSavedFilterVariables({});
|
|
1434
|
-
persistActiveSavedFilter(savedFilterRecord, filterJson, {});
|
|
1435
1417
|
setHasSearched(true);
|
|
1436
1418
|
setRefreshKey((prev) => prev + 1);
|
|
1419
|
+
|
|
1420
|
+
setTimeout(() => {
|
|
1421
|
+
router.push(buildSavedFilterUrl(result.data.id));
|
|
1422
|
+
}, 500)
|
|
1423
|
+
|
|
1437
1424
|
}
|
|
1438
1425
|
} catch (error) {
|
|
1439
1426
|
|
|
@@ -1509,25 +1496,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1509
1496
|
|
|
1510
1497
|
//saved filter related code start
|
|
1511
1498
|
|
|
1512
|
-
const applySavedFilter = (savedfilter: 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
|
-
}
|
|
1499
|
+
const applySavedFilter = (savedfilter: any) => {
|
|
1531
1500
|
|
|
1532
1501
|
setSearchChips([]);
|
|
1533
1502
|
setSearchFilter(null);
|
|
@@ -1535,18 +1504,41 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1535
1504
|
setCustomFilter(null)
|
|
1536
1505
|
setPredefinedSearchChip(null);
|
|
1537
1506
|
setPredefinedSearchBaseFilter(null);
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
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
|
+
}
|
|
1546
1530
|
}
|
|
1547
1531
|
|
|
1548
1532
|
const removeSavedFilter = () => {
|
|
1549
|
-
|
|
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);
|
|
1550
1542
|
}
|
|
1551
1543
|
|
|
1552
1544
|
const SavedFiltersChip = () => {
|
|
@@ -1767,7 +1759,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1767
1759
|
predefined: p,
|
|
1768
1760
|
}))
|
|
1769
1761
|
: [];
|
|
1770
|
-
const saved: OverlayOption[] = (
|
|
1762
|
+
const saved: OverlayOption[] = (availableSavedFilters || []).map((s: any) => ({
|
|
1771
1763
|
id: `saved:${s.id}`,
|
|
1772
1764
|
kind: "saved" as const,
|
|
1773
1765
|
saved: s,
|
|
@@ -1785,7 +1777,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1785
1777
|
: [];
|
|
1786
1778
|
|
|
1787
1779
|
return [...fields, ...predefined, ...saved, ...custom, ...grouping];
|
|
1788
|
-
}, [inputValue, searchableFields, predefinedSearches,
|
|
1780
|
+
}, [inputValue, searchableFields, predefinedSearches, availableSavedFilters, viewType]);
|
|
1789
1781
|
|
|
1790
1782
|
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
|
1791
1783
|
const currentValue = inputValue?.trim() || "";
|
|
@@ -1850,7 +1842,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1850
1842
|
} else if (predefinedSearchChip) {
|
|
1851
1843
|
setPredefinedSearchChip(null);
|
|
1852
1844
|
setPredefinedSearchBaseFilter(null);
|
|
1853
|
-
} else if (
|
|
1845
|
+
} else if (activeSavedFilter) {
|
|
1854
1846
|
removeSavedFilter();
|
|
1855
1847
|
}
|
|
1856
1848
|
setHasSearched(true);
|
|
@@ -2242,7 +2234,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
2242
2234
|
<div className="solid-filter-dialog-sep" />
|
|
2243
2235
|
</>
|
|
2244
2236
|
}
|
|
2245
|
-
{
|
|
2237
|
+
{availableSavedFilters.length > 0 &&
|
|
2246
2238
|
<>
|
|
2247
2239
|
<div className="p-3 solid-search-overlay-section">
|
|
2248
2240
|
<div className="solid-search-overlay-panel-callout solid-search-overlay-panel-callout-compact">
|
|
@@ -2257,11 +2249,11 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
2257
2249
|
</div>
|
|
2258
2250
|
</div>
|
|
2259
2251
|
<div className="flex flex-col solid-search-overlay-saved-list">
|
|
2260
|
-
{
|
|
2252
|
+
{availableSavedFilters.map((savedfilter: any, index: number) => (
|
|
2261
2253
|
<SavedFilterList
|
|
2262
2254
|
key={savedfilter.id}
|
|
2263
2255
|
savedfilter={savedfilter}
|
|
2264
|
-
|
|
2256
|
+
activeSavedFilter={activeSavedFilter || currentSavedFilterData?.systemKey || currentSavedFilterData?.id}
|
|
2265
2257
|
applySavedFilter={applySavedFilter}
|
|
2266
2258
|
openSavedCustomFilter={openSavedCustomFilter}
|
|
2267
2259
|
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,4CAooBhgB,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 bg-[var(--surface-card)]
|
|
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 &&
|
|
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: "
|
|
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) {
|
|
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(
|
|
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 &&
|
|
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(
|
|
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 () {
|
|
140
|
+
_jsx(_Fragment, { children: showEmbeddedRelationSaveAndNew ? (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx(SolidButton, { label: "Save & Close", size: "sm", onClick: function () {
|
|
144
141
|
setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("close");
|
|
145
142
|
setRedirectToList(params.redirectToPath ? true : false);
|
|
146
|
-
}, type: "submit", className: "
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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 () {
|
|
150
147
|
setEmbeddedRelationSubmitAction === null || setEmbeddedRelationSubmitAction === void 0 ? void 0 : setEmbeddedRelationSubmitAction("new");
|
|
151
148
|
setRedirectToList(false);
|
|
152
|
-
}, type: "submit", className: "lg:
|
|
153
|
-
|
|
154
|
-
|
|
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 () {
|
|
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: "
|
|
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 &&
|
|
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
|
|
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) {
|
|
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: "
|
|
190
|
+
_jsxs(_Fragment, { children: [_jsx("div", { className: "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: "
|
|
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 &&
|
|
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(
|
|
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 &&
|
|
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(
|
|
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 &&
|
|
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: "
|
|
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 &&
|
|
239
239
|
actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'update'))) &&
|
|
240
240
|
actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) &&
|
|
241
241
|
_jsx(FormActionDropdown, {}), showMobileOpenChatter &&
|