@solidxai/core-ui 0.1.12-beta.7 → 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 (233) 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/common/SolidAccountSettings/SolidAccountSettings.module.css +3 -1
  33. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  34. package/dist/components/core/common/SolidGlobalSearchElement.js +3 -2
  35. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  36. package/dist/components/core/common/SolidGlobalSearchElement.tsx +14 -18
  37. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
  38. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +43 -16
  39. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  40. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +24 -2
  41. package/dist/components/core/form/SolidFormFooter.js +1 -1
  42. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  43. package/dist/components/core/form/SolidFormFooter.tsx +1 -1
  44. package/dist/components/core/form/SolidFormLayouts.js +1 -1
  45. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  46. package/dist/components/core/form/SolidFormLayouts.tsx +2 -2
  47. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  48. package/dist/components/core/form/fields/SolidMediaMultipleField.js +120 -56
  49. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  50. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +63 -50
  51. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  52. package/dist/components/core/form/fields/SolidMediaSingleField.js +115 -37
  53. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  54. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +36 -35
  55. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  56. package/dist/components/core/form/fields/SolidRichTextField.js +67 -4
  57. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  58. package/dist/components/core/form/fields/SolidRichTextField.tsx +89 -7
  59. package/dist/components/core/form/fields/mediaFieldUtils.d.ts +3 -0
  60. package/dist/components/core/form/fields/mediaFieldUtils.d.ts.map +1 -0
  61. package/dist/components/core/form/fields/mediaFieldUtils.js +30 -0
  62. package/dist/components/core/form/fields/mediaFieldUtils.js.map +1 -0
  63. package/dist/components/core/form/fields/mediaFieldUtils.ts +45 -0
  64. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
  65. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +1 -1
  66. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
  67. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +3 -1
  68. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  69. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +22 -23
  70. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  71. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +13 -7
  72. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
  73. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +16 -11
  74. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  75. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +32 -18
  76. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.d.ts.map +1 -1
  77. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js +3 -1
  78. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
  79. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +11 -5
  80. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  81. package/dist/components/core/list/SolidDataTable.js +3 -2
  82. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  83. package/dist/components/core/list/SolidDataTable.tsx +3 -2
  84. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  85. package/dist/components/core/list/SolidListView.js +11 -5
  86. package/dist/components/core/list/SolidListView.js.map +1 -1
  87. package/dist/components/core/list/SolidListView.tsx +15 -8
  88. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  89. package/dist/components/core/list/SolidListViewColumn.js +1 -0
  90. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  91. package/dist/components/core/list/SolidListViewColumn.tsx +1 -0
  92. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
  93. package/dist/components/core/list/columns/SolidShortTextColumn.js +7 -2
  94. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  95. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +7 -2
  96. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.d.ts.map +1 -1
  97. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js +4 -1
  98. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
  99. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +5 -2
  100. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  101. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
  102. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  103. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
  104. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.d.ts.map +1 -1
  105. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js +4 -1
  106. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
  107. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +5 -2
  108. package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
  109. package/dist/components/core/locales/SolidLocale.js +1 -1
  110. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  111. package/dist/components/core/locales/SolidLocale.tsx +1 -0
  112. package/dist/components/core/model/CreateModel.css +26 -0
  113. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  114. package/dist/components/core/model/FieldMetaData.js +21 -3
  115. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  116. package/dist/components/core/model/FieldMetaData.tsx +45 -4
  117. package/dist/components/core/model/FieldMetaDataForm.css +82 -0
  118. package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -0
  119. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  120. package/dist/components/core/model/FieldMetaDataForm.js +246 -235
  121. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  122. package/dist/components/core/model/FieldMetaDataForm.tsx +46 -34
  123. package/dist/components/core/model/FieldSelector.js +1 -1
  124. package/dist/components/core/model/FieldSelector.js.map +1 -1
  125. package/dist/components/core/model/FieldSelector.tsx +1 -1
  126. package/dist/components/core/model/ModelMetaData.js +1 -1
  127. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  128. package/dist/components/core/model/ModelMetaData.tsx +1 -1
  129. package/dist/components/core/module/CreateModule.css +55 -2
  130. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  131. package/dist/components/core/module/CreateModule.js +2 -2
  132. package/dist/components/core/module/CreateModule.js.map +1 -1
  133. package/dist/components/core/module/CreateModule.tsx +3 -2
  134. package/dist/components/core/module/ModuleMetadataExplorer.css +27 -0
  135. package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -1
  136. package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
  137. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
  138. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -0
  139. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  140. package/dist/components/core/tree/SolidTreeView.js +6 -1
  141. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  142. package/dist/components/core/tree/SolidTreeView.tsx +7 -1
  143. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  144. package/dist/components/layout/AdminHeaderActions.js +10 -9
  145. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  146. package/dist/components/layout/AdminHeaderActions.tsx +2 -0
  147. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  148. package/dist/components/layout/AppSidebar.js +2 -1
  149. package/dist/components/layout/AppSidebar.js.map +1 -1
  150. package/dist/components/layout/AppSidebar.tsx +12 -5
  151. package/dist/components/layout/SolidMenuItemIcon.d.ts +9 -0
  152. package/dist/components/layout/SolidMenuItemIcon.d.ts.map +1 -0
  153. package/dist/components/layout/SolidMenuItemIcon.js +20 -0
  154. package/dist/components/layout/SolidMenuItemIcon.js.map +1 -0
  155. package/dist/components/layout/SolidMenuItemIcon.tsx +45 -0
  156. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  157. package/dist/components/layout/navbar-two-menu.js +6 -7
  158. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  159. package/dist/components/layout/navbar-two-menu.tsx +4 -12
  160. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  161. package/dist/components/shad-cn-ui/SolidCodeEditor.js +30 -2
  162. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  163. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +38 -1
  164. package/dist/helpers/backendHealthMonitor.d.ts +39 -0
  165. package/dist/helpers/backendHealthMonitor.d.ts.map +1 -0
  166. package/dist/helpers/backendHealthMonitor.js +255 -0
  167. package/dist/helpers/backendHealthMonitor.js.map +1 -0
  168. package/dist/helpers/backendHealthMonitor.ts +177 -0
  169. package/dist/helpers/helpers.d.ts +1 -0
  170. package/dist/helpers/helpers.d.ts.map +1 -1
  171. package/dist/helpers/helpers.js +9 -0
  172. package/dist/helpers/helpers.js.map +1 -1
  173. package/dist/helpers/helpers.ts +11 -1
  174. package/dist/helpers/menuItemIcons.d.ts +34 -0
  175. package/dist/helpers/menuItemIcons.d.ts.map +1 -0
  176. package/dist/helpers/menuItemIcons.js +144 -0
  177. package/dist/helpers/menuItemIcons.js.map +1 -0
  178. package/dist/helpers/menuItemIcons.ts +191 -0
  179. package/dist/helpers/relationDisplay.d.ts +3 -0
  180. package/dist/helpers/relationDisplay.d.ts.map +1 -0
  181. package/dist/helpers/relationDisplay.js +92 -0
  182. package/dist/helpers/relationDisplay.js.map +1 -0
  183. package/dist/helpers/relationDisplay.ts +101 -0
  184. package/dist/helpers/settingsPayload.d.ts +1 -0
  185. package/dist/helpers/settingsPayload.d.ts.map +1 -1
  186. package/dist/helpers/settingsPayload.js.map +1 -1
  187. package/dist/helpers/settingsPayload.ts +1 -0
  188. package/dist/helpers/solidIcons.d.ts +2 -0
  189. package/dist/helpers/solidIcons.d.ts.map +1 -1
  190. package/dist/helpers/solidIcons.js +8 -0
  191. package/dist/helpers/solidIcons.js.map +1 -1
  192. package/dist/helpers/solidIcons.tsx +10 -1
  193. package/dist/helpers/waitForBackendAvailability.d.ts +1 -0
  194. package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -1
  195. package/dist/helpers/waitForBackendAvailability.js +35 -22
  196. package/dist/helpers/waitForBackendAvailability.js.map +1 -1
  197. package/dist/helpers/waitForBackendAvailability.ts +18 -12
  198. package/dist/http/solidHttp.d.ts.map +1 -1
  199. package/dist/http/solidHttp.js +10 -4
  200. package/dist/http/solidHttp.js.map +1 -1
  201. package/dist/http/solidHttp.ts +9 -4
  202. package/dist/redux/api/datasourceIntrospectionApi.d.ts +4 -0
  203. package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
  204. package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
  205. package/dist/redux/api/datasourceIntrospectionApi.ts +4 -0
  206. package/dist/redux/api/fetchBaseQuery.d.ts.map +1 -1
  207. package/dist/redux/api/fetchBaseQuery.js +9 -3
  208. package/dist/redux/api/fetchBaseQuery.js.map +1 -1
  209. package/dist/redux/api/fetchBaseQuery.tsx +9 -3
  210. package/dist/redux/store/StoreProvider.d.ts.map +1 -1
  211. package/dist/redux/store/StoreProvider.js +4 -3
  212. package/dist/redux/store/StoreProvider.js.map +1 -1
  213. package/dist/redux/store/StoreProvider.tsx +4 -3
  214. package/dist/resources/globals.css +341 -49
  215. package/dist/resources/solid-custom.css +410 -12
  216. package/dist/resources/solid-responsive.css +27 -16
  217. package/dist/resources/solid-tailwind-generated.css +1 -1
  218. package/dist/routes/AppEventListener.d.ts.map +1 -1
  219. package/dist/routes/AppEventListener.js +23 -0
  220. package/dist/routes/AppEventListener.js.map +1 -1
  221. package/dist/routes/AppEventListener.tsx +29 -0
  222. package/dist/routes/pages/admin/core/DashboardPage.module.css +12 -0
  223. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +306 -3
  224. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
  225. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +745 -393
  226. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
  227. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1074 -420
  228. package/dist/routes/pages/admin/core/DatasourcesPage.css +15 -0
  229. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -1
  230. package/dist/routes/pages/admin/core/DatasourcesPage.js +7 -188
  231. package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -1
  232. package/dist/routes/pages/admin/core/DatasourcesPage.tsx +3 -393
  233. 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":"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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 <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) {