@solidxai/core-ui 0.1.12-beta.0 → 0.1.12-beta.2

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 (241) hide show
  1. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  2. package/dist/components/auth/AuthLayout.js +15 -19
  3. package/dist/components/auth/AuthLayout.js.map +1 -1
  4. package/dist/components/auth/AuthLayout.tsx +26 -20
  5. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  6. package/dist/components/auth/SolidLogin.js +6 -3
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +16 -2
  9. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  10. package/dist/components/auth/SolidRegister.js +7 -4
  11. package/dist/components/auth/SolidRegister.js.map +1 -1
  12. package/dist/components/auth/SolidRegister.tsx +16 -2
  13. package/dist/components/common/BackButton.js +1 -1
  14. package/dist/components/common/BackButton.js.map +1 -1
  15. package/dist/components/common/BackButton.tsx +1 -1
  16. package/dist/components/common/CancelButton.js +1 -1
  17. package/dist/components/common/CancelButton.js.map +1 -1
  18. package/dist/components/common/CancelButton.tsx +1 -1
  19. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  20. package/dist/components/common/GeneralSettings.js +6 -33
  21. package/dist/components/common/GeneralSettings.js.map +1 -1
  22. package/dist/components/common/GeneralSettings.tsx +20 -57
  23. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  24. package/dist/components/common/SettingsComponent.js +1 -9
  25. package/dist/components/common/SettingsComponent.js.map +1 -1
  26. package/dist/components/common/SettingsComponent.tsx +1 -8
  27. package/dist/components/common/SolidBreadcrumb.js +1 -1
  28. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  29. package/dist/components/common/SolidBreadcrumb.tsx +2 -2
  30. package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -1
  31. package/dist/components/common/SolidFaviconProvider.js +1 -8
  32. package/dist/components/common/SolidFaviconProvider.js.map +1 -1
  33. package/dist/components/common/SolidFaviconProvider.tsx +1 -7
  34. package/dist/components/common/SolidLoadingState.d.ts +10 -0
  35. package/dist/components/common/SolidLoadingState.d.ts.map +1 -0
  36. package/dist/components/common/SolidLoadingState.js +8 -0
  37. package/dist/components/common/SolidLoadingState.js.map +1 -0
  38. package/dist/components/common/SolidLoadingState.module.css +56 -0
  39. package/dist/components/common/SolidLoadingState.tsx +28 -0
  40. package/dist/components/core/card/CardItem.d.ts.map +1 -1
  41. package/dist/components/core/card/CardItem.js +3 -4
  42. package/dist/components/core/card/CardItem.js.map +1 -1
  43. package/dist/components/core/card/CardItem.tsx +3 -4
  44. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  45. package/dist/components/core/card/SolidCardView.js +6 -1
  46. package/dist/components/core/card/SolidCardView.js.map +1 -1
  47. package/dist/components/core/card/SolidCardView.tsx +6 -1
  48. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  49. package/dist/components/core/card/SolidCardViewConfigure.js +4 -1
  50. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  51. package/dist/components/core/card/SolidCardViewConfigure.tsx +4 -1
  52. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
  53. package/dist/components/core/common/SolidCreateButton.js +2 -13
  54. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  55. package/dist/components/core/common/SolidCreateButton.tsx +2 -15
  56. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  57. package/dist/components/core/common/SolidGlobalSearchElement.js +34 -15
  58. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  59. package/dist/components/core/common/SolidGlobalSearchElement.tsx +37 -17
  60. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +15 -13
  61. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
  62. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +4 -4
  63. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +6 -5
  64. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
  65. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +1 -1
  66. package/dist/components/core/form/SolidFormFooter.d.ts +2 -1
  67. package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
  68. package/dist/components/core/form/SolidFormFooter.js +48 -14
  69. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  70. package/dist/components/core/form/SolidFormFooter.tsx +50 -4
  71. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  72. package/dist/components/core/form/SolidFormView.js +52 -50
  73. package/dist/components/core/form/SolidFormView.js.map +1 -1
  74. package/dist/components/core/form/SolidFormView.tsx +16 -9
  75. package/dist/components/core/json/SolidJsonEditor.css +195 -0
  76. package/dist/components/core/json/SolidJsonEditor.d.ts +19 -0
  77. package/dist/components/core/json/SolidJsonEditor.d.ts.map +1 -0
  78. package/dist/components/core/json/SolidJsonEditor.js +109 -0
  79. package/dist/components/core/json/SolidJsonEditor.js.map +1 -0
  80. package/dist/components/core/json/SolidJsonEditor.tsx +150 -0
  81. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  82. package/dist/components/core/kanban/KanbanCard.js +2 -10
  83. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  84. package/dist/components/core/kanban/KanbanCard.tsx +2 -10
  85. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  86. package/dist/components/core/kanban/SolidKanbanView.js +11 -4
  87. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  88. package/dist/components/core/kanban/SolidKanbanView.tsx +13 -5
  89. package/dist/components/core/list/SolidListView.d.ts +2 -0
  90. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  91. package/dist/components/core/list/SolidListView.js +195 -111
  92. package/dist/components/core/list/SolidListView.js.map +1 -1
  93. package/dist/components/core/list/SolidListView.tsx +136 -39
  94. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  95. package/dist/components/core/list/SolidListViewConfigure.js +2 -0
  96. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  97. package/dist/components/core/list/SolidListViewConfigure.tsx +2 -0
  98. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  99. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +16 -19
  100. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  101. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +16 -22
  102. package/dist/components/core/locales/SolidChatterLocaleTabView.d.ts.map +1 -1
  103. package/dist/components/core/locales/SolidChatterLocaleTabView.js +9 -8
  104. package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
  105. package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +4 -1
  106. package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
  107. package/dist/components/core/locales/SolidLocale.js +1 -2
  108. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  109. package/dist/components/core/locales/SolidLocale.tsx +1 -2
  110. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  111. package/dist/components/core/model/CreateModel.js +1 -1
  112. package/dist/components/core/model/CreateModel.js.map +1 -1
  113. package/dist/components/core/model/CreateModel.tsx +0 -1
  114. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  115. package/dist/components/core/model/ModelMetaData.js +1 -2
  116. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  117. package/dist/components/core/model/ModelMetaData.tsx +1 -3
  118. package/dist/components/core/module/CreateModule.css +70 -2
  119. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  120. package/dist/components/core/module/CreateModule.js +2 -2
  121. package/dist/components/core/module/CreateModule.js.map +1 -1
  122. package/dist/components/core/module/CreateModule.tsx +13 -1
  123. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  124. package/dist/components/core/tree/SolidTreeView.js +47 -26
  125. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  126. package/dist/components/core/tree/SolidTreeView.tsx +55 -23
  127. package/dist/components/layout/AdminTopHeader.js +2 -3
  128. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  129. package/dist/components/layout/AdminTopHeader.tsx +2 -2
  130. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  131. package/dist/components/layout/AppSidebar.js +5 -2
  132. package/dist/components/layout/AppSidebar.js.map +1 -1
  133. package/dist/components/layout/AppSidebar.tsx +7 -4
  134. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  135. package/dist/components/layout/navbar-two-menu.js +6 -4
  136. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  137. package/dist/components/layout/navbar-two-menu.tsx +4 -2
  138. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
  139. package/dist/components/shad-cn-ui/SolidTabs.js +1 -1
  140. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
  141. package/dist/components/shad-cn-ui/SolidTabs.tsx +1 -0
  142. package/dist/constants/error-messages.d.ts +1 -0
  143. package/dist/constants/error-messages.d.ts.map +1 -1
  144. package/dist/constants/error-messages.js +1 -0
  145. package/dist/constants/error-messages.js.map +1 -1
  146. package/dist/constants/error-messages.ts +1 -0
  147. package/dist/helpers/assetUrl.d.ts +3 -0
  148. package/dist/helpers/assetUrl.d.ts.map +1 -0
  149. package/dist/helpers/assetUrl.js +22 -0
  150. package/dist/helpers/assetUrl.js.map +1 -0
  151. package/dist/helpers/assetUrl.ts +26 -0
  152. package/dist/helpers/modelViewPersistence.d.ts +5 -0
  153. package/dist/helpers/modelViewPersistence.d.ts.map +1 -0
  154. package/dist/helpers/modelViewPersistence.js +168 -0
  155. package/dist/helpers/modelViewPersistence.js.map +1 -0
  156. package/dist/helpers/modelViewPersistence.ts +201 -0
  157. package/dist/helpers/routePaths.d.ts +6 -0
  158. package/dist/helpers/routePaths.d.ts.map +1 -1
  159. package/dist/helpers/routePaths.js +13 -0
  160. package/dist/helpers/routePaths.js.map +1 -1
  161. package/dist/helpers/routePaths.ts +25 -0
  162. package/dist/index.d.ts +3 -0
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +3 -0
  165. package/dist/index.js.map +1 -1
  166. package/dist/index.ts +14 -0
  167. package/dist/redux/api/datasourceIntrospectionApi.d.ts +203 -0
  168. package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -0
  169. package/dist/redux/api/datasourceIntrospectionApi.js +71 -0
  170. package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -0
  171. package/dist/redux/api/datasourceIntrospectionApi.ts +261 -0
  172. package/dist/redux/api/datasourceManagementApi.d.ts +46 -0
  173. package/dist/redux/api/datasourceManagementApi.d.ts.map +1 -0
  174. package/dist/redux/api/datasourceManagementApi.js +35 -0
  175. package/dist/redux/api/datasourceManagementApi.js.map +1 -0
  176. package/dist/redux/api/datasourceManagementApi.ts +86 -0
  177. package/dist/redux/api/solidServiceApi.d.ts +10 -2
  178. package/dist/redux/api/solidServiceApi.d.ts.map +1 -1
  179. package/dist/redux/api/solidServiceApi.js +2 -4
  180. package/dist/redux/api/solidServiceApi.js.map +1 -1
  181. package/dist/redux/api/solidServiceApi.ts +4 -6
  182. package/dist/redux/store/StoreProvider.d.ts.map +1 -1
  183. package/dist/redux/store/StoreProvider.js +4 -2
  184. package/dist/redux/store/StoreProvider.js.map +1 -1
  185. package/dist/redux/store/StoreProvider.tsx +9 -1
  186. package/dist/redux/store/defaultStoreConfig.d.ts +28 -1
  187. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  188. package/dist/redux/store/defaultStoreConfig.js +4 -0
  189. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  190. package/dist/redux/store/defaultStoreConfig.ts +4 -0
  191. package/dist/resources/solid-custom.css +73 -16
  192. package/dist/routes/guards/AdminGuard.d.ts.map +1 -1
  193. package/dist/routes/guards/AdminGuard.js +2 -1
  194. package/dist/routes/guards/AdminGuard.js.map +1 -1
  195. package/dist/routes/guards/AdminGuard.tsx +7 -1
  196. package/dist/routes/guards/AuthGuard.d.ts.map +1 -1
  197. package/dist/routes/guards/AuthGuard.js +2 -1
  198. package/dist/routes/guards/AuthGuard.js.map +1 -1
  199. package/dist/routes/guards/AuthGuard.tsx +8 -2
  200. package/dist/routes/guards/GuestGuard.d.ts.map +1 -1
  201. package/dist/routes/guards/GuestGuard.js +2 -1
  202. package/dist/routes/guards/GuestGuard.js.map +1 -1
  203. package/dist/routes/guards/GuestGuard.tsx +8 -2
  204. package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
  205. package/dist/routes/pages/admin/core/CardPage.js +11 -0
  206. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  207. package/dist/routes/pages/admin/core/CardPage.tsx +13 -0
  208. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  209. package/dist/routes/pages/admin/core/DashboardPage.js +7 -5
  210. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  211. package/dist/routes/pages/admin/core/DashboardPage.module.css +18 -0
  212. package/dist/routes/pages/admin/core/DashboardPage.tsx +50 -32
  213. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +828 -0
  214. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts +3 -0
  215. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -0
  216. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +947 -0
  217. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -0
  218. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1719 -0
  219. package/dist/routes/pages/admin/core/DatasourcesPage.css +337 -0
  220. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts +3 -0
  221. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -0
  222. package/dist/routes/pages/admin/core/DatasourcesPage.js +221 -0
  223. package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -0
  224. package/dist/routes/pages/admin/core/DatasourcesPage.tsx +540 -0
  225. package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
  226. package/dist/routes/pages/admin/core/KanbanPage.js +11 -0
  227. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  228. package/dist/routes/pages/admin/core/KanbanPage.tsx +13 -0
  229. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  230. package/dist/routes/pages/admin/core/ListPage.js +25 -2
  231. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  232. package/dist/routes/pages/admin/core/ListPage.tsx +29 -2
  233. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -1
  234. package/dist/routes/pages/admin/core/TreePage.js +10 -2
  235. package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
  236. package/dist/routes/pages/admin/core/TreePage.tsx +11 -2
  237. package/dist/routes/solidRoutes.d.ts.map +1 -1
  238. package/dist/routes/solidRoutes.js +5 -1
  239. package/dist/routes/solidRoutes.js.map +1 -1
  240. package/dist/routes/solidRoutes.tsx +4 -0
  241. package/package.json +1 -1
@@ -34,6 +34,7 @@ import { ERROR_MESSAGES } from "../../../constants/error-messages";
34
34
  // import { SolidAiMainWrapper } from "../solid-ai/SolidAiMainWrapper"; // moved to SolidX Studio panel
35
35
  import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
36
36
  import { normalizeSolidListTreeKanbanActionPath } from "../../../helpers/routePaths";
37
+ import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
37
38
  import { getMediaTypeFromUrl } from "../../../helpers/mediaType";
38
39
  import { SolidListViewRowActionsMenu } from "./SolidListViewRowActionsMenu";
39
40
  import { SolidHeaderRequestStatus } from "../../common/SolidHeaderRequestStatus";
@@ -56,6 +57,39 @@ const getRandomInt = (min: number, max: number) => {
56
57
  return Math.floor(Math.random() * (max - min + 1)) + min;
57
58
  };
58
59
 
60
+ const hasMeaningfulPersistedFilterValue = (value: any): boolean => {
61
+ if (value === null || value === undefined) return false;
62
+ if (typeof value === "string") return value.trim().length > 0;
63
+ if (typeof value === "number" || typeof value === "boolean") return true;
64
+ if (Array.isArray(value)) return value.some((item) => hasMeaningfulPersistedFilterValue(item));
65
+ if (typeof value === "object") return hasMeaningfulPersistedFilter(value);
66
+ return false;
67
+ };
68
+
69
+ export const hasMeaningfulPersistedFilter = (filterObject: any): boolean => {
70
+ if (!filterObject || typeof filterObject !== "object") return false;
71
+
72
+ if (Array.isArray(filterObject)) {
73
+ return filterObject.some((item) => hasMeaningfulPersistedFilter(item) || hasMeaningfulPersistedFilterValue(item));
74
+ }
75
+
76
+ return Object.entries(filterObject).some(([key, val]) => {
77
+ if (key === "matchMode" || key === "operator") return false;
78
+ if (key === "value") return hasMeaningfulPersistedFilterValue(val);
79
+ if ((key === "$and" || key === "$or") && Array.isArray(val)) {
80
+ return val.some((item) => hasMeaningfulPersistedFilter(item) || hasMeaningfulPersistedFilterValue(item));
81
+ }
82
+ if (typeof val === "object") return hasMeaningfulPersistedFilter(val);
83
+ return hasMeaningfulPersistedFilterValue(val);
84
+ });
85
+ };
86
+
87
+ export const hasStoredFilterPredicates = (queryObject: any): boolean =>
88
+ hasMeaningfulPersistedFilter(queryObject?.custom_filter_predicate) ||
89
+ hasMeaningfulPersistedFilter(queryObject?.search_predicate) ||
90
+ hasMeaningfulPersistedFilter(queryObject?.saved_filter_predicate) ||
91
+ hasMeaningfulPersistedFilter(queryObject?.predefined_search_predicate);
92
+
59
93
  export const getFilterObjectFromLocalStorage = () => {
60
94
  const currentPageUrl = window.location.pathname; // Get the current page URL
61
95
  const encodedQueryString = localStorage.getItem(currentPageUrl); // Retrieve the encoded query string from local storage
@@ -209,6 +243,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
209
243
  const [solidListViewMetaData, setSolidListViewMetaData] = useState<any>(null);
210
244
  const [solidListViewLayout, setSolidListViewLayout] = useState<any>(null);
211
245
  const [isDraftPublishWorkflowEnabled, setIsDraftPublishWorkflowEnabled] = useState(false);
246
+ const internationalisationEnabled = Boolean(solidListViewMetaData?.data?.solidView?.model?.internationalisation);
212
247
 
213
248
  // Filter query realted states
214
249
  const [filters, setFilters] = useState<any>(null);
@@ -265,6 +300,67 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
265
300
  [editButtonUrl, pathname]
266
301
  );
267
302
 
303
+ const resolveLocaleFromFilter = (filterNode: any): string | null => {
304
+ if (!filterNode || typeof filterNode !== "object") return null;
305
+
306
+ if (Array.isArray(filterNode)) {
307
+ for (const item of filterNode) {
308
+ const resolved = resolveLocaleFromFilter(item);
309
+ if (resolved) return resolved;
310
+ }
311
+ return null;
312
+ }
313
+
314
+ if (Object.prototype.hasOwnProperty.call(filterNode, "localeName")) {
315
+ const localeFilter = filterNode.localeName;
316
+
317
+ if (typeof localeFilter === "string") {
318
+ return localeFilter;
319
+ }
320
+
321
+ if (localeFilter && typeof localeFilter === "object") {
322
+ for (const key of ["$eqi", "$eq", "$in", "$containsi", "$contains"]) {
323
+ const localeValue = localeFilter[key];
324
+ if (typeof localeValue === "string" && localeValue.trim()) {
325
+ return localeValue;
326
+ }
327
+ if (Array.isArray(localeValue) && localeValue.length > 0) {
328
+ const firstValue = localeValue[0];
329
+ if (typeof firstValue === "string" && firstValue.trim()) {
330
+ return firstValue;
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+
337
+ for (const value of Object.values(filterNode)) {
338
+ const resolved = resolveLocaleFromFilter(value);
339
+ if (resolved) return resolved;
340
+ }
341
+
342
+ return null;
343
+ };
344
+
345
+ const getResolvedListLocale = () => resolveLocaleFromFilter(latestFiltersRef.current) || localeName || null;
346
+
347
+ const buildEditNavigationQueryString = (rowData: any) => {
348
+ const queryParams = new URLSearchParams(editActionQueryParams);
349
+ if (internationalisationEnabled) {
350
+ const resolvedLocale = rowData?.localeName || getResolvedListLocale();
351
+ if (resolvedLocale) {
352
+ queryParams.set("locale", resolvedLocale);
353
+ }
354
+
355
+ const defaultEntityLocaleId = rowData?.defaultEntityLocaleId ?? rowData?.id;
356
+ if (defaultEntityLocaleId !== undefined && defaultEntityLocaleId !== null && defaultEntityLocaleId !== "") {
357
+ queryParams.set("defaultEntityLocaleId", String(defaultEntityLocaleId));
358
+ }
359
+ }
360
+
361
+ return queryParams.toString();
362
+ };
363
+
268
364
  useEffect(() => {
269
365
  const fetchPermissions = async () => {
270
366
  if (params.modelName) {
@@ -446,12 +542,14 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
446
542
  const listLayoutAttrs = solidListViewLayout.attrs;
447
543
  const createActionUrl = listLayoutAttrs?.createAction && listLayoutAttrs?.createAction?.type === "custom" ? listLayoutAttrs?.createAction?.customComponent : "form/new";
448
544
  const editActionUrl = listLayoutAttrs?.editAction && listLayoutAttrs?.editAction?.type === "custom" ? listLayoutAttrs?.editAction?.customComponent : "form";
545
+ const resolvedListLocale = getResolvedListLocale();
449
546
 
450
547
  if (listLayoutAttrs?.createAction) {
451
548
  setCreateActionQueryParams({
452
549
  actionName: listLayoutAttrs.createAction.name,
453
550
  actionType: listLayoutAttrs.createAction.type,
454
551
  actionContext: listLayoutAttrs.createAction.context,
552
+ ...(internationalisationEnabled && resolvedListLocale ? { locale: resolvedListLocale } : {}),
455
553
  });
456
554
  }
457
555
  if (listLayoutAttrs?.editAction) {
@@ -459,6 +557,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
459
557
  actionName: listLayoutAttrs.editAction.name,
460
558
  actionType: listLayoutAttrs.editAction.type,
461
559
  actionContext: listLayoutAttrs.editAction.context,
560
+ ...(internationalisationEnabled && resolvedListLocale ? { locale: resolvedListLocale } : {}),
462
561
  });
463
562
  }
464
563
 
@@ -598,6 +697,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
598
697
  }
599
698
  setSortField(restoredSortField);
600
699
  setSortOrder(restoredSortOrder);
700
+ setShowArchived(queryObject.showArchived === true || queryObject.showArchived === "true" || queryObject.showSoftDeleted === "inclusive");
601
701
  const { populate, populateMedia } = initialFilterMethod();
602
702
  setToPopulate(populate);
603
703
  setToPopulateMedia(populateMedia);
@@ -609,6 +709,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
609
709
  setToPopulate(populate);
610
710
  setToPopulateMedia(populateMedia);
611
711
  setFirst(0);
712
+ setShowArchived(false);
612
713
  }
613
714
  //below line was added to handle state stale issue when we converted boilerplate to vite
614
715
  //since now we dont need it becuase our component is remounted on every router change
@@ -767,6 +868,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
767
868
  const setQueryString = async () => {
768
869
  const solidFieldsMetadata =
769
870
  solidListViewMetaData?.data?.solidFieldsMetadata;
871
+ const explicitLocale = resolveLocaleFromFilter(latestFiltersRef.current);
770
872
 
771
873
  let queryData: any = {
772
874
  offset: first,
@@ -774,9 +876,13 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
774
876
  filters: latestFiltersRef.current ?? latestFiltersRef.current,
775
877
  populate: toPopulate,
776
878
  populateMedia: toPopulateMedia,
777
- locale: localeName ? localeName : "en",
778
879
  };
779
880
 
881
+ const resolvedLocale = explicitLocale || localeName;
882
+ if (resolvedLocale) {
883
+ queryData.locale = resolvedLocale;
884
+ }
885
+
780
886
 
781
887
 
782
888
  const currentSortField = latestSortFieldRef.current;
@@ -954,6 +1060,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
954
1060
  setToPopulate(populate);
955
1061
  setToPopulateMedia(populateMedia);
956
1062
  }
1063
+ setFirst(0);
957
1064
  latestFiltersRef.current = {
958
1065
  $and: []
959
1066
  };
@@ -1263,6 +1370,11 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1263
1370
  // }
1264
1371
 
1265
1372
  const handleFetchUpdatedRecords = () => {
1373
+ if (hasAnyActiveFilters) {
1374
+ clearFilter();
1375
+ return;
1376
+ }
1377
+
1266
1378
  setQueryString();
1267
1379
  };
1268
1380
 
@@ -1438,7 +1550,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1438
1550
  leftIcon={<RefreshCw size={14} />}
1439
1551
  />
1440
1552
  )}
1441
- {showArchived && (
1553
+ {showArchived && selectedRecoverRecords.length > 0 && (
1442
1554
  <SolidButton
1443
1555
  type="button"
1444
1556
  size="small"
@@ -1476,7 +1588,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1476
1588
  </div>
1477
1589
  </div>
1478
1590
  {/* </div> */}
1479
- {showGlobalSearchElement && params.embeded === false && (
1591
+ {showGlobalSearchElement && params.embeded === false && window.innerWidth < 991 && (
1480
1592
  <div className="flex lg:hidden">
1481
1593
  <SolidGlobalSearchElement
1482
1594
  viewType="list"
@@ -1560,6 +1672,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1560
1672
  const rowData = e.data;
1561
1673
 
1562
1674
  if (solidListViewLayout?.attrs?.disableRowClick === true) return;
1675
+ if (rowData?.deletedAt) return;
1563
1676
 
1564
1677
  const hasFindPermission = actionsAllowed.includes(
1565
1678
  permissionExpression(params.modelName, 'findOne')
@@ -1573,18 +1686,8 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1573
1686
  if (params.embeded === true) {
1574
1687
  params.handleEditClickForEmbeddedView(rowData?.id);
1575
1688
  } else {
1576
- if (typeof window !== "undefined") {
1577
- // store a simple marker for the caller
1578
-
1579
- // also store the full current URL so Back can restore exact state (including action params)
1580
- try {
1581
- sessionStorage.setItem("fromView", "list");
1582
- sessionStorage.setItem("fromViewUrl", window.location.pathname + window.location.search);
1583
- } catch (e) {
1584
- // ignore storage errors
1585
- }
1586
- }
1587
- router.push(`${editBaseUrl}/${rowData?.id}?viewMode=view&${new URLSearchParams(editActionQueryParams).toString()}`);
1689
+ storeCurrentModelViewContext();
1690
+ router.push(`${editBaseUrl}/${rowData?.id}?viewMode=view&${buildEditNavigationQueryString(rowData)}`);
1588
1691
  }
1589
1692
  }
1590
1693
  }
@@ -1680,14 +1783,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1680
1783
  if (params.embeded == true) {
1681
1784
  params.handleEditClickForEmbeddedView(rowData?.id);
1682
1785
  } else {
1683
- if (typeof window !== "undefined") {
1684
- try {
1685
- sessionStorage.setItem("fromView", "list");
1686
- sessionStorage.setItem("fromViewUrl", window.location.pathname + window.location.search);
1687
- } catch (e) { }
1688
- }
1786
+ storeCurrentModelViewContext();
1689
1787
  router.push(
1690
- `${editBaseUrl}/${rowData?.id}?viewMode=edit&${new URLSearchParams(editActionQueryParams).toString()}`
1788
+ `${editBaseUrl}/${rowData?.id}?viewMode=edit&${buildEditNavigationQueryString(rowData)}`
1691
1789
  );
1692
1790
  }
1693
1791
  }}
@@ -1744,15 +1842,17 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1744
1842
  alignFrozen="right"
1745
1843
  body={(rowData) =>
1746
1844
  rowData?.deletedAt ? (
1747
- <a
1748
- onClick={(event) => {
1749
- event.stopPropagation();
1750
- recoverById(rowData.id);
1751
- }}
1752
- className="retrieve-button solid-row-menu-trigger"
1753
- >
1754
- <RotateCcw size={14} className={styles.retrieveIcon} />
1755
- </a>
1845
+ <div className="flex justify-content-center align-items-center" data-no-row-click="true">
1846
+ <a
1847
+ onClick={(event) => {
1848
+ event.stopPropagation();
1849
+ recoverById(rowData.id);
1850
+ }}
1851
+ className="retrieve-button solid-row-menu-trigger"
1852
+ >
1853
+ <RotateCcw size={14} className={styles.retrieveIcon} />
1854
+ </a>
1855
+ </div>
1756
1856
  ) : (
1757
1857
  <>
1758
1858
  {solidListViewLayout?.attrs?.showRowContextMenu !==
@@ -1776,12 +1876,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1776
1876
  if (params.embeded == true) {
1777
1877
  params.handleEditClickForEmbeddedView(selectedRow?.id);
1778
1878
  } else {
1779
- try {
1780
- sessionStorage.setItem("fromView", "list");
1781
- sessionStorage.setItem("fromViewUrl", window.location.pathname + window.location.search);
1782
- } catch (e) { }
1879
+ storeCurrentModelViewContext();
1783
1880
  router.push(
1784
- `${editBaseUrl}/${selectedRow?.id}?viewMode=edit&${new URLSearchParams(editActionQueryParams).toString()}`
1881
+ `${editBaseUrl}/${selectedRow?.id}?viewMode=edit&${buildEditNavigationQueryString(selectedRow)}`
1785
1882
  );
1786
1883
  }
1787
1884
  }}
@@ -1862,9 +1959,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
1862
1959
  </SolidDialogHeader>
1863
1960
  <SolidDialogSeparator />
1864
1961
  <SolidDialogBody>
1865
- <ListViewRowActionPopup
1866
- context={listViewRowActionData}
1867
- ></ListViewRowActionPopup>
1962
+ <ListViewRowActionPopup
1963
+ context={listViewRowActionData}
1964
+ ></ListViewRowActionPopup>
1868
1965
  </SolidDialogBody>
1869
1966
  </SolidDialog>
1870
1967
  )
@@ -1 +1 @@
1
- {"version":3,"file":"SolidListViewConfigure.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"AAUA,OAAO,+BAA+B,CAAC;AA4BvC,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,eAAO,MAAM,sBAAsB,+QAoB3B,GAAG,4CAwVV,CAAA"}
1
+ {"version":3,"file":"SolidListViewConfigure.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"AAUA,OAAO,+BAA+B,CAAC;AA6BvC,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,eAAO,MAAM,sBAAsB,+QAoB3B,GAAG,4CAyVV,CAAA"}
@@ -14,6 +14,7 @@ import { SolidGenericImport } from "../common/SolidGenericImport/SolidGenericImp
14
14
  import { hasAnyRole } from "../../../helpers/rolesHelper";
15
15
  import { capitalize } from "lodash";
16
16
  import { Cog, Download, RefreshCw, Save, SlidersHorizontal, Table, Trash2, Upload } from "lucide-react";
17
+ import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
17
18
  import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogDescription, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle, SolidDropdownMenu, SolidDropdownMenuCheckboxItem, SolidDropdownMenuContent, SolidDropdownMenuItem, SolidDropdownMenuLabel, SolidDropdownMenuRadioGroup, SolidDropdownMenuRadioItem, SolidDropdownMenuSeparator, SolidDropdownMenuSub, SolidDropdownMenuSubContent, SolidDropdownMenuSubTrigger, SolidDropdownMenuTrigger, } from "../../shad-cn-ui";
18
19
  export var SolidListViewConfigure = function (_a) {
19
20
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
@@ -33,6 +34,7 @@ export var SolidListViewConfigure = function (_a) {
33
34
  var pathSegments = pathname.split('/').filter(Boolean);
34
35
  pathSegments[pathSegments.length - 1] = newView.type; // Replace the last part with new view
35
36
  var newPath = '/' + pathSegments.join('/') + "?menuItemId=".concat(newView.menuItemId, "&menuItemName=").concat(newView.menuItemName, "&actionId=").concat(newView.actionId, "&actionName=").concat(newView.actionName);
37
+ storeCurrentModelViewContext(newPath);
36
38
  router.push(newPath);
37
39
  };
38
40
  useEffect(function () {
@@ -1 +1 @@
1
- {"version":3,"file":"SolidListViewConfigure.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSession } from \"../../../hooks/useSession\";\nimport { permissionExpression } from \"../../../helpers/permissions\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidListColumnSelector } from \"./SolidColumnSelector/SolidListColumnSelector\";\nimport { SolidExport } from \"../../../components/common/SolidExport\";\nimport { useHandleListCustomButtonClick } from \"../../../components/common/useHandleListCustomButtonClick\";\nimport { SolidListViewHeaderContextMenuButton } from \"./SolidListViewHeaderContextMenuButton\";\nimport { isButtonVisibleInCurrentEnv } from \"../../../helpers/buttonEnvironment\";\nimport \"../../common/solid-export.css\";\nimport { SolidGenericImport } from \"../common/SolidGenericImport/SolidGenericImport\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { SolidListViewHeaderButton } from \"./SolidListViewHeaderButton\";\nimport { capitalize } from \"lodash\";\nimport { Cog, Download, RefreshCw, Save, SlidersHorizontal, Table, Trash2, Upload } from \"lucide-react\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidDropdownMenu,\n SolidDropdownMenuCheckboxItem,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuLabel,\n SolidDropdownMenuRadioGroup,\n SolidDropdownMenuRadioItem,\n SolidDropdownMenuSeparator,\n SolidDropdownMenuSub,\n SolidDropdownMenuSubContent,\n SolidDropdownMenuSubTrigger,\n SolidDropdownMenuTrigger,\n} from \"../../shad-cn-ui\";\n\nexport type ViewMode = {\n actionId: string;\n actionName: string;\n menuItemId: string;\n menuItemName: string;\n type: string;\n}\n\nexport const SolidListViewConfigure = (\n { listViewMetaData,\n solidListViewLayout,\n setShowArchived,\n showArchived,\n viewData,\n sizeOptions,\n setSize,\n size,\n viewModes,\n params,\n actionsAllowed,\n selectedRecords,\n setDialogVisible,\n setShowSaveFilterPopup,\n filters,\n handleFetchUpdatedRecords,\n setRecoverDialogVisible,\n\n }:\n any) => {\n // const [visible, setVisible] = useState<boolean>(false);\n const handleCustomButtonClick = useHandleListCustomButtonClick();\n const [openImportDialog, setOpenImportDialog] = useState<boolean>(false);\n const pathname = usePathname();\n const router = useRouter();\n const [view, setView] = useState<string>(\"\");\n const [exportView, setExportView] = useState<boolean>(false);\n const [isCogMenuOpen, setIsCogMenuOpen] = useState(false);\n const [showColumnSelectorDialog, setShowColumnSelectorDialog] = useState(false);\n\n const handleViewChange = (newView: ViewMode) => {\n if (view === newView.type) return; // Prevent unnecessary updates\n const pathSegments = pathname.split('/').filter(Boolean);\n pathSegments[pathSegments.length - 1] = newView.type; // Replace the last part with new view\n const newPath = '/' + pathSegments.join('/') + `?menuItemId=${newView.menuItemId}&menuItemName=${newView.menuItemName}&actionId=${newView.actionId}&actionName=${newView.actionName}`;\n router.push(newPath);\n };\n\n useEffect(() => {\n if (typeof pathname === 'string') {\n const pathSegments = pathname.split('/').filter(Boolean);\n if (pathSegments.length > 0) {\n setView(pathSegments[pathSegments.length - 1]);\n }\n }\n }, [])\n\n //Build a map of actionKey → boolean at the top level\n const headerActions = solidListViewLayout?.attrs ?? {};\n\n const normalizeAction = (value: boolean | string[]) => {\n if (value === true) return { enabled: true, roles: [] };\n if (value === false) return { enabled: false, roles: [] };\n if (Array.isArray(value)) return { enabled: true, roles: value };\n return { enabled: true, roles: [] }; // default\n };\n const normalized = {\n import: normalizeAction(headerActions.import),\n export: normalizeAction(headerActions.export),\n customizeLayout: normalizeAction(headerActions.customizeLayout),\n savedFilters: normalizeAction(headerActions.savedFilters),\n };\n\n // Role checks\n const { data: session, status } = useSession();\n const user = session?.user;\n const useRoleCheck = (roles: string[]) => hasAnyRole(user?.roles, roles);\n\n // Map of action → roleCheck\n const roleCheckMap = {\n import: useRoleCheck(normalized.import.roles),\n export: useRoleCheck(normalized.export.roles),\n customizeLayout: useRoleCheck(normalized.customizeLayout.roles),\n savedFilters: useRoleCheck(normalized.savedFilters.roles),\n };\n\n const isHeaderActionEnabled = (action: keyof typeof normalized) => {\n const { enabled, roles } = normalized[action];\n\n // 1. If explicitly disabled\n if (!enabled) return false;\n\n // 2. If roles list exists → must have at least one\n if (roles.length > 0) {\n return roleCheckMap[action] === true;\n }\n // 3. No restrictions → enabled\n return true;\n };\n\n const clearLocalstorageCache = () => {\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Remove from local storage with the URL as the key\n window.location.reload();\n };\n\n const visibleViewModes = (() => {\n if (!Array.isArray(viewModes)) return [];\n\n const uniqueByType = new Map<string, ViewMode>();\n const currentActionId = String(params?.actionId ?? \"\");\n const currentMenuItemId = String(params?.menuItemId ?? \"\");\n\n for (const mode of viewModes) {\n if (!mode || typeof mode.type !== \"string\") continue;\n\n const existing = uniqueByType.get(mode.type);\n if (!existing) {\n uniqueByType.set(mode.type, mode);\n continue;\n }\n\n const modeActionId = String(mode.actionId ?? \"\");\n const modeMenuItemId = String(mode.menuItemId ?? \"\");\n const existingActionId = String(existing.actionId ?? \"\");\n const existingMenuItemId = String(existing.menuItemId ?? \"\");\n\n const modeIsCurrent = (currentActionId && modeActionId === currentActionId) ||\n (currentMenuItemId && modeMenuItemId === currentMenuItemId);\n const existingIsCurrent = (currentActionId && existingActionId === currentActionId) ||\n (currentMenuItemId && existingMenuItemId === currentMenuItemId);\n\n if (modeIsCurrent && !existingIsCurrent) {\n uniqueByType.set(mode.type, mode);\n }\n }\n\n return Array.from(uniqueByType.values());\n })();\n const showSwitchType = visibleViewModes.length > 0;\n const handleViewTypeChange = (nextType: string) => {\n const nextView = visibleViewModes.find((option: ViewMode) => option.type === nextType);\n if (nextView) {\n handleViewChange(nextView);\n }\n };\n\n return (\n <div className=\"position-relative\">\n <SolidDropdownMenu open={isCogMenuOpen} onOpenChange={setIsCogMenuOpen}>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-icon-button solid-header-cog-trigger\"\n aria-label=\"Open list options\"\n >\n <Cog size={16} />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"listview-cogwheel-panel\">\n {(\n (actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) &&\n viewData?.data?.solidView?.layout?.attrs?.delete !== false &&\n selectedRecords.length > 0) ||\n isHeaderActionEnabled('import') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) ||\n isHeaderActionEnabled('export') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) ||\n isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) ||\n isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) ||\n (solidListViewLayout?.attrs?.headerButtons\n ?.some((rb: any) => rb.attrs.actionInContextMenu === true && isButtonVisibleInCurrentEnv(rb?.attrs))) ||\n viewData?.data?.solidView?.model?.enableSoftDelete\n ) && (\n <>\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) && viewData?.data?.solidView?.layout?.attrs?.delete !== false && selectedRecords.length > 0 && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item solid-header-dropdown-item-danger\"\n onSelect={() => {\n setDialogVisible(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Trash2 size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Delete</span>\n </SolidDropdownMenuItem>\n )}\n {isHeaderActionEnabled(\"import\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setOpenImportDialog(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Download size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Import</span>\n </SolidDropdownMenuItem>\n )}\n {isHeaderActionEnabled(\"export\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setExportView((current) => !current);\n setIsCogMenuOpen(false);\n }}\n >\n <Upload size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Export</span>\n </SolidDropdownMenuItem>\n )}\n {solidListViewLayout?.attrs?.headerButtons\n ?.filter((rb: any) => isButtonVisibleInCurrentEnv(rb?.attrs))\n ?.filter((rb: any) => rb.attrs.actionInContextMenu === true)\n ?.map((button: any, index: number) => (\n <SolidListViewHeaderContextMenuButton\n key={index}\n button={button}\n params={params}\n solidListViewMetaData={listViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n onActionComplete={() => setIsCogMenuOpen(false)}\n />\n ))}\n {viewData?.data?.solidView?.model?.enableSoftDelete && (\n <SolidDropdownMenuCheckboxItem\n checked={showArchived}\n onCheckedChange={() => setShowArchived(!showArchived)}\n >\n Show Archived Records\n </SolidDropdownMenuCheckboxItem>\n )}\n {showArchived && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item lg:hidden\"\n onSelect={() => {\n setRecoverDialogVisible(true);\n setIsCogMenuOpen(false);\n }}\n >\n <RefreshCw size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Recover</span>\n </SolidDropdownMenuItem>\n )}\n\n {(\n isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) ||\n isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) ||\n true\n ) && <SolidDropdownMenuSeparator />}\n\n {isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) && (\n <SolidDropdownMenuSub>\n <SolidDropdownMenuSubTrigger className=\"solid-header-dropdown-item\">\n <SlidersHorizontal size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Layout</span>\n </SolidDropdownMenuSubTrigger>\n <SolidDropdownMenuSubContent className=\"customize-layout-panel\">\n {showSwitchType && (\n <>\n <SolidDropdownMenuLabel>Switch Type</SolidDropdownMenuLabel>\n <SolidDropdownMenuRadioGroup value={view} onValueChange={handleViewTypeChange}>\n {visibleViewModes.map((option: ViewMode) => (\n <SolidDropdownMenuRadioItem key={option.type} value={option.type}>\n {capitalize(option.type)}\n </SolidDropdownMenuRadioItem>\n ))}\n </SolidDropdownMenuRadioGroup>\n <SolidDropdownMenuSeparator />\n </>\n )}\n <SolidDropdownMenuLabel>Row Spacing</SolidDropdownMenuLabel>\n <SolidDropdownMenuRadioGroup value={size} onValueChange={(value: string) => setSize(value)}>\n {sizeOptions.map((option: any) => (\n <SolidDropdownMenuRadioItem key={option.value} value={option.value}>\n {option.label}\n </SolidDropdownMenuRadioItem>\n ))}\n </SolidDropdownMenuRadioGroup>\n <SolidDropdownMenuSeparator />\n <SolidDropdownMenuItem\n onSelect={() => {\n setShowColumnSelectorDialog(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Table size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Column Selector</span>\n </SolidDropdownMenuItem>\n </SolidDropdownMenuSubContent>\n </SolidDropdownMenuSub>\n )}\n {isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setShowSaveFilterPopup(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Save size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Save Custom Filter</span>\n </SolidDropdownMenuItem>\n )}\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n clearLocalstorageCache();\n setIsCogMenuOpen(false);\n }}\n >\n <Trash2 size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Reset View</span>\n </SolidDropdownMenuItem>\n </>\n )}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n <SolidDialog\n open={exportView}\n onOpenChange={setExportView}\n className=\"solid-kanban-export-dialog solid-list-export-dialog\"\n style={{ width: \"min(980px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader className=\"solid-export-dialog-header\">\n <div>\n <SolidDialogTitle>Export</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Choose the file format, refine the field set, and save reusable export templates.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-export-dialog-body\">\n <SolidExport\n listViewMetaData={listViewMetaData}\n filters={filters}\n onExportComplete={() => setExportView(false)}\n />\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={showColumnSelectorDialog}\n onOpenChange={setShowColumnSelectorDialog}\n className=\"solid-column-selector-dialog\"\n style={{ width: \"min(388px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Column Selector</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Choose visible columns and reorder them for this list view.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <SolidListColumnSelector\n listViewMetaData={listViewMetaData}\n onClose={() => setShowColumnSelectorDialog(false)}\n />\n </SolidDialogBody>\n </SolidDialog>\n {openImportDialog &&\n <SolidGenericImport\n openImportDialog={openImportDialog}\n setOpenImportDialog={setOpenImportDialog}\n listViewMetaData={listViewMetaData}\n handleFetchUpdatedRecords={handleFetchUpdatedRecords}\n />\n }\n </div>\n )\n}\n"]}
1
+ {"version":3,"file":"SolidListViewConfigure.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewConfigure.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSession } from \"../../../hooks/useSession\";\nimport { permissionExpression } from \"../../../helpers/permissions\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidListColumnSelector } from \"./SolidColumnSelector/SolidListColumnSelector\";\nimport { SolidExport } from \"../../../components/common/SolidExport\";\nimport { useHandleListCustomButtonClick } from \"../../../components/common/useHandleListCustomButtonClick\";\nimport { SolidListViewHeaderContextMenuButton } from \"./SolidListViewHeaderContextMenuButton\";\nimport { isButtonVisibleInCurrentEnv } from \"../../../helpers/buttonEnvironment\";\nimport \"../../common/solid-export.css\";\nimport { SolidGenericImport } from \"../common/SolidGenericImport/SolidGenericImport\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { SolidListViewHeaderButton } from \"./SolidListViewHeaderButton\";\nimport { capitalize } from \"lodash\";\nimport { Cog, Download, RefreshCw, Save, SlidersHorizontal, Table, Trash2, Upload } from \"lucide-react\";\nimport { storeCurrentModelViewContext } from \"../../../helpers/modelViewPersistence\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidDropdownMenu,\n SolidDropdownMenuCheckboxItem,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuLabel,\n SolidDropdownMenuRadioGroup,\n SolidDropdownMenuRadioItem,\n SolidDropdownMenuSeparator,\n SolidDropdownMenuSub,\n SolidDropdownMenuSubContent,\n SolidDropdownMenuSubTrigger,\n SolidDropdownMenuTrigger,\n} from \"../../shad-cn-ui\";\n\nexport type ViewMode = {\n actionId: string;\n actionName: string;\n menuItemId: string;\n menuItemName: string;\n type: string;\n}\n\nexport const SolidListViewConfigure = (\n { listViewMetaData,\n solidListViewLayout,\n setShowArchived,\n showArchived,\n viewData,\n sizeOptions,\n setSize,\n size,\n viewModes,\n params,\n actionsAllowed,\n selectedRecords,\n setDialogVisible,\n setShowSaveFilterPopup,\n filters,\n handleFetchUpdatedRecords,\n setRecoverDialogVisible,\n\n }:\n any) => {\n // const [visible, setVisible] = useState<boolean>(false);\n const handleCustomButtonClick = useHandleListCustomButtonClick();\n const [openImportDialog, setOpenImportDialog] = useState<boolean>(false);\n const pathname = usePathname();\n const router = useRouter();\n const [view, setView] = useState<string>(\"\");\n const [exportView, setExportView] = useState<boolean>(false);\n const [isCogMenuOpen, setIsCogMenuOpen] = useState(false);\n const [showColumnSelectorDialog, setShowColumnSelectorDialog] = useState(false);\n\n const handleViewChange = (newView: ViewMode) => {\n if (view === newView.type) return; // Prevent unnecessary updates\n const pathSegments = pathname.split('/').filter(Boolean);\n pathSegments[pathSegments.length - 1] = newView.type; // Replace the last part with new view\n const newPath = '/' + pathSegments.join('/') + `?menuItemId=${newView.menuItemId}&menuItemName=${newView.menuItemName}&actionId=${newView.actionId}&actionName=${newView.actionName}`;\n storeCurrentModelViewContext(newPath);\n router.push(newPath);\n };\n\n useEffect(() => {\n if (typeof pathname === 'string') {\n const pathSegments = pathname.split('/').filter(Boolean);\n if (pathSegments.length > 0) {\n setView(pathSegments[pathSegments.length - 1]);\n }\n }\n }, [])\n\n //Build a map of actionKey → boolean at the top level\n const headerActions = solidListViewLayout?.attrs ?? {};\n\n const normalizeAction = (value: boolean | string[]) => {\n if (value === true) return { enabled: true, roles: [] };\n if (value === false) return { enabled: false, roles: [] };\n if (Array.isArray(value)) return { enabled: true, roles: value };\n return { enabled: true, roles: [] }; // default\n };\n const normalized = {\n import: normalizeAction(headerActions.import),\n export: normalizeAction(headerActions.export),\n customizeLayout: normalizeAction(headerActions.customizeLayout),\n savedFilters: normalizeAction(headerActions.savedFilters),\n };\n\n // Role checks\n const { data: session, status } = useSession();\n const user = session?.user;\n const useRoleCheck = (roles: string[]) => hasAnyRole(user?.roles, roles);\n\n // Map of action → roleCheck\n const roleCheckMap = {\n import: useRoleCheck(normalized.import.roles),\n export: useRoleCheck(normalized.export.roles),\n customizeLayout: useRoleCheck(normalized.customizeLayout.roles),\n savedFilters: useRoleCheck(normalized.savedFilters.roles),\n };\n\n const isHeaderActionEnabled = (action: keyof typeof normalized) => {\n const { enabled, roles } = normalized[action];\n\n // 1. If explicitly disabled\n if (!enabled) return false;\n\n // 2. If roles list exists → must have at least one\n if (roles.length > 0) {\n return roleCheckMap[action] === true;\n }\n // 3. No restrictions → enabled\n return true;\n };\n\n const clearLocalstorageCache = () => {\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Remove from local storage with the URL as the key\n window.location.reload();\n };\n\n const visibleViewModes = (() => {\n if (!Array.isArray(viewModes)) return [];\n\n const uniqueByType = new Map<string, ViewMode>();\n const currentActionId = String(params?.actionId ?? \"\");\n const currentMenuItemId = String(params?.menuItemId ?? \"\");\n\n for (const mode of viewModes) {\n if (!mode || typeof mode.type !== \"string\") continue;\n\n const existing = uniqueByType.get(mode.type);\n if (!existing) {\n uniqueByType.set(mode.type, mode);\n continue;\n }\n\n const modeActionId = String(mode.actionId ?? \"\");\n const modeMenuItemId = String(mode.menuItemId ?? \"\");\n const existingActionId = String(existing.actionId ?? \"\");\n const existingMenuItemId = String(existing.menuItemId ?? \"\");\n\n const modeIsCurrent = (currentActionId && modeActionId === currentActionId) ||\n (currentMenuItemId && modeMenuItemId === currentMenuItemId);\n const existingIsCurrent = (currentActionId && existingActionId === currentActionId) ||\n (currentMenuItemId && existingMenuItemId === currentMenuItemId);\n\n if (modeIsCurrent && !existingIsCurrent) {\n uniqueByType.set(mode.type, mode);\n }\n }\n\n return Array.from(uniqueByType.values());\n })();\n const showSwitchType = visibleViewModes.length > 0;\n const handleViewTypeChange = (nextType: string) => {\n const nextView = visibleViewModes.find((option: ViewMode) => option.type === nextType);\n if (nextView) {\n handleViewChange(nextView);\n }\n };\n\n return (\n <div className=\"position-relative\">\n <SolidDropdownMenu open={isCogMenuOpen} onOpenChange={setIsCogMenuOpen}>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-icon-button solid-header-cog-trigger\"\n aria-label=\"Open list options\"\n >\n <Cog size={16} />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"listview-cogwheel-panel\">\n {(\n (actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) &&\n viewData?.data?.solidView?.layout?.attrs?.delete !== false &&\n selectedRecords.length > 0) ||\n isHeaderActionEnabled('import') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) ||\n isHeaderActionEnabled('export') && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) ||\n isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) ||\n isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) ||\n (solidListViewLayout?.attrs?.headerButtons\n ?.some((rb: any) => rb.attrs.actionInContextMenu === true && isButtonVisibleInCurrentEnv(rb?.attrs))) ||\n viewData?.data?.solidView?.model?.enableSoftDelete\n ) && (\n <>\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'deleteMany')}`) && viewData?.data?.solidView?.layout?.attrs?.delete !== false && selectedRecords.length > 0 && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item solid-header-dropdown-item-danger\"\n onSelect={() => {\n setDialogVisible(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Trash2 size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Delete</span>\n </SolidDropdownMenuItem>\n )}\n {isHeaderActionEnabled(\"import\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && actionsAllowed.includes(`${permissionExpression('importTransaction', 'create')}`) && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setOpenImportDialog(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Download size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Import</span>\n </SolidDropdownMenuItem>\n )}\n {isHeaderActionEnabled(\"export\") && actionsAllowed.includes(`${permissionExpression(params.modelName, 'findMany')}`) && actionsAllowed.includes(`${permissionExpression('exportTransaction', 'create')}`) && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setExportView((current) => !current);\n setIsCogMenuOpen(false);\n }}\n >\n <Upload size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Export</span>\n </SolidDropdownMenuItem>\n )}\n {solidListViewLayout?.attrs?.headerButtons\n ?.filter((rb: any) => isButtonVisibleInCurrentEnv(rb?.attrs))\n ?.filter((rb: any) => rb.attrs.actionInContextMenu === true)\n ?.map((button: any, index: number) => (\n <SolidListViewHeaderContextMenuButton\n key={index}\n button={button}\n params={params}\n solidListViewMetaData={listViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n onActionComplete={() => setIsCogMenuOpen(false)}\n />\n ))}\n {viewData?.data?.solidView?.model?.enableSoftDelete && (\n <SolidDropdownMenuCheckboxItem\n checked={showArchived}\n onCheckedChange={() => setShowArchived(!showArchived)}\n >\n Show Archived Records\n </SolidDropdownMenuCheckboxItem>\n )}\n {showArchived && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item lg:hidden\"\n onSelect={() => {\n setRecoverDialogVisible(true);\n setIsCogMenuOpen(false);\n }}\n >\n <RefreshCw size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Recover</span>\n </SolidDropdownMenuItem>\n )}\n\n {(\n isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) ||\n isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) ||\n true\n ) && <SolidDropdownMenuSeparator />}\n\n {isHeaderActionEnabled('customizeLayout') && actionsAllowed.includes(`${permissionExpression('userViewMetadata', 'create')}`) && (\n <SolidDropdownMenuSub>\n <SolidDropdownMenuSubTrigger className=\"solid-header-dropdown-item\">\n <SlidersHorizontal size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Layout</span>\n </SolidDropdownMenuSubTrigger>\n <SolidDropdownMenuSubContent className=\"customize-layout-panel\">\n {showSwitchType && (\n <>\n <SolidDropdownMenuLabel>Switch Type</SolidDropdownMenuLabel>\n <SolidDropdownMenuRadioGroup value={view} onValueChange={handleViewTypeChange}>\n {visibleViewModes.map((option: ViewMode) => (\n <SolidDropdownMenuRadioItem key={option.type} value={option.type}>\n {capitalize(option.type)}\n </SolidDropdownMenuRadioItem>\n ))}\n </SolidDropdownMenuRadioGroup>\n <SolidDropdownMenuSeparator />\n </>\n )}\n <SolidDropdownMenuLabel>Row Spacing</SolidDropdownMenuLabel>\n <SolidDropdownMenuRadioGroup value={size} onValueChange={(value: string) => setSize(value)}>\n {sizeOptions.map((option: any) => (\n <SolidDropdownMenuRadioItem key={option.value} value={option.value}>\n {option.label}\n </SolidDropdownMenuRadioItem>\n ))}\n </SolidDropdownMenuRadioGroup>\n <SolidDropdownMenuSeparator />\n <SolidDropdownMenuItem\n onSelect={() => {\n setShowColumnSelectorDialog(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Table size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Column Selector</span>\n </SolidDropdownMenuItem>\n </SolidDropdownMenuSubContent>\n </SolidDropdownMenuSub>\n )}\n {isHeaderActionEnabled('savedFilters') && actionsAllowed.includes(`${permissionExpression('savedFilters', 'create')}`) && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setShowSaveFilterPopup(true);\n setIsCogMenuOpen(false);\n }}\n >\n <Save size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Save Custom Filter</span>\n </SolidDropdownMenuItem>\n )}\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n clearLocalstorageCache();\n setIsCogMenuOpen(false);\n }}\n >\n <Trash2 size={14} className=\"solid-header-action-button-icon\" />\n <span className=\"solid-header-action-button-label\">Reset View</span>\n </SolidDropdownMenuItem>\n </>\n )}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n <SolidDialog\n open={exportView}\n onOpenChange={setExportView}\n className=\"solid-kanban-export-dialog solid-list-export-dialog\"\n style={{ width: \"min(980px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader className=\"solid-export-dialog-header\">\n <div>\n <SolidDialogTitle>Export</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Choose the file format, refine the field set, and save reusable export templates.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-export-dialog-body\">\n <SolidExport\n listViewMetaData={listViewMetaData}\n filters={filters}\n onExportComplete={() => setExportView(false)}\n />\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={showColumnSelectorDialog}\n onOpenChange={setShowColumnSelectorDialog}\n className=\"solid-column-selector-dialog\"\n style={{ width: \"min(388px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Column Selector</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Choose visible columns and reorder them for this list view.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <SolidListColumnSelector\n listViewMetaData={listViewMetaData}\n onClose={() => setShowColumnSelectorDialog(false)}\n />\n </SolidDialogBody>\n </SolidDialog>\n {openImportDialog &&\n <SolidGenericImport\n openImportDialog={openImportDialog}\n setOpenImportDialog={setOpenImportDialog}\n listViewMetaData={listViewMetaData}\n handleFetchUpdatedRecords={handleFetchUpdatedRecords}\n />\n }\n </div>\n )\n}\n"]}
@@ -14,6 +14,7 @@ import { hasAnyRole } from "../../../helpers/rolesHelper";
14
14
  import { SolidListViewHeaderButton } from "./SolidListViewHeaderButton";
15
15
  import { capitalize } from "lodash";
16
16
  import { Cog, Download, RefreshCw, Save, SlidersHorizontal, Table, Trash2, Upload } from "lucide-react";
17
+ import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
17
18
  import {
18
19
  SolidDialog,
19
20
  SolidDialogBody,
@@ -80,6 +81,7 @@ export const SolidListViewConfigure = (
80
81
  const pathSegments = pathname.split('/').filter(Boolean);
81
82
  pathSegments[pathSegments.length - 1] = newView.type; // Replace the last part with new view
82
83
  const newPath = '/' + pathSegments.join('/') + `?menuItemId=${newView.menuItemId}&menuItemName=${newView.menuItemName}&actionId=${newView.actionId}&actionName=${newView.actionName}`;
84
+ storeCurrentModelViewContext(newPath);
83
85
  router.push(newPath);
84
86
  };
85
87
 
@@ -1 +1 @@
1
- {"version":3,"file":"SolidRelationManyToOneColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAI5E,QAAA,MAAM,4BAA4B,8DAA+D,yBAAyB,4CAqCzH,CAAC;AAEF,eAAe,4BAA4B,CAAC;AAG5C,eAAO,MAAM,kCAAkC,uEAAwE,yBAAyB,4CAqD/I,CAAC"}
1
+ {"version":3,"file":"SolidRelationManyToOneColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAG5E,QAAA,MAAM,4BAA4B,8DAA+D,yBAAyB,4CAqCzH,CAAC;AAEF,eAAe,4BAA4B,CAAC;AAG5C,eAAO,MAAM,kCAAkC,uEAAwE,yBAAyB,4CA+C/I,CAAC"}
@@ -12,7 +12,7 @@ var __assign = (this && this.__assign) || function () {
12
12
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import { Column } from "../../SolidDataTable";
14
14
  import { getExtensionComponent } from '../../../../../helpers/registry';
15
- import { kebabCase } from 'lodash';
15
+ import { buildAdminRecordFormPath } from '../../../../../helpers/routePaths';
16
16
  import { ExternalLink } from "lucide-react";
17
17
  var SolidRelationManyToOneColumn = function (_a) {
18
18
  var _b;
@@ -38,7 +38,7 @@ var SolidRelationManyToOneColumn = function (_a) {
38
38
  };
39
39
  export default SolidRelationManyToOneColumn;
40
40
  export var DefaultRelationManyToOneListWidget = function (_a) {
41
- var _b, _c, _d, _e, _f;
41
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
42
42
  var rowData = _a.rowData, solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column, embeded = _a.embeded;
43
43
  var manyToOneFieldData = rowData[column.attrs.name];
44
44
  // This is the userkey that will be present within the rowData.
@@ -46,26 +46,23 @@ export var DefaultRelationManyToOneListWidget = function (_a) {
46
46
  // Since this is a many-to-one field, we fetch the user key field of the associated model.
47
47
  var userKeyField = ((_b = column === null || column === void 0 ? void 0 : column.attrs) === null || _b === void 0 ? void 0 : _b.coModelFieldToDisplay) ? (_c = column === null || column === void 0 ? void 0 : column.attrs) === null || _c === void 0 ? void 0 : _c.coModelFieldToDisplay : (_e = (_d = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _d === void 0 ? void 0 : _d.userKeyField) === null || _e === void 0 ? void 0 : _e.name;
48
48
  var manyToOneColVal = manyToOneFieldData[userKeyField];
49
- var isDisabled = ((_f = column === null || column === void 0 ? void 0 : column.attrs) === null || _f === void 0 ? void 0 : _f.disabled) === true;
50
- if (embeded === true || isDisabled) {
49
+ var relatedModuleName = (fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModelModuleName) ||
50
+ ((_g = (_f = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _f === void 0 ? void 0 : _f.module) === null || _g === void 0 ? void 0 : _g.name) ||
51
+ ((_k = (_j = (_h = solidListViewMetaData === null || solidListViewMetaData === void 0 ? void 0 : solidListViewMetaData.data) === null || _h === void 0 ? void 0 : _h.solidView) === null || _j === void 0 ? void 0 : _j.module) === null || _k === void 0 ? void 0 : _k.name);
52
+ var relatedModelName = ((_l = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _l === void 0 ? void 0 : _l.singularName) ||
53
+ (fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationCoModelSingularName);
54
+ var relationRecordPath_1 = buildAdminRecordFormPath({
55
+ moduleName: relatedModuleName,
56
+ modelName: relatedModelName,
57
+ recordId: manyToOneFieldData === null || manyToOneFieldData === void 0 ? void 0 : manyToOneFieldData.id,
58
+ viewMode: "view",
59
+ });
60
+ var isDisabled = ((_m = column === null || column === void 0 ? void 0 : column.attrs) === null || _m === void 0 ? void 0 : _m.disabled) === true;
61
+ if (embeded === true || isDisabled || !relationRecordPath_1) {
51
62
  return (_jsx("span", { className: "solid-list-external-link-text", children: manyToOneColVal }));
52
63
  }
53
64
  return (_jsxs("button", { type: "button", className: "solid-list-external-link", onClick: function () {
54
- var _a, _b;
55
- var pathSegments = window.location.pathname.split('/').filter(Boolean);
56
- var listIndex = pathSegments.lastIndexOf('list');
57
- if (listIndex > 0) {
58
- pathSegments[listIndex - 1] = kebabCase((_a = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _a === void 0 ? void 0 : _a.singularName);
59
- pathSegments[listIndex] = "form/".concat(manyToOneFieldData === null || manyToOneFieldData === void 0 ? void 0 : manyToOneFieldData.id);
60
- }
61
- else if (pathSegments[pathSegments.length - 2] === "form") {
62
- pathSegments[pathSegments.length - 3] = kebabCase((_b = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _b === void 0 ? void 0 : _b.singularName);
63
- pathSegments[pathSegments.length - 2] = "form";
64
- pathSegments[pathSegments.length - 1] = manyToOneFieldData === null || manyToOneFieldData === void 0 ? void 0 : manyToOneFieldData.id;
65
- }
66
- var newPath = "/".concat(pathSegments.join('/'), "?viewMode=view");
67
- // open in new tab
68
- window.open(newPath, "_blank");
65
+ window.open(relationRecordPath_1, "_blank");
69
66
  }, children: [_jsx("span", { className: "solid-list-external-link-text", children: manyToOneColVal }), _jsx(ExternalLink, { size: 13, strokeWidth: 2, className: "solid-list-external-link-icon" })] }));
70
67
  }
71
68
  else {