@solidxai/core-ui 0.1.3 → 0.1.4-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 (150) 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 +152 -52
  23. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  24. package/dist/components/core/common/SolidGlobalSearchElement.tsx +212 -35
  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 +17 -28
  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 +71 -56
  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 +40 -0
  61. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  62. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +317 -157
  63. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  64. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +463 -243
  65. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +46 -95
  67. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  68. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +57 -113
  69. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +15 -4
  70. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
  71. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +220 -33
  72. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  73. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +167 -36
  74. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  75. package/dist/components/core/kanban/SolidKanbanView.js +13 -12
  76. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  77. package/dist/components/core/kanban/SolidKanbanView.tsx +8 -7
  78. package/dist/components/core/list/SolidListView.d.ts +18 -10
  79. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  80. package/dist/components/core/list/SolidListView.js +176 -177
  81. package/dist/components/core/list/SolidListView.js.map +1 -1
  82. package/dist/components/core/list/SolidListView.tsx +130 -143
  83. package/dist/components/core/list/SolidListViewConfigure.d.ts +7 -0
  84. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  85. package/dist/components/core/list/SolidListViewConfigure.js +6 -5
  86. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  87. package/dist/components/core/list/SolidListViewConfigure.tsx +21 -12
  88. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
  89. package/dist/components/core/list/columns/SolidShortTextColumn.js +1 -37
  90. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  91. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +0 -41
  92. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  93. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +9 -5
  94. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  95. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +14 -3
  96. package/dist/components/core/list/listViewRegistry.js.map +1 -1
  97. package/dist/components/core/list/listViewRegistry.ts +1 -2
  98. package/dist/components/core/tree/SolidTreeView.d.ts +38 -0
  99. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -0
  100. package/dist/components/core/tree/SolidTreeView.js +1179 -0
  101. package/dist/components/core/tree/SolidTreeView.js.map +1 -0
  102. package/dist/components/core/tree/SolidTreeView.tsx +1637 -0
  103. package/dist/components/core/tree/treeViewRegistry.d.ts +7 -0
  104. package/dist/components/core/tree/treeViewRegistry.d.ts.map +1 -0
  105. package/dist/components/core/tree/treeViewRegistry.js +17 -0
  106. package/dist/components/core/tree/treeViewRegistry.js.map +1 -0
  107. package/dist/components/core/tree/treeViewRegistry.ts +23 -0
  108. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  109. package/dist/components/core/users/CreateUser.js +19 -6
  110. package/dist/components/core/users/CreateUser.js.map +1 -1
  111. package/dist/components/core/users/CreateUser.tsx +39 -0
  112. package/dist/helpers/helpers.d.ts +2 -0
  113. package/dist/helpers/helpers.d.ts.map +1 -1
  114. package/dist/helpers/helpers.js +3 -1
  115. package/dist/helpers/helpers.js.map +1 -1
  116. package/dist/helpers/helpers.ts +4 -1
  117. package/dist/helpers/registry.d.ts.map +1 -1
  118. package/dist/helpers/registry.js +5 -1
  119. package/dist/helpers/registry.js.map +1 -1
  120. package/dist/helpers/registry.ts +7 -2
  121. package/dist/index.d.ts +3 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +2 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/index.ts +6 -1
  126. package/dist/resources/globals.css +32 -4
  127. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  128. package/dist/routes/pages/admin/core/ListPage.js +2 -2
  129. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  130. package/dist/routes/pages/admin/core/ListPage.tsx +3 -2
  131. package/dist/routes/pages/admin/core/ModuleHomePage.d.ts.map +1 -1
  132. package/dist/routes/pages/admin/core/ModuleHomePage.js +4 -15
  133. package/dist/routes/pages/admin/core/ModuleHomePage.js.map +1 -1
  134. package/dist/routes/pages/admin/core/ModuleHomePage.tsx +4 -3
  135. package/dist/routes/pages/admin/core/TreePage.d.ts +2 -0
  136. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -0
  137. package/dist/routes/pages/admin/core/TreePage.js +37 -0
  138. package/dist/routes/pages/admin/core/TreePage.js.map +1 -0
  139. package/dist/routes/pages/admin/core/TreePage.tsx +30 -0
  140. package/dist/routes/solidRoutes.d.ts.map +1 -1
  141. package/dist/routes/solidRoutes.js +2 -0
  142. package/dist/routes/solidRoutes.js.map +1 -1
  143. package/dist/routes/solidRoutes.tsx +3 -1
  144. package/dist/routes/types.d.ts +1 -1
  145. package/dist/routes/types.d.ts.map +1 -1
  146. package/dist/routes/types.js.map +1 -1
  147. package/dist/routes/types.ts +1 -0
  148. package/dist/types/index.d.ts +8 -2
  149. package/dist/types/solid-core.d.ts +40 -0
  150. package/package.json +1 -1
@@ -1,31 +1,24 @@
1
- // @ts-nocheck
2
- import React, { forwardRef, useState, useEffect, useRef, useMemo, useImperativeHandle } from "react";
1
+ import { forwardRef, useState, useEffect, useRef, useMemo, useImperativeHandle } from "react";
3
2
  import {
4
3
  DataTable,
5
- DataTableFilterMeta,
6
4
  DataTableStateEvent,
7
5
  } from "primereact/datatable";
8
6
  import { Column } from "primereact/column";
9
7
  import { FilterMatchMode } from "primereact/api";
10
- import Link from "../../common/Link";
11
8
  import qs from "qs";
12
9
  import { Button } from "primereact/button";
13
10
  import { Dialog } from "primereact/dialog";
14
11
  import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
15
12
  import { useGetSolidViewLayoutQuery } from "../../../redux/api/solidViewApi";
16
13
  import { SolidListViewColumn } from "./SolidListViewColumn";
17
- // import { SolidListViewOptions } from "../common/SolidListviewOptions";
18
14
  import { SolidCreateButton } from "../common/SolidCreateButton";
19
15
  import { SolidGlobalSearchElement } from "../common/SolidGlobalSearchElement";
20
- import { pascalCase } from "change-case";
21
16
  import { useLazyCheckIfPermissionExistsQuery } from "../../../redux/api/userApi";
22
17
  import { permissionExpression } from "../../../helpers/permissions";
23
18
  import { usePathname } from "../../../hooks/usePathname";
24
19
  import { useRouter } from "../../../hooks/useRouter";
25
20
  import { useSearchParams } from "../../../hooks/useSearchParams";
26
21
  import { ListViewRowActionPopup } from "./ListViewRowActionPopup";
27
- import FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from "../../../components/core/common/FilterComponent";
28
- import { SolidLayoutViews } from "../common/SolidLayoutViews";
29
22
  import { FilterIcon } from '../../../components/modelsComponents/filterIcon';
30
23
  import { OverlayPanel } from "primereact/overlaypanel";
31
24
  import { Toast } from "primereact/toast";
@@ -33,8 +26,6 @@ import { Divider } from "primereact/divider";
33
26
  import CompactImage from '../../../resources/images/layout/images/compact.png';
34
27
  import CozyImage from '../../../resources/images/layout/images/cozy.png';
35
28
  import ComfortableImage from '../../../resources/images/layout/images/comfortable.png';
36
- import KanbanImage from '../../../resources/images/layout/images/kanban.png';
37
- import { capitalize, filter, set } from "lodash";
38
29
  import Lightbox from "yet-another-react-lightbox";
39
30
  import Counter from "yet-another-react-lightbox/plugins/counter";
40
31
  import Download from "yet-another-react-lightbox/plugins/download";
@@ -58,7 +49,6 @@ import { ERROR_MESSAGES } from "../../../constants/error-messages";
58
49
  import { SolidAiMainWrapper } from "../solid-ai/SolidAiMainWrapper";
59
50
  import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
60
51
  import { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from "../../../redux/api/solidSettingsApi";
61
- import { log } from "console";
62
52
  import { normalizeSolidListKanbanActionPath } from "../../../helpers/routePaths";
63
53
  // import { ERROR_MESSAGES } from "../../../constants/error-messages";
64
54
 
@@ -66,7 +56,7 @@ const getRandomInt = (min: number, max: number) => {
66
56
  return Math.floor(Math.random() * (max - min + 1)) + min;
67
57
  };
68
58
 
69
- export const queryStringToQueryObject = () => {
59
+ export const getFilterObjectFromLocalStorage = () => {
70
60
  const currentPageUrl = window.location.pathname; // Get the current page URL
71
61
  const encodedQueryString = localStorage.getItem(currentPageUrl); // Retrieve the encoded query string from local storage
72
62
 
@@ -85,7 +75,7 @@ export const queryStringToQueryObject = () => {
85
75
  };
86
76
 
87
77
 
88
- export const queryStringToQueryObjectByUrl = (url) => {
78
+ export const getFilterObjectFromLocalStorageByUrl = (url: string) => {
89
79
  const currentPageUrl = url; // Get the current page URL
90
80
  const encodedQueryString = localStorage.getItem(currentPageUrl); // Retrieve the encoded query string from local storage
91
81
 
@@ -103,7 +93,7 @@ export const queryStringToQueryObjectByUrl = (url) => {
103
93
  }
104
94
  };
105
95
 
106
- export const queryObjectToQueryString = (queryObject: string) => {
96
+ export const setFilterObjectToLocalStorage = (queryObject: string) => {
107
97
  if (queryObject) {
108
98
  const stringifiedObject = JSON.stringify(queryObject);
109
99
  // const stringifiedObject = qs.stringify(queryObject, { encodeValuesOnly: true, arrayFormat: "brackets" });
@@ -116,7 +106,7 @@ export const queryObjectToQueryString = (queryObject: string) => {
116
106
  };
117
107
 
118
108
 
119
- export const queryObjectToQueryStringByUrl = (url, queryObject: string) => {
109
+ export const setFilterObjectToLocalStorageByUrl = (url: string, queryObject: string) => {
120
110
  if (queryObject) {
121
111
  const stringifiedObject = JSON.stringify(queryObject);
122
112
  // const stringifiedObject = qs.stringify(queryObject, { encodeValuesOnly: true, arrayFormat: "brackets" });
@@ -132,10 +122,13 @@ type SolidListViewParams = {
132
122
  moduleName: string;
133
123
  modelName: string;
134
124
  inlineCreate?: boolean;
135
- handlePopUpOpen?: any;
125
+ handleAddClickForEmbeddedView?: any;
126
+ handleEditClickForEmbeddedView?: any;
136
127
  embeded?: boolean;
128
+ embededFieldRelationType?: string;
137
129
  customLayout?: any;
138
130
  customFilter?: any;
131
+ handleDeleteClick?: any;
139
132
  };
140
133
 
141
134
  export type SolidListViewHandle = {
@@ -175,7 +168,7 @@ export type SolidListViewHandle = {
175
168
  * Updates sorting state and resets page offset to the first page.
176
169
  * Use this for programmatic sort controls to match DataTable behavior.
177
170
  */
178
- setSort: (nextSortField: string, nextSortOrder: 1 | -1 | 0) => void;
171
+ setSort: (nextMultiSortMeta: { field: string; order: 1 | -1 }[]) => void;
179
172
  /**
180
173
  * Toggles inclusion of archived/soft-deleted records.
181
174
  * Use this to switch between active-only and inclusive list views.
@@ -188,8 +181,7 @@ export type SolidListViewHandle = {
188
181
  getState: () => {
189
182
  first: number;
190
183
  rows: number;
191
- sortField: string;
192
- sortOrder: 1 | -1 | 0;
184
+ multiSortMeta: { field: string; order: 1 | -1 }[];
193
185
  showArchived: boolean;
194
186
  filters: any;
195
187
  filterPredicates: any;
@@ -206,19 +198,23 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
206
198
  const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);
207
199
 
208
200
  const pathname = usePathname();
209
- const solidGlobalSearchElementRef = useRef();
201
+ const solidGlobalSearchElementRef = useRef<any>();
210
202
 
211
203
  const router = useRouter();
212
204
  const searchParams = useSearchParams();
213
205
  const localeName = searchParams.get("locale");
214
206
 
207
+
208
+ const [solidListViewMetaData, setSolidListViewMetaData] = useState<any>(null);
209
+ const [solidListViewLayout, setSolidListViewLayout] = useState<any>(null);
210
+ const [isDraftPublishWorkflowEnabled, setIsDraftPublishWorkflowEnabled] = useState(false);
211
+
215
212
  // Filter query realted states
216
213
  const [filters, setFilters] = useState<any>(null);
217
214
  const [totalRecords, setTotalRecords] = useState(0);
218
215
  const [first, setFirst] = useState(0);
219
216
  const [rows, setRows] = useState(solidListViewLayout?.attrs?.defaultPageSize ? solidListViewLayout?.attrs?.defaultPageSize : 10);
220
- const [sortField, setSortField] = useState("id");
221
- const [sortOrder, setSortOrder] = useState(-1);
217
+ const [multiSortMeta, setMultiSortMeta] = useState<{ field: string; order: 1 | -1 }[]>([{ field: "id", order: -1 }]);
222
218
  const [toPopulate, setToPopulate] = useState<string[]>([]);
223
219
  const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);
224
220
 
@@ -399,9 +395,6 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
399
395
  }
400
396
  );
401
397
 
402
- const [solidListViewMetaData, setSolidListViewMetaData] = useState(null);
403
- const [solidListViewLayout, setSolidListViewLayout] = useState(null);
404
- const [isDraftPublishWorkflowEnabled, setIsDraftPublishWorkflowEnabled] = useState(false);
405
398
  const {
406
399
  data: solidListViewInitialMetaData,
407
400
  error: solidListViewMetaDataError,
@@ -488,9 +481,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
488
481
  const populate = toPopulate;
489
482
  const populateMedia = toPopulateMedia;
490
483
  const rows = currentLayout?.attrs?.defaultPageSize ?? 25;
491
- const sortField = "id";
492
- const sortOrder = -1;
493
- return { sortField, sortOrder, rows, populate, populateMedia };
484
+ const multiSortMeta: { field: string; order: 1 | -1 }[] = [{ field: "id", order: -1 }];
485
+ return { multiSortMeta, rows, populate, populateMedia };
494
486
  };
495
487
 
496
488
 
@@ -532,8 +524,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
532
524
  });
533
525
  }
534
526
 
535
- const viewModes = listLayoutAttrs?.allowedViews && listLayoutAttrs?.allowedViews.length > 0 && listLayoutAttrs?.allowedViews.map((view: any) => { return { label: capitalize(view), value: view }; });
536
- setViewModes(viewModes);
527
+ // const viewModes = listLayoutAttrs?.allowedViews && listLayoutAttrs?.allowedViews.length > 0 && listLayoutAttrs?.allowedViews.map((view: any) => { return { label: capitalize(view), value: view }; });
528
+ setViewModes(solidListViewInitialMetaData?.data?.viewModes);
537
529
  if (createActionUrl) {
538
530
  setCreateButtonUrl(createActionUrl);
539
531
  }
@@ -594,7 +586,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
594
586
  useEffect(() => {
595
587
  if (solidEntityListViewData) {
596
588
  setLoading(true);
597
- const cleanedRecords = solidEntityListViewData.records.map((record) => {
589
+ const cleanedRecords = solidEntityListViewData.records.map((record: any) => {
598
590
  const newRecord = { ...record };
599
591
 
600
592
  Object.entries(newRecord).forEach(([key, value]) => {
@@ -646,7 +638,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
646
638
  );
647
639
  setQueryDataLoaded(false)
648
640
  if (solidListViewMetaData && solidListViewLayout) {
649
- const queryObject = queryStringToQueryObject();
641
+ const queryObject = getFilterObjectFromLocalStorage();
650
642
 
651
643
  if (queryObject) {
652
644
  const queryData = {
@@ -654,51 +646,29 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
654
646
  limit: queryObject.limit || 25,
655
647
  populate: queryObject.populate,
656
648
  populateMedia: queryObject.populateMedia,
657
- sort: queryObject.sort
658
- ? queryObject.sort?.map((sortItem: string) => {
659
- const [field, order] = sortItem.split(":");
660
- return { field, order };
661
- })
662
- : [`id:desc`],
649
+ sort: queryObject.sort,
663
650
  filters: queryObject.filters,
664
651
  };
665
- // const filters = {
666
- // $and: [],
667
- // };
668
-
669
- // if (queryObject.custom_filter_predicate) {
670
- // filters.$and.push(queryObject.custom_filter_predicate);
671
- // }
672
- // if (queryObject.search_predicate) {
673
- // filters.$and.push(queryObject.search_predicate);
674
- // }
675
- // if (queryObject.saved_filter_predicate) {
676
- // filters.$and.push(queryObject.saved_filter_predicate);
677
- // }
678
- // if (queryObject.predefined_search_predicate) {
679
- // filters.$and.push(queryObject.predefined_search_predicate);
680
- // }
681
-
682
- // if (queryObject.s_filter) {
683
- // filters.$and.push(queryObject.s_filter);
684
- // }
685
- // if (queryObject.c_filter) {
686
- // filters.$and.push(queryObject.c_filter);
687
- // }
652
+
688
653
  setRows(Number(queryData.limit));
689
654
  setFirst(Number(queryData?.offset));
690
- setSortField(queryData?.sort[0]?.field);
691
- setSortOrder(queryData?.sort[0]?.order);
692
- // latestFiltersRef.current = filters;
693
- const { sortField, sortOrder, rows, populate, populateMedia } = initialFilterMethod();
655
+ const parsedMultiSortMeta: { field: string; order: 1 | -1 }[] =
656
+ Array.isArray(queryData.sort) && queryData.sort.length > 0
657
+ ? queryData.sort.map((sortItem: string) => {
658
+ const [field, order] = sortItem.split(":");
659
+ return { field, order: order === "asc" ? 1 : -1 } as { field: string; order: 1 | -1 };
660
+ })
661
+ : [{ field: "id", order: -1 }];
662
+
663
+ setMultiSortMeta(parsedMultiSortMeta);
664
+ const { multiSortMeta, rows, populate, populateMedia } = initialFilterMethod();
694
665
  setToPopulate(populate);
695
666
  setToPopulateMedia(populateMedia);
696
667
 
697
668
  } else {
698
- const { sortField, sortOrder, rows, populate, populateMedia } = initialFilterMethod();
669
+ const { multiSortMeta, rows, populate, populateMedia } = initialFilterMethod();
699
670
  setRows(rows);
700
- setSortField(sortField);
701
- setSortOrder(sortOrder);
671
+ setMultiSortMeta(multiSortMeta);
702
672
  setToPopulate(populate);
703
673
  setToPopulateMedia(populateMedia);
704
674
  setFirst(0);
@@ -775,8 +745,15 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
775
745
 
776
746
 
777
747
  // Create a ref that always has the latest filters
778
- const latestFiltersRef = useRef(filters);
779
- const latestFilterPredicatesRef = useRef(filterPredicates);
748
+ const latestFiltersRef = useRef<any>(filters);
749
+ const latestFilterPredicatesRef = useRef<any>(filterPredicates);
750
+ // 1. Add the ref (near the other latestXxxRef declarations)
751
+ const latestMultiSortMetaRef = useRef<any>(multiSortMeta);
752
+
753
+ // 2. Keep it in sync
754
+ useEffect(() => {
755
+ latestMultiSortMetaRef.current = multiSortMeta;
756
+ }, [multiSortMeta]);
780
757
 
781
758
  // Keep refs in sync
782
759
  useEffect(() => {
@@ -789,20 +766,19 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
789
766
 
790
767
 
791
768
  useEffect(() => {
792
- console.log(`useEffect: [first- ${first}, rows- ${rows}, sortField- ${sortField}, sortOrder- ${sortOrder}, showArchived- ${showArchived}, toPopulate- ${toPopulate}, toPopulateMedia- ${toPopulateMedia}, queryDataLoaded- ${queryDataLoaded}, filterPredicates- ${filterPredicates}]`);
769
+ console.log(`useEffect: [first- ${first}, rows- ${rows}, multiSortMeta- ${multiSortMeta}, showArchived- ${showArchived}, toPopulate- ${toPopulate}, toPopulateMedia- ${toPopulateMedia}, queryDataLoaded- ${queryDataLoaded}, filterPredicates- ${filterPredicates}]`);
793
770
  if (queryDataLoaded && filters && (filterPredicates || params.embeded == true)) {
794
771
  setQueryString();
795
772
  }
796
773
  }, [
797
774
  first,
798
775
  rows,
799
- sortField,
800
- sortOrder,
801
- filters,
776
+ multiSortMeta,
802
777
  showArchived,
803
778
  toPopulate,
804
779
  toPopulateMedia,
805
780
  queryDataLoaded,
781
+ filters,
806
782
  filterPredicates
807
783
  ]);
808
784
 
@@ -813,13 +789,27 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
813
789
  };
814
790
 
815
791
  // Handle sort event.
792
+ // const onSort = (event: DataTableStateEvent) => {
793
+ // const { sortField, sortOrder } = event;
794
+ // const validSortOrder = sortOrder === 1 || sortOrder === -1 ? sortOrder : 0;
795
+ // setSortField(sortField);
796
+ // setSortOrder(validSortOrder);
797
+ // setFirst(0);
798
+
799
+ // };
800
+
816
801
  const onSort = (event: DataTableStateEvent) => {
817
- const { sortField, sortOrder } = event;
818
- const validSortOrder = sortOrder === 1 || sortOrder === -1 ? sortOrder : 0;
819
- setSortField(sortField);
820
- setSortOrder(validSortOrder);
821
- setFirst(0);
802
+ const meta = event.multiSortMeta || [];
822
803
 
804
+ const validMeta = meta
805
+ .filter((m) => m.order === 1 || m.order === -1)
806
+ .map((m) => ({
807
+ field: m.field,
808
+ order: m.order as 1 | -1,
809
+ }));
810
+
811
+ setMultiSortMeta(validMeta);
812
+ setFirst(0);
823
813
  };
824
814
 
825
815
  // handle change in the records which are currently selected...
@@ -853,22 +843,23 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
853
843
 
854
844
 
855
845
 
856
- if (sortField && solidFieldsMetadata && solidFieldsMetadata[sortField]) {
857
- const sortFieldMetadata = solidFieldsMetadata[sortField];
858
- if (
859
- sortFieldMetadata?.type === "relation" &&
860
- sortFieldMetadata?.relationType === "many-to-one"
861
- ) {
862
- sortField = `${sortField}.${sortFieldMetadata?.relationModel?.userKeyField?.name}`;
863
- }
864
- queryData.sort = [
865
- `${sortField}:${sortOrder == 0 ? null : sortOrder == 1 ? "asc" : "desc"
866
- }`,
867
- ];
846
+ // Use ref instead of stale closure value
847
+ const currentSortMeta = latestMultiSortMetaRef.current;
848
+
849
+ if (currentSortMeta && currentSortMeta.length > 0) {
850
+ queryData.sort = currentSortMeta.map(({ field, order }: any) => {
851
+ const meta = solidFieldsMetadata?.[field];
852
+ let resolvedField = field;
853
+ if (meta?.type === "relation" && meta?.relationType === "many-to-one") {
854
+ resolvedField = `${field}.${meta?.relationModel?.userKeyField?.name}`;
855
+ }
856
+ return `${resolvedField}:${order === 1 ? "asc" : "desc"}`;
857
+ });
868
858
  } else {
869
859
  queryData.sort = [`id:desc`];
870
860
  }
871
861
 
862
+
872
863
  if (showArchived) {
873
864
  queryData.showSoftDeleted = "inclusive";
874
865
  }
@@ -910,14 +901,13 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
910
901
  const queryString = qs.stringify(queryData, { encodeValuesOnly: true });
911
902
 
912
903
  if (latestFilterPredicatesRef.current && latestFilterPredicatesRef.current.persistFilter) {
913
- let url;
914
- const urlData = structuredClone(queryData);
915
- delete urlData.filters;
916
- urlData.custom_filter_predicate = latestFilterPredicatesRef.current.custom_filter_predicate || null;
917
- urlData.search_predicate = latestFilterPredicatesRef.current.search_predicate || null;
918
- urlData.saved_filter_predicate = latestFilterPredicatesRef.current.saved_filter_predicate || null;
919
- urlData.predefined_search_predicate = latestFilterPredicatesRef.current.predefined_search_predicate || null;
920
- queryObjectToQueryString(urlData);
904
+ const fileterTobeStored = structuredClone(queryData);
905
+ delete fileterTobeStored.filters;
906
+ fileterTobeStored.custom_filter_predicate = latestFilterPredicatesRef.current.custom_filter_predicate || null;
907
+ fileterTobeStored.search_predicate = latestFilterPredicatesRef.current.search_predicate || null;
908
+ fileterTobeStored.saved_filter_predicate = latestFilterPredicatesRef.current.saved_filter_predicate || null;
909
+ fileterTobeStored.predefined_search_predicate = latestFilterPredicatesRef.current.predefined_search_predicate || null;
910
+ setFilterObjectToLocalStorage(fileterTobeStored);
921
911
  }
922
912
  triggerGetSolidEntities(queryString);
923
913
  };
@@ -956,10 +946,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
956
946
  // clear Filter
957
947
  const clearFilter = () => {
958
948
  if (solidListViewMetaData) {
959
- const { sortField, sortOrder, rows, populate, populateMedia } = initialFilterMethod();
949
+ const { multiSortMeta, rows, populate, populateMedia } = initialFilterMethod();
960
950
  setRows(rows);
961
- setSortField(sortField);
962
- setSortOrder(sortOrder);
951
+ setMultiSortMeta(multiSortMeta);
963
952
  setToPopulate(populate);
964
953
  setToPopulateMedia(populateMedia);
965
954
  }
@@ -969,7 +958,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
969
958
 
970
959
 
971
960
  setFilters(params.customFilter || { $and: [] })
972
- solidGlobalSearchElementRef.current.clearFilter();
961
+ solidGlobalSearchElementRef?.current.clearFilter();
973
962
  };
974
963
 
975
964
  const cloneListData = () => {
@@ -993,9 +982,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
993
982
  setFirst(nextFirst);
994
983
  setRows(nextRows);
995
984
  },
996
- setSort: (nextSortField, nextSortOrder) => {
997
- setSortField(nextSortField);
998
- setSortOrder(nextSortOrder);
985
+ setSort: (nextMultiSortMeta) => {
986
+ setMultiSortMeta(nextMultiSortMeta);
999
987
  setFirst(0);
1000
988
  },
1001
989
  setShowArchived: (value) => {
@@ -1004,8 +992,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1004
992
  getState: () => ({
1005
993
  first,
1006
994
  rows,
1007
- sortField,
1008
- sortOrder,
995
+ multiSortMeta,
1009
996
  showArchived,
1010
997
  filters,
1011
998
  filterPredicates,
@@ -1016,8 +1003,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1016
1003
  }), [
1017
1004
  first,
1018
1005
  rows,
1019
- sortField,
1020
- sortOrder,
1006
+ multiSortMeta,
1021
1007
  showArchived,
1022
1008
  filters,
1023
1009
  filterPredicates,
@@ -1028,7 +1014,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1028
1014
 
1029
1015
  const [selectedSolidViewData, setSelectedSolidViewData] = useState<any>();
1030
1016
  const selectedDataRef = useRef<any>();
1031
- const op = useRef(null);
1017
+ const op = useRef<any>(null);
1032
1018
  const [deleteEntity, setDeleteEntity] = useState(false);
1033
1019
 
1034
1020
  // clickable link allowing one to open the detail / form view.
@@ -1066,7 +1052,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1066
1052
  </div>
1067
1053
  // <a onClick={() => {
1068
1054
  // if (params.embeded == true) {
1069
- // params.handlePopUpOpen(solidViewData.id);
1055
+ // params.handleAddClickForEmbeddedView(solidViewData.id);
1070
1056
  // } else {
1071
1057
  // router.push(`${editButtonUrl}/${solidViewData.id}`)
1072
1058
  // }
@@ -1077,7 +1063,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1077
1063
  };
1078
1064
 
1079
1065
  // Recover functions
1080
- const recoverById = (id) => {
1066
+ const recoverById = (id: any) => {
1081
1067
  triggerRecoverSolidEntitiesById(id);
1082
1068
  };
1083
1069
 
@@ -1110,7 +1096,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1110
1096
  }
1111
1097
  }, [recoverByIdIsSuccess, recoverByIdData, recoverByIdIsError, recoverByIdError, recoverIsError, recoverError]);
1112
1098
 
1113
- const showError = async (error) => {
1099
+ const showError = async (error: any) => {
1114
1100
  const errorMessages = error?.data?.message;
1115
1101
  const messages = Array.isArray(errorMessages)
1116
1102
  ? errorMessages
@@ -1139,7 +1125,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1139
1125
  }
1140
1126
  };
1141
1127
 
1142
- const showFieldError = async (error) => {
1128
+ const showFieldError = async (error: any) => {
1143
1129
  if (error) {
1144
1130
  toast?.current?.show({
1145
1131
  severity: "error",
@@ -1297,7 +1283,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1297
1283
  throw new Error(ERROR_MESSAGES.NO_ENTITY_SELECTED);
1298
1284
  }
1299
1285
 
1300
- const response = await deleteSolidSingleEntiry(selectedSolidViewData.id);
1286
+ const response: any = await deleteSolidSingleEntiry(selectedSolidViewData.id);
1301
1287
 
1302
1288
  if (response?.data?.statusCode === 200) {
1303
1289
  setDeleteEntity(false);
@@ -1305,18 +1291,14 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1305
1291
  severity: "success",
1306
1292
  summary: ERROR_MESSAGES.DELETED,
1307
1293
  detail: ERROR_MESSAGES.ENTITY_DELETE,
1308
- ...(severity === "error"
1309
- ? { sticky: true } // stays until user closes
1310
- : { life: 3000 }),
1294
+ life: 3000,
1311
1295
  });
1312
1296
  } else {
1313
1297
  toast.current?.show({
1314
1298
  severity: "error",
1315
1299
  summary: ERROR_MESSAGES.DELETE_FAIELD,
1316
1300
  detail: response?.error?.data?.error,
1317
- ...(severity === "error"
1318
- ? { sticky: true } // stays until user closes
1319
- : { life: 3000 }),
1301
+ sticky: true, // stays until user closes
1320
1302
  });
1321
1303
  }
1322
1304
  } catch (error: any) {
@@ -1324,9 +1306,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1324
1306
  severity: "error",
1325
1307
  summary: ERROR_MESSAGES.DELETE_FAIELD,
1326
1308
  detail: ERROR_MESSAGES.SOMETHING_WRONG,
1327
- ...(severity === "error"
1328
- ? { sticky: true } // stays until user closes
1329
- : { life: 3000 }),
1309
+ sticky: true, // stays until user closes
1310
+
1330
1311
  });
1331
1312
  }
1332
1313
  };
@@ -1371,7 +1352,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1371
1352
 
1372
1353
  const hasCustomContextMenuButtons =
1373
1354
  solidListViewLayout?.attrs?.rowButtons?.some(
1374
- (rb) => rb?.attrs?.actionInContextMenu === true
1355
+ (rb: any) => rb?.attrs?.actionInContextMenu === true
1375
1356
  );
1376
1357
 
1377
1358
  const hasAnyContextMenuActions =
@@ -1408,6 +1389,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1408
1389
  <div className="hidden lg:flex">
1409
1390
  <SolidGlobalSearchElement
1410
1391
  key={params.modelName}
1392
+ viewType="list"
1411
1393
  showSaveFilterPopup={showSaveFilterPopup}
1412
1394
  setShowSaveFilterPopup={setShowSaveFilterPopup}
1413
1395
  ref={solidGlobalSearchElementRef}
@@ -1441,7 +1423,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1441
1423
 
1442
1424
  <div className="hidden lg:flex align-items-center solid-header-buttons-wrapper">
1443
1425
  {solidListViewLayout?.attrs?.headerButtons
1444
- ?.filter((rb) => rb.attrs.actionInContextMenu != true)
1426
+ ?.filter((rb: any) => rb.attrs.actionInContextMenu != true)
1445
1427
  ?.map((button: any, index: number) => (
1446
1428
  <SolidListViewHeaderButton
1447
1429
  key={index}
@@ -1479,7 +1461,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1479
1461
  label={solidListViewLayout?.attrs?.addButtonTitle ? solidListViewLayout?.attrs?.addButtonTitle : "Add"}
1480
1462
  className={`${solidListViewLayout?.attrs?.addButtonClassName}`}
1481
1463
  size="small"
1482
- onClick={() => params.handlePopUpOpen("new")}
1464
+ onClick={() => params.handleAddClickForEmbeddedView("new")}
1483
1465
  ></Button>
1484
1466
  )}
1485
1467
  {/* Button For Manual Refresh */}
@@ -1537,6 +1519,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1537
1519
  params.embeded === false && (
1538
1520
  <div className="flex lg:hidden">
1539
1521
  <SolidGlobalSearchElement
1522
+ viewType="list"
1540
1523
  showSaveFilterPopup={showSaveFilterPopup}
1541
1524
  setShowSaveFilterPopup={setShowSaveFilterPopup}
1542
1525
  ref={solidGlobalSearchElementRef}
@@ -1612,21 +1595,21 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1612
1595
  first={first}
1613
1596
  onPage={onPageChange}
1614
1597
  onSort={(e: DataTableStateEvent) => onSort(e)}
1615
- sortField={sortField}
1616
- sortOrder={sortOrder === 1 || sortOrder === -1 ? sortOrder : 0}
1598
+ multiSortMeta={multiSortMeta}
1617
1599
  loading={false}
1618
1600
  // loading={loading || isLoading}
1619
1601
  // loadingIcon="pi pi-spinner"
1620
1602
  selection={
1621
1603
  params.embeded === true
1622
- ? null
1604
+ ? []
1623
1605
  : [...selectedRecords, ...selectedRecoverRecords]
1624
1606
  }
1625
1607
  onSelectionChange={
1626
1608
  params.embeded === true ? undefined : onSelectionChange
1627
1609
  }
1628
1610
  selectionMode={params.embeded === true ? null : "checkbox"}
1629
- removableSort
1611
+ removableSort={solidListViewLayout?.attrs?.removableSort ?? true}
1612
+ sortMode={solidListViewLayout?.attrs?.sortMode ?? "multiple"}
1630
1613
  filterIcon={<FilterIcon />}
1631
1614
  tableClassName="solid-data-table"
1632
1615
  paginatorClassName="solid-paginator"
@@ -1647,7 +1630,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1647
1630
  if (!(hasFindPermission || hasUpdatePermission)) return;
1648
1631
 
1649
1632
  if (params.embeded === true) {
1650
- params.handlePopUpOpen(rowData?.id);
1633
+ params.handleEditClickForEmbeddedView(rowData?.id);
1651
1634
  } else {
1652
1635
  if (typeof window !== "undefined") {
1653
1636
  // store a simple marker for the caller
@@ -1754,7 +1737,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1754
1737
  icon={"pi pi-pencil"}
1755
1738
  onClick={() => {
1756
1739
  if (params.embeded == true) {
1757
- params.handlePopUpOpen(rowData?.id);
1740
+ params.handleEditClickForEmbeddedView(rowData?.id);
1758
1741
  } else {
1759
1742
  if (typeof window !== "undefined") {
1760
1743
  try {
@@ -1779,15 +1762,15 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1779
1762
  `${permissionExpression(params.modelName, 'delete')}`
1780
1763
  ) &&
1781
1764
  solidListViewLayout?.attrs?.delete !== false &&
1782
- solidListViewLayout?.attrs?.showRowDeleteInContextMenu ===
1783
- false && (
1765
+ solidListViewLayout?.attrs?.showRowDeleteInContextMenu !==
1766
+ true && (
1784
1767
  <Column
1785
1768
  header="Delete"
1786
1769
  body={(rowData) => {
1787
1770
  const shouldHideEditOrDeleteButton = isDraftPublishWorkflowEnabled && rowData?.publishedAt;
1788
1771
  return (
1789
1772
  <>
1790
- {!shouldHideEditOrDeleteButton && (
1773
+ {(!shouldHideEditOrDeleteButton || params.embeded) && (
1791
1774
  <Button
1792
1775
  text
1793
1776
  type="button"
@@ -1797,8 +1780,12 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1797
1780
  severity="danger"
1798
1781
  icon={"pi pi-trash"}
1799
1782
  onClick={() => {
1800
- setSelectedSolidViewData(rowData);
1801
- setDeleteEntity(true);
1783
+ if (params?.embededFieldRelationType === "many-to-many") {
1784
+ params?.handleDeleteClick(rowData.id);
1785
+ } else {
1786
+ setSelectedSolidViewData(rowData);
1787
+ setDeleteEntity(true);
1788
+ }
1802
1789
  }}
1803
1790
  />
1804
1791
  )}
@@ -1848,7 +1835,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1848
1835
  icon={"pi pi-pencil"}
1849
1836
  onClick={() => {
1850
1837
  if (params.embeded == true) {
1851
- params.handlePopUpOpen(
1838
+ params.handleEditClickForEmbeddedView(
1852
1839
  selectedDataRef.current?.id
1853
1840
  );
1854
1841
  } else {
@@ -1864,7 +1851,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1864
1851
  />
1865
1852
  )}
1866
1853
 
1867
- {hasDeleteInContextMenu && (
1854
+ {hasDeleteInContextMenu && params.embeded !== true && (
1868
1855
  <Button
1869
1856
  text
1870
1857
  type="button"
@@ -1879,7 +1866,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1879
1866
  )}
1880
1867
  {hasCustomContextMenuButtons && solidListViewLayout?.attrs?.rowButtons
1881
1868
  ?.filter(
1882
- (rb) =>
1869
+ (rb: any) =>
1883
1870
  rb?.attrs?.actionInContextMenu === true &&
1884
1871
  rb?.attrs?.visible !== false
1885
1872
  )
@@ -1985,7 +1972,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1985
1972
  <div className="p-4">
1986
1973
  <p className="m-0 solid-primary-title" style={{ fontSize: 16 }}>Are you sure you want to delete the selected records?</p>
1987
1974
  <div className="flex align-items-center gap-2 mt-3">
1988
- <Button label="Delete" severity="danger" size="small" onClick={handleDeleteEntity} autoFocus onClick={deleteBulk} />
1975
+ <Button label="Delete" severity="danger" size="small" autoFocus onClick={deleteBulk} />
1989
1976
  <Button label="Cancel" size="small" onClick={onDeleteClose} outlined className='bg-primary-reverse' />
1990
1977
  </div>
1991
1978
  </div>