@solidxai/core-ui 0.1.17 → 0.1.18-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/components/core/card/SolidCardView.d.ts +1 -0
  2. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  3. package/dist/components/core/card/SolidCardView.js +2 -2
  4. package/dist/components/core/card/SolidCardView.js.map +1 -1
  5. package/dist/components/core/card/SolidCardView.tsx +3 -0
  6. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  7. package/dist/components/core/common/SolidGlobalSearchElement.js +342 -114
  8. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  9. package/dist/components/core/common/SolidGlobalSearchElement.tsx +285 -47
  10. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +1 -1
  11. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  12. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +1 -1
  13. package/dist/components/core/json/SolidJsonEditor.css +89 -0
  14. package/dist/components/core/kanban/SolidKanbanView.d.ts +1 -0
  15. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  16. package/dist/components/core/kanban/SolidKanbanView.js +3 -1
  17. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  18. package/dist/components/core/kanban/SolidKanbanView.tsx +4 -1
  19. package/dist/components/core/list/SolidListView.d.ts +1 -0
  20. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  21. package/dist/components/core/list/SolidListView.js +2 -1
  22. package/dist/components/core/list/SolidListView.js.map +1 -1
  23. package/dist/components/core/list/SolidListView.tsx +3 -0
  24. package/dist/components/core/tree/SolidTreeView.d.ts +3 -0
  25. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  26. package/dist/components/core/tree/SolidTreeView.js +7 -1
  27. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  28. package/dist/components/core/tree/SolidTreeView.tsx +10 -0
  29. package/dist/constants/error-messages.d.ts +4 -0
  30. package/dist/constants/error-messages.d.ts.map +1 -1
  31. package/dist/constants/error-messages.js +4 -0
  32. package/dist/constants/error-messages.js.map +1 -1
  33. package/dist/constants/error-messages.ts +4 -0
  34. package/dist/resources/solid-custom.css +3 -18
  35. package/dist/resources/themes/solid-dark-enterprise/theme.css +4 -481
  36. package/dist/resources/themes/solid-dark-modern/theme.css +1 -167
  37. package/dist/resources/themes/solid-light-enterprise/theme.css +4 -486
  38. package/dist/resources/themes/solid-light-modern/theme.css +7 -204
  39. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +1 -1
  40. package/package.json +1 -1
@@ -56,10 +56,12 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
56
56
  };
57
57
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
58
58
  import React, { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from "react";
59
+ import { useDispatch } from "react-redux";
59
60
  import FilterComponent, { FilterOperator, FilterRuleType } from "../../../components/core/common/FilterComponent";
60
61
  import { toTitleCase } from "../../../helpers/helpers";
61
62
  import { clearFilterObjectFromLocalStorage, getFilterObjectFromLocalStorage, setFilterObjectToLocalStorage, } from "./globalSearchPersistence";
62
63
  import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
64
+ import { showToast } from "../../../redux/features/toastSlice";
63
65
  import qs from "qs";
64
66
  import { SolidSaveCustomFilterForm } from "./SolidSaveCustomFilterForm";
65
67
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
@@ -410,12 +412,17 @@ export var mergeAllDiffFilters = function (customFilter, searchFilter, savedFilt
410
412
  return filters;
411
413
  };
412
414
  var SavedFilterList = function (_a) {
413
- var savedfilter = _a.savedfilter, activeSavedFilterReference = _a.activeSavedFilterReference, applySavedFilter = _a.applySavedFilter, openSavedCustomFilter = _a.openSavedCustomFilter, setSavedFilterTobeDeleted = _a.setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible = _a.setIsDeleteSQDialogVisible, isFocused = _a.isFocused, onMouseEnter = _a.onMouseEnter, optionId = _a.optionId;
414
- var isActive = (savedfilter === null || savedfilter === void 0 ? void 0 : savedfilter.systemKey)
415
- ? activeSavedFilterReference === savedfilter.systemKey
416
- : String(activeSavedFilterReference) === String(savedfilter.id);
415
+ var savedfilter = _a.savedfilter, activeSavedFilterReference = _a.activeSavedFilterReference, activeSavedFilterReferences = _a.activeSavedFilterReferences, applySavedFilter = _a.applySavedFilter, openSavedCustomFilter = _a.openSavedCustomFilter, setSavedFilterTobeDeleted = _a.setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible = _a.setIsDeleteSQDialogVisible, isFocused = _a.isFocused, onMouseEnter = _a.onMouseEnter, optionId = _a.optionId;
416
+ var isActive = activeSavedFilterReferences
417
+ ? activeSavedFilterReferences.includes((savedfilter === null || savedfilter === void 0 ? void 0 : savedfilter.systemKey) ? "system:".concat(savedfilter.systemKey) : "id:".concat(savedfilter.id))
418
+ : (savedfilter === null || savedfilter === void 0 ? void 0 : savedfilter.systemKey)
419
+ ? activeSavedFilterReference === savedfilter.systemKey
420
+ : String(activeSavedFilterReference) === String(savedfilter.id);
417
421
  return (_jsxs("div", { className: "solid-saved-filter-item", onMouseEnter: onMouseEnter, children: [_jsx("div", { className: "solid-saved-filter-main-wrap", children: _jsx(SolidButton, { variant: "ghost", size: "sm", className: "solid-saved-filter-main w-full ".concat(isActive ? "is-active" : "", " ").concat(isFocused ? "solid-search-overlay-option-active" : ""), id: optionId, role: "option", "aria-selected": isFocused, "aria-label": "".concat(savedfilter.name).concat(isActive ? ", applied" : ""), onMouseDown: function (e) {
418
422
  e.preventDefault();
423
+ e.stopPropagation();
424
+ }, onClick: function (e) {
425
+ e.stopPropagation();
419
426
  applySavedFilter(savedfilter);
420
427
  }, title: savedfilter === null || savedfilter === void 0 ? void 0 : savedfilter.description, children: _jsxs("span", { className: "solid-search-overlay-option-content", children: [_jsx("span", { className: "solid-search-overlay-option-icon", "aria-hidden": "true", children: _jsx(Bookmark, { size: 15 }) }), _jsxs("span", { className: "solid-search-overlay-option-copy", children: [_jsx("span", { className: "solid-search-overlay-option-title", children: savedfilter.name }), (savedfilter === null || savedfilter === void 0 ? void 0 : savedfilter.description) && (_jsx("span", { className: "solid-search-overlay-option-description", children: savedfilter.description }))] }), isActive && (_jsx("span", { className: "solid-search-overlay-option-check", "aria-hidden": "true", children: _jsx(Check, { size: 14 }) }))] }) }) }), _jsx("div", { className: "solid-saved-filter-actions", children: savedfilter.isSeeded !== true && !savedfilter.systemKey &&
421
428
  _jsxs(_Fragment, { children: [_jsx(SolidButton, { variant: "outline", size: "sm", className: "solid-saved-filter-icon-btn", onMouseDown: function (e) {
@@ -491,7 +498,8 @@ var areFilterStateValuesEqual = function (left, right) {
491
498
  };
492
499
  export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
493
500
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
494
- var viewData = _a.viewData, viewType = _a.viewType, handleApplyCustomFilter = _a.handleApplyCustomFilter, showSaveFilterPopup = _a.showSaveFilterPopup, setShowSaveFilterPopup = _a.setShowSaveFilterPopup, filterPredicates = _a.filterPredicates;
501
+ var viewData = _a.viewData, viewType = _a.viewType, handleApplyCustomFilter = _a.handleApplyCustomFilter, showSaveFilterPopup = _a.showSaveFilterPopup, setShowSaveFilterPopup = _a.setShowSaveFilterPopup, filterPredicates = _a.filterPredicates, _2 = _a.allowMultipleSavedFilters, allowMultipleSavedFilters = _2 === void 0 ? false : _2;
502
+ var dispatch = useDispatch();
495
503
  var overlayInstanceId = useId();
496
504
  var overlayListboxId = "".concat(overlayInstanceId, "-search-options");
497
505
  var getOverlayOptionId = function (index) { return "".concat(overlayInstanceId, "-search-option-").concat(index); };
@@ -534,50 +542,52 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
534
542
  var defaultGroupingRules = [
535
543
  { id: 1, fieldName: null, dateGrouping: null }
536
544
  ];
537
- var _2 = useState(defaultState), initialState = _2[0], setInitialState = _2[1];
545
+ var _3 = useState(defaultState), initialState = _3[0], setInitialState = _3[1];
538
546
  var searchableEntityLabel = ((_c = (_b = viewData === null || viewData === void 0 ? void 0 : viewData.data) === null || _b === void 0 ? void 0 : _b.solidView) === null || _c === void 0 ? void 0 : _c.displayName) ||
539
547
  ((_f = (_e = (_d = viewData === null || viewData === void 0 ? void 0 : viewData.data) === null || _d === void 0 ? void 0 : _d.solidView) === null || _e === void 0 ? void 0 : _e.model) === null || _f === void 0 ? void 0 : _f.displayName) ||
540
548
  "records";
541
549
  var chipsRef = useRef(null);
542
550
  // filterRules is used to maintian the ui of custom filter
543
551
  // customFilter is used to maintian the transformed filter object of custom filter
544
- var _3 = useState(initialState), filterRules = _3[0], setFilterRules = _3[1];
545
- var _4 = useState(null), customFilter = _4[0], setCustomFilter = _4[1];
546
- var _5 = useState([]), fields = _5[0], setFields = _5[1];
547
- var _6 = useState([]), searchableFields = _6[0], setSearchableFields = _6[1];
548
- var _7 = useState([]), groupableFields = _7[0], setGroupableFields = _7[1];
549
- var _8 = useState(defaultGroupingRules), groupingRules = _8[0], setGroupingRules = _8[1];
550
- var _9 = useState(defaultAggregationRules), aggregationRules = _9[0], setAggregationRules = _9[1];
552
+ var _4 = useState(initialState), filterRules = _4[0], setFilterRules = _4[1];
553
+ var _5 = useState(null), customFilter = _5[0], setCustomFilter = _5[1];
554
+ var _6 = useState([]), fields = _6[0], setFields = _6[1];
555
+ var _7 = useState([]), searchableFields = _7[0], setSearchableFields = _7[1];
556
+ var _8 = useState([]), groupableFields = _8[0], setGroupableFields = _8[1];
557
+ var _9 = useState(defaultGroupingRules), groupingRules = _9[0], setGroupingRules = _9[1];
558
+ var _10 = useState(defaultAggregationRules), aggregationRules = _10[0], setAggregationRules = _10[1];
551
559
  // used to show the list of predefined searches
552
- var _10 = useState([]), predefinedSearches = _10[0], setPredefinedSearches = _10[1];
560
+ var _11 = useState([]), predefinedSearches = _11[0], setPredefinedSearches = _11[1];
553
561
  // used to open / close the custom fitler popup
554
- var _11 = useState(false), showGlobalSearchElement = _11[0], setShowGlobalSearchElement = _11[1];
562
+ var _12 = useState(false), showGlobalSearchElement = _12[0], setShowGlobalSearchElement = _12[1];
555
563
  // used to open / close the group fitler popup
556
- var _12 = useState(false), showGroupFilterElement = _12[0], setShowGroupFilterElement = _12[1];
564
+ var _13 = useState(false), showGroupFilterElement = _13[0], setShowGroupFilterElement = _13[1];
557
565
  // searchChips maintain the ui to display searched query
558
566
  // searchFilter maintain the transformed filter of the searched query
559
- var _13 = useState([]), searchChips = _13[0], setSearchChips = _13[1];
560
- var _14 = useState(null), searchFilter = _14[0], setSearchFilter = _14[1];
567
+ var _14 = useState([]), searchChips = _14[0], setSearchChips = _14[1];
568
+ var _15 = useState(null), searchFilter = _15[0], setSearchFilter = _15[1];
561
569
  // predefinedSearchChip maintain the ui to display predefined searches query
562
- var _15 = useState(null), predefinedSearchChip = _15[0], setPredefinedSearchChip = _15[1];
570
+ var _16 = useState(null), predefinedSearchChip = _16[0], setPredefinedSearchChip = _16[1];
563
571
  // state to maintain the text typed in the search input box
564
- var _16 = useState(""), inputValue = _16[0], setInputValue = _16[1];
565
- var _17 = useState(-1), focusedIndex = _17[0], setFocusedIndex = _17[1];
572
+ var _17 = useState(""), inputValue = _17[0], setInputValue = _17[1];
573
+ var _18 = useState(-1), focusedIndex = _18[0], setFocusedIndex = _18[1];
566
574
  // flag to prevent un necessary re renders
567
- var _18 = useState(false), hasSearched = _18[0], setHasSearched = _18[1];
575
+ var _19 = useState(false), hasSearched = _19[0], setHasSearched = _19[1];
568
576
  // currentSavedFilterData is used to save the whole object of saved filter
569
- var _19 = useState(), currentSavedFilterData = _19[0], setCurrentSavedFilterData = _19[1];
570
- var _20 = useState(), currentSavedFilterQuery = _20[0], setCurrentSavedFilterQuery = _20[1];
571
- var _21 = useState({}), currentSavedFilterVariables = _21[0], setCurrentSavedFilterVariables = _21[1];
572
- var _22 = useState(), currentSavedFilterRules = _22[0], setCurrentSavedFilterRules = _22[1];
573
- var _23 = useState(false), showSavedFilterComponent = _23[0], setShowSavedFilterComponent = _23[1];
574
- var _24 = useState(), savedFilterTobeDeleted = _24[0], setSavedFilterTobeDeleted = _24[1];
575
- var _25 = useState(false), isDeleteSQDialogVisible = _25[0], setIsDeleteSQDialogVisible = _25[1];
576
- var _26 = useState(), savedFilterQueryString = _26[0], setSavedFilterQueryString = _26[1];
577
- var _27 = useState(false), showOverlay = _27[0], setShowOverlay = _27[1];
577
+ var _20 = useState(), currentSavedFilterData = _20[0], setCurrentSavedFilterData = _20[1];
578
+ var _21 = useState(), currentSavedFilterQuery = _21[0], setCurrentSavedFilterQuery = _21[1];
579
+ var _22 = useState({}), currentSavedFilterVariables = _22[0], setCurrentSavedFilterVariables = _22[1];
580
+ var _23 = useState(), currentSavedFilterRules = _23[0], setCurrentSavedFilterRules = _23[1];
581
+ var _24 = useState([]), activeSavedFilters = _24[0], setActiveSavedFilters = _24[1];
582
+ var _25 = useState(null), editingSavedFilterKey = _25[0], setEditingSavedFilterKey = _25[1];
583
+ var _26 = useState(false), showSavedFilterComponent = _26[0], setShowSavedFilterComponent = _26[1];
584
+ var _27 = useState(), savedFilterTobeDeleted = _27[0], setSavedFilterTobeDeleted = _27[1];
585
+ var _28 = useState(false), isDeleteSQDialogVisible = _28[0], setIsDeleteSQDialogVisible = _28[1];
586
+ var _29 = useState(), savedFilterQueryString = _29[0], setSavedFilterQueryString = _29[1];
587
+ var _30 = useState(false), showOverlay = _30[0], setShowOverlay = _30[1];
578
588
  var overlayRef = useRef(null);
579
589
  var searchInputRef = useRef(null);
580
- var _28 = useState(false), showChipManager = _28[0], setShowChipManager = _28[1];
590
+ var _31 = useState(false), showChipManager = _31[0], setShowChipManager = _31[1];
581
591
  var chipManagerRef = useRef(null);
582
592
  var chipManagerTriggerRef = useRef(null);
583
593
  var focusSearchInput = function () {
@@ -598,12 +608,12 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
598
608
  }
599
609
  }
600
610
  }, [focusedIndex, showOverlay]);
601
- var _29 = useSession(), session = _29.data, status = _29.status;
611
+ var _32 = useSession(), session = _32.data, status = _32.status;
602
612
  var user = session === null || session === void 0 ? void 0 : session.user;
603
- var _30 = useState(0), refreshKey = _30[0], setRefreshKey = _30[1];
604
- var _31 = useState(null), predefinedSearchBaseFilter = _31[0], setPredefinedSearchBaseFilter = _31[1];
605
- var _32 = useState([]), savedFilters = _32[0], setSavedFilters = _32[1];
606
- var _33 = useState(false), savedFiltersLoaded = _33[0], setSavedFiltersLoaded = _33[1];
613
+ var _33 = useState(0), refreshKey = _33[0], setRefreshKey = _33[1];
614
+ var _34 = useState(null), predefinedSearchBaseFilter = _34[0], setPredefinedSearchBaseFilter = _34[1];
615
+ var _35 = useState([]), savedFilters = _35[0], setSavedFilters = _35[1];
616
+ var _36 = useState(false), savedFiltersLoaded = _36[0], setSavedFiltersLoaded = _36[1];
607
617
  var isDraftPublishWorkflowEnabled = ((_j = (_h = (_g = viewData === null || viewData === void 0 ? void 0 : viewData.data) === null || _g === void 0 ? void 0 : _g.solidView) === null || _h === void 0 ? void 0 : _h.model) === null || _j === void 0 ? void 0 : _j.draftPublishWorkflow) === true;
608
618
  var workflowPublishedVersionsSavedFilter = useMemo(function () {
609
619
  if (!isDraftPublishWorkflowEnabled)
@@ -633,11 +643,11 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
633
643
  }); }, [allAvailableSavedFilters]);
634
644
  var entityApi = createSolidEntityApi("savedFilters");
635
645
  var useCreateSolidEntityMutation = entityApi.useCreateSolidEntityMutation, useDeleteSolidEntityMutation = entityApi.useDeleteSolidEntityMutation, useGetSolidEntityByIdQuery = entityApi.useGetSolidEntityByIdQuery, useUpdateSolidEntityMutation = entityApi.useUpdateSolidEntityMutation, useLazyGetSolidEntitiesQuery = entityApi.useLazyGetSolidEntitiesQuery;
636
- var _34 = useCreateSolidEntityMutation(), createEntity = _34[0], _35 = _34[1], isEntityCreateSuccess = _35.isSuccess, isEntityCreateError = _35.isError, entityCreateError = _35.error;
637
- var _36 = useUpdateSolidEntityMutation(), updateEntity = _36[0], _37 = _36[1], isEntityUpdateSuceess = _37.isSuccess, isEntityUpdateError = _37.isError, entityUpdateError = _37.error;
638
- var _38 = useDeleteSolidEntityMutation(), deleteEntity = _38[0], _39 = _38[1], isEntityDeleteSuceess = _39.isSuccess, isEntityDeleteError = _39.isError, entityDeleteError = _39.error;
639
- var _40 = useLazyGetSolidEntitiesQuery(), triggerGetSolidEntities = _40[0], _41 = _40[1], solidEntityListViewData = _41.data, isSavedFilterLoading = _41.isLoading, error = _41.error;
640
- var _42 = useState(0), savedFilterFetchDataRefreshKey = _42[0], setSavedFilterFetchDataRefreshKey = _42[1];
646
+ var _37 = useCreateSolidEntityMutation(), createEntity = _37[0], _38 = _37[1], isEntityCreateSuccess = _38.isSuccess, isEntityCreateError = _38.isError, entityCreateError = _38.error;
647
+ var _39 = useUpdateSolidEntityMutation(), updateEntity = _39[0], _40 = _39[1], isEntityUpdateSuceess = _40.isSuccess, isEntityUpdateError = _40.isError, entityUpdateError = _40.error;
648
+ var _41 = useDeleteSolidEntityMutation(), deleteEntity = _41[0], _42 = _41[1], isEntityDeleteSuceess = _42.isSuccess, isEntityDeleteError = _42.isError, entityDeleteError = _42.error;
649
+ var _43 = useLazyGetSolidEntitiesQuery(), triggerGetSolidEntities = _43[0], _44 = _43[1], solidEntityListViewData = _44.data, isSavedFilterLoading = _44.isLoading, error = _44.error;
650
+ var _45 = useState(0), savedFilterFetchDataRefreshKey = _45[0], setSavedFilterFetchDataRefreshKey = _45[1];
641
651
  useEffect(function () {
642
652
  var fn = function () { return __awaiter(void 0, void 0, void 0, function () {
643
653
  var filters, queryData, queryString, savedFilter;
@@ -696,9 +706,29 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
696
706
  (_p = (_o = (_m = viewData === null || viewData === void 0 ? void 0 : viewData.data) === null || _m === void 0 ? void 0 : _m.solidView) === null || _o === void 0 ? void 0 : _o.model) === null || _p === void 0 ? void 0 : _p.id,
697
707
  user === null || user === void 0 ? void 0 : user.id
698
708
  ]);
709
+ var getSavedFilterKey = function (savedFilter) {
710
+ return (savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.systemKey) ? "system:".concat(savedFilter.systemKey) : "id:".concat(savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.id);
711
+ };
712
+ var getPersistedSavedFilterItems = function (queryObject) {
713
+ if (!allowMultipleSavedFilters)
714
+ return [];
715
+ if (Array.isArray(queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_items)) {
716
+ return queryObject.saved_filter_items;
717
+ }
718
+ if (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_predicate) {
719
+ return [{
720
+ id: queryObject.saved_filter_id,
721
+ systemKey: queryObject.saved_filter_system_key,
722
+ name: queryObject.saved_filter_name || "Saved Filter",
723
+ predicate: queryObject.saved_filter_predicate,
724
+ variables: queryObject.saved_filter_variables || {},
725
+ }];
726
+ }
727
+ return [];
728
+ };
699
729
  // Updates search, custom filter, grouping, aggregation, and UI state from a single shared filter source.
700
730
  var syncFilterUiStateFromSharedSource = useCallback(function (queryObject) { return __awaiter(void 0, void 0, void 0, function () {
701
- var nextSearchFilter, nextSearchChips, nextCustomFilter, nextPredefinedBaseFilter, nextPredefinedSearchChip, nextSavedFilter, nextSavedFilterVariables, nextSavedFilterData, rules, hydratedRules_1, hasGroupingRules, nextGroupingRules, layoutGroupBy, nextAggregationRules;
731
+ var nextSearchFilter, nextSearchChips, nextCustomFilter, nextPredefinedBaseFilter, nextPredefinedSearchChip, persistedSavedFilterItems, nextSavedFilterItems, nextSavedFilter, nextSavedFilterVariables, nextSavedFilterData, rules, hydratedRules_1, hasGroupingRules, nextGroupingRules, layoutGroupBy, nextAggregationRules;
702
732
  var _a, _b, _c, _d, _e, _f;
703
733
  return __generator(this, function (_g) {
704
734
  switch (_g.label) {
@@ -712,24 +742,48 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
712
742
  nextPredefinedSearchChip = nextPredefinedBaseFilter && (queryObject === null || queryObject === void 0 ? void 0 : queryObject.predefined_search_chip)
713
743
  ? queryObject.predefined_search_chip
714
744
  : null;
715
- nextSavedFilter = (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_predicate) || null;
745
+ persistedSavedFilterItems = getPersistedSavedFilterItems(queryObject);
746
+ nextSavedFilterItems = allowMultipleSavedFilters
747
+ ? persistedSavedFilterItems.map(function (item) {
748
+ var savedFilter = availableSavedFilters.find(function (candidate) {
749
+ return (item === null || item === void 0 ? void 0 : item.systemKey)
750
+ ? (candidate === null || candidate === void 0 ? void 0 : candidate.systemKey) === item.systemKey
751
+ : String(candidate === null || candidate === void 0 ? void 0 : candidate.id) === String(item === null || item === void 0 ? void 0 : item.id);
752
+ });
753
+ return {
754
+ data: savedFilter || {
755
+ id: item === null || item === void 0 ? void 0 : item.id,
756
+ systemKey: item === null || item === void 0 ? void 0 : item.systemKey,
757
+ name: (item === null || item === void 0 ? void 0 : item.name) || "Saved Filter",
758
+ filterQueryJson: JSON.stringify((item === null || item === void 0 ? void 0 : item.predicate) || {}),
759
+ },
760
+ query: (item === null || item === void 0 ? void 0 : item.predicate) || {},
761
+ variables: (item === null || item === void 0 ? void 0 : item.variables) || {},
762
+ };
763
+ })
764
+ : [];
765
+ nextSavedFilter = allowMultipleSavedFilters
766
+ ? (nextSavedFilterItems.length > 0 ? { $or: nextSavedFilterItems.map(function (item) { return item.query; }) } : null)
767
+ : (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_predicate) || null;
716
768
  nextSavedFilterVariables = (_a = queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_variables) !== null && _a !== void 0 ? _a : {};
717
- nextSavedFilterData = nextSavedFilter
718
- ? availableSavedFilters.find(function (savedFilter) {
719
- if (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_system_key) {
720
- return (savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.systemKey) === queryObject.saved_filter_system_key;
721
- }
722
- if (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_id) {
723
- return String(savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.id) === String(queryObject.saved_filter_id);
769
+ nextSavedFilterData = allowMultipleSavedFilters
770
+ ? (nextSavedFilterItems.length > 0 ? nextSavedFilterItems[nextSavedFilterItems.length - 1].data : null)
771
+ : nextSavedFilter
772
+ ? availableSavedFilters.find(function (savedFilter) {
773
+ if (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_system_key) {
774
+ return (savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.systemKey) === queryObject.saved_filter_system_key;
775
+ }
776
+ if (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_id) {
777
+ return String(savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.id) === String(queryObject.saved_filter_id);
778
+ }
779
+ return false;
780
+ }) || {
781
+ id: queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_id,
782
+ systemKey: queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_system_key,
783
+ name: (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_name) || 'Saved Filter',
784
+ filterQueryJson: JSON.stringify(nextSavedFilter),
724
785
  }
725
- return false;
726
- }) || {
727
- id: queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_id,
728
- systemKey: queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_system_key,
729
- name: (queryObject === null || queryObject === void 0 ? void 0 : queryObject.saved_filter_name) || 'Saved Filter',
730
- filterQueryJson: JSON.stringify(nextSavedFilter),
731
- }
732
- : null;
786
+ : null;
733
787
  setSearchFilter(function (prev) { return areFilterStateValuesEqual(prev, nextSearchFilter) ? prev : nextSearchFilter; });
734
788
  setSearchChips(function (prev) { return areFilterStateValuesEqual(prev, nextSearchChips) ? prev : nextSearchChips; });
735
789
  setCustomFilter(function (prev) { return areFilterStateValuesEqual(prev, nextCustomFilter) ? prev : nextCustomFilter; });
@@ -738,6 +792,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
738
792
  setCurrentSavedFilterData(function (prev) { return areFilterStateValuesEqual(prev, nextSavedFilterData) ? prev : nextSavedFilterData; });
739
793
  setCurrentSavedFilterQuery(function (prev) { return areFilterStateValuesEqual(prev, nextSavedFilter) ? prev : nextSavedFilter; });
740
794
  setCurrentSavedFilterVariables(function (prev) { return areFilterStateValuesEqual(prev, nextSavedFilterVariables) ? prev : nextSavedFilterVariables; });
795
+ setActiveSavedFilters(function (prev) { return areFilterStateValuesEqual(prev, nextSavedFilterItems) ? prev : nextSavedFilterItems; });
741
796
  if (!(nextCustomFilter && (viewData === null || viewData === void 0 ? void 0 : viewData.data))) return [3 /*break*/, 2];
742
797
  rules = transformFiltersToRules(nextCustomFilter);
743
798
  return [4 /*yield*/, hydrateRelationRules([rules], viewData)];
@@ -775,7 +830,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
775
830
  return [2 /*return*/];
776
831
  }
777
832
  });
778
- }); }, [availableSavedFilters, initialState, viewData]);
833
+ }); }, [allowMultipleSavedFilters, availableSavedFilters, initialState, viewData]);
779
834
  var resetAppliedFilters = function (_a) {
780
835
  var _b = _a === void 0 ? {} : _a, _c = _b.preserveGrouping, preserveGrouping = _c === void 0 ? false : _c;
781
836
  setSearchChips([]);
@@ -788,6 +843,8 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
788
843
  setCurrentSavedFilterQuery(null);
789
844
  setCurrentSavedFilterVariables({});
790
845
  setCurrentSavedFilterRules(null);
846
+ setActiveSavedFilters([]);
847
+ setEditingSavedFilterKey(null);
791
848
  if (!preserveGrouping) {
792
849
  setGroupingRules(defaultGroupingRules);
793
850
  setAggregationRules(defaultAggregationRules);
@@ -1094,6 +1151,14 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1094
1151
  // };
1095
1152
  // }
1096
1153
  setCurrentSavedFilterQuery(finalCustomFilter);
1154
+ if (allowMultipleSavedFilters && editingSavedFilterKey) {
1155
+ var nextItems = activeSavedFilters.map(function (item) {
1156
+ return getSavedFilterKey(item.data) === editingSavedFilterKey
1157
+ ? __assign(__assign({}, item), { query: finalCustomFilter }) : item;
1158
+ });
1159
+ setActiveSavedFilters(nextItems);
1160
+ persistActiveSavedFilters(nextItems);
1161
+ }
1097
1162
  setShowSavedFilterComponent(false);
1098
1163
  setHasSearched(true);
1099
1164
  setRefreshKey(function (prev) { return prev + 1; });
@@ -1128,7 +1193,9 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1128
1193
  };
1129
1194
  var finalSearchFilter = tranformSearchToFilters(formattedChips);
1130
1195
  setSearchFilter(finalSearchFilter);
1131
- var finalSavedFilter = currentSavedFilterQuery;
1196
+ var finalSavedFilter = allowMultipleSavedFilters
1197
+ ? (activeSavedFilters.length > 0 ? { $or: activeSavedFilters.map(function (item) { return item.query; }) } : null)
1198
+ : currentSavedFilterQuery;
1132
1199
  var finalPredefinedFilter = predefinedSearchBaseFilter;
1133
1200
  var finalCustomFilter = customFilter;
1134
1201
  var finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules);
@@ -1136,20 +1203,37 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1136
1203
  finalPredefinedFilter && predefinedSearchChip
1137
1204
  ? predefinedSearchChip
1138
1205
  : null;
1139
- if (finalSavedFilter && Object.keys(finalSavedFilter).length > 0) {
1206
+ if (allowMultipleSavedFilters && activeSavedFilters.length > 0) {
1207
+ var resolvedItems = activeSavedFilters.map(function (item) { return resolveSavedFilterVariables(item.query, user === null || user === void 0 ? void 0 : user.id, item.variables || {}); });
1208
+ if (resolvedItems.some(function (item) { return item.missingVariables.length > 0; }))
1209
+ return;
1210
+ finalFilter.resolved_saved_filter_predicate = { $or: resolvedItems.map(function (item) { return item.value; }) };
1211
+ finalFilter.saved_filter_variables = {};
1212
+ finalFilter.saved_filter_items = activeSavedFilters.map(function (item) {
1213
+ var _a, _b, _c, _d, _e, _f;
1214
+ return ({
1215
+ id: (_b = (_a = item.data) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
1216
+ systemKey: (_d = (_c = item.data) === null || _c === void 0 ? void 0 : _c.systemKey) !== null && _d !== void 0 ? _d : null,
1217
+ name: (_f = (_e = item.data) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : null,
1218
+ predicate: item.query,
1219
+ variables: item.variables || {},
1220
+ });
1221
+ });
1222
+ }
1223
+ else if (finalSavedFilter && Object.keys(finalSavedFilter).length > 0) {
1140
1224
  var resolved = resolveSavedFilterVariables(finalSavedFilter, user === null || user === void 0 ? void 0 : user.id, currentSavedFilterVariables);
1141
1225
  if (resolved.missingVariables.length > 0)
1142
1226
  return;
1143
1227
  finalFilter.resolved_saved_filter_predicate = resolved.value;
1144
1228
  finalFilter.saved_filter_variables = currentSavedFilterVariables;
1145
1229
  }
1146
- if (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.id) {
1230
+ if (!allowMultipleSavedFilters && (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.id)) {
1147
1231
  finalFilter.saved_filter_id = currentSavedFilterData.id;
1148
1232
  }
1149
- if (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.systemKey) {
1233
+ if (!allowMultipleSavedFilters && (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.systemKey)) {
1150
1234
  finalFilter.saved_filter_system_key = currentSavedFilterData.systemKey;
1151
1235
  }
1152
- if (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.name) {
1236
+ if (!allowMultipleSavedFilters && (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.name)) {
1153
1237
  finalFilter.saved_filter_name = currentSavedFilterData.name;
1154
1238
  }
1155
1239
  handleApplyCustomFilter(finalFilter, true);
@@ -1179,15 +1263,18 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1179
1263
  // const formatedCustomChips: FilterRule = transformFiltersToRules(customFilter ? customFilter : null);
1180
1264
  // setFilterRules(formatedCustomChips ? [formatedCustomChips] : initialState);
1181
1265
  // }
1182
- setSearchChips([]);
1183
- setSearchFilter(null);
1184
- setFilterRules(initialState);
1185
- setCustomFilter(null);
1186
- setPredefinedSearchChip(null);
1187
- setPredefinedSearchBaseFilter(null);
1266
+ if (!allowMultipleSavedFilters) {
1267
+ setSearchChips([]);
1268
+ setSearchFilter(null);
1269
+ setFilterRules(initialState);
1270
+ setCustomFilter(null);
1271
+ setPredefinedSearchChip(null);
1272
+ setPredefinedSearchBaseFilter(null);
1273
+ }
1188
1274
  if (!(savedfilter === null || savedfilter === void 0 ? void 0 : savedfilter.id)) return [3 /*break*/, 3];
1189
1275
  savedfilterId_1 = savedfilter.id;
1190
1276
  setShowOverlay(false);
1277
+ setEditingSavedFilterKey(getSavedFilterKey(savedfilter));
1191
1278
  currentSavedFilterData_1 = availableSavedFilters.find(function (savedFilter) { return savedFilter.id === savedfilterId_1; });
1192
1279
  setCurrentSavedFilterData(currentSavedFilterData_1);
1193
1280
  if (!currentSavedFilterData_1) return [3 /*break*/, 2];
@@ -1210,8 +1297,28 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1210
1297
  }
1211
1298
  });
1212
1299
  }); };
1300
+ var persistActiveSavedFilters = function (items) {
1301
+ var _a, _b, _c, _d, _e, _f;
1302
+ var first = items[0];
1303
+ var persistedFilter = __assign(__assign({}, (getFilterObjectFromLocalStorage() || {})), { saved_filter_items: items.map(function (item) {
1304
+ var _a, _b, _c, _d, _e, _f;
1305
+ return ({
1306
+ id: (_b = (_a = item.data) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
1307
+ systemKey: (_d = (_c = item.data) === null || _c === void 0 ? void 0 : _c.systemKey) !== null && _d !== void 0 ? _d : null,
1308
+ name: (_f = (_e = item.data) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : null,
1309
+ predicate: item.query,
1310
+ variables: item.variables || {},
1311
+ });
1312
+ }), saved_filter_predicate: items.length > 0 ? (items.length === 1 ? first.query : { $or: items.map(function (item) { return item.query; }) }) : null, saved_filter_variables: items.length === 1 ? (first.variables || {}) : {}, saved_filter_id: items.length === 1 ? (_b = (_a = first.data) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null : null, saved_filter_system_key: items.length === 1 ? (_d = (_c = first.data) === null || _c === void 0 ? void 0 : _c.systemKey) !== null && _d !== void 0 ? _d : null : null, saved_filter_name: items.length === 1 ? (_f = (_e = first.data) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : null : null });
1313
+ delete persistedFilter.finalFullFilter;
1314
+ setFilterObjectToLocalStorage(persistedFilter);
1315
+ };
1213
1316
  var persistActiveSavedFilter = function (savedFilter, filterJson, variables) {
1214
1317
  var _a, _b, _c;
1318
+ if (allowMultipleSavedFilters) {
1319
+ persistActiveSavedFilters([{ data: savedFilter, query: filterJson, variables: variables }]);
1320
+ return;
1321
+ }
1215
1322
  var persistedFilter = __assign(__assign({}, (getFilterObjectFromLocalStorage() || {})), { custom_filter_predicate: null, search_predicate: null, predefined_search_predicate: null, predefined_search_chip: null, saved_filter_predicate: filterJson, saved_filter_variables: variables, saved_filter_id: (_a = savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.id) !== null && _a !== void 0 ? _a : null, saved_filter_system_key: (_b = savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.systemKey) !== null && _b !== void 0 ? _b : null, saved_filter_name: (_c = savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.name) !== null && _c !== void 0 ? _c : null });
1216
1323
  delete persistedFilter.finalFullFilter;
1217
1324
  setFilterObjectToLocalStorage(persistedFilter);
@@ -1222,65 +1329,111 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1222
1329
  setCurrentSavedFilterVariables({});
1223
1330
  setCurrentSavedFilterRules(null);
1224
1331
  setShowSavedFilterComponent(false);
1225
- var persistedFilter = __assign(__assign({}, (getFilterObjectFromLocalStorage() || {})), { saved_filter_predicate: null, saved_filter_variables: {}, saved_filter_id: null, saved_filter_system_key: null, saved_filter_name: null });
1332
+ var persistedFilter = __assign(__assign({}, (getFilterObjectFromLocalStorage() || {})), { saved_filter_items: [], saved_filter_predicate: null, saved_filter_variables: {}, saved_filter_id: null, saved_filter_system_key: null, saved_filter_name: null });
1226
1333
  delete persistedFilter.finalFullFilter;
1227
1334
  setFilterObjectToLocalStorage(persistedFilter);
1228
1335
  setHasSearched(true);
1229
1336
  setRefreshKey(function (prev) { return prev + 1; });
1230
1337
  };
1231
1338
  var deleteSavedFilter = function () { return __awaiter(void 0, void 0, void 0, function () {
1232
- return __generator(this, function (_a) {
1233
- switch (_a.label) {
1234
- case 0:
1235
- // delte the saved filter with id
1236
- return [4 /*yield*/, deleteEntity(savedFilterTobeDeleted)];
1339
+ var nextItems, error_1, errorMessage;
1340
+ var _a, _b;
1341
+ return __generator(this, function (_c) {
1342
+ switch (_c.label) {
1343
+ case 0:
1344
+ _c.trys.push([0, 2, , 3]);
1345
+ return [4 /*yield*/, deleteEntity(savedFilterTobeDeleted).unwrap()];
1237
1346
  case 1:
1238
- // delte the saved filter with id
1239
- _a.sent();
1240
- if (String(savedFilterTobeDeleted) === String(currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.id)) {
1241
- clearActiveSavedFilter();
1347
+ _c.sent();
1348
+ dispatch(showToast({
1349
+ severity: "success",
1350
+ summary: ERROR_MESSAGES.DELETED,
1351
+ detail: ERROR_MESSAGES.ENTITY_DELETE,
1352
+ }));
1353
+ if (allowMultipleSavedFilters) {
1354
+ nextItems = activeSavedFilters.filter(function (item) { var _a; return String((_a = item.data) === null || _a === void 0 ? void 0 : _a.id) !== String(savedFilterTobeDeleted); });
1355
+ setActiveSavedFilters(nextItems);
1356
+ if (String(savedFilterTobeDeleted) === String(currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.id)) {
1357
+ setCurrentSavedFilterData(null);
1358
+ setCurrentSavedFilterQuery(null);
1359
+ setCurrentSavedFilterVariables({});
1360
+ }
1361
+ persistActiveSavedFilters(nextItems);
1362
+ setHasSearched(true);
1363
+ setRefreshKey(function (prev) { return prev + 1; });
1364
+ }
1365
+ else if (String(savedFilterTobeDeleted) === String(currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.id)) {
1366
+ removeSavedFilter();
1242
1367
  }
1243
1368
  setIsDeleteSQDialogVisible(false);
1244
1369
  setTimeout(function () {
1245
1370
  setSavedFilterFetchDataRefreshKey(function (prev) { return prev + 1; });
1246
1371
  }, 500);
1247
- return [2 /*return*/];
1372
+ return [3 /*break*/, 3];
1373
+ case 2:
1374
+ error_1 = _c.sent();
1375
+ errorMessage = ((_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.data) === null || _a === void 0 ? void 0 : _a.message) || ((_b = error_1 === null || error_1 === void 0 ? void 0 : error_1.data) === null || _b === void 0 ? void 0 : _b.error) || (error_1 === null || error_1 === void 0 ? void 0 : error_1.message) || ERROR_MESSAGES.SOMETHING_WRONG;
1376
+ dispatch(showToast({
1377
+ severity: "error",
1378
+ summary: ERROR_MESSAGES.DELETE_FAIELD,
1379
+ detail: errorMessage,
1380
+ }));
1381
+ return [3 /*break*/, 3];
1382
+ case 3: return [2 /*return*/];
1248
1383
  }
1249
1384
  });
1250
1385
  }); };
1251
1386
  var handleSaveFilter = function (formValues) { return __awaiter(void 0, void 0, void 0, function () {
1252
- var filterJson, formData, savedFilterRecord_1, filterJson, formData, result, savedFilterRecord_2, error_1;
1253
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1254
- return __generator(this, function (_l) {
1255
- switch (_l.label) {
1387
+ var filterJson_1, formData, savedFilterRecord_1, nextItems, filterJson, formData, result, savedFilterRecord_2, nextItems, error_2, errorMessage;
1388
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
1389
+ return __generator(this, function (_o) {
1390
+ switch (_o.label) {
1256
1391
  case 0:
1257
1392
  setShowSaveFilterPopup(false);
1258
- _l.label = 1;
1393
+ _o.label = 1;
1259
1394
  case 1:
1260
- _l.trys.push([1, 6, , 7]);
1395
+ _o.trys.push([1, 6, , 7]);
1261
1396
  if (!formValues.id) return [3 /*break*/, 3];
1262
- filterJson = currentSavedFilterQuery;
1397
+ filterJson_1 = currentSavedFilterQuery;
1263
1398
  formData = new FormData();
1264
1399
  formData.append("name", formValues.name);
1265
- formData.append("filterQueryJson", JSON.stringify(filterJson, null, 2));
1400
+ formData.append("filterQueryJson", JSON.stringify(filterJson_1, null, 2));
1266
1401
  formData.append("modelId", (_c = (_b = (_a = viewData === null || viewData === void 0 ? void 0 : viewData.data) === null || _a === void 0 ? void 0 : _a.solidView) === null || _b === void 0 ? void 0 : _b.model) === null || _c === void 0 ? void 0 : _c.id);
1267
1402
  formData.append("viewId", (_e = (_d = viewData === null || viewData === void 0 ? void 0 : viewData.data) === null || _d === void 0 ? void 0 : _d.solidView) === null || _e === void 0 ? void 0 : _e.id);
1268
1403
  formData.append("isPrivate", formValues.isPrivate);
1269
1404
  formData.append("userId", user === null || user === void 0 ? void 0 : user.id);
1270
1405
  return [4 /*yield*/, updateEntity({ id: +formValues.id, data: formData }).unwrap()];
1271
1406
  case 2:
1272
- _l.sent();
1273
- setSearchChips([]);
1274
- setSearchFilter(null);
1275
- setFilterRules(initialState);
1276
- setCustomFilter(null);
1277
- setPredefinedSearchChip(null);
1278
- setPredefinedSearchBaseFilter(null);
1279
- savedFilterRecord_1 = { id: formValues.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson, null, 2) };
1407
+ _o.sent();
1408
+ dispatch(showToast({
1409
+ severity: "success",
1410
+ summary: ERROR_MESSAGES.SAVED_FILTER_UPDATED,
1411
+ detail: ERROR_MESSAGES.SAVED_FILTER_UPDATED_SUCCESSFULLY,
1412
+ }));
1413
+ if (!allowMultipleSavedFilters) {
1414
+ setSearchChips([]);
1415
+ setSearchFilter(null);
1416
+ setFilterRules(initialState);
1417
+ setCustomFilter(null);
1418
+ setPredefinedSearchChip(null);
1419
+ setPredefinedSearchBaseFilter(null);
1420
+ }
1421
+ savedFilterRecord_1 = { id: formValues.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson_1, null, 2) };
1280
1422
  setSavedFilters(function (prev) { return prev.map(function (f) { return String(f === null || f === void 0 ? void 0 : f.id) === String(formValues.id) ? __assign(__assign({}, f), savedFilterRecord_1) : f; }); });
1281
1423
  setCurrentSavedFilterData(savedFilterRecord_1);
1282
- setCurrentSavedFilterQuery(filterJson);
1283
- persistActiveSavedFilter(savedFilterRecord_1, filterJson, currentSavedFilterVariables);
1424
+ setCurrentSavedFilterQuery(filterJson_1);
1425
+ if (allowMultipleSavedFilters) {
1426
+ nextItems = activeSavedFilters.map(function (item) {
1427
+ return getSavedFilterKey(item.data) === getSavedFilterKey(savedFilterRecord_1)
1428
+ ? { data: savedFilterRecord_1, query: filterJson_1, variables: currentSavedFilterVariables }
1429
+ : item;
1430
+ });
1431
+ setActiveSavedFilters(nextItems);
1432
+ persistActiveSavedFilters(nextItems);
1433
+ }
1434
+ else {
1435
+ persistActiveSavedFilter(savedFilterRecord_1, filterJson_1, currentSavedFilterVariables);
1436
+ }
1284
1437
  setHasSearched(true);
1285
1438
  setRefreshKey(function (prev) { return prev + 1; });
1286
1439
  return [3 /*break*/, 5];
@@ -1295,7 +1448,12 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1295
1448
  formData.append("userId", user === null || user === void 0 ? void 0 : user.id);
1296
1449
  return [4 /*yield*/, createEntity(formData).unwrap()];
1297
1450
  case 4:
1298
- result = _l.sent();
1451
+ result = _o.sent();
1452
+ dispatch(showToast({
1453
+ severity: "success",
1454
+ summary: ERROR_MESSAGES.SAVED_FILTER_CREATED,
1455
+ detail: ERROR_MESSAGES.SAVED_FILTER_CREATED_SUCCESSFULLY,
1456
+ }));
1299
1457
  setSearchChips([]);
1300
1458
  setSearchFilter(null);
1301
1459
  setFilterRules(initialState);
@@ -1307,13 +1465,26 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1307
1465
  setCurrentSavedFilterData(savedFilterRecord_2);
1308
1466
  setCurrentSavedFilterQuery(filterJson);
1309
1467
  setCurrentSavedFilterVariables({});
1310
- persistActiveSavedFilter(savedFilterRecord_2, filterJson, {});
1468
+ if (allowMultipleSavedFilters) {
1469
+ nextItems = [{ data: savedFilterRecord_2, query: filterJson, variables: {} }];
1470
+ setActiveSavedFilters(nextItems);
1471
+ persistActiveSavedFilters(nextItems);
1472
+ }
1473
+ else {
1474
+ persistActiveSavedFilter(savedFilterRecord_2, filterJson, {});
1475
+ }
1311
1476
  setHasSearched(true);
1312
1477
  setRefreshKey(function (prev) { return prev + 1; });
1313
- _l.label = 5;
1478
+ _o.label = 5;
1314
1479
  case 5: return [3 /*break*/, 7];
1315
1480
  case 6:
1316
- error_1 = _l.sent();
1481
+ error_2 = _o.sent();
1482
+ errorMessage = ((_l = error_2 === null || error_2 === void 0 ? void 0 : error_2.data) === null || _l === void 0 ? void 0 : _l.message) || ((_m = error_2 === null || error_2 === void 0 ? void 0 : error_2.data) === null || _m === void 0 ? void 0 : _m.error) || (error_2 === null || error_2 === void 0 ? void 0 : error_2.message) || ERROR_MESSAGES.SOMETHING_WRONG;
1483
+ dispatch(showToast({
1484
+ severity: "error",
1485
+ summary: ERROR_MESSAGES.ERROR,
1486
+ detail: errorMessage,
1487
+ }));
1317
1488
  return [3 /*break*/, 7];
1318
1489
  case 7: return [2 /*return*/];
1319
1490
  }
@@ -1378,6 +1549,27 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1378
1549
  console.error("Unable to apply saved filter '".concat(savedfilter === null || savedfilter === void 0 ? void 0 : savedfilter.name, "': missing variables ").concat(resolved.missingVariables.join(", ")));
1379
1550
  return false;
1380
1551
  }
1552
+ if (allowMultipleSavedFilters) {
1553
+ var key_1 = getSavedFilterKey(savedfilter);
1554
+ var nextItem_1 = { data: savedfilter, query: filterJson, variables: variables };
1555
+ var existingItem = activeSavedFilters.find(function (item) { return getSavedFilterKey(item.data) === key_1; });
1556
+ if (existingItem && areFilterStateValuesEqual(existingItem.query, filterJson) && areFilterStateValuesEqual(existingItem.variables, variables)) {
1557
+ return true;
1558
+ }
1559
+ var nextItems = existingItem
1560
+ ? activeSavedFilters.map(function (item) { return getSavedFilterKey(item.data) === key_1 ? nextItem_1 : item; })
1561
+ : __spreadArray(__spreadArray([], activeSavedFilters, true), [nextItem_1], false);
1562
+ setActiveSavedFilters(nextItems);
1563
+ setCurrentSavedFilterData(savedfilter);
1564
+ setCurrentSavedFilterQuery(filterJson);
1565
+ setCurrentSavedFilterVariables(variables);
1566
+ setEditingSavedFilterKey(null);
1567
+ persistActiveSavedFilters(nextItems);
1568
+ setShowOverlay(false);
1569
+ setHasSearched(true);
1570
+ setRefreshKey(function (prev) { return prev + 1; });
1571
+ return true;
1572
+ }
1381
1573
  // Applying the already-active filter must be a no-op. This is important
1382
1574
  // for lifecycle extensions: applying a filter causes a new list load,
1383
1575
  // which invokes onBeforeListDataLoad/onListLoad again.
@@ -1409,6 +1601,19 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1409
1601
  return true;
1410
1602
  };
1411
1603
  var removeSavedFilter = function () {
1604
+ if (allowMultipleSavedFilters) {
1605
+ var key_2 = getSavedFilterKey(currentSavedFilterData);
1606
+ var nextItems = activeSavedFilters.filter(function (item) { return getSavedFilterKey(item.data) !== key_2; });
1607
+ setActiveSavedFilters(nextItems);
1608
+ setCurrentSavedFilterData(null);
1609
+ setCurrentSavedFilterQuery(null);
1610
+ setCurrentSavedFilterVariables({});
1611
+ setEditingSavedFilterKey(null);
1612
+ persistActiveSavedFilters(nextItems);
1613
+ setHasSearched(true);
1614
+ setRefreshKey(function (prev) { return prev + 1; });
1615
+ return;
1616
+ }
1412
1617
  clearActiveSavedFilter();
1413
1618
  };
1414
1619
  var SavedFiltersChip = function () {
@@ -1463,14 +1668,30 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1463
1668
  var customRuleCount = (_x = (_v = (_u = customFilter === null || customFilter === void 0 ? void 0 : customFilter.$or) === null || _u === void 0 ? void 0 : _u.length) !== null && _v !== void 0 ? _v : (_w = customFilter === null || customFilter === void 0 ? void 0 : customFilter.$and) === null || _w === void 0 ? void 0 : _w.length) !== null && _x !== void 0 ? _x : Object.keys(customFilter || {}).length;
1464
1669
  var managedChipItems = useMemo(function () {
1465
1670
  var items = [];
1466
- if (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.name) {
1467
- items.push({
1468
- id: "saved-filter",
1469
- type: "saved",
1470
- label: "Saved: ".concat(currentSavedFilterData.name),
1471
- onRemove: function () { return removeSavedFilter(); },
1472
- });
1473
- }
1671
+ var savedItems = allowMultipleSavedFilters
1672
+ ? activeSavedFilters
1673
+ : ((currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.name) ? [{ data: currentSavedFilterData }] : []);
1674
+ savedItems.forEach(function (item) {
1675
+ var _a;
1676
+ if ((_a = item.data) === null || _a === void 0 ? void 0 : _a.name) {
1677
+ items.push(__assign({ id: "saved-filter:".concat(getSavedFilterKey(item.data)), type: "saved", label: "Saved: ".concat(item.data.name), onRemove: function () {
1678
+ if (!allowMultipleSavedFilters) {
1679
+ removeSavedFilter();
1680
+ return;
1681
+ }
1682
+ var nextItems = activeSavedFilters.filter(function (active) { return getSavedFilterKey(active.data) !== getSavedFilterKey(item.data); });
1683
+ setActiveSavedFilters(nextItems);
1684
+ if (getSavedFilterKey(currentSavedFilterData) === getSavedFilterKey(item.data)) {
1685
+ setCurrentSavedFilterData(null);
1686
+ setCurrentSavedFilterQuery(null);
1687
+ setCurrentSavedFilterVariables({});
1688
+ }
1689
+ persistActiveSavedFilters(nextItems);
1690
+ setHasSearched(true);
1691
+ setRefreshKey(function (prev) { return prev + 1; });
1692
+ } }, (allowMultipleSavedFilters ? { onOpen: function () { return openSavedCustomFilter(item.data); } } : {})));
1693
+ }
1694
+ });
1474
1695
  if ((predefinedSearchChip === null || predefinedSearchChip === void 0 ? void 0 : predefinedSearchChip.name) && (predefinedSearchChip === null || predefinedSearchChip === void 0 ? void 0 : predefinedSearchChip.value)) {
1475
1696
  items.push({
1476
1697
  id: "predefined-search",
@@ -1511,6 +1732,8 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1511
1732
  return items;
1512
1733
  }, [
1513
1734
  currentSavedFilterData,
1735
+ activeSavedFilters,
1736
+ allowMultipleSavedFilters,
1514
1737
  predefinedSearchChip,
1515
1738
  customFilter,
1516
1739
  customRuleCount,
@@ -1707,7 +1930,6 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1707
1930
  var removePredefinedSearchChip = function () {
1708
1931
  setPredefinedSearchChip(null);
1709
1932
  setPredefinedSearchBaseFilter(null);
1710
- setCustomFilter(null);
1711
1933
  setHasSearched(true);
1712
1934
  setRefreshKey(function (prev) { return prev + 1; });
1713
1935
  };
@@ -1736,12 +1958,18 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1736
1958
  var optionIndex = overlayOptions.findIndex(function (option) { return option.id === "predefined:".concat(predefinedSearch.name || index); });
1737
1959
  return (_jsx(SolidButton, { id: getOverlayOptionId(optionIndex), role: "option", "aria-selected": focusedIndex === optionIndex, variant: "ghost", size: "sm", className: "text-color solid-search-overlay-option ".concat(focusedIndex === optionIndex ? "solid-search-overlay-option-active" : ""), onMouseDown: function (e) {
1738
1960
  e.preventDefault();
1961
+ e.stopPropagation();
1962
+ }, onClick: function (e) {
1963
+ e.stopPropagation();
1739
1964
  handlePredefinedSearch(predefinedSearch);
1740
1965
  }, onMouseEnter: function () { return setFocusedIndex(optionIndex); }, children: _jsxs("span", { className: "solid-search-overlay-option-content", children: [_jsx("span", { className: "solid-search-overlay-option-icon", "aria-hidden": "true", children: _jsx(Sparkles, { size: 15 }) }), _jsxs("span", { className: "solid-search-overlay-option-copy", children: [_jsx("span", { className: "solid-search-overlay-option-title", children: predefinedSearch.name }), _jsxs("span", { className: "solid-search-overlay-option-description", children: ["Search for \u201C", inputValue, "\u201D", predefinedSearch.description ? " \u2014 ".concat(predefinedSearch.description) : ""] })] })] }) }, index));
1741
1966
  })] }), _jsx("hr", { className: "solid-search-overlay-section-separator" })] })), _jsxs("div", { className: "solid-search-overlay-section solid-search-overlay-section--search", children: [_jsxs("h6", { className: "my-1 solid-search-overlay-heading solid-search-overlay-section-title solid-search-overlay-heading-with-icon", children: [_jsx(Search, { size: 13 }), _jsx("span", { children: "Search individual fields" }), _jsx("span", { className: "solid-search-overlay-section-count", children: searchableFields.length })] }), searchableFields.length > 0 ? (searchableFields.map(function (value, index) {
1742
1967
  var optionIndex = overlayOptions.findIndex(function (option) { return option.id === "field:".concat(value.fieldName); });
1743
1968
  return (_jsx(SolidButton, { id: getOverlayOptionId(optionIndex), role: "option", "aria-selected": focusedIndex === optionIndex, variant: "ghost", size: "sm", className: "text-color solid-search-overlay-option ".concat(focusedIndex === optionIndex ? "solid-search-overlay-option-active" : ""), onMouseDown: function (e) {
1744
1969
  e.preventDefault();
1970
+ e.stopPropagation();
1971
+ }, onClick: function (e) {
1972
+ e.stopPropagation();
1745
1973
  var currentValue = inputValue === null || inputValue === void 0 ? void 0 : inputValue.trim();
1746
1974
  if (currentValue) {
1747
1975
  var values = currentValue.split(",").map(function (v) { return v.trim(); }).filter(function (v) { return v !== ""; });
@@ -1763,7 +1991,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1763
1991
  _jsx(_Fragment, { children: _jsx("div", { className: "solid-search-overlay-empty", children: _jsxs("div", { className: "solid-search-overlay-panel-callout", children: [_jsx("div", { className: "solid-search-overlay-panel-callout-icon", children: _jsx(Search, { size: 13 }) }), _jsxs("div", { className: "solid-search-overlay-panel-callout-copy", children: [_jsx("div", { className: "solid-search-overlay-empty-title", children: "Start typing to search" }), _jsxs("div", { className: "solid-search-overlay-empty-subtitle", children: ["Enter a value to see suggested searches and searchable ", searchableEntityLabel, " fields."] })] })] }) }) }), selectableSavedFilters.length > 0 &&
1764
1992
  _jsxs(_Fragment, { children: [_jsx("hr", { className: "solid-search-overlay-section-separator" }), _jsxs("div", { className: "solid-search-overlay-section solid-search-overlay-section--saved", children: [_jsxs("div", { className: "solid-search-overlay-panel-callout solid-search-overlay-panel-callout-compact items-center", children: [_jsx("div", { className: "solid-search-overlay-panel-callout-icon", children: _jsx(Bookmark, { size: 13 }) }), _jsx("div", { className: "solid-search-overlay-panel-callout-copy", children: _jsxs("p", { className: "solid-search-overlay-heading solid-search-overlay-section-title", children: [_jsx("span", { children: "Saved filters" }), _jsx("span", { className: "solid-search-overlay-section-count", children: selectableSavedFilters.length })] }) })] }), _jsx("div", { className: "solid-search-overlay-saved-list", children: selectableSavedFilters.map(function (savedfilter, index) {
1765
1993
  var _a;
1766
- return (_jsx(SavedFilterList, { savedfilter: savedfilter, activeSavedFilterReference: (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.systemKey) || (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.id), applySavedFilter: applySavedFilter, openSavedCustomFilter: openSavedCustomFilter, setSavedFilterTobeDeleted: setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible: setIsDeleteSQDialogVisible, isFocused: ((_a = overlayOptions[focusedIndex]) === null || _a === void 0 ? void 0 : _a.id) === "saved:".concat(savedfilter.id), onMouseEnter: function () {
1994
+ return (_jsx(SavedFilterList, { savedfilter: savedfilter, activeSavedFilterReference: (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.systemKey) || (currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.id), activeSavedFilterReferences: allowMultipleSavedFilters ? activeSavedFilters.map(function (item) { return getSavedFilterKey(item.data); }) : undefined, applySavedFilter: applySavedFilter, openSavedCustomFilter: openSavedCustomFilter, setSavedFilterTobeDeleted: setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible: setIsDeleteSQDialogVisible, isFocused: ((_a = overlayOptions[focusedIndex]) === null || _a === void 0 ? void 0 : _a.id) === "saved:".concat(savedfilter.id), onMouseEnter: function () {
1767
1995
  var optIndex = overlayOptions.findIndex(function (o) { return o.id === "saved:".concat(savedfilter.id); });
1768
1996
  if (optIndex !== -1)
1769
1997
  setFocusedIndex(optIndex);