@solidxai/core-ui 0.1.3 → 0.1.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  2. package/dist/components/auth/SolidInitialLoginOtp.js +0 -5
  3. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  4. package/dist/components/auth/SolidInitialLoginOtp.tsx +0 -5
  5. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  6. package/dist/components/auth/SolidLogin.js +7 -5
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +10 -8
  9. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  10. package/dist/components/common/GeneralSettings.js +48 -47
  11. package/dist/components/common/GeneralSettings.js.map +1 -1
  12. package/dist/components/common/GeneralSettings.tsx +41 -10
  13. package/dist/components/core/common/FilterComponent.js.map +1 -1
  14. package/dist/components/core/common/FilterComponent.tsx +1 -1
  15. package/dist/components/core/common/GroupingComponent.d.ts +54 -0
  16. package/dist/components/core/common/GroupingComponent.d.ts.map +1 -0
  17. package/dist/components/core/common/GroupingComponent.js +196 -0
  18. package/dist/components/core/common/GroupingComponent.js.map +1 -0
  19. package/dist/components/core/common/GroupingComponent.tsx +452 -0
  20. package/dist/components/core/common/SolidGlobalSearchElement.d.ts +18 -1
  21. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  22. package/dist/components/core/common/SolidGlobalSearchElement.js +146 -47
  23. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  24. package/dist/components/core/common/SolidGlobalSearchElement.tsx +191 -18
  25. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts +19 -0
  26. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts.map +1 -0
  27. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js +90 -0
  28. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js.map +1 -0
  29. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.tsx +59 -0
  30. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
  31. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +7 -3
  32. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  33. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +45 -40
  34. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts +2 -0
  35. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts.map +1 -0
  36. package/dist/components/core/filter/SolidOneToManyFilterElement.js +86 -0
  37. package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -0
  38. package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +62 -0
  39. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts +1 -0
  40. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
  41. package/dist/components/core/filter/SolidVarInputsFilterElement.js +4 -1
  42. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  43. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +10 -0
  44. package/dist/components/core/filter/fields/SolidRelationField.d.ts.map +1 -1
  45. package/dist/components/core/filter/fields/SolidRelationField.js +4 -2
  46. package/dist/components/core/filter/fields/SolidRelationField.js.map +1 -1
  47. package/dist/components/core/filter/fields/SolidRelationField.tsx +4 -2
  48. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts +4 -0
  49. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -0
  50. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +25 -0
  51. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -0
  52. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +60 -0
  53. package/dist/components/core/form/SolidFormFooter.js +4 -4
  54. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  55. package/dist/components/core/form/SolidFormFooter.tsx +4 -4
  56. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  57. package/dist/components/core/form/fields/SolidBooleanField.js +11 -8
  58. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  59. package/dist/components/core/form/fields/SolidBooleanField.tsx +20 -8
  60. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  61. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +26 -21
  62. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  63. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +27 -17
  64. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +1 -0
  65. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +51 -0
  67. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  68. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +51 -0
  69. package/dist/components/core/kanban/SolidKanbanView.js +5 -5
  70. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  71. package/dist/components/core/kanban/SolidKanbanView.tsx +5 -5
  72. package/dist/components/core/list/SolidListView.d.ts +12 -7
  73. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  74. package/dist/components/core/list/SolidListView.js +138 -150
  75. package/dist/components/core/list/SolidListView.js.map +1 -1
  76. package/dist/components/core/list/SolidListView.tsx +84 -91
  77. package/dist/components/core/list/listViewRegistry.js.map +1 -1
  78. package/dist/components/core/list/listViewRegistry.ts +1 -2
  79. package/dist/components/core/tree/SolidTreeView.d.ts +38 -0
  80. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -0
  81. package/dist/components/core/tree/SolidTreeView.js +1170 -0
  82. package/dist/components/core/tree/SolidTreeView.js.map +1 -0
  83. package/dist/components/core/tree/SolidTreeView.tsx +1603 -0
  84. package/dist/components/core/tree/treeViewRegistry.d.ts +7 -0
  85. package/dist/components/core/tree/treeViewRegistry.d.ts.map +1 -0
  86. package/dist/components/core/tree/treeViewRegistry.js +17 -0
  87. package/dist/components/core/tree/treeViewRegistry.js.map +1 -0
  88. package/dist/components/core/tree/treeViewRegistry.ts +23 -0
  89. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  90. package/dist/components/core/users/CreateUser.js +19 -6
  91. package/dist/components/core/users/CreateUser.js.map +1 -1
  92. package/dist/components/core/users/CreateUser.tsx +39 -0
  93. package/dist/helpers/helpers.d.ts +2 -0
  94. package/dist/helpers/helpers.d.ts.map +1 -1
  95. package/dist/helpers/helpers.js +3 -1
  96. package/dist/helpers/helpers.js.map +1 -1
  97. package/dist/helpers/helpers.ts +4 -1
  98. package/dist/helpers/registry.d.ts.map +1 -1
  99. package/dist/helpers/registry.js +2 -0
  100. package/dist/helpers/registry.js.map +1 -1
  101. package/dist/helpers/registry.ts +3 -1
  102. package/dist/index.d.ts +3 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +2 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/index.ts +6 -1
  107. package/dist/resources/globals.css +18 -4
  108. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  109. package/dist/routes/pages/admin/core/ListPage.js +1 -1
  110. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  111. package/dist/routes/pages/admin/core/ListPage.tsx +2 -1
  112. package/dist/routes/pages/admin/core/TreePage.d.ts +2 -0
  113. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -0
  114. package/dist/routes/pages/admin/core/TreePage.js +37 -0
  115. package/dist/routes/pages/admin/core/TreePage.js.map +1 -0
  116. package/dist/routes/pages/admin/core/TreePage.tsx +30 -0
  117. package/dist/routes/solidRoutes.d.ts.map +1 -1
  118. package/dist/routes/solidRoutes.js +2 -0
  119. package/dist/routes/solidRoutes.js.map +1 -1
  120. package/dist/routes/solidRoutes.tsx +3 -1
  121. package/dist/routes/types.d.ts +1 -1
  122. package/dist/routes/types.d.ts.map +1 -1
  123. package/dist/routes/types.js.map +1 -1
  124. package/dist/routes/types.ts +1 -0
  125. package/dist/types/index.d.ts +8 -2
  126. package/dist/types/solid-core.d.ts +40 -0
  127. package/package.json +1 -1
@@ -63,7 +63,7 @@ import { Divider } from "primereact/divider";
63
63
  import { usePathname } from "../../../hooks/usePathname";
64
64
  import { useRouter } from "../../../hooks/useRouter";
65
65
  import { useSearchParams } from "../../../hooks/useSearchParams";
66
- import { queryStringToQueryObject } from "../list/SolidListView";
66
+ import { getFilterObjectFromLocalStorage } from "../list/SolidListView";
67
67
  import { InputText } from "primereact/inputtext";
68
68
  import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
69
69
  import qs from "qs";
@@ -71,6 +71,7 @@ import { SolidSaveCustomFilterForm } from "./SolidSaveCustomFilterForm";
71
71
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
72
72
  import { hydrateRelationRules } from "../../../helpers/hydrateRelationRules";
73
73
  import { useSession } from '../../../hooks/useSession';
74
+ import GroupingComponent from "./GroupingComponent";
74
75
  var getRandomInt = function (min, max) {
75
76
  return Math.floor(Math.random() * (max - min + 1)) + min;
76
77
  };
@@ -374,7 +375,7 @@ export var mergeSearchAndCustomFilters = function (transformedFilter, newFilter,
374
375
  // Return the combined filters object
375
376
  return filters;
376
377
  };
377
- export var mergeAllDiffFilters = function (customFilter, searchFilter, savedFilter, preDefinedFilter) {
378
+ export var mergeAllDiffFilters = function (customFilter, searchFilter, savedFilter, preDefinedFilter, groupingRules, aggregationRules) {
378
379
  var filters = {};
379
380
  // Add only non-null filters
380
381
  if (customFilter && Object.keys(customFilter).length > 0) {
@@ -389,6 +390,12 @@ export var mergeAllDiffFilters = function (customFilter, searchFilter, savedFilt
389
390
  if (preDefinedFilter && Object.keys(preDefinedFilter).length > 0) {
390
391
  filters["predefined_search_predicate"] = preDefinedFilter;
391
392
  }
393
+ if (groupingRules && Object.keys(groupingRules).length > 0) {
394
+ filters["grouping_rules"] = groupingRules;
395
+ }
396
+ if (aggregationRules && Object.keys(aggregationRules).length > 0) {
397
+ filters["aggregation_rules"] = aggregationRules;
398
+ }
392
399
  // Return the combined filters object
393
400
  return filters;
394
401
  };
@@ -460,7 +467,7 @@ var extractChips = function (node) {
460
467
  };
461
468
  export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
462
469
  var _b, _c, _d, _e, _f, _g, _h;
463
- var viewData = _a.viewData, handleApplyCustomFilter = _a.handleApplyCustomFilter, showSaveFilterPopup = _a.showSaveFilterPopup, setShowSaveFilterPopup = _a.setShowSaveFilterPopup, filterPredicates = _a.filterPredicates;
470
+ var viewData = _a.viewData, viewType = _a.viewType, handleApplyCustomFilter = _a.handleApplyCustomFilter, showSaveFilterPopup = _a.showSaveFilterPopup, setShowSaveFilterPopup = _a.setShowSaveFilterPopup, filterPredicates = _a.filterPredicates;
464
471
  var defaultState = [
465
472
  {
466
473
  id: 1,
@@ -489,6 +496,17 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
489
496
  ]
490
497
  }
491
498
  ];
499
+ var defaultAggregationRules = [
500
+ {
501
+ id: 1,
502
+ operator: "count",
503
+ fieldName: "id",
504
+ locked: true
505
+ }
506
+ ];
507
+ var defaultGroupingRules = [
508
+ { id: 1, fieldName: null, dateGrouping: null }
509
+ ];
492
510
  var _j = useState(defaultState), initialState = _j[0], setInitialState = _j[1];
493
511
  var pathname = usePathname();
494
512
  var searchParams = useSearchParams(); // Converts the query params to a string
@@ -501,43 +519,48 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
501
519
  var _l = useState(null), customFilter = _l[0], setCustomFilter = _l[1];
502
520
  var _m = useState([]), fields = _m[0], setFields = _m[1];
503
521
  var _o = useState([]), searchableFields = _o[0], setSearchableFields = _o[1];
522
+ var _p = useState([]), groupableFields = _p[0], setGroupableFields = _p[1];
523
+ var _q = useState(defaultGroupingRules), groupingRules = _q[0], setGroupingRules = _q[1];
524
+ var _r = useState(defaultAggregationRules), aggregationRules = _r[0], setAggregationRules = _r[1];
504
525
  // used to show the list of predefined searches
505
- var _p = useState([]), predefinedSearches = _p[0], setPredefinedSearches = _p[1];
526
+ var _s = useState([]), predefinedSearches = _s[0], setPredefinedSearches = _s[1];
506
527
  // used to open / close the custom fitler popup
507
- var _q = useState(false), showGlobalSearchElement = _q[0], setShowGlobalSearchElement = _q[1];
528
+ var _t = useState(false), showGlobalSearchElement = _t[0], setShowGlobalSearchElement = _t[1];
529
+ // used to open / close the group fitler popup
530
+ var _u = useState(false), showGroupFilterElement = _u[0], setShowGroupFilterElement = _u[1];
508
531
  // searchChips maintain the ui to display searched query
509
532
  // searchFilter maintain the transformed filter of the searched query
510
- var _r = useState([]), searchChips = _r[0], setSearchChips = _r[1];
511
- var _s = useState(null), searchFilter = _s[0], setSearchFilter = _s[1];
533
+ var _v = useState([]), searchChips = _v[0], setSearchChips = _v[1];
534
+ var _w = useState(null), searchFilter = _w[0], setSearchFilter = _w[1];
512
535
  // predefinedSearchChip maintain the ui to display predefined searches query
513
- var _t = useState(null), predefinedSearchChip = _t[0], setPredefinedSearchChip = _t[1];
536
+ var _x = useState(null), predefinedSearchChip = _x[0], setPredefinedSearchChip = _x[1];
514
537
  // state to maintain the text typed in the search input box
515
- var _u = useState(""), inputValue = _u[0], setInputValue = _u[1];
538
+ var _y = useState(""), inputValue = _y[0], setInputValue = _y[1];
516
539
  // flag to prevent un necessary re renders
517
- var _v = useState(false), hasSearched = _v[0], setHasSearched = _v[1];
540
+ var _z = useState(false), hasSearched = _z[0], setHasSearched = _z[1];
518
541
  // currentSavedFilterData is used to save the whole object of saved filter
519
- var _w = useState(), currentSavedFilterData = _w[0], setCurrentSavedFilterData = _w[1];
520
- var _x = useState(), currentSavedFilterQuery = _x[0], setCurrentSavedFilterQuery = _x[1];
521
- var _y = useState(), currentSavedFilterRules = _y[0], setCurrentSavedFilterRules = _y[1];
522
- var _z = useState(false), showSavedFilterComponent = _z[0], setShowSavedFilterComponent = _z[1];
523
- var _0 = useState(), savedFilterTobeDeleted = _0[0], setSavedFilterTobeDeleted = _0[1];
524
- var _1 = useState(false), isDeleteSQDialogVisible = _1[0], setIsDeleteSQDialogVisible = _1[1];
525
- var _2 = useState(), savedFilterQueryString = _2[0], setSavedFilterQueryString = _2[1];
526
- var _3 = useState(false), showOverlay = _3[0], setShowOverlay = _3[1];
542
+ var _0 = useState(), currentSavedFilterData = _0[0], setCurrentSavedFilterData = _0[1];
543
+ var _1 = useState(), currentSavedFilterQuery = _1[0], setCurrentSavedFilterQuery = _1[1];
544
+ var _2 = useState(), currentSavedFilterRules = _2[0], setCurrentSavedFilterRules = _2[1];
545
+ var _3 = useState(false), showSavedFilterComponent = _3[0], setShowSavedFilterComponent = _3[1];
546
+ var _4 = useState(), savedFilterTobeDeleted = _4[0], setSavedFilterTobeDeleted = _4[1];
547
+ var _5 = useState(false), isDeleteSQDialogVisible = _5[0], setIsDeleteSQDialogVisible = _5[1];
548
+ var _6 = useState(), savedFilterQueryString = _6[0], setSavedFilterQueryString = _6[1];
549
+ var _7 = useState(false), showOverlay = _7[0], setShowOverlay = _7[1];
527
550
  var overlayRef = useRef(null);
528
- var _4 = useSession(), session = _4.data, status = _4.status;
551
+ var _8 = useSession(), session = _8.data, status = _8.status;
529
552
  var user = session === null || session === void 0 ? void 0 : session.user;
530
- var _5 = useState(0), refreshKey = _5[0], setRefreshKey = _5[1];
531
- var _6 = useState(null), predefinedSearchBaseFilter = _6[0], setPredefinedSearchBaseFilter = _6[1];
532
- var _7 = useState([]), savedFilters = _7[0], setSavedFilters = _7[1];
533
- var _8 = useState(false), savedFiltersLoaded = _8[0], setSavedFiltersLoaded = _8[1];
553
+ var _9 = useState(0), refreshKey = _9[0], setRefreshKey = _9[1];
554
+ var _10 = useState(null), predefinedSearchBaseFilter = _10[0], setPredefinedSearchBaseFilter = _10[1];
555
+ var _11 = useState([]), savedFilters = _11[0], setSavedFilters = _11[1];
556
+ var _12 = useState(false), savedFiltersLoaded = _12[0], setSavedFiltersLoaded = _12[1];
534
557
  var entityApi = createSolidEntityApi("savedFilters");
535
558
  var useCreateSolidEntityMutation = entityApi.useCreateSolidEntityMutation, useDeleteSolidEntityMutation = entityApi.useDeleteSolidEntityMutation, useGetSolidEntityByIdQuery = entityApi.useGetSolidEntityByIdQuery, useUpdateSolidEntityMutation = entityApi.useUpdateSolidEntityMutation, useLazyGetSolidEntitiesQuery = entityApi.useLazyGetSolidEntitiesQuery;
536
- var _9 = useCreateSolidEntityMutation(), createEntity = _9[0], _10 = _9[1], isEntityCreateSuccess = _10.isSuccess, isEntityCreateError = _10.isError, entityCreateError = _10.error;
537
- var _11 = useUpdateSolidEntityMutation(), updateEntity = _11[0], _12 = _11[1], isEntityUpdateSuceess = _12.isSuccess, isEntityUpdateError = _12.isError, entityUpdateError = _12.error;
538
- var _13 = useDeleteSolidEntityMutation(), deleteEntity = _13[0], _14 = _13[1], isEntityDeleteSuceess = _14.isSuccess, isEntityDeleteError = _14.isError, entityDeleteError = _14.error;
539
- var _15 = useLazyGetSolidEntitiesQuery(), triggerGetSolidEntities = _15[0], _16 = _15[1], solidEntityListViewData = _16.data, isSavedFilterLoading = _16.isLoading, error = _16.error;
540
- var _17 = useState(0), savedFilterFetchDataRefreshKey = _17[0], setSavedFilterFetchDataRefreshKey = _17[1];
559
+ var _13 = useCreateSolidEntityMutation(), createEntity = _13[0], _14 = _13[1], isEntityCreateSuccess = _14.isSuccess, isEntityCreateError = _14.isError, entityCreateError = _14.error;
560
+ var _15 = useUpdateSolidEntityMutation(), updateEntity = _15[0], _16 = _15[1], isEntityUpdateSuceess = _16.isSuccess, isEntityUpdateError = _16.isError, entityUpdateError = _16.error;
561
+ var _17 = useDeleteSolidEntityMutation(), deleteEntity = _17[0], _18 = _17[1], isEntityDeleteSuceess = _18.isSuccess, isEntityDeleteError = _18.isError, entityDeleteError = _18.error;
562
+ var _19 = useLazyGetSolidEntitiesQuery(), triggerGetSolidEntities = _19[0], _20 = _19[1], solidEntityListViewData = _20.data, isSavedFilterLoading = _20.isLoading, error = _20.error;
563
+ var _21 = useState(0), savedFilterFetchDataRefreshKey = _21[0], setSavedFilterFetchDataRefreshKey = _21[1];
541
564
  useEffect(function () {
542
565
  var fn = function () { return __awaiter(void 0, void 0, void 0, function () {
543
566
  var filters, queryData, queryString, savedFilter;
@@ -604,14 +627,15 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
604
627
  }); });
605
628
  useEffect(function () {
606
629
  var fn = function () { return __awaiter(void 0, void 0, void 0, function () {
607
- var searchChips, customChips, queryObject, currentSavedFilterId_1, currentSavedFilterData_1, filterJson, finalSavedFilter, formattedChips, rules, hydratedRules;
608
- return __generator(this, function (_a) {
609
- switch (_a.label) {
630
+ var searchChips, customChips, queryObject, currentSavedFilterId_1, currentSavedFilterData_1, filterJson, finalSavedFilter, formattedChips, rules, hydratedRules, hasGroupingRules, layoutGroupBy, initialGroupingRules;
631
+ var _a, _b, _c, _d, _e;
632
+ return __generator(this, function (_f) {
633
+ switch (_f.label) {
610
634
  case 0:
611
635
  if (!savedFiltersLoaded) return [3 /*break*/, 3];
612
636
  if (activeSavedFilter && savedFilters.length === 0)
613
637
  return [2 /*return*/];
614
- queryObject = queryStringToQueryObject();
638
+ queryObject = getFilterObjectFromLocalStorage();
615
639
  // const savedQuery = parsedSearchParams?.get("savedQuery");
616
640
  if (activeSavedFilter) {
617
641
  currentSavedFilterId_1 = Number(activeSavedFilter);
@@ -645,13 +669,34 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
645
669
  rules = transformFiltersToRules(customChips);
646
670
  return [4 /*yield*/, hydrateRelationRules([rules], viewData)];
647
671
  case 1:
648
- hydratedRules = _a.sent();
672
+ hydratedRules = _f.sent();
649
673
  setFilterRules(hydratedRules);
650
- _a.label = 2;
674
+ _f.label = 2;
651
675
  case 2:
676
+ hasGroupingRules = ((_a = queryObject === null || queryObject === void 0 ? void 0 : queryObject.grouping_rules) === null || _a === void 0 ? void 0 : _a.some(function (rule) { return rule.fieldName !== null; }));
677
+ if (hasGroupingRules) {
678
+ setGroupingRules(queryObject === null || queryObject === void 0 ? void 0 : queryObject.grouping_rules);
679
+ }
680
+ else {
681
+ layoutGroupBy = (_e = (_d = (_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.layout) === null || _d === void 0 ? void 0 : _d.attrs) === null || _e === void 0 ? void 0 : _e.groupBy;
682
+ if (Array.isArray(layoutGroupBy) && layoutGroupBy.length > 0) {
683
+ initialGroupingRules = layoutGroupBy.map(function (groupStr, index) {
684
+ var _a = groupStr.split(":"), fieldName = _a[0], dateGrouping = _a[1];
685
+ return {
686
+ id: Date.now() + index,
687
+ fieldName: fieldName || null,
688
+ dateGrouping: dateGrouping || null
689
+ };
690
+ });
691
+ setGroupingRules(initialGroupingRules);
692
+ }
693
+ }
694
+ if ((queryObject === null || queryObject === void 0 ? void 0 : queryObject.aggregation_rules) && (queryObject === null || queryObject === void 0 ? void 0 : queryObject.aggregation_rules) !== aggregationRules) {
695
+ setAggregationRules(queryObject === null || queryObject === void 0 ? void 0 : queryObject.aggregation_rules);
696
+ }
652
697
  setRefreshKey(function (prev) { return prev + 1; });
653
698
  setHasSearched(true);
654
- _a.label = 3;
699
+ _f.label = 3;
655
700
  case 3: return [2 /*return*/];
656
701
  }
657
702
  });
@@ -706,7 +751,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
706
751
  var layoutChildren = (_f = (_e = (_d = (_c = viewData === null || viewData === void 0 ? void 0 : viewData.data) === null || _c === void 0 ? void 0 : _c.solidView) === null || _d === void 0 ? void 0 : _d.layout) === null || _e === void 0 ? void 0 : _e.children) !== null && _f !== void 0 ? _f : [];
707
752
  var fieldElements_1 = extractFields(layoutChildren);
708
753
  var fieldsList = Object.entries(fieldsData !== null && fieldsData !== void 0 ? fieldsData : {}).map(function (_a) {
709
- var _b, _c, _d, _e, _f;
754
+ var _b, _c, _d, _e, _f, _g;
710
755
  var key = _a[0], value = _a[1];
711
756
  var viewFieldElement = fieldElements_1.find(function (f) { var _a; return ((_a = f === null || f === void 0 ? void 0 : f.attrs) === null || _a === void 0 ? void 0 : _a.name) === key; });
712
757
  return {
@@ -717,6 +762,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
717
762
  matchMode: (_b = viewFieldElement === null || viewFieldElement === void 0 ? void 0 : viewFieldElement.attrs) === null || _b === void 0 ? void 0 : _b.searchMatchMode,
718
763
  searchField: (_d = (_c = viewFieldElement === null || viewFieldElement === void 0 ? void 0 : viewFieldElement.attrs) === null || _c === void 0 ? void 0 : _c.searchField) !== null && _d !== void 0 ? _d : null,
719
764
  isSearchable: (_f = (_e = viewFieldElement === null || viewFieldElement === void 0 ? void 0 : viewFieldElement.attrs) === null || _e === void 0 ? void 0 : _e.isSearchable) !== null && _f !== void 0 ? _f : false,
765
+ relationType: (_g = value === null || value === void 0 ? void 0 : value.relationType) !== null && _g !== void 0 ? _g : null,
720
766
  };
721
767
  });
722
768
  setFields(fieldsList);
@@ -739,7 +785,30 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
739
785
  return false;
740
786
  }
741
787
  });
742
- // console.log("searchableFieldsList", searchableFieldsList);
788
+ var groupableFieldsList = fieldsList.filter(function (field) {
789
+ switch (field.type) {
790
+ case "relation":
791
+ // Only include relation if searchField is present
792
+ if (field.relationType === "many-to-one")
793
+ return true;
794
+ return false;
795
+ case "longText":
796
+ case "shortText":
797
+ case "selectionStatic":
798
+ case "selectionDynamic":
799
+ case "int":
800
+ case "float":
801
+ case "boolean":
802
+ case "date":
803
+ case "datetime":
804
+ return true;
805
+ // case "selectionStatic":
806
+ case "computed":
807
+ return field.ormType === "varchar";
808
+ default:
809
+ return false;
810
+ }
811
+ });
743
812
  // Optionally map to a minimal structure if needed for UI
744
813
  var finalSearchableFieldsList = searchableFieldsList.map(function (field) {
745
814
  var _a;
@@ -750,8 +819,21 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
750
819
  matchMode: field.matchMode
751
820
  });
752
821
  });
753
- // console.log("finalSearchableFieldsList", finalSearchableFieldsList);
754
822
  setSearchableFields(finalSearchableFieldsList);
823
+ var finalGroupableFieldsList = groupableFieldsList.map(function (field) {
824
+ var _a;
825
+ return ({
826
+ fieldName: field.value,
827
+ displayName: field.name,
828
+ searchField: (_a = field.searchField) !== null && _a !== void 0 ? _a : "",
829
+ matchMode: field.matchMode,
830
+ type: field.type,
831
+ ormType: field.ormType,
832
+ relationType: field.relationType,
833
+ computedFieldValueType: field.computedFieldValueType
834
+ });
835
+ });
836
+ setGroupableFields(finalGroupableFieldsList);
755
837
  var predefinedSearchesList = ((_k = (_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.layout) === null || _j === void 0 ? void 0 : _j.attrs) === null || _k === void 0 ? void 0 : _k.predefinedSearches) || [];
756
838
  setPredefinedSearches(predefinedSearchesList);
757
839
  }
@@ -829,10 +911,15 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
829
911
  setHasSearched(true);
830
912
  setRefreshKey(function (prev) { return prev + 1; });
831
913
  };
914
+ var applyGrouping = function (groupingRules, aggregationRules) {
915
+ setHasSearched(true);
916
+ setShowGroupFilterElement(false);
917
+ setGroupingRules(groupingRules);
918
+ setAggregationRules(aggregationRules);
919
+ setRefreshKey(function (prev) { return prev + 1; });
920
+ };
832
921
  useEffect(function () {
833
922
  if (refreshKey > 0 && hasSearched) {
834
- console.log("refres", refreshKey);
835
- console.log("hasSearched", hasSearched);
836
923
  var formattedChips = {
837
924
  $and: searchChips.map(function (chip) {
838
925
  var _a;
@@ -849,7 +936,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
849
936
  var finalSavedFilter = currentSavedFilterQuery;
850
937
  var finalPredefinedFilter = predefinedSearchBaseFilter;
851
938
  var finalCustomFilter = customFilter;
852
- var finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter);
939
+ var finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules);
853
940
  handleApplyCustomFilter(finalFilter, true);
854
941
  setHasSearched(false);
855
942
  // }
@@ -1076,6 +1163,15 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1076
1163
  fn();
1077
1164
  }, children: [_jsx("rect", { width: "20", height: "20", rx: "4", fill: "#722ED1" }), _jsx("path", { d: "M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z", fill: "white" })] }), _jsx("span", { children: _jsx("strong", { children: currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.name }) })] }), _jsx("a", { onClick: removeSavedFilter, style: { cursor: "pointer" }, children: _jsx("i", { className: "pi pi-times ml-1" }) })] }) }));
1078
1165
  };
1166
+ var removeGrouping = function () {
1167
+ setGroupingRules(defaultGroupingRules);
1168
+ setAggregationRules(defaultAggregationRules);
1169
+ setHasSearched(true);
1170
+ setRefreshKey(function (prev) { return prev + 1; });
1171
+ };
1172
+ var GroupingChip = function () {
1173
+ return (_jsx("li", { className: "solid-global-search-chip", children: _jsxs("div", { className: "flex align-items-center gap-2", children: [_jsxs("div", { className: "flex align-items-center gap-2", children: [_jsxs("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", onClick: function () { return setShowGroupFilterElement(true); }, children: [_jsx("rect", { width: "20", height: "20", rx: "4", fill: "#722ED1" }), _jsx("path", { d: "M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z", fill: "white" })] }), _jsxs("span", { children: [_jsx("strong", { children: groupingRules.length }), " Grouping rules applied"] })] }), _jsx("a", { onClick: removeGrouping, style: { cursor: "pointer" }, children: _jsx("i", { className: "pi pi-times ml-1" }) })] }) }));
1174
+ };
1079
1175
  //saved filter related code end
1080
1176
  // search related code start
1081
1177
  var handleRemoveChipGroup = function (columnName) {
@@ -1139,7 +1235,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1139
1235
  return;
1140
1236
  }
1141
1237
  try {
1142
- // Replace {{search}} placeholders with actual search value
1238
+ // Replace {{ search }} placeholders with actual search value
1143
1239
  var processedFilter = replacePlaceholders(predefinedSearch.filters, inputValue.trim());
1144
1240
  // Clear all existing filters and searches
1145
1241
  // setSearchChips([]);
@@ -1178,7 +1274,7 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1178
1274
  };
1179
1275
  var PredefinedSearchChip = function () { return (_jsx("li", { children: _jsxs("div", { className: "search-filter-chip-type", children: [_jsxs("div", { className: "flex align-items-center gap-2", children: [_jsxs("strong", { children: [predefinedSearchChip === null || predefinedSearchChip === void 0 ? void 0 : predefinedSearchChip.name, ":"] }), _jsx("span", { className: "custom-chip-value", children: predefinedSearchChip === null || predefinedSearchChip === void 0 ? void 0 : predefinedSearchChip.value })] }), _jsx("i", { className: "pi pi-times ml-1", style: { cursor: "pointer" }, onClick: removePredefinedSearchChip })] }) })); };
1180
1276
  // predefinedfilter related code end
1181
- return (_jsx(_Fragment, { children: _jsxs("div", { className: "flex justify-content-center solid-custom-filter-wrapper relative", children: [_jsx("div", { className: "solid-global-search-element", children: _jsxs("ul", { className: "", children: [currentSavedFilterData && _jsx(SavedFiltersChip, {}), predefinedSearchChip && _jsx(PredefinedSearchChip, {}), customFilter && _jsx(CustomChip, {}), _jsx(SearchChip, {}), _jsx("li", { ref: chipsRef, children: _jsxs("div", { className: "relative solid-global-search-element-wrapper", children: [_jsx(InputText, { value: inputValue || "", placeholder: "Search.", onChange: function (e) {
1277
+ return (_jsx(_Fragment, { children: _jsxs("div", { className: "flex justify-content-center solid-custom-filter-wrapper relative", children: [_jsx("div", { className: "solid-global-search-element", children: _jsxs("ul", { className: "", children: [currentSavedFilterData && _jsx(SavedFiltersChip, {}), predefinedSearchChip && _jsx(PredefinedSearchChip, {}), customFilter && _jsx(CustomChip, {}), groupingRules.length > 0 && groupingRules.some(function (r) { return r.fieldName !== null; }) && _jsx(GroupingChip, {}), _jsx(SearchChip, {}), _jsx("li", { ref: chipsRef, children: _jsxs("div", { className: "relative solid-global-search-element-wrapper", children: [_jsx(InputText, { value: inputValue || "", placeholder: "Search.", onChange: function (e) {
1182
1278
  setInputValue(e.target.value);
1183
1279
  setShowOverlay(true);
1184
1280
  }, onFocus: function () {
@@ -1218,10 +1314,13 @@ export var SolidGlobalSearchElement = forwardRef(function (_a, ref) {
1218
1314
  _jsxs(_Fragment, { children: [_jsx("div", { className: "p-3 text-base", children: "Search Here..." }), _jsx(Divider, { className: "m-0" })] }), savedFilters.length > 0 &&
1219
1315
  _jsxs(_Fragment, { children: [_jsxs("div", { className: "p-3", children: [_jsx("p", { className: "font-medium", children: "Saved Filters" }), _jsx("div", { className: "flex flex-column gap-2", children: savedFilters.map(function (savedfilter) {
1220
1316
  return _jsx(SavedFilterList, { savedfilter: savedfilter, activeSavedFilter: activeSavedFilter, applySavedFilter: applySavedFilter, openSavedCustomFilter: openSavedCustomFilter, setSavedFilterTobeDeleted: setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible: setIsDeleteSQDialogVisible });
1221
- }) })] }), _jsx(Divider, { className: "m-0" })] }), _jsx("div", { className: "px-2 py-1", children: _jsx(Button, { text: true, size: "small", label: "Custom Filter", iconPos: "left", icon: 'pi pi-plus', onClick: function () { return setShowGlobalSearchElement(true); }, className: "font-bold" }) })] })), _jsxs(Dialog, { header: false, className: "solid-global-search-filter", showHeader: false, visible: showGlobalSearchElement, style: { width: '65vw' }, breakpoints: { '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }, onHide: function () { if (!showGlobalSearchElement)
1222
- return; setShowGlobalSearchElement(false); }, children: [_jsxs("div", { className: "flex align-items-center justify-content-between px-3", children: [_jsx("h5", { className: "solid-custom-title m-0", children: "Add Custom Filter" }), _jsx(Button, { icon: "pi pi-times", rounded: true, text: true, "aria-label": "Cancel", type: "reset", size: "small", onClick: function () { return setShowGlobalSearchElement(false); } })] }), _jsx(Divider, { className: "m-0" }), _jsx("div", { className: "p-3 lg:p-4", children: fields.length > 0 &&
1223
- _jsx(FilterComponent, { viewData: viewData, fields: fields, filterRules: filterRules, setFilterRules: setFilterRules, transformFilterRules: transformCustomFilterRules, closeDialog: function () { return setShowGlobalSearchElement(false); } }) })] }), _jsxs(Dialog, { header: false, className: "solid-global-search-filter", showHeader: false, visible: showSavedFilterComponent, style: { width: '65vw' }, breakpoints: { '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }, onHide: function () { if (!showSavedFilterComponent)
1224
- return; setShowSavedFilterComponent(false); }, children: [_jsxs("div", { className: "flex align-items-center justify-content-between px-3", children: [_jsx("h5", { className: "solid-custom-title m-0", children: "Saved Filter" }), _jsx(Button, { icon: "pi pi-times", rounded: true, text: true, "aria-label": "Cancel", type: "reset", size: "small", onClick: function () { return setShowSavedFilterComponent(false); } })] }), _jsx(Divider, { className: "m-0" }), _jsx("div", { className: "p-3 lg:p-4", children: fields.length > 0 &&
1317
+ }) })] }), _jsx(Divider, { className: "m-0" })] }), _jsxs("div", { className: "px-2 py-1 flex justify-content-between", children: [_jsx(Button, { text: true, size: "small", label: "Custom Filter", iconPos: "left", icon: 'pi pi-plus', onClick: function () { return setShowGlobalSearchElement(true); }, className: "font-bold" }), viewType === "tree" &&
1318
+ _jsx(Button, { text: true, size: "small", label: "Grouping", iconPos: "left", icon: 'pi pi-plus', onClick: function () { return setShowGroupFilterElement(true); }, className: "font-bold" })] })] })), _jsxs(Dialog, { header: false, className: "solid-global-search-filter", showHeader: false, visible: showGlobalSearchElement, style: { width: '65vw' }, breakpoints: { '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }, onHide: function () { if (!showGlobalSearchElement)
1319
+ return; setShowGlobalSearchElement(false); }, children: [_jsxs("div", { className: "flex align-items-center justify-content-between px-3", children: [_jsx("h5", { className: "solid-custom-title m-0", children: "Add Custom Filter" }), _jsx(Button, { icon: "pi pi-times", rounded: true, text: true, "aria-label": "Cancel", type: "reset", size: "small", onClick: function () { return setShowGlobalSearchElement(false); } })] }), _jsx(Divider, { className: "m-0" }), _jsx("div", { className: "p-2 lg:p-2", children: fields.length > 0 &&
1320
+ _jsx(FilterComponent, { viewData: viewData, fields: fields, filterRules: filterRules, setFilterRules: setFilterRules, transformFilterRules: transformCustomFilterRules, closeDialog: function () { return setShowGlobalSearchElement(false); } }) })] }), _jsxs(Dialog, { header: false, className: "solid-global-search-filter", showHeader: false, visible: showGroupFilterElement, style: { width: '20vw' }, breakpoints: { '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }, onHide: function () { if (!showGroupFilterElement)
1321
+ return; setShowGroupFilterElement(false); }, children: [_jsxs("div", { className: "flex align-items-center justify-content-between px-3", children: [_jsx("h5", { className: "solid-custom-title m-0" }), _jsx(Button, { icon: "pi pi-times", rounded: true, text: true, "aria-label": "Cancel", type: "reset", size: "small", onClick: function () { return setShowGroupFilterElement(false); } })] }), _jsx(Divider, { className: "m-0" }), _jsx("div", { className: "p-2 lg:p-2", children: groupableFields.length > 0 &&
1322
+ _jsx(GroupingComponent, { viewData: viewData, fields: groupableFields, groupingRules: groupingRules, setGroupingRules: setGroupingRules, aggregationRules: aggregationRules, setAggregationRules: setAggregationRules, applyGrouping: applyGrouping, closeDialog: function () { return setShowGroupFilterElement(false); } }) })] }), _jsxs(Dialog, { header: false, className: "solid-global-search-filter", showHeader: false, visible: showSavedFilterComponent, style: { width: '65vw' }, breakpoints: { '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }, onHide: function () { if (!showSavedFilterComponent)
1323
+ return; setShowSavedFilterComponent(false); }, children: [_jsxs("div", { className: "flex align-items-center justify-content-between px-3", children: [_jsx("h5", { className: "solid-custom-title m-0", children: "Saved Filter" }), _jsx(Button, { icon: "pi pi-times", rounded: true, text: true, "aria-label": "Cancel", type: "reset", size: "small", onClick: function () { return setShowSavedFilterComponent(false); } })] }), _jsx(Divider, { className: "m-0" }), _jsx("div", { className: "p-2 lg:p-2", children: fields.length > 0 &&
1225
1324
  _jsx(FilterComponent, { viewData: viewData, fields: fields, filterRules: currentSavedFilterRules, setFilterRules: setCurrentSavedFilterRules, transformFilterRules: transformSavedFilterRules, closeDialog: function () { return setShowSavedFilterComponent(false); } }) })] }), _jsx(Dialog, { header: "Save Custom Filter", className: "solid-custom-filter-dialog", visible: showSaveFilterPopup, style: { width: 500 }, onHide: function () { if (!showSaveFilterPopup)
1226
1325
  return; setShowSaveFilterPopup(false); }, children: _jsx(SolidSaveCustomFilterForm, { currentSavedFilterData: currentSavedFilterData, handleSaveFilter: handleSaveFilter, closeDialog: setShowSaveFilterPopup }) }), _jsx(Dialog, { visible: isDeleteSQDialogVisible, header: "Confirm Delete", modal: true, className: "solid-confirm-dialog", footer: function () { return (_jsxs("div", { className: "flex justify-content-center", children: [_jsx(Button, { label: "Yes", icon: "pi pi-check", className: 'small-button', severity: "danger", autoFocus: true, onClick: deleteSavedFilter }), _jsx(Button, { label: "No", icon: "pi pi-times", className: 'small-button', onClick: function () { return setIsDeleteSQDialogVisible(false); } })] })); }, onHide: function () { return setIsDeleteSQDialogVisible(false); }, children: _jsxs("p", { children: ["Are you sure you want to delete the ", currentSavedFilterData === null || currentSavedFilterData === void 0 ? void 0 : currentSavedFilterData.name, " saved query?"] }) })] }) }));
1227
1326
  });