@solidxai/core-ui 0.1.12-beta.6 → 0.1.12-beta.8

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 (286) hide show
  1. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  2. package/dist/components/auth/AuthLayout.js +19 -17
  3. package/dist/components/auth/AuthLayout.js.map +1 -1
  4. package/dist/components/auth/AuthLayout.tsx +59 -34
  5. package/dist/components/common/BackendReconnectIndicator.d.ts +6 -0
  6. package/dist/components/common/BackendReconnectIndicator.d.ts.map +1 -0
  7. package/dist/components/common/BackendReconnectIndicator.js +25 -0
  8. package/dist/components/common/BackendReconnectIndicator.js.map +1 -0
  9. package/dist/components/common/BackendReconnectIndicator.tsx +45 -0
  10. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  11. package/dist/components/common/SettingsComponent.js +7 -3
  12. package/dist/components/common/SettingsComponent.js.map +1 -1
  13. package/dist/components/common/SettingsComponent.module.css +144 -12
  14. package/dist/components/common/SettingsComponent.tsx +22 -3
  15. package/dist/components/common/SolidAdmin.d.ts.map +1 -1
  16. package/dist/components/common/SolidAdmin.js +7 -2
  17. package/dist/components/common/SolidAdmin.js.map +1 -1
  18. package/dist/components/common/SolidAdmin.tsx +7 -2
  19. package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
  20. package/dist/components/common/SolidBreadcrumb.js +1 -6
  21. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  22. package/dist/components/common/SolidBreadcrumb.tsx +1 -8
  23. package/dist/components/common/SolidMaterialSymbol.d.ts +10 -0
  24. package/dist/components/common/SolidMaterialSymbol.d.ts.map +1 -0
  25. package/dist/components/common/SolidMaterialSymbol.js +69 -0
  26. package/dist/components/common/SolidMaterialSymbol.js.map +1 -0
  27. package/dist/components/common/SolidMaterialSymbol.tsx +96 -0
  28. package/dist/components/common/SolidToastProvider.d.ts.map +1 -1
  29. package/dist/components/common/SolidToastProvider.js +14 -1
  30. package/dist/components/common/SolidToastProvider.js.map +1 -1
  31. package/dist/components/common/SolidToastProvider.tsx +19 -1
  32. package/dist/components/core/card/CardGrid.d.ts +1 -1
  33. package/dist/components/core/card/CardGrid.d.ts.map +1 -1
  34. package/dist/components/core/card/CardGrid.js +2 -2
  35. package/dist/components/core/card/CardGrid.js.map +1 -1
  36. package/dist/components/core/card/CardGrid.tsx +4 -0
  37. package/dist/components/core/card/CardItem.d.ts +2 -0
  38. package/dist/components/core/card/CardItem.d.ts.map +1 -1
  39. package/dist/components/core/card/CardItem.js +7 -2
  40. package/dist/components/core/card/CardItem.js.map +1 -1
  41. package/dist/components/core/card/CardItem.tsx +30 -8
  42. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  43. package/dist/components/core/card/SolidCardView.js +87 -21
  44. package/dist/components/core/card/SolidCardView.js.map +1 -1
  45. package/dist/components/core/card/SolidCardView.tsx +96 -40
  46. package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
  47. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  48. package/dist/components/core/card/SolidCardViewConfigure.js +9 -7
  49. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  50. package/dist/components/core/card/SolidCardViewConfigure.tsx +14 -1
  51. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +3 -1
  52. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  53. package/dist/components/core/common/SolidGlobalSearchElement.js +4 -3
  54. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  55. package/dist/components/core/common/SolidGlobalSearchElement.tsx +15 -19
  56. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
  57. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +43 -16
  58. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  59. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +24 -2
  60. package/dist/components/core/form/SolidFormFooter.js +1 -1
  61. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  62. package/dist/components/core/form/SolidFormFooter.tsx +1 -1
  63. package/dist/components/core/form/SolidFormLayouts.js +1 -1
  64. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  65. package/dist/components/core/form/SolidFormLayouts.tsx +2 -2
  66. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  67. package/dist/components/core/form/fields/SolidMediaMultipleField.js +120 -56
  68. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  69. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +63 -50
  70. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  71. package/dist/components/core/form/fields/SolidMediaSingleField.js +115 -37
  72. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  73. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +36 -35
  74. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  75. package/dist/components/core/form/fields/SolidRichTextField.js +67 -4
  76. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  77. package/dist/components/core/form/fields/SolidRichTextField.tsx +89 -7
  78. package/dist/components/core/form/fields/mediaFieldUtils.d.ts +3 -0
  79. package/dist/components/core/form/fields/mediaFieldUtils.d.ts.map +1 -0
  80. package/dist/components/core/form/fields/mediaFieldUtils.js +30 -0
  81. package/dist/components/core/form/fields/mediaFieldUtils.js.map +1 -0
  82. package/dist/components/core/form/fields/mediaFieldUtils.ts +45 -0
  83. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
  84. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +1 -1
  85. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
  86. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +3 -1
  87. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  88. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +22 -23
  89. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  90. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +13 -7
  91. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
  92. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +16 -11
  93. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  94. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +32 -18
  95. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.d.ts.map +1 -1
  96. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js +3 -1
  97. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
  98. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +11 -5
  99. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  100. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  101. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  102. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  103. package/dist/components/core/kanban/KanbanBoard.tsx +3 -1
  104. package/dist/components/core/kanban/KanbanCard.d.ts +2 -0
  105. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  106. package/dist/components/core/kanban/KanbanCard.js +10 -5
  107. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  108. package/dist/components/core/kanban/KanbanCard.tsx +28 -12
  109. package/dist/components/core/kanban/KanbanColumn.d.ts +3 -1
  110. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  111. package/dist/components/core/kanban/KanbanColumn.js +2 -2
  112. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  113. package/dist/components/core/kanban/KanbanColumn.tsx +4 -2
  114. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  115. package/dist/components/core/kanban/SolidKanbanView.js +154 -25
  116. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  117. package/dist/components/core/kanban/SolidKanbanView.tsx +129 -16
  118. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts +1 -1
  119. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
  120. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +13 -10
  121. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  122. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +18 -3
  123. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  124. package/dist/components/core/list/SolidDataTable.js +3 -2
  125. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  126. package/dist/components/core/list/SolidDataTable.tsx +3 -2
  127. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  128. package/dist/components/core/list/SolidListView.js +16 -5
  129. package/dist/components/core/list/SolidListView.js.map +1 -1
  130. package/dist/components/core/list/SolidListView.tsx +20 -8
  131. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  132. package/dist/components/core/list/SolidListViewColumn.js +1 -0
  133. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  134. package/dist/components/core/list/SolidListViewColumn.tsx +1 -0
  135. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
  136. package/dist/components/core/list/columns/SolidShortTextColumn.js +7 -2
  137. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  138. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +7 -2
  139. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.d.ts.map +1 -1
  140. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js +4 -1
  141. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
  142. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +5 -2
  143. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  144. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
  145. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  146. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
  147. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.d.ts.map +1 -1
  148. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js +4 -1
  149. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
  150. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +5 -2
  151. package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
  152. package/dist/components/core/locales/SolidLocale.js +1 -1
  153. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  154. package/dist/components/core/locales/SolidLocale.tsx +1 -0
  155. package/dist/components/core/model/CreateModel.css +26 -0
  156. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  157. package/dist/components/core/model/FieldMetaData.js +21 -3
  158. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  159. package/dist/components/core/model/FieldMetaData.tsx +45 -4
  160. package/dist/components/core/model/FieldMetaDataForm.css +82 -0
  161. package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -0
  162. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  163. package/dist/components/core/model/FieldMetaDataForm.js +246 -235
  164. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  165. package/dist/components/core/model/FieldMetaDataForm.tsx +46 -34
  166. package/dist/components/core/model/FieldSelector.js +1 -1
  167. package/dist/components/core/model/FieldSelector.js.map +1 -1
  168. package/dist/components/core/model/FieldSelector.tsx +1 -1
  169. package/dist/components/core/model/ModelMetaData.js +1 -1
  170. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  171. package/dist/components/core/model/ModelMetaData.tsx +1 -1
  172. package/dist/components/core/module/CreateModule.css +55 -2
  173. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  174. package/dist/components/core/module/CreateModule.js +2 -2
  175. package/dist/components/core/module/CreateModule.js.map +1 -1
  176. package/dist/components/core/module/CreateModule.tsx +3 -2
  177. package/dist/components/core/module/ModuleMetadataExplorer.css +27 -0
  178. package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -1
  179. package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
  180. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
  181. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -0
  182. package/dist/components/core/tree/SolidTreeTable.d.ts +2 -1
  183. package/dist/components/core/tree/SolidTreeTable.d.ts.map +1 -1
  184. package/dist/components/core/tree/SolidTreeTable.js +2 -2
  185. package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
  186. package/dist/components/core/tree/SolidTreeTable.tsx +3 -1
  187. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  188. package/dist/components/core/tree/SolidTreeView.js +44 -16
  189. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  190. package/dist/components/core/tree/SolidTreeView.tsx +55 -24
  191. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  192. package/dist/components/core/users/CreateUser.js +45 -32
  193. package/dist/components/core/users/CreateUser.js.map +1 -1
  194. package/dist/components/core/users/CreateUser.tsx +15 -4
  195. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  196. package/dist/components/layout/AdminHeaderActions.js +10 -9
  197. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  198. package/dist/components/layout/AdminHeaderActions.tsx +2 -0
  199. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  200. package/dist/components/layout/AppSidebar.js +2 -1
  201. package/dist/components/layout/AppSidebar.js.map +1 -1
  202. package/dist/components/layout/AppSidebar.tsx +12 -5
  203. package/dist/components/layout/SolidMenuItemIcon.d.ts +9 -0
  204. package/dist/components/layout/SolidMenuItemIcon.d.ts.map +1 -0
  205. package/dist/components/layout/SolidMenuItemIcon.js +20 -0
  206. package/dist/components/layout/SolidMenuItemIcon.js.map +1 -0
  207. package/dist/components/layout/SolidMenuItemIcon.tsx +45 -0
  208. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  209. package/dist/components/layout/navbar-two-menu.js +6 -7
  210. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  211. package/dist/components/layout/navbar-two-menu.tsx +4 -12
  212. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  213. package/dist/components/shad-cn-ui/SolidCodeEditor.js +30 -2
  214. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  215. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +38 -1
  216. package/dist/helpers/backendHealthMonitor.d.ts +39 -0
  217. package/dist/helpers/backendHealthMonitor.d.ts.map +1 -0
  218. package/dist/helpers/backendHealthMonitor.js +255 -0
  219. package/dist/helpers/backendHealthMonitor.js.map +1 -0
  220. package/dist/helpers/backendHealthMonitor.ts +177 -0
  221. package/dist/helpers/helpers.d.ts +1 -0
  222. package/dist/helpers/helpers.d.ts.map +1 -1
  223. package/dist/helpers/helpers.js +9 -0
  224. package/dist/helpers/helpers.js.map +1 -1
  225. package/dist/helpers/helpers.ts +11 -1
  226. package/dist/helpers/menuItemIcons.d.ts +34 -0
  227. package/dist/helpers/menuItemIcons.d.ts.map +1 -0
  228. package/dist/helpers/menuItemIcons.js +144 -0
  229. package/dist/helpers/menuItemIcons.js.map +1 -0
  230. package/dist/helpers/menuItemIcons.ts +191 -0
  231. package/dist/helpers/relationDisplay.d.ts +3 -0
  232. package/dist/helpers/relationDisplay.d.ts.map +1 -0
  233. package/dist/helpers/relationDisplay.js +92 -0
  234. package/dist/helpers/relationDisplay.js.map +1 -0
  235. package/dist/helpers/relationDisplay.ts +101 -0
  236. package/dist/helpers/settingsPayload.d.ts +1 -0
  237. package/dist/helpers/settingsPayload.d.ts.map +1 -1
  238. package/dist/helpers/settingsPayload.js.map +1 -1
  239. package/dist/helpers/settingsPayload.ts +1 -0
  240. package/dist/helpers/solidIcons.d.ts +2 -0
  241. package/dist/helpers/solidIcons.d.ts.map +1 -1
  242. package/dist/helpers/solidIcons.js +8 -0
  243. package/dist/helpers/solidIcons.js.map +1 -1
  244. package/dist/helpers/solidIcons.tsx +10 -1
  245. package/dist/helpers/waitForBackendAvailability.d.ts +1 -0
  246. package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -1
  247. package/dist/helpers/waitForBackendAvailability.js +35 -22
  248. package/dist/helpers/waitForBackendAvailability.js.map +1 -1
  249. package/dist/helpers/waitForBackendAvailability.ts +18 -12
  250. package/dist/http/solidHttp.d.ts.map +1 -1
  251. package/dist/http/solidHttp.js +10 -4
  252. package/dist/http/solidHttp.js.map +1 -1
  253. package/dist/http/solidHttp.ts +9 -4
  254. package/dist/redux/api/datasourceIntrospectionApi.d.ts +4 -0
  255. package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
  256. package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
  257. package/dist/redux/api/datasourceIntrospectionApi.ts +4 -0
  258. package/dist/redux/api/fetchBaseQuery.d.ts.map +1 -1
  259. package/dist/redux/api/fetchBaseQuery.js +9 -3
  260. package/dist/redux/api/fetchBaseQuery.js.map +1 -1
  261. package/dist/redux/api/fetchBaseQuery.tsx +9 -3
  262. package/dist/redux/store/StoreProvider.d.ts.map +1 -1
  263. package/dist/redux/store/StoreProvider.js +4 -3
  264. package/dist/redux/store/StoreProvider.js.map +1 -1
  265. package/dist/redux/store/StoreProvider.tsx +4 -3
  266. package/dist/redux/store/defaultStoreConfig.d.ts +5 -5
  267. package/dist/resources/globals.css +341 -49
  268. package/dist/resources/solid-custom.css +464 -11
  269. package/dist/resources/solid-responsive.css +31 -20
  270. package/dist/resources/solid-tailwind-generated.css +1 -1
  271. package/dist/routes/AppEventListener.d.ts.map +1 -1
  272. package/dist/routes/AppEventListener.js +23 -0
  273. package/dist/routes/AppEventListener.js.map +1 -1
  274. package/dist/routes/AppEventListener.tsx +29 -0
  275. package/dist/routes/pages/admin/core/DashboardPage.module.css +12 -0
  276. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +306 -3
  277. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
  278. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +745 -393
  279. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
  280. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1074 -420
  281. package/dist/routes/pages/admin/core/DatasourcesPage.css +15 -0
  282. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -1
  283. package/dist/routes/pages/admin/core/DatasourcesPage.js +7 -188
  284. package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -1
  285. package/dist/routes/pages/admin/core/DatasourcesPage.tsx +3 -393
  286. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
 
2
- import React from "react";
2
+ import React, { useEffect } from "react";
3
3
  import { SolidMessage } from "../../../shad-cn-ui/SolidMessage";
4
4
  import { SolidRichTextEditor } from "../../../shad-cn-ui/SolidRichTextEditor";
5
5
  import * as Yup from 'yup';
@@ -10,6 +10,67 @@ import { SolidFieldTooltip } from "../../../../components/common/SolidFieldToolt
10
10
  import { ERROR_MESSAGES } from "../../../../constants/error-messages";
11
11
  import styles from "./solidFields.module.css";
12
12
 
13
+ const normalizeQuillRichTextHtml = (html: string): string => {
14
+ if (!html || typeof document === "undefined") {
15
+ return html ?? "";
16
+ }
17
+
18
+ const template = document.createElement("template");
19
+ template.innerHTML = html;
20
+
21
+ const orderedLists = Array.from(template.content.querySelectorAll("ol")).reverse();
22
+
23
+ orderedLists.forEach((orderedList) => {
24
+ const listItems = Array.from(orderedList.children).filter(
25
+ (child): child is HTMLLIElement => child instanceof HTMLLIElement,
26
+ );
27
+
28
+ if (listItems.length === 0) {
29
+ return;
30
+ }
31
+
32
+ const hasBulletItems = listItems.some((item) => item.getAttribute("data-list") === "bullet");
33
+ if (!hasBulletItems) {
34
+ listItems.forEach((item) => item.removeAttribute("data-list"));
35
+ return;
36
+ }
37
+
38
+ const replacementFragment = document.createDocumentFragment();
39
+ let currentList: HTMLOListElement | HTMLUListElement | null = null;
40
+ let currentListType: "ordered" | "bullet" | null = null;
41
+
42
+ const appendCurrentList = () => {
43
+ if (currentList) {
44
+ replacementFragment.appendChild(currentList);
45
+ currentList = null;
46
+ currentListType = null;
47
+ }
48
+ };
49
+
50
+ Array.from(orderedList.childNodes).forEach((node) => {
51
+ if (!(node instanceof HTMLLIElement)) {
52
+ appendCurrentList();
53
+ replacementFragment.appendChild(node);
54
+ return;
55
+ }
56
+
57
+ const listType = node.getAttribute("data-list") === "bullet" ? "bullet" : "ordered";
58
+ if (!currentList || currentListType !== listType) {
59
+ appendCurrentList();
60
+ currentList = document.createElement(listType === "bullet" ? "ul" : "ol");
61
+ currentListType = listType;
62
+ }
63
+
64
+ node.removeAttribute("data-list");
65
+ currentList.appendChild(node);
66
+ });
67
+
68
+ orderedList.replaceWith(replacementFragment);
69
+ });
70
+
71
+ return template.innerHTML;
72
+ };
73
+
13
74
  export class SolidRichTextField implements ISolidField {
14
75
 
15
76
  private fieldContext: SolidFieldProps;
@@ -127,6 +188,26 @@ export const DefaultRichTextFormEditWidget = ({ formik, fieldContext }: SolidFor
127
188
 
128
189
  const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;
129
190
  const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;
191
+ const fieldName = fieldLayoutInfo.attrs.name;
192
+ const fieldValue = formik.values[fieldName] || "";
193
+ const normalizedFieldValue = normalizeQuillRichTextHtml(fieldValue);
194
+
195
+ useEffect(() => {
196
+ if (fieldValue === normalizedFieldValue) {
197
+ return;
198
+ }
199
+
200
+ fieldContext.onChange(
201
+ {
202
+ target: {
203
+ name: fieldName,
204
+ value: normalizedFieldValue,
205
+ type: "text",
206
+ },
207
+ } as any,
208
+ "onFieldChange"
209
+ );
210
+ }, [fieldContext, fieldName, fieldValue, normalizedFieldValue]);
130
211
 
131
212
 
132
213
  return (
@@ -140,14 +221,15 @@ export const DefaultRichTextFormEditWidget = ({ formik, fieldContext }: SolidFor
140
221
  }
141
222
  <SolidRichTextEditor
142
223
  readOnly={formReadonly || fieldReadonly || readOnlyPermission || formDisabled || fieldDisabled}
143
- id={fieldLayoutInfo.attrs.name}
144
- value={formik.values[fieldLayoutInfo.attrs.name] || ""}
224
+ id={fieldName}
225
+ value={normalizedFieldValue}
145
226
  onChange={(value) => {
227
+ const normalizedValue = normalizeQuillRichTextHtml(value ?? "");
146
228
  fieldContext.onChange(
147
229
  {
148
230
  target: {
149
- name: fieldLayoutInfo.attrs.name,
150
- value: value ?? "",
231
+ name: fieldName,
232
+ value: normalizedValue,
151
233
  type: "text",
152
234
  },
153
235
  } as any,
@@ -157,8 +239,8 @@ export const DefaultRichTextFormEditWidget = ({ formik, fieldContext }: SolidFor
157
239
  className="solid-custom-editor"
158
240
  style={{ minHeight: 180 }}
159
241
  />
160
- {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
161
- <p className={styles.fieldError}>{formik?.errors[fieldLayoutInfo.attrs.name]?.toString()}</p>
242
+ {isFormFieldValid(formik, fieldName) && (
243
+ <p className={styles.fieldError}>{formik?.errors[fieldName]?.toString()}</p>
162
244
  )}
163
245
  </div>
164
246
  );
@@ -0,0 +1,3 @@
1
+ export declare const getPersistedMediaId: (value: unknown) => number | string | null;
2
+ export declare const buildMediaFieldKey: (value: unknown) => string;
3
+ //# sourceMappingURL=mediaFieldUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaFieldUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/mediaFieldUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,MAAM,GAAG,MAAM,GAAG,IAgBtE,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,MA0BnD,CAAC"}
@@ -0,0 +1,30 @@
1
+ export var getPersistedMediaId = function (value) {
2
+ if (!value || value instanceof File || typeof value !== "object") {
3
+ return null;
4
+ }
5
+ var mediaId = value.id;
6
+ if (typeof mediaId === "number" && Number.isFinite(mediaId)) {
7
+ return mediaId;
8
+ }
9
+ if (typeof mediaId === "string" && mediaId.trim().length > 0) {
10
+ return mediaId;
11
+ }
12
+ return null;
13
+ };
14
+ export var buildMediaFieldKey = function (value) {
15
+ var _a, _b, _c, _d;
16
+ if (value instanceof File) {
17
+ return "local-".concat(value.name, "-").concat(value.size, "-").concat(value.lastModified);
18
+ }
19
+ var persistedMediaId = getPersistedMediaId(value);
20
+ if (persistedMediaId !== null) {
21
+ return "persisted-".concat(persistedMediaId);
22
+ }
23
+ if (value && typeof value === "object") {
24
+ var fileName = String((_b = (_a = value.originalFileName) !== null && _a !== void 0 ? _a : value.name) !== null && _b !== void 0 ? _b : "file");
25
+ var fileSize = String((_d = (_c = value.fileSize) !== null && _c !== void 0 ? _c : value.size) !== null && _d !== void 0 ? _d : "0");
26
+ return "unknown-".concat(fileName, "-").concat(fileSize);
27
+ }
28
+ return "unknown-file";
29
+ };
30
+ //# sourceMappingURL=mediaFieldUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaFieldUtils.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/mediaFieldUtils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,KAAK,YAAY,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAChE,OAAO,IAAI,CAAC;KACb;IAED,IAAM,OAAO,GAAI,KAA0B,CAAC,EAAE,CAAC;IAE/C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC3D,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5D,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,KAAc;;IAC/C,IAAI,KAAK,YAAY,IAAI,EAAE;QACzB,OAAO,gBAAS,KAAK,CAAC,IAAI,cAAI,KAAK,CAAC,IAAI,cAAI,KAAK,CAAC,YAAY,CAAE,CAAC;KAClE;IAED,IAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,IAAI,EAAE;QAC7B,OAAO,oBAAa,gBAAgB,CAAE,CAAC;KACxC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACtC,IAAM,QAAQ,GAAG,MAAM,CACrB,MAAA,MAAC,KAAwD,CAAC,gBAAgB,mCACzE,KAA4B,CAAC,IAAI,mCAClC,MAAM,CACP,CAAC;QACF,IAAM,QAAQ,GAAG,MAAM,CACrB,MAAA,MAAC,KAAgD,CAAC,QAAQ,mCACzD,KAA4B,CAAC,IAAI,mCAClC,GAAG,CACJ,CAAC;QAEF,OAAO,kBAAW,QAAQ,cAAI,QAAQ,CAAE,CAAC;KAC1C;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC","sourcesContent":["export const getPersistedMediaId = (value: unknown): number | string | null => {\n if (!value || value instanceof File || typeof value !== \"object\") {\n return null;\n }\n\n const mediaId = (value as { id?: unknown }).id;\n\n if (typeof mediaId === \"number\" && Number.isFinite(mediaId)) {\n return mediaId;\n }\n\n if (typeof mediaId === \"string\" && mediaId.trim().length > 0) {\n return mediaId;\n }\n\n return null;\n};\n\nexport const buildMediaFieldKey = (value: unknown): string => {\n if (value instanceof File) {\n return `local-${value.name}-${value.size}-${value.lastModified}`;\n }\n\n const persistedMediaId = getPersistedMediaId(value);\n if (persistedMediaId !== null) {\n return `persisted-${persistedMediaId}`;\n }\n\n if (value && typeof value === \"object\") {\n const fileName = String(\n (value as { originalFileName?: unknown; name?: unknown }).originalFileName ??\n (value as { name?: unknown }).name ??\n \"file\"\n );\n const fileSize = String(\n (value as { fileSize?: unknown; size?: unknown }).fileSize ??\n (value as { size?: unknown }).size ??\n \"0\"\n );\n\n return `unknown-${fileName}-${fileSize}`;\n }\n\n return \"unknown-file\";\n};\n"]}
@@ -0,0 +1,45 @@
1
+ export const getPersistedMediaId = (value: unknown): number | string | null => {
2
+ if (!value || value instanceof File || typeof value !== "object") {
3
+ return null;
4
+ }
5
+
6
+ const mediaId = (value as { id?: unknown }).id;
7
+
8
+ if (typeof mediaId === "number" && Number.isFinite(mediaId)) {
9
+ return mediaId;
10
+ }
11
+
12
+ if (typeof mediaId === "string" && mediaId.trim().length > 0) {
13
+ return mediaId;
14
+ }
15
+
16
+ return null;
17
+ };
18
+
19
+ export const buildMediaFieldKey = (value: unknown): string => {
20
+ if (value instanceof File) {
21
+ return `local-${value.name}-${value.size}-${value.lastModified}`;
22
+ }
23
+
24
+ const persistedMediaId = getPersistedMediaId(value);
25
+ if (persistedMediaId !== null) {
26
+ return `persisted-${persistedMediaId}`;
27
+ }
28
+
29
+ if (value && typeof value === "object") {
30
+ const fileName = String(
31
+ (value as { originalFileName?: unknown; name?: unknown }).originalFileName ??
32
+ (value as { name?: unknown }).name ??
33
+ "file"
34
+ );
35
+ const fileSize = String(
36
+ (value as { fileSize?: unknown; size?: unknown }).fileSize ??
37
+ (value as { size?: unknown }).size ??
38
+ "0"
39
+ );
40
+
41
+ return `unknown-${fileName}-${fileSize}`;
42
+ }
43
+
44
+ return "unknown-file";
45
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"RolesGroupedByModuleWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx"],"names":[],"mappings":"AAaA,UAAU,+BAA+B;IACrC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,eAAO,MAAM,0BAA0B,2CAIpC,+BAA+B,4CAuHjC,CAAC"}
1
+ {"version":3,"file":"RolesGroupedByModuleWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx"],"names":[],"mappings":"AAaA,UAAU,+BAA+B;IACrC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,eAAO,MAAM,0BAA0B,2CAIpC,+BAA+B,4CAyHjC,CAAC"}
@@ -124,7 +124,7 @@ export var RolesGroupedByModuleWidget = function (_a) {
124
124
  var title = group.moduleId === null
125
125
  ? 'Default Roles'
126
126
  : "".concat(group.moduleDisplayName, " Roles");
127
- return (_jsxs(SolidAccordionItem, { value: key, children: [_jsx(SolidAccordionTrigger, { children: title }), _jsx(SolidAccordionContent, { children: _jsx("div", { className: "solid-user-role-grid pt-1", children: group.roles.map(function (item) {
127
+ return (_jsxs(SolidAccordionItem, { value: key, children: [_jsx("div", { className: "pt-2", children: _jsx(SolidAccordionTrigger, { children: title }) }), _jsx(SolidAccordionContent, { children: _jsx("div", { className: "solid-user-role-grid pt-1", children: group.roles.map(function (item) {
128
128
  var isSelected = selectedRoles.includes(item.label);
129
129
  return (_jsx("div", { className: cx('solid-user-role-card', isSelected && 'is-selected'), children: _jsx(SolidCheckbox, { className: "solid-user-role-control", disabled: readOnly, id: "role-".concat(item.value), checked: isSelected, onChange: function () { return onToggle(item.label); }, label: item.label }) }, item.value));
130
130
  }) }) })] }, key));
@@ -1 +1 @@
1
- {"version":3,"file":"RolesGroupedByModuleWidget.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAczD,SAAS,EAAE;IAAC,eAA2C;SAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;QAA3C,0BAA2C;;IACnD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,IAAM,0BAA0B,GAAG,UAAC,EAIT;QAH9B,aAAa,mBAAA,EACb,QAAQ,cAAA,EACR,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA;IAEV,IAAA,KAA0B,QAAQ,CAAQ,EAAE,CAAC,EAA5C,QAAQ,QAAA,EAAE,WAAW,QAAuB,CAAC;IAC9C,IAAA,KAAsB,QAAQ,CAAc,EAAE,CAAC,EAA9C,MAAM,QAAA,EAAE,SAAS,QAA6B,CAAC;IAChD,IAAA,KAA4B,QAAQ,CAAW,EAAE,CAAC,EAAjD,SAAS,QAAA,EAAE,YAAY,QAA0B,CAAC;IAEzD,SAAS,CAAC;QACN,IAAM,UAAU,GAAG;;;;;;;wBAEL,KAAK,GAAG,EAAE,CAAC,SAAS,CACtB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAChD,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC7B,CAAC;wBACe,qBAAM,QAAQ,CAAC,yBAAkB,KAAK,CAAE,CAAC,EAAA;;wBAApD,QAAQ,GAAG,SAAyC;wBACpD,OAAO,GAAG,MAAA,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,IAAI,0CAAE,OAAO,mCAAI,EAAE,CAAC;wBACpD,WAAW,CAAC,OAAO,CAAC,CAAC;;;;wBAErB,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,GAAC,CAAC,CAAC;;;;;aAE7E,CAAC;QACF,UAAU,EAAE,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC;QACN,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO;QAE7B,IAAM,QAAQ,GAAG,IAAI,GAAG,EAAkF,CAAC;QAC3G,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAE1D,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAS;;YACvB,IAAM,QAAQ,GAAkB,MAAA,MAAA,IAAI,CAAC,QAAQ,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,EAAE,mCAAI,IAAI,CAAC;YACzE,IAAM,iBAAiB,GAAW,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,mCAAI,SAAS,CAAC;YACxE,IAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YAElD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC7C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxC;iBAAM;gBACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACzB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;iBACzE;gBACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5C;QACL,CAAC,CAAC,CAAC;QAEH,IAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAE/F,IAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACzC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAC;aACzB,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YACP,IAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAW,CAAE,CAAC,WAAW,CAAC;YAClD,IAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAW,CAAE,CAAC,WAAW,CAAC;YAClD,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEP,UAAU,CAAC,OAAO,CAAC,UAAC,QAAQ;YACxB,IAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAkB,CAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAkB,EAAE,iBAAiB,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QAEH,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;QACzD,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpB,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC,YAAK,OAAA,MAAM,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,SAAS,CAAC,CAAA,EAAA,CAAC,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CACH,KAAC,UAAU,cACP,YAAG,SAAS,EAAC,mCAAmC,kCAAsB,GAC7D,CAChB,CAAC;KACL;IAED,OAAO,CACH,KAAC,cAAc,IACX,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAC,QAAQ,YAEjB,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK;;YACd,IAAM,GAAG,GAAG,MAAM,CAAC,MAAA,KAAK,CAAC,QAAQ,mCAAI,SAAS,CAAC,CAAC;YAChD,IAAM,KAAK,GACP,KAAK,CAAC,QAAQ,KAAK,IAAI;gBACnB,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,UAAG,KAAK,CAAC,iBAAiB,WAAQ,CAAC;YAC7C,OAAO,CACH,MAAC,kBAAkB,IAAW,KAAK,EAAE,GAAG,aACpC,KAAC,qBAAqB,cAAE,KAAK,GAAyB,EACtD,KAAC,qBAAqB,cAClB,cAAK,SAAS,EAAC,2BAA2B,YACrC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI;gCAClB,IAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCAEtD,OAAO,CACH,cAEI,SAAS,EAAE,EAAE,CACT,sBAAsB,EACtB,UAAU,IAAI,aAAa,CAC9B,YAED,KAAC,aAAa,IACV,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,eAAQ,IAAI,CAAC,KAAK,CAAE,EACxB,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAApB,CAAoB,EACpC,KAAK,EAAE,IAAI,CAAC,KAAK,GACnB,IAbG,IAAI,CAAC,KAAK,CAcb,CACT,CAAC;4BACN,CAAC,CAAC,GACA,GACc,KA3BH,GAAG,CA4BP,CACxB,CAAC;QACN,CAAC,CAAC,GACW,CACpB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { useEffect, useState } from 'react';\nimport qs from 'qs';\nimport { SolidAccordion, SolidAccordionItem, SolidAccordionTrigger, SolidAccordionContent } from '../../../../shad-cn-ui/SolidAccordion';\nimport { SolidCheckbox } from '../../../../shad-cn-ui/SolidCheckbox';\nimport { SolidPanel } from '../../../../shad-cn-ui/SolidPanel';\nimport { solidGet } from '../../../../../http/solidHttp';\n\ntype RoleGroup = {\n moduleId: number | null;\n moduleDisplayName: string;\n roles: { label: string; value: any }[];\n};\n\ninterface RolesGroupedByModuleWidgetProps {\n selectedRoles: string[];\n onToggle: (roleName: string) => void;\n readOnly?: boolean;\n}\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(' ');\n}\n\nexport const RolesGroupedByModuleWidget = ({\n selectedRoles,\n onToggle,\n readOnly = false,\n}: RolesGroupedByModuleWidgetProps) => {\n const [allRoles, setAllRoles] = useState<any[]>([]);\n const [groups, setGroups] = useState<RoleGroup[]>([]);\n const [openItems, setOpenItems] = useState<string[]>([]);\n\n useEffect(() => {\n const fetchRoles = async () => {\n try {\n const qsStr = qs.stringify(\n { offset: 0, limit: 1000, populate: ['module'] },\n { encodeValuesOnly: true }\n );\n const response = await solidGet(`/role-metadata?${qsStr}`);\n const records = response?.data?.data?.records ?? [];\n setAllRoles(records);\n } catch (e) {\n console.error('RolesGroupedByModuleWidget: failed to fetch roles', e);\n }\n };\n fetchRoles();\n }, []);\n\n useEffect(() => {\n if (!allRoles.length) return;\n\n const groupMap = new Map<number | null, { displayName: string; roles: { label: string; value: any }[] }>();\n groupMap.set(null, { displayName: 'Default', roles: [] });\n\n allRoles.forEach((role: any) => {\n const moduleId: number | null = role.moduleId ?? role.module?.id ?? null;\n const moduleDisplayName: string = role.module?.displayName ?? 'Default';\n const item = { label: role.name, value: role.id };\n\n if (moduleId === null || moduleId === undefined) {\n groupMap.get(null)!.roles.push(item);\n } else {\n if (!groupMap.has(moduleId)) {\n groupMap.set(moduleId, { displayName: moduleDisplayName, roles: [] });\n }\n groupMap.get(moduleId)!.roles.push(item);\n }\n });\n\n const built: RoleGroup[] = [];\n built.push({ moduleId: null, moduleDisplayName: 'Default', roles: groupMap.get(null)!.roles });\n\n const moduleKeys = Array.from(groupMap.keys())\n .filter((k) => k !== null)\n .sort((a, b) => {\n const dA = groupMap.get(a as number)!.displayName;\n const dB = groupMap.get(b as number)!.displayName;\n return dA.localeCompare(dB);\n });\n\n moduleKeys.forEach((moduleId) => {\n const g = groupMap.get(moduleId as number)!;\n built.push({ moduleId: moduleId as number, moduleDisplayName: g.displayName, roles: g.roles });\n });\n\n const nonEmpty = built.filter((g) => g.roles.length > 0);\n setGroups(nonEmpty);\n setOpenItems(nonEmpty.map((g) => String(g.moduleId ?? 'default')));\n }, [allRoles]);\n\n if (groups.length === 0) {\n return (\n <SolidPanel>\n <p className=\"text-sm text-muted-foreground m-0\">No roles defined.</p>\n </SolidPanel>\n );\n }\n\n return (\n <SolidAccordion\n type=\"multiple\"\n value={openItems}\n onValueChange={setOpenItems}\n className=\"w-full\"\n >\n {groups.map((group) => {\n const key = String(group.moduleId ?? 'default');\n const title =\n group.moduleId === null\n ? 'Default Roles'\n : `${group.moduleDisplayName} Roles`;\n return (\n <SolidAccordionItem key={key} value={key}>\n <SolidAccordionTrigger>{title}</SolidAccordionTrigger>\n <SolidAccordionContent>\n <div className=\"solid-user-role-grid pt-1\">\n {group.roles.map((item) => {\n const isSelected = selectedRoles.includes(item.label);\n\n return (\n <div\n key={item.value}\n className={cx(\n 'solid-user-role-card',\n isSelected && 'is-selected'\n )}\n >\n <SolidCheckbox\n className=\"solid-user-role-control\"\n disabled={readOnly}\n id={`role-${item.value}`}\n checked={isSelected}\n onChange={() => onToggle(item.label)}\n label={item.label}\n />\n </div>\n );\n })}\n </div>\n </SolidAccordionContent>\n </SolidAccordionItem>\n );\n })}\n </SolidAccordion>\n );\n};\n"]}
1
+ {"version":3,"file":"RolesGroupedByModuleWidget.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport qs from 'qs';\nimport { SolidAccordion, SolidAccordionItem, SolidAccordionTrigger, SolidAccordionContent } from '../../../../shad-cn-ui/SolidAccordion';\nimport { SolidCheckbox } from '../../../../shad-cn-ui/SolidCheckbox';\nimport { SolidPanel } from '../../../../shad-cn-ui/SolidPanel';\nimport { solidGet } from '../../../../../http/solidHttp';\n\ntype RoleGroup = {\n moduleId: number | null;\n moduleDisplayName: string;\n roles: { label: string; value: any }[];\n};\n\ninterface RolesGroupedByModuleWidgetProps {\n selectedRoles: string[];\n onToggle: (roleName: string) => void;\n readOnly?: boolean;\n}\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(' ');\n}\n\nexport const RolesGroupedByModuleWidget = ({\n selectedRoles,\n onToggle,\n readOnly = false,\n}: RolesGroupedByModuleWidgetProps) => {\n const [allRoles, setAllRoles] = useState<any[]>([]);\n const [groups, setGroups] = useState<RoleGroup[]>([]);\n const [openItems, setOpenItems] = useState<string[]>([]);\n\n useEffect(() => {\n const fetchRoles = async () => {\n try {\n const qsStr = qs.stringify(\n { offset: 0, limit: 1000, populate: ['module'] },\n { encodeValuesOnly: true }\n );\n const response = await solidGet(`/role-metadata?${qsStr}`);\n const records = response?.data?.data?.records ?? [];\n setAllRoles(records);\n } catch (e) {\n console.error('RolesGroupedByModuleWidget: failed to fetch roles', e);\n }\n };\n fetchRoles();\n }, []);\n\n useEffect(() => {\n if (!allRoles.length) return;\n\n const groupMap = new Map<number | null, { displayName: string; roles: { label: string; value: any }[] }>();\n groupMap.set(null, { displayName: 'Default', roles: [] });\n\n allRoles.forEach((role: any) => {\n const moduleId: number | null = role.moduleId ?? role.module?.id ?? null;\n const moduleDisplayName: string = role.module?.displayName ?? 'Default';\n const item = { label: role.name, value: role.id };\n\n if (moduleId === null || moduleId === undefined) {\n groupMap.get(null)!.roles.push(item);\n } else {\n if (!groupMap.has(moduleId)) {\n groupMap.set(moduleId, { displayName: moduleDisplayName, roles: [] });\n }\n groupMap.get(moduleId)!.roles.push(item);\n }\n });\n\n const built: RoleGroup[] = [];\n built.push({ moduleId: null, moduleDisplayName: 'Default', roles: groupMap.get(null)!.roles });\n\n const moduleKeys = Array.from(groupMap.keys())\n .filter((k) => k !== null)\n .sort((a, b) => {\n const dA = groupMap.get(a as number)!.displayName;\n const dB = groupMap.get(b as number)!.displayName;\n return dA.localeCompare(dB);\n });\n\n moduleKeys.forEach((moduleId) => {\n const g = groupMap.get(moduleId as number)!;\n built.push({ moduleId: moduleId as number, moduleDisplayName: g.displayName, roles: g.roles });\n });\n\n const nonEmpty = built.filter((g) => g.roles.length > 0);\n setGroups(nonEmpty);\n setOpenItems(nonEmpty.map((g) => String(g.moduleId ?? 'default')));\n }, [allRoles]);\n\n if (groups.length === 0) {\n return (\n <SolidPanel>\n <p className=\"text-sm text-muted-foreground m-0\">No roles defined.</p>\n </SolidPanel>\n );\n }\n\n return (\n <SolidAccordion\n type=\"multiple\"\n value={openItems}\n onValueChange={setOpenItems}\n className=\"w-full\"\n >\n {groups.map((group) => {\n const key = String(group.moduleId ?? 'default');\n const title =\n group.moduleId === null\n ? 'Default Roles'\n : `${group.moduleDisplayName} Roles`;\n return (\n <SolidAccordionItem key={key} value={key}>\n <div className=\"pt-2\">\n <SolidAccordionTrigger>{title}</SolidAccordionTrigger>\n </div>\n <SolidAccordionContent>\n <div className=\"solid-user-role-grid pt-1\">\n {group.roles.map((item) => {\n const isSelected = selectedRoles.includes(item.label);\n\n return (\n <div\n key={item.value}\n className={cx(\n 'solid-user-role-card',\n isSelected && 'is-selected'\n )}\n >\n <SolidCheckbox\n className=\"solid-user-role-control\"\n disabled={readOnly}\n id={`role-${item.value}`}\n checked={isSelected}\n onChange={() => onToggle(item.label)}\n label={item.label}\n />\n </div>\n );\n })}\n </div>\n </SolidAccordionContent>\n </SolidAccordionItem>\n );\n })}\n </SolidAccordion>\n );\n};\n"]}
@@ -112,7 +112,9 @@ export const RolesGroupedByModuleWidget = ({
112
112
  : `${group.moduleDisplayName} Roles`;
113
113
  return (
114
114
  <SolidAccordionItem key={key} value={key}>
115
- <SolidAccordionTrigger>{title}</SolidAccordionTrigger>
115
+ <div className="pt-2">
116
+ <SolidAccordionTrigger>{title}</SolidAccordionTrigger>
117
+ </div>
116
118
  <SolidAccordionContent>
117
119
  <div className="solid-user-role-grid pt-1">
118
120
  {group.roles.map((item) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SolidRelationManyToOneField.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAI5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAc5E,MAAM,MAAM,cAAc,GAAG;IACzB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC;IACf,EAAE,EAAE,GAAG,CAAC;IACR,OAAO,EAAE,GAAG,CAAC;IACb,oBAAoB,EAAE,GAAG,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC;CACf,CAAA;AAED,qBAAa,2BAA4B,YAAW,WAAW;IAE3D,OAAO,CAAC,YAAY,CAAkB;gBAE1B,YAAY,EAAE,eAAe;IAIzC,YAAY,IAAI,GAAG;IAmBnB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG;IAUnD,gBAAgB,IAAI,GAAG,CAAC,MAAM;IA4D9B,MAAM,CAAC,MAAM,EAAE,YAAY;IAoC3B,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;CAYjE;AAED,eAAO,MAAM,sCAAsC,6BAA8B,yBAAyB,4CAkTzG,CAAA;AAED,eAAO,MAAM,0BAA0B,+HAAgI,GAAG,4CA8DzK,CAAA;AAGD,eAAO,MAAM,sCAAsC,6BAA8B,yBAAyB,4CAiBzG,CAAA;AAMD,eAAO,MAAM,iCAAiC,6BAA8B,yBAAyB,4CA2cpG,CAAA"}
1
+ {"version":3,"file":"SolidRelationManyToOneField.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAI5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAe5E,MAAM,MAAM,cAAc,GAAG;IACzB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC;IACf,EAAE,EAAE,GAAG,CAAC;IACR,OAAO,EAAE,GAAG,CAAC;IACb,oBAAoB,EAAE,GAAG,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC;CACf,CAAA;AAED,qBAAa,2BAA4B,YAAW,WAAW;IAE3D,OAAO,CAAC,YAAY,CAAkB;gBAE1B,YAAY,EAAE,eAAe;IAIzC,YAAY,IAAI,GAAG;IAqBnB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG;IAUnD,gBAAgB,IAAI,GAAG,CAAC,MAAM;IA4D9B,MAAM,CAAC,MAAM,EAAE,YAAY;IAoC3B,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;CAYjE;AAED,eAAO,MAAM,sCAAsC,6BAA8B,yBAAyB,4CAqTzG,CAAA;AAED,eAAO,MAAM,0BAA0B,+HAAgI,GAAG,4CA8DzK,CAAA;AAGD,eAAO,MAAM,sCAAsC,6BAA8B,yBAAyB,4CAiBzG,CAAA;AAMD,eAAO,MAAM,iCAAiC,6BAA8B,yBAAyB,4CA2cpG,CAAA"}
@@ -73,6 +73,7 @@ import * as Handlebars from "handlebars";
73
73
  import { SolidFieldTooltip } from "../../../../../components/common/SolidFieldTooltip";
74
74
  import { ERROR_MESSAGES } from "../../../../../constants/error-messages";
75
75
  import { getVirtualScrollerOptions } from "../../../../../helpers/autoCompleteVirtualScroll";
76
+ import { getRelatedRecordDisplayText } from "../../../../../helpers/relationDisplay";
76
77
  import { buildSyntheticChangeEvent } from "../fieldEventUtils";
77
78
  import styles from "../solidFields.module.css";
78
79
  var SolidRelationManyToOneField = /** @class */ (function () {
@@ -90,15 +91,16 @@ var SolidRelationManyToOneField = /** @class */ (function () {
90
91
  configurable: true,
91
92
  writable: true,
92
93
  value: function () {
93
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
94
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
94
95
  var manyToOneFieldData = (_a = this.fieldContext) === null || _a === void 0 ? void 0 : _a.data[(_d = (_c = (_b = this.fieldContext) === null || _b === void 0 ? void 0 : _b.field) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.name];
95
96
  var fieldMetadata = (_e = this.fieldContext) === null || _e === void 0 ? void 0 : _e.fieldMetadata;
96
- var userKeyField = (_g = (_f = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _f === void 0 ? void 0 : _f.userKeyField) === null || _g === void 0 ? void 0 : _g.name;
97
- var manyToOneColVal = manyToOneFieldData ? manyToOneFieldData[userKeyField] : '';
98
- if (manyToOneColVal) {
97
+ var userKeyField = ((_h = (_g = (_f = this.fieldContext) === null || _f === void 0 ? void 0 : _f.field) === null || _g === void 0 ? void 0 : _g.attrs) === null || _h === void 0 ? void 0 : _h.coModelFieldToDisplay) ||
98
+ ((_k = (_j = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _j === void 0 ? void 0 : _j.userKeyField) === null || _k === void 0 ? void 0 : _k.name);
99
+ var manyToOneColVal = getRelatedRecordDisplayText(manyToOneFieldData, userKeyField);
100
+ if (manyToOneFieldData) {
99
101
  return __assign({ solidManyToOneLabel: manyToOneColVal || '', solidManyToOneValue: (manyToOneFieldData === null || manyToOneFieldData === void 0 ? void 0 : manyToOneFieldData.id) || '' }, manyToOneFieldData);
100
102
  }
101
- var fieldName = (_k = (_j = (_h = this.fieldContext) === null || _h === void 0 ? void 0 : _h.field) === null || _j === void 0 ? void 0 : _j.attrs) === null || _k === void 0 ? void 0 : _k.name;
103
+ var fieldName = (_o = (_m = (_l = this.fieldContext) === null || _l === void 0 ? void 0 : _l.field) === null || _m === void 0 ? void 0 : _m.attrs) === null || _o === void 0 ? void 0 : _o.name;
102
104
  if (this.fieldContext.parentData && this.fieldContext.parentFieldName === fieldName) {
103
105
  var parentDataForKey = this.fieldContext.parentData[userKeyField];
104
106
  if (parentDataForKey && typeof parentDataForKey === 'object') {
@@ -218,7 +220,7 @@ var SolidRelationManyToOneField = /** @class */ (function () {
218
220
  }());
219
221
  export { SolidRelationManyToOneField };
220
222
  export var DefaultRelationManyToOneFormEditWidget = function (_a) {
221
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
223
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
222
224
  var formik = _a.formik, fieldContext = _a.fieldContext;
223
225
  var dispatch = useDispatch();
224
226
  var fieldMetadata = fieldContext.fieldMetadata;
@@ -228,8 +230,8 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
228
230
  var solidFormViewMetaData = fieldContext.solidFormViewMetaData;
229
231
  var showFieldLabel = (_d = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _d === void 0 ? void 0 : _d.showLabel;
230
232
  var readOnlyPermission = fieldContext.readOnly;
231
- var _p = useState(false), visibleCreateRelationEntity = _p[0], setvisibleCreateRelationEntity = _p[1];
232
- var _q = useState(), formViewParams = _q[0], setformViewParams = _q[1];
233
+ var _s = useState(false), visibleCreateRelationEntity = _s[0], setvisibleCreateRelationEntity = _s[1];
234
+ var _t = useState(), formViewParams = _t[0], setformViewParams = _t[1];
233
235
  // auto complete specific code.
234
236
  var entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);
235
237
  var useLazyGetSolidEntitiesQuery = entityApi.useLazyGetSolidEntitiesQuery;
@@ -239,12 +241,14 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
239
241
  var formDisabled = (_j = (_h = (_g = solidFormViewMetaData.data.solidView) === null || _g === void 0 ? void 0 : _g.layout) === null || _h === void 0 ? void 0 : _h.attrs) === null || _j === void 0 ? void 0 : _j.disabled;
240
242
  var formReadonly = (_m = (_l = (_k = solidFormViewMetaData.data.solidView) === null || _k === void 0 ? void 0 : _k.layout) === null || _l === void 0 ? void 0 : _l.attrs) === null || _m === void 0 ? void 0 : _m.readonly;
241
243
  var whereClause = fieldLayoutInfo.attrs.whereClause;
242
- var _r = useState([]), autoCompleteItems = _r[0], setAutoCompleteItems = _r[1];
243
- var _s = useState(0), offset = _s[0], setOffset = _s[1];
244
- var _t = useState(true), hasMore = _t[0], setHasMore = _t[1];
245
- var _u = useState(""), currentQuery = _u[0], setCurrentQuery = _u[1];
244
+ var _u = useState([]), autoCompleteItems = _u[0], setAutoCompleteItems = _u[1];
245
+ var _v = useState(0), offset = _v[0], setOffset = _v[1];
246
+ var _w = useState(true), hasMore = _w[0], setHasMore = _w[1];
247
+ var _x = useState(""), currentQuery = _x[0], setCurrentQuery = _x[1];
246
248
  var LIMIT = 50;
247
- var _v = useState(false), loading = _v[0], setLoading = _v[1];
249
+ var _y = useState(false), loading = _y[0], setLoading = _y[1];
250
+ var userKeyField = ((_o = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _o === void 0 ? void 0 : _o.coModelFieldToDisplay) ||
251
+ ((_q = (_p = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _p === void 0 ? void 0 : _p.userKeyField) === null || _q === void 0 ? void 0 : _q.name);
248
252
  useEffect(function () {
249
253
  var _a, _b;
250
254
  var formviewparams = {
@@ -335,8 +339,7 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
335
339
  autocompleteData = autocompleteResponse.data;
336
340
  if (autocompleteData) {
337
341
  autoCompleteItems_1 = autocompleteData.records.map(function (item) {
338
- var _a, _b;
339
- return __assign({ solidManyToOneLabel: item[(_b = (_a = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _a === void 0 ? void 0 : _a.userKeyField) === null || _b === void 0 ? void 0 : _b.name], solidManyToOneValue: item['id'] }, item);
342
+ return __assign({ solidManyToOneLabel: getRelatedRecordDisplayText(item, userKeyField), solidManyToOneValue: item['id'] }, item);
340
343
  });
341
344
  setAutoCompleteItems(autoCompleteItems_1);
342
345
  setOffset(autocompleteData.records.length);
@@ -427,10 +430,7 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
427
430
  records_1 = ((_m = response.data) === null || _m === void 0 ? void 0 : _m.records) || [];
428
431
  if (records_1.length < LIMIT)
429
432
  setHasMore(false);
430
- setAutoCompleteItems(function (prev) { return __spreadArray(__spreadArray([], prev, true), records_1.map(function (item) {
431
- var _a, _b;
432
- return (__assign({ solidManyToOneLabel: item[(_b = (_a = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _a === void 0 ? void 0 : _a.userKeyField) === null || _b === void 0 ? void 0 : _b.name], solidManyToOneValue: item.id }, item));
433
- }), true); });
433
+ setAutoCompleteItems(function (prev) { return __spreadArray(__spreadArray([], prev, true), records_1.map(function (item) { return (__assign({ solidManyToOneLabel: getRelatedRecordDisplayText(item, userKeyField), solidManyToOneValue: item.id }, item)); }), true); });
434
434
  setOffset(function (prev) { return prev + records_1.length; });
435
435
  return [3 /*break*/, 4];
436
436
  case 3:
@@ -442,12 +442,11 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
442
442
  }); };
443
443
  var isFormFieldValid = function (formik, fieldName) { return formik.touched[fieldName] && formik.errors[fieldName]; };
444
444
  var customCreateHandler = function (values) {
445
- var _a, _b;
446
445
  var currentRelationData = formik.values[fieldLayoutInfo.attrs.name] || [];
447
446
  var jsonValues = Object.fromEntries(values.entries());
448
447
  var updatedRelationData = __spreadArray(__spreadArray([], currentRelationData, true), [
449
448
  {
450
- solidManyToOneLabel: jsonValues[(_b = (_a = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _a === void 0 ? void 0 : _a.userKeyField) === null || _b === void 0 ? void 0 : _b.name],
449
+ solidManyToOneLabel: getRelatedRecordDisplayText(jsonValues, userKeyField),
451
450
  solidManyToOneValue: "new",
452
451
  original: jsonValues,
453
452
  },
@@ -474,7 +473,7 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
474
473
  lazy: true,
475
474
  onLazyLoad: onLazyLoad,
476
475
  }) }), fieldLayoutInfo.attrs.inlineCreate === "true" && readOnlyPermission === false && formViewParams &&
477
- _jsx(RenderSolidFormEmbededView, { formik: formik, fieldContext: fieldContext, customCreateHandler: customCreateHandler, visibleCreateRelationEntity: visibleCreateRelationEntity, setvisibleCreateRelationEntity: setvisibleCreateRelationEntity, formViewParams: formViewParams })] })] }), isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (_jsx("div", { className: "absolute mt-1", children: _jsx(SolidMessage, { severity: "error", text: (_o = formik === null || formik === void 0 ? void 0 : formik.errors[fieldLayoutInfo.attrs.name]) === null || _o === void 0 ? void 0 : _o.toString() }) }))] }));
476
+ _jsx(RenderSolidFormEmbededView, { formik: formik, fieldContext: fieldContext, customCreateHandler: customCreateHandler, visibleCreateRelationEntity: visibleCreateRelationEntity, setvisibleCreateRelationEntity: setvisibleCreateRelationEntity, formViewParams: formViewParams })] })] }), isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (_jsx("div", { className: "absolute mt-1", children: _jsx(SolidMessage, { severity: "error", text: (_r = formik === null || formik === void 0 ? void 0 : formik.errors[fieldLayoutInfo.attrs.name]) === null || _r === void 0 ? void 0 : _r.toString() }) }))] }));
478
477
  };
479
478
  export var RenderSolidFormEmbededView = function (_a) {
480
479
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
@@ -517,7 +516,7 @@ export var DefaultRelationManyToOneFormViewWidget = function (_a) {
517
516
  var showFieldLabel = (_c = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _c === void 0 ? void 0 : _c.showLabel;
518
517
  var value = formik.values[fieldLayoutInfo.attrs.name];
519
518
  var userKeyField = ((_d = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _d === void 0 ? void 0 : _d.coModelFieldToDisplay) ? (_e = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _e === void 0 ? void 0 : _e.coModelFieldToDisplay : (_g = (_f = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _f === void 0 ? void 0 : _f.userKeyField) === null || _g === void 0 ? void 0 : _g.name;
520
- var displayValue = value === null || value === void 0 ? void 0 : value[userKeyField];
519
+ var displayValue = getRelatedRecordDisplayText(value, userKeyField);
521
520
  return (_jsxs("div", { className: styles.fieldViewWrapper, children: [showFieldLabel !== false && (_jsx("p", { className: "".concat(styles.fieldViewLabel, " form-field-label"), children: fieldLabel })), _jsx("p", { className: styles.fieldViewValue, children: displayValue || '' })] }));
522
521
  };
523
522
  export var PseudoRelationManyToOneFormWidget = function (_a) {