impaktapps-ui-builder 0.0.284 → 0.0.286
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/impaktapps-ui-builder.es.js +214 -291
- package/dist/impaktapps-ui-builder.es.js.map +1 -1
- package/dist/impaktapps-ui-builder.umd.js +12 -12
- package/dist/impaktapps-ui-builder.umd.js.map +1 -1
- package/dist/src/impaktapps-ui-builder/builder/build/uischema/buildPropertiesSection.d.ts +4 -4
- package/dist/src/impaktapps-ui-builder/builder/build/uischema/selectInputField.d.ts +1 -0
- package/dist/src/impaktapps-ui-builder/runtime/services/events.d.ts +2 -1
- package/dist/src/impaktapps-ui-builder/runtime/services/interface.d.ts +11 -0
- package/dist/src/impaktapps-ui-builder/runtime/services/service.d.ts +1 -1
- package/package.json +1 -1
- package/src/impaktapps-ui-builder/builder/build/buildMultiSelect.ts +18 -16
- package/src/impaktapps-ui-builder/builder/build/buildSelect.ts +17 -14
- package/src/impaktapps-ui-builder/builder/build/buildTable.ts +3 -0
- package/src/impaktapps-ui-builder/builder/build/uischema/buildPropertiesSection.ts +34 -20
- package/src/impaktapps-ui-builder/builder/build/uischema/selectInputField.ts +1 -1
- package/src/impaktapps-ui-builder/builder/elements/UiSchema/Component/uiSchema.ts +36 -36
- package/src/impaktapps-ui-builder/builder/elements/UiSchema/PageMaster/uiSchema.ts +1 -1
- package/src/impaktapps-ui-builder/builder/elements/UiSchema/event/uiSchema.ts +10 -10
- package/src/impaktapps-ui-builder/builder/services/component.ts +2 -2
- package/src/impaktapps-ui-builder/builder/services/event.ts +2 -2
- package/src/impaktapps-ui-builder/runtime/services/events.ts +56 -135
- package/src/impaktapps-ui-builder/runtime/services/interface.ts +11 -0
- package/src/impaktapps-ui-builder/runtime/services/service.ts +54 -31
|
@@ -1,171 +1,100 @@
|
|
|
1
1
|
import _, { cloneDeep } from "lodash";
|
|
2
|
+
import { handlersProps } from "./interface";
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
export const executeEvents = async (
|
|
5
|
-
|
|
6
|
-
store: any, dynamicData: any, userValue: any,
|
|
7
|
-
service: any, serviceHolder: any, eventGroups?: any, parentEventOutput?: any
|
|
6
|
+
params:handlersProps
|
|
8
7
|
) => {
|
|
9
8
|
let nextEvent = [];
|
|
10
9
|
let LoadResponse = null;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
store, dynamicData, userValue,
|
|
14
|
-
service, serviceHolder, eventGroups, parentEventOutput)
|
|
15
|
-
if (config.returnResponse) {
|
|
16
|
-
return response;
|
|
17
|
-
}
|
|
18
|
-
LoadResponse = response;
|
|
19
|
-
nextEvent = events;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
if (!shouldEventExecute(config, componentName,
|
|
23
|
-
store, dynamicData, userValue,
|
|
24
|
-
service, serviceHolder, eventGroups)) {
|
|
10
|
+
try{
|
|
11
|
+
if (!shouldEventExecute(params)) {
|
|
25
12
|
return { response: undefined, events: undefined };
|
|
26
13
|
}
|
|
27
|
-
const
|
|
28
|
-
store, dynamicData, userValue,
|
|
29
|
-
service, serviceHolder, eventGroups, parentEventOutput)
|
|
14
|
+
const response = await executeEventsHandler(params)
|
|
30
15
|
LoadResponse = response;
|
|
31
|
-
|
|
16
|
+
const SuccessEvent = params.config?.events.filter(e => e.eventType === "Success");
|
|
17
|
+
if(params.config.returnNeeded){
|
|
18
|
+
return LoadResponse
|
|
19
|
+
}
|
|
20
|
+
nextEvent = SuccessEvent;
|
|
21
|
+
} catch (err) {
|
|
22
|
+
const FailEvent = params.config?.events?.filter(e => e.eventType === "Fail")
|
|
23
|
+
const setEvent = FailEvent?.length > 0 ? FailEvent : []
|
|
24
|
+
nextEvent = setEvent;
|
|
32
25
|
}
|
|
33
26
|
if (nextEvent?.length > 0) {
|
|
34
27
|
for (const actionConfig of nextEvent) {
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
const executetOnLoadEvent = async (
|
|
40
|
-
config: any, componentName: string,
|
|
41
|
-
store: any, dynamicData: any, userValue: any,
|
|
42
|
-
service: any, serviceHolder: any, eventGroups?: any, parentEventOutput?: any
|
|
43
|
-
) => {
|
|
44
|
-
|
|
45
|
-
try {
|
|
46
|
-
if (!shouldEventExecute(config, componentName,
|
|
47
|
-
store, dynamicData, userValue,
|
|
48
|
-
service, serviceHolder, eventGroups)) {
|
|
49
|
-
return { response: undefined, events: undefined };
|
|
28
|
+
await executeEvents({...params,config:actionConfig,parentEventOutput:LoadResponse})
|
|
50
29
|
}
|
|
51
|
-
const { response } = await executeEventsHandler(config, componentName,
|
|
52
|
-
store, dynamicData, userValue,
|
|
53
|
-
service, serviceHolder, eventGroups, parentEventOutput)
|
|
54
|
-
if(config.returnResponse){
|
|
55
|
-
return {response}
|
|
56
|
-
}
|
|
57
|
-
const SuccessEvent = config?.events.filter(e => e.eventType === "Success")
|
|
58
|
-
const setEvent = SuccessEvent.length > 0 ? SuccessEvent : [{ Handler: "mergeFormdata", eventType: "Success", type: config.type }]
|
|
59
|
-
return { response, events: setEvent };
|
|
60
|
-
} catch (err) {
|
|
61
|
-
const FailEvent = config?.events.filter(e => e.eventType === "Fail")
|
|
62
|
-
const setEvent = FailEvent.length > 0 ? FailEvent : []
|
|
63
|
-
return { response: undefined, events: setEvent };
|
|
64
30
|
}
|
|
65
|
-
|
|
31
|
+
return LoadResponse;
|
|
66
32
|
}
|
|
67
33
|
|
|
68
|
-
async function executeEventsHandler(
|
|
69
|
-
config
|
|
70
|
-
|
|
71
|
-
service: any, serviceHolder: any, eventGroups?: any, parentEventOutput?: any
|
|
72
|
-
) {
|
|
73
|
-
if (config.Handler === "api") {
|
|
74
|
-
return await executeApiEventHandler(
|
|
75
|
-
config, componentName,
|
|
76
|
-
store, dynamicData, userValue,
|
|
77
|
-
service, serviceHolder, parentEventOutput
|
|
78
|
-
)
|
|
34
|
+
async function executeEventsHandler(params:handlersProps) {
|
|
35
|
+
if (params.config.Handler === "api") {
|
|
36
|
+
return await executeApiEventHandler(params)
|
|
79
37
|
}
|
|
80
|
-
else if (config.Handler === "inBuiltFunction") {
|
|
81
|
-
return await executeInBuiltFunctionHandler(
|
|
82
|
-
config, componentName,
|
|
83
|
-
store, dynamicData, userValue,
|
|
84
|
-
service, serviceHolder, parentEventOutput
|
|
85
|
-
)
|
|
38
|
+
else if (params.config.Handler === "inBuiltFunction") {
|
|
39
|
+
return await executeInBuiltFunctionHandler(params)
|
|
86
40
|
}
|
|
87
|
-
else if (config.Handler === "custom") {
|
|
88
|
-
return await executeCustomHandler(
|
|
89
|
-
config, componentName,
|
|
90
|
-
store, dynamicData, userValue,
|
|
91
|
-
service, serviceHolder, parentEventOutput
|
|
92
|
-
)
|
|
41
|
+
else if (params.config.Handler === "custom") {
|
|
42
|
+
return await executeCustomHandler(params)
|
|
93
43
|
}
|
|
94
|
-
else if (config.Handler === "refresh") {
|
|
95
|
-
return await executeRefreshHandler(
|
|
96
|
-
config, componentName,
|
|
97
|
-
store, dynamicData, userValue,
|
|
98
|
-
service, serviceHolder, parentEventOutput, eventGroups
|
|
99
|
-
)
|
|
44
|
+
else if (params.config.Handler === "refresh") {
|
|
45
|
+
return await executeRefreshHandler(params)
|
|
100
46
|
}
|
|
101
|
-
else if (config.Handler === "mergeFormdata") {
|
|
102
|
-
return await mergeFormdata(
|
|
47
|
+
else if (params.config.Handler === "mergeFormdata") {
|
|
48
|
+
return await mergeFormdata(
|
|
49
|
+
params.parentEventOutput, params.componentName, params.config, params.store)
|
|
103
50
|
}
|
|
104
51
|
}
|
|
105
|
-
async function executeRefreshHandler(
|
|
106
|
-
|
|
107
|
-
store: any, dynamicData: any, userValue: any,
|
|
108
|
-
service: any, serviceHolder: any, parentEventOutput?: any, eventGroups?: any
|
|
109
|
-
) {
|
|
110
|
-
const compToRefresh: string[] = getRefreshElements(refreshConfig, eventGroups)
|
|
52
|
+
async function executeRefreshHandler(params:handlersProps) {
|
|
53
|
+
const compToRefresh: string[] = getRefreshElements(params.config, params.eventGroups)
|
|
111
54
|
for (const componentName of compToRefresh) {
|
|
112
|
-
for (const compEventConfig of eventGroups.onLoad[componentName]) {
|
|
113
|
-
await executeEvents(compEventConfig
|
|
55
|
+
for (const compEventConfig of params.eventGroups.onLoad[componentName]) {
|
|
56
|
+
await executeEvents({...params,config:compEventConfig});
|
|
114
57
|
}
|
|
115
58
|
}
|
|
116
|
-
return { response: undefined, events: undefined }
|
|
117
59
|
}
|
|
118
|
-
async function executeApiEventHandler(
|
|
119
|
-
|
|
120
|
-
service: any, serviceHolder: any, parentEventOutput?: any) {
|
|
121
|
-
const initialBody = { ...userValue?.payload };
|
|
60
|
+
async function executeApiEventHandler(params:handlersProps) {
|
|
61
|
+
const initialBody = { ...params.userValue?.payload };
|
|
122
62
|
const initialHeaders = {
|
|
123
63
|
"X-Requested-With": "XMLHttpRequest",
|
|
124
64
|
"Access-Control-Allow-Origin": "*"
|
|
125
65
|
};
|
|
126
|
-
const { body, headers } = await buildApiPayload(
|
|
127
|
-
|
|
128
|
-
response = await service[
|
|
129
|
-
|
|
66
|
+
const { body, headers } = await buildApiPayload(params.config, initialBody, initialHeaders, params.store, params.dynamicData, params.userValue, params.service)
|
|
67
|
+
|
|
68
|
+
const response = await params.service[params.config.method](
|
|
69
|
+
params.config.path,
|
|
130
70
|
body,
|
|
131
71
|
headers && { headers: headers }
|
|
132
72
|
);
|
|
133
|
-
|
|
134
|
-
return {response}
|
|
135
|
-
}
|
|
136
|
-
return { response, events: apiHandlerConfig?.events };;
|
|
73
|
+
return response;
|
|
137
74
|
}
|
|
138
75
|
|
|
139
|
-
async function executeInBuiltFunctionHandler(
|
|
140
|
-
store: any, dynamicData: any, userValue: any,
|
|
141
|
-
service: any, serviceHolder: any, parentEventOutput?: any) {
|
|
76
|
+
async function executeInBuiltFunctionHandler(params:handlersProps) {
|
|
142
77
|
let parameter = {};
|
|
143
|
-
if (
|
|
144
|
-
const makeFunc = eval(
|
|
145
|
-
parameter = makeFunc(store, dynamicData, userValue, parentEventOutput, service);
|
|
78
|
+
if (params.config.funcParametersCode) {
|
|
79
|
+
const makeFunc = eval(params.config.funcParametersCode)
|
|
80
|
+
parameter = makeFunc(params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service);
|
|
146
81
|
}
|
|
147
|
-
serviceHolder[
|
|
148
|
-
return { response: undefined, events: refreshHandlerConfig?.events };;
|
|
82
|
+
params.serviceHolder[params.config.inBuiltFunctionType](parameter)
|
|
149
83
|
}
|
|
150
84
|
|
|
151
|
-
async function executeCustomHandler(
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const makeFunc = eval(customHandlerConfig.eventCode)
|
|
156
|
-
const response = await makeFunc(store, dynamicData, userValue, parentEventOutput, service, componentName);
|
|
157
|
-
return { response: response, events: customHandlerConfig?.events };
|
|
85
|
+
async function executeCustomHandler(params:handlersProps) {
|
|
86
|
+
const makeFunc = eval(params.config.eventCode)
|
|
87
|
+
const response = await makeFunc(params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service, params.componentName);
|
|
88
|
+
return response;
|
|
158
89
|
}
|
|
159
90
|
|
|
160
91
|
async function mergeFormdata(handlerResponse: any, componentName: string, eventConfig: any, store: any) {
|
|
161
|
-
|
|
162
92
|
if (eventConfig.type === "Select" && !(_.isEmpty(handlerResponse) && handlerResponse)) {
|
|
163
93
|
store.setSchema((pre) => {
|
|
164
94
|
return {
|
|
165
95
|
...pre, properties: {
|
|
166
96
|
...pre.properties, [componentName]: {
|
|
167
|
-
|
|
168
|
-
oneOf: handlerResponse.data
|
|
97
|
+
enum: handlerResponse.data
|
|
169
98
|
}
|
|
170
99
|
}
|
|
171
100
|
}
|
|
@@ -175,16 +104,12 @@ async function mergeFormdata(handlerResponse: any, componentName: string, eventC
|
|
|
175
104
|
store.setFormdata((pre: any) => { return { ...pre, ...handlerResponse?.data } })
|
|
176
105
|
}
|
|
177
106
|
else {
|
|
178
|
-
handlerResponse
|
|
179
|
-
store.setFormdata((pre) => { return { ...pre, [componentName]: handlerResponse
|
|
107
|
+
if (handlerResponse) {
|
|
108
|
+
store.setFormdata((pre) => { return { ...pre, [componentName]: handlerResponse } });
|
|
109
|
+
}
|
|
180
110
|
}
|
|
181
|
-
|
|
182
|
-
return { response: undefined, events: undefined }
|
|
183
111
|
}
|
|
184
112
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
113
|
const buildBodyFormat = (body: any[], formData: any, userValue: any) => {
|
|
189
114
|
const finalBody = { ...userValue?.payload };
|
|
190
115
|
body.map((elem) => {
|
|
@@ -217,17 +142,14 @@ const buildHeadersFormat = (headers: any[]) => {
|
|
|
217
142
|
return headerObj;
|
|
218
143
|
}
|
|
219
144
|
|
|
220
|
-
async function shouldEventExecute(
|
|
221
|
-
|
|
222
|
-
service, serviceHolder, eventGroups) {
|
|
223
|
-
const startEvent = config?.events?.filter(e => e.eventType === "onStart");
|
|
145
|
+
async function shouldEventExecute(params:handlersProps) {
|
|
146
|
+
const startEvent = params.config?.events?.filter(e => e.eventType === "onStart");
|
|
224
147
|
if (startEvent?.length > 0) {
|
|
225
|
-
const { response } = await executeEventsHandler(
|
|
226
|
-
store, dynamicData, userValue,
|
|
227
|
-
service, serviceHolder, eventGroups);
|
|
148
|
+
const { response } = await executeEventsHandler(params);
|
|
228
149
|
return response
|
|
229
150
|
}
|
|
230
151
|
}
|
|
152
|
+
|
|
231
153
|
export async function buildApiPayload(compConfig: any, body: any, headers: any, store: any, dynamicData: any, userValue: any, service) {
|
|
232
154
|
if (compConfig?.headers) {
|
|
233
155
|
headers = buildHeadersFormat(compConfig.headers)
|
|
@@ -244,7 +166,6 @@ export async function buildApiPayload(compConfig: any, body: any, headers: any,
|
|
|
244
166
|
return { body, headers };
|
|
245
167
|
}
|
|
246
168
|
|
|
247
|
-
|
|
248
169
|
export function getRefreshElements(eventConfig: any, eventGropus: any) {
|
|
249
170
|
let result: string[] = [];
|
|
250
171
|
if (eventConfig?.refreshElements?.length > 0) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _ from "lodash";
|
|
2
2
|
import { downloadFile } from "./downloadFile";
|
|
3
3
|
import { executeEvents } from "./events";
|
|
4
|
+
import { handlersProps } from "./interface";
|
|
4
5
|
let compType: string;
|
|
5
6
|
let eventGroups: any = {};
|
|
6
7
|
const notifyUiSchema = {
|
|
@@ -25,10 +26,17 @@ export const extractEvents = (eventConfig: any) => {
|
|
|
25
26
|
if (!eventGroups[event.eventType][eventConfigObj.name]) {
|
|
26
27
|
eventGroups[event.eventType][eventConfigObj.name] = [];
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
+
const SuccessEvent = event?.events?.find((elem) => {
|
|
30
|
+
return elem.eventType === "Success"
|
|
31
|
+
})
|
|
32
|
+
if (!(!!SuccessEvent) && event.eventType === "onLoad" ) {
|
|
33
|
+
event.events.push({ Handler: "mergeFormdata", eventType: "Success", type: compType })
|
|
34
|
+
}
|
|
35
|
+
eventGroups[event.eventType][eventConfigObj.name].push({ ...event, type: compType })
|
|
29
36
|
});
|
|
30
37
|
}
|
|
31
38
|
}
|
|
39
|
+
|
|
32
40
|
extractsConfigEvents(eventConfig)
|
|
33
41
|
if (eventConfig?.elements) {
|
|
34
42
|
eventConfig.elements.forEach(extractEvents);
|
|
@@ -46,17 +54,29 @@ interface funcParamsProps {
|
|
|
46
54
|
userValue: any,
|
|
47
55
|
}
|
|
48
56
|
export default (funcParams: funcParamsProps) => {
|
|
57
|
+
eventGroups = {}
|
|
58
|
+
eventGroups = extractEvents(funcParams.config)
|
|
59
|
+
let executeEventsParameters: handlersProps = {
|
|
60
|
+
config: {}, componentName: "",
|
|
61
|
+
store: funcParams.store, dynamicData: funcParams.dynamicData, userValue: funcParams.userValue, service: funcParams.service,
|
|
62
|
+
serviceHolder: this, eventGroups
|
|
63
|
+
};
|
|
49
64
|
return {
|
|
50
65
|
setPage: async function () {
|
|
51
66
|
funcParams.store.setFormdata({});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
67
|
+
executeEventsParameters = {
|
|
68
|
+
config: {}, componentName: "",
|
|
69
|
+
store: funcParams.store, dynamicData: funcParams.dynamicData, userValue: funcParams.userValue, service: funcParams.service,
|
|
70
|
+
serviceHolder: this, eventGroups
|
|
71
|
+
}
|
|
72
|
+
await executeEvents({
|
|
73
|
+
...executeEventsParameters,
|
|
74
|
+
config: { Handler: "refresh", eventType: "onPageRefresh" },
|
|
75
|
+
componentName: "all"
|
|
76
|
+
})
|
|
77
|
+
|
|
58
78
|
funcParams.store.setSchema(
|
|
59
|
-
(pre:any) => {
|
|
79
|
+
(pre: any) => {
|
|
60
80
|
return {
|
|
61
81
|
...funcParams.schema, properties:
|
|
62
82
|
{ ...funcParams.schema.properties, ...pre.properties, }
|
|
@@ -68,36 +88,38 @@ export default (funcParams: funcParamsProps) => {
|
|
|
68
88
|
onClick: async function () {
|
|
69
89
|
const path = funcParams.dynamicData?.tableButtonPath || funcParams.dynamicData.path.split(".")[0];
|
|
70
90
|
for (const eventConfig of eventGroups?.onClick[path]) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
eventConfig,
|
|
74
|
-
|
|
75
|
-
|
|
91
|
+
await executeEvents({
|
|
92
|
+
...executeEventsParameters,
|
|
93
|
+
config: eventConfig,
|
|
94
|
+
componentName: path
|
|
95
|
+
})
|
|
76
96
|
}
|
|
77
97
|
},
|
|
78
98
|
onPaginationChange: async (paginationValues) => {
|
|
79
99
|
for (const eventConfig of eventGroups?.onLoad[paginationValues.path]) {
|
|
80
|
-
;
|
|
81
100
|
const bodyValues = [
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
{key:"
|
|
85
|
-
{key:"
|
|
101
|
+
{ key: "size", value: paginationValues.pagination.pageSize },
|
|
102
|
+
{ key: "start", value: paginationValues.pagination.pageIndex * paginationValues.pagination.pageSize },
|
|
103
|
+
{ key: "sorting", value: paginationValues.sorting || [] },
|
|
104
|
+
{ key: "filters", value: paginationValues.columnFilters || [] },
|
|
105
|
+
{ key: "globalFilter", value: paginationValues.globalFilter ?? '' }
|
|
86
106
|
]
|
|
87
107
|
if (eventConfig.body) {
|
|
88
|
-
eventConfig.returnResponse = true
|
|
89
108
|
eventConfig.body = [
|
|
90
109
|
...eventConfig.body,
|
|
91
110
|
...bodyValues
|
|
92
111
|
]
|
|
93
|
-
} else {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
} else { eventConfig.body = bodyValues; };
|
|
113
|
+
const responseEvent = eventConfig?.events?.filter((elem) => {
|
|
114
|
+
return elem.Handler !== "mergeFormdata"
|
|
115
|
+
})
|
|
116
|
+
eventConfig.events = responseEvent??[]
|
|
117
|
+
const data = await executeEvents({
|
|
118
|
+
...executeEventsParameters,
|
|
119
|
+
config: eventConfig,
|
|
120
|
+
componentName: paginationValues.path
|
|
121
|
+
})
|
|
122
|
+
return data;
|
|
101
123
|
}
|
|
102
124
|
},
|
|
103
125
|
onChange: async function () {
|
|
@@ -109,10 +131,11 @@ export default (funcParams: funcParamsProps) => {
|
|
|
109
131
|
funcParams.store?.newData[componentName] !== undefined
|
|
110
132
|
) {
|
|
111
133
|
for (const eventConfig of eventGroups.onChange[componentName]) {
|
|
112
|
-
await executeEvents(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
134
|
+
await executeEvents({
|
|
135
|
+
...executeEventsParameters,
|
|
136
|
+
config: eventConfig,
|
|
137
|
+
componentName
|
|
138
|
+
})
|
|
116
139
|
}
|
|
117
140
|
}
|
|
118
141
|
}))
|