@solidstarters/solid-core-ui 1.1.31 → 1.1.32
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/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.d.ts +7 -0
- package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.js +17 -0
- package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.d.ts +7 -0
- package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.js +17 -0
- package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.js.map +1 -0
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts +3 -0
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +78 -0
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -0
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +58 -20
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.d.ts +2 -0
- package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.js +32 -3
- package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts +1 -3
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +19 -274
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyAutocompleteWidget.d.ts +3 -0
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyAutocompleteWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyAutocompleteWidget.js +38 -0
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyAutocompleteWidget.js.map +1 -0
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyCheckboxWidget.d.ts +3 -0
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyCheckboxWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyCheckboxWidget.js +48 -0
- package/dist/components/core/form/fields/relations/widgets/SolidRelationManyToManyCheckboxWidget.js.map +1 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.d.ts +2 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.d.ts.map +1 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +35 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +6 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +119 -0
- package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -0
- package/dist/helpers/registry.d.ts +1 -1
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +19 -2
- package/dist/helpers/registry.js.map +1 -1
- package/package.json +1 -1
- package/src/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.ts +18 -0
- package/src/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.ts +18 -0
- package/src/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +123 -0
- package/src/components/core/form/SolidFormView.tsx +62 -18
- package/src/components/core/form/fields/SolidLongTextField.tsx +79 -20
- package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +20 -356
- package/src/components/core/form/fields/relations/widgets/SolidRelationManyToManyAutocompleteWidget.tsx +74 -0
- package/src/components/core/form/fields/relations/widgets/SolidRelationManyToManyCheckboxWidget.tsx +103 -0
- package/src/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +33 -0
- package/src/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +64 -0
- package/src/helpers/registry.ts +21 -2
- package/src/types/solid-core.d.ts +14 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import qs from "qs";
|
|
3
|
+
import { createSolidEntityApi } from "@/redux/api/solidEntityApi";
|
|
4
|
+
|
|
5
|
+
export const useRelationEntityHandler = ({ fieldContext, formik, autoCompleteLimit = 1000 }: any) => {
|
|
6
|
+
const fieldMetadata = fieldContext.fieldMetadata;
|
|
7
|
+
const fieldLayoutInfo = fieldContext.field;
|
|
8
|
+
|
|
9
|
+
const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);
|
|
10
|
+
const { useLazyGetSolidEntitiesQuery } = entityApi;
|
|
11
|
+
const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();
|
|
12
|
+
|
|
13
|
+
const [autoCompleteItems, setAutoCompleteItems] = useState([]);
|
|
14
|
+
|
|
15
|
+
const fetchRelationEntities = async (query = "", limit = autoCompleteLimit) => {
|
|
16
|
+
const queryData = {
|
|
17
|
+
offset: 0,
|
|
18
|
+
limit: limit,
|
|
19
|
+
filters: {
|
|
20
|
+
[fieldMetadata?.relationModel?.userKeyField?.name]: {
|
|
21
|
+
'$containsi': query
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });
|
|
27
|
+
|
|
28
|
+
const response = await triggerGetSolidEntities(autocompleteQs);
|
|
29
|
+
const data = response.data;
|
|
30
|
+
|
|
31
|
+
if (data) {
|
|
32
|
+
const mappedItems = data.records.map((item: any) => ({
|
|
33
|
+
label: item[fieldMetadata?.relationModel?.userKeyField?.name],
|
|
34
|
+
value: item['id'],
|
|
35
|
+
original: item
|
|
36
|
+
}));
|
|
37
|
+
setAutoCompleteItems(mappedItems);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const addNewRelation = (values: any) => {
|
|
42
|
+
const currentData = formik.values[fieldLayoutInfo.attrs.name] || [];
|
|
43
|
+
const jsonValues = Object.fromEntries(values.entries());
|
|
44
|
+
const newItem = {
|
|
45
|
+
label: jsonValues[fieldMetadata?.relationModel?.userKeyField?.name],
|
|
46
|
+
value: "new",
|
|
47
|
+
original: jsonValues,
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
formik.setFieldValue(fieldLayoutInfo.attrs.name, [...currentData, newItem]);
|
|
51
|
+
|
|
52
|
+
// Optionally add to autocomplete list
|
|
53
|
+
setAutoCompleteItems((prev: any) => {
|
|
54
|
+
const exists = prev.some((item: any) => item.label === newItem.label);
|
|
55
|
+
return exists ? prev : [...prev, newItem];
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
autoCompleteItems,
|
|
61
|
+
fetchRelationEntities,
|
|
62
|
+
addNewRelation
|
|
63
|
+
};
|
|
64
|
+
};
|
package/src/helpers/registry.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import hanldeEmailFormTypeChange from "@/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler";
|
|
2
|
+
import hanldeEmailFormTypeLoad from "@/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad";
|
|
3
|
+
import { RolePermissionsManyToManyFieldWidget } from "@/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget";
|
|
4
|
+
import { SolidRelationManyToManyAutocompleteWidget } from "@/components/core/form/fields/relations/widgets/SolidRelationManyToManyAutocompleteWidget";
|
|
5
|
+
import { SolidRelationManyToManyCheckboxWidget } from "@/components/core/form/fields/relations/widgets/SolidRelationManyToManyCheckboxWidget";
|
|
1
6
|
import { CustomHtml } from "@/components/core/form/widgets/CustomHtml";
|
|
2
7
|
import React from "react";
|
|
3
8
|
|
|
@@ -11,9 +16,13 @@ const extensionRegistry: ExtensionRegistry = {
|
|
|
11
16
|
functions: {},
|
|
12
17
|
};
|
|
13
18
|
|
|
14
|
-
export const registerExtensionComponent = (name: string, component: React.ComponentType<any
|
|
19
|
+
export const registerExtensionComponent = (name: string, component: React.ComponentType<any>, aliases: string[] = []) => {
|
|
15
20
|
// console.log(`registerExtensionComponent invoked... ${name}`);
|
|
16
21
|
extensionRegistry.components[name] = component;
|
|
22
|
+
for (let i = 0; i < aliases.length; i++) {
|
|
23
|
+
const alias = aliases[i];
|
|
24
|
+
extensionRegistry.components[alias] = component;
|
|
25
|
+
}
|
|
17
26
|
};
|
|
18
27
|
|
|
19
28
|
export const registerExtensionFunction = (name: string, fn: (...args: any[]) => any) => {
|
|
@@ -55,10 +64,20 @@ export const getExtensionFunction = (name: string) => {
|
|
|
55
64
|
|
|
56
65
|
// Register all the dynamic widget & functions from inside solid-core-ui
|
|
57
66
|
// Common
|
|
58
|
-
registerExtensionComponent("CustomHtml", CustomHtml);
|
|
67
|
+
registerExtensionComponent("CustomHtml", CustomHtml, []);
|
|
68
|
+
registerExtensionComponent("SolidRelationManyToManyCheckboxWidget", SolidRelationManyToManyCheckboxWidget, ["checkbox"]);
|
|
69
|
+
registerExtensionComponent("SolidRelationManyToManyAutocompleteWidget", SolidRelationManyToManyAutocompleteWidget, ["autocomplete"]);
|
|
59
70
|
|
|
60
71
|
|
|
61
72
|
// ModuleMetadata
|
|
62
73
|
|
|
63
74
|
|
|
64
75
|
// ModelMetadata
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
// Email Template
|
|
79
|
+
registerExtensionFunction("emailFormTypeChangeHandler", hanldeEmailFormTypeChange);
|
|
80
|
+
registerExtensionFunction("emailFormTypeLoad", hanldeEmailFormTypeLoad);
|
|
81
|
+
|
|
82
|
+
// RoleMetadata
|
|
83
|
+
registerExtensionComponent("RolePermissionsManyToManyFieldWidget", RolePermissionsManyToManyFieldWidget, ["inputSwitch"]);
|
|
@@ -67,6 +67,7 @@ export type LayoutAttribute = {
|
|
|
67
67
|
label?: string;
|
|
68
68
|
className?: string;
|
|
69
69
|
inlineCreate?: string;
|
|
70
|
+
renderMode?: string;
|
|
70
71
|
};
|
|
71
72
|
|
|
72
73
|
// Generic representation of any node in our layout
|
|
@@ -78,7 +79,7 @@ export type LayoutNode = {
|
|
|
78
79
|
};
|
|
79
80
|
|
|
80
81
|
// Event type
|
|
81
|
-
export type SolidUiEvents = "onFieldChange" | "onFieldBlur" | "onCustomWidgetRender";
|
|
82
|
+
export type SolidUiEvents = "onFieldChange" | "onFieldBlur" | "onCustomWidgetRender" | "onFormDataLoad" | "onFormLayoutLoad";
|
|
82
83
|
export type SolidUiEvent = {
|
|
83
84
|
type: SolidUiEvents;
|
|
84
85
|
modifiedField?: string;
|
|
@@ -89,6 +90,13 @@ export type SolidUiEvent = {
|
|
|
89
90
|
fieldsMetadata: FieldsMetadata;
|
|
90
91
|
};
|
|
91
92
|
|
|
93
|
+
export type SolidLoadForm = {
|
|
94
|
+
type: SolidUiEvents;
|
|
95
|
+
formData: Record<string, any>;
|
|
96
|
+
viewMetadata: SolidView;
|
|
97
|
+
fieldsMetadata: FieldsMetadata;
|
|
98
|
+
}
|
|
99
|
+
|
|
92
100
|
export type SolidFormWidgetProps = {
|
|
93
101
|
field: any;
|
|
94
102
|
// This comes from Formik...
|
|
@@ -96,3 +104,8 @@ export type SolidFormWidgetProps = {
|
|
|
96
104
|
viewMetadata: SolidView;
|
|
97
105
|
fieldsMetadata: FieldsMetadata;
|
|
98
106
|
};
|
|
107
|
+
|
|
108
|
+
export type SolidRelationManyToManyFieldWidgetProps = {
|
|
109
|
+
formik: any;
|
|
110
|
+
fieldContext?: SolidFieldProps;
|
|
111
|
+
};
|