@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.
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +19 -17
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +59 -34
- package/dist/components/common/BackendReconnectIndicator.d.ts +6 -0
- package/dist/components/common/BackendReconnectIndicator.d.ts.map +1 -0
- package/dist/components/common/BackendReconnectIndicator.js +25 -0
- package/dist/components/common/BackendReconnectIndicator.js.map +1 -0
- package/dist/components/common/BackendReconnectIndicator.tsx +45 -0
- package/dist/components/common/SettingsComponent.d.ts.map +1 -1
- package/dist/components/common/SettingsComponent.js +7 -3
- package/dist/components/common/SettingsComponent.js.map +1 -1
- package/dist/components/common/SettingsComponent.module.css +144 -12
- package/dist/components/common/SettingsComponent.tsx +22 -3
- package/dist/components/common/SolidAdmin.d.ts.map +1 -1
- package/dist/components/common/SolidAdmin.js +7 -2
- package/dist/components/common/SolidAdmin.js.map +1 -1
- package/dist/components/common/SolidAdmin.tsx +7 -2
- package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
- package/dist/components/common/SolidBreadcrumb.js +1 -6
- package/dist/components/common/SolidBreadcrumb.js.map +1 -1
- package/dist/components/common/SolidBreadcrumb.tsx +1 -8
- package/dist/components/common/SolidMaterialSymbol.d.ts +10 -0
- package/dist/components/common/SolidMaterialSymbol.d.ts.map +1 -0
- package/dist/components/common/SolidMaterialSymbol.js +69 -0
- package/dist/components/common/SolidMaterialSymbol.js.map +1 -0
- package/dist/components/common/SolidMaterialSymbol.tsx +96 -0
- package/dist/components/common/SolidToastProvider.d.ts.map +1 -1
- package/dist/components/common/SolidToastProvider.js +14 -1
- package/dist/components/common/SolidToastProvider.js.map +1 -1
- package/dist/components/common/SolidToastProvider.tsx +19 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +3 -1
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +3 -2
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +14 -18
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +43 -16
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +24 -2
- package/dist/components/core/form/SolidFormFooter.js +1 -1
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +1 -1
- package/dist/components/core/form/SolidFormLayouts.js +1 -1
- package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
- package/dist/components/core/form/SolidFormLayouts.tsx +2 -2
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +120 -56
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +63 -50
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +115 -37
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +36 -35
- package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.js +67 -4
- package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.tsx +89 -7
- package/dist/components/core/form/fields/mediaFieldUtils.d.ts +3 -0
- package/dist/components/core/form/fields/mediaFieldUtils.d.ts.map +1 -0
- package/dist/components/core/form/fields/mediaFieldUtils.js +30 -0
- package/dist/components/core/form/fields/mediaFieldUtils.js.map +1 -0
- package/dist/components/core/form/fields/mediaFieldUtils.ts +45 -0
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +3 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +22 -23
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +13 -7
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +16 -11
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +32 -18
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js +3 -1
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +11 -5
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +3 -2
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +3 -2
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +11 -5
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +15 -8
- package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.js +1 -0
- package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.tsx +1 -0
- package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.js +7 -2
- package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.tsx +7 -2
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js +4 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +5 -2
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js +4 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +5 -2
- package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
- package/dist/components/core/locales/SolidLocale.js +1 -1
- package/dist/components/core/locales/SolidLocale.js.map +1 -1
- package/dist/components/core/locales/SolidLocale.tsx +1 -0
- package/dist/components/core/model/CreateModel.css +26 -0
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +21 -3
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +45 -4
- package/dist/components/core/model/FieldMetaDataForm.css +82 -0
- package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -0
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +246 -235
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +46 -34
- package/dist/components/core/model/FieldSelector.js +1 -1
- package/dist/components/core/model/FieldSelector.js.map +1 -1
- package/dist/components/core/model/FieldSelector.tsx +1 -1
- package/dist/components/core/model/ModelMetaData.js +1 -1
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +1 -1
- package/dist/components/core/module/CreateModule.css +55 -2
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +2 -2
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +3 -2
- package/dist/components/core/module/ModuleMetadataExplorer.css +27 -0
- package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -0
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +6 -1
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +7 -1
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +10 -9
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +2 -0
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +2 -1
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +12 -5
- package/dist/components/layout/SolidMenuItemIcon.d.ts +9 -0
- package/dist/components/layout/SolidMenuItemIcon.d.ts.map +1 -0
- package/dist/components/layout/SolidMenuItemIcon.js +20 -0
- package/dist/components/layout/SolidMenuItemIcon.js.map +1 -0
- package/dist/components/layout/SolidMenuItemIcon.tsx +45 -0
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +6 -7
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +4 -12
- package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.js +30 -2
- package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +38 -1
- package/dist/helpers/backendHealthMonitor.d.ts +39 -0
- package/dist/helpers/backendHealthMonitor.d.ts.map +1 -0
- package/dist/helpers/backendHealthMonitor.js +255 -0
- package/dist/helpers/backendHealthMonitor.js.map +1 -0
- package/dist/helpers/backendHealthMonitor.ts +177 -0
- package/dist/helpers/helpers.d.ts +1 -0
- package/dist/helpers/helpers.d.ts.map +1 -1
- package/dist/helpers/helpers.js +9 -0
- package/dist/helpers/helpers.js.map +1 -1
- package/dist/helpers/helpers.ts +11 -1
- package/dist/helpers/menuItemIcons.d.ts +34 -0
- package/dist/helpers/menuItemIcons.d.ts.map +1 -0
- package/dist/helpers/menuItemIcons.js +144 -0
- package/dist/helpers/menuItemIcons.js.map +1 -0
- package/dist/helpers/menuItemIcons.ts +191 -0
- package/dist/helpers/relationDisplay.d.ts +3 -0
- package/dist/helpers/relationDisplay.d.ts.map +1 -0
- package/dist/helpers/relationDisplay.js +92 -0
- package/dist/helpers/relationDisplay.js.map +1 -0
- package/dist/helpers/relationDisplay.ts +101 -0
- package/dist/helpers/settingsPayload.d.ts +1 -0
- package/dist/helpers/settingsPayload.d.ts.map +1 -1
- package/dist/helpers/settingsPayload.js.map +1 -1
- package/dist/helpers/settingsPayload.ts +1 -0
- package/dist/helpers/solidIcons.d.ts +2 -0
- package/dist/helpers/solidIcons.d.ts.map +1 -1
- package/dist/helpers/solidIcons.js +8 -0
- package/dist/helpers/solidIcons.js.map +1 -1
- package/dist/helpers/solidIcons.tsx +10 -1
- package/dist/helpers/waitForBackendAvailability.d.ts +1 -0
- package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -1
- package/dist/helpers/waitForBackendAvailability.js +35 -22
- package/dist/helpers/waitForBackendAvailability.js.map +1 -1
- package/dist/helpers/waitForBackendAvailability.ts +18 -12
- package/dist/http/solidHttp.d.ts.map +1 -1
- package/dist/http/solidHttp.js +10 -4
- package/dist/http/solidHttp.js.map +1 -1
- package/dist/http/solidHttp.ts +9 -4
- package/dist/redux/api/datasourceIntrospectionApi.d.ts +4 -0
- package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.ts +4 -0
- package/dist/redux/api/fetchBaseQuery.d.ts.map +1 -1
- package/dist/redux/api/fetchBaseQuery.js +9 -3
- package/dist/redux/api/fetchBaseQuery.js.map +1 -1
- package/dist/redux/api/fetchBaseQuery.tsx +9 -3
- package/dist/redux/store/StoreProvider.d.ts.map +1 -1
- package/dist/redux/store/StoreProvider.js +4 -3
- package/dist/redux/store/StoreProvider.js.map +1 -1
- package/dist/redux/store/StoreProvider.tsx +4 -3
- package/dist/resources/globals.css +341 -49
- package/dist/resources/solid-custom.css +410 -12
- package/dist/resources/solid-responsive.css +27 -16
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/AppEventListener.d.ts.map +1 -1
- package/dist/routes/AppEventListener.js +23 -0
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +29 -0
- package/dist/routes/pages/admin/core/DashboardPage.module.css +12 -0
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +306 -3
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +745 -393
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1074 -420
- package/dist/routes/pages/admin/core/DatasourcesPage.css +15 -0
- package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DatasourcesPage.js +7 -188
- package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DatasourcesPage.tsx +3 -393
- 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={
|
|
144
|
-
value={
|
|
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:
|
|
150
|
-
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,
|
|
161
|
-
<p className={styles.fieldError}>{formik?.errors[
|
|
242
|
+
{isFormFieldValid(formik, fieldName) && (
|
|
243
|
+
<p className={styles.fieldError}>{formik?.errors[fieldName]?.toString()}</p>
|
|
162
244
|
)}
|
|
163
245
|
</div>
|
|
164
246
|
);
|
|
@@ -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,
|
|
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
|
-
<
|
|
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;
|
|
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 =
|
|
97
|
-
|
|
98
|
-
|
|
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 = (
|
|
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
|
|
232
|
-
var
|
|
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
|
|
243
|
-
var
|
|
244
|
-
var
|
|
245
|
-
var
|
|
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
|
|
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
|
-
|
|
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
|
|
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: (
|
|
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
|
|
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) {
|