form-builder-pro 1.0.9 → 1.0.11
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/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +167 -46
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +167 -46
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -39,6 +39,7 @@ interface FormField {
|
|
|
39
39
|
id: string;
|
|
40
40
|
name: string;
|
|
41
41
|
};
|
|
42
|
+
masterTypeName?: string;
|
|
42
43
|
enabled?: boolean;
|
|
43
44
|
visible?: boolean;
|
|
44
45
|
}
|
|
@@ -234,8 +235,8 @@ declare class FormRenderer {
|
|
|
234
235
|
/**
|
|
235
236
|
* Cleans a form schema by removing invalid properties and normalizing field types
|
|
236
237
|
* - Converts "decimal" type to "number"
|
|
237
|
-
* - Removes invalid properties like "masterTypeName"
|
|
238
238
|
* - Removes empty options arrays from non-select/radio fields
|
|
239
|
+
* - Preserves masterTypeName for select fields with groupName
|
|
239
240
|
* @param schema
|
|
240
241
|
* @returns Cleaned schema
|
|
241
242
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ interface FormField {
|
|
|
39
39
|
id: string;
|
|
40
40
|
name: string;
|
|
41
41
|
};
|
|
42
|
+
masterTypeName?: string;
|
|
42
43
|
enabled?: boolean;
|
|
43
44
|
visible?: boolean;
|
|
44
45
|
}
|
|
@@ -234,8 +235,8 @@ declare class FormRenderer {
|
|
|
234
235
|
/**
|
|
235
236
|
* Cleans a form schema by removing invalid properties and normalizing field types
|
|
236
237
|
* - Converts "decimal" type to "number"
|
|
237
|
-
* - Removes invalid properties like "masterTypeName"
|
|
238
238
|
* - Removes empty options arrays from non-select/radio fields
|
|
239
|
+
* - Preserves masterTypeName for select fields with groupName
|
|
239
240
|
* @param schema
|
|
240
241
|
* @returns Cleaned schema
|
|
241
242
|
*/
|
package/dist/index.js
CHANGED
|
@@ -4188,6 +4188,9 @@ var cleanFormSchema = (schema) => {
|
|
|
4188
4188
|
if (field.type === "select" && field.groupName) {
|
|
4189
4189
|
cleaned.groupName = field.groupName;
|
|
4190
4190
|
}
|
|
4191
|
+
if (field.type === "select" && field.masterTypeName !== void 0) {
|
|
4192
|
+
cleaned.masterTypeName = field.masterTypeName;
|
|
4193
|
+
}
|
|
4191
4194
|
return cleaned;
|
|
4192
4195
|
};
|
|
4193
4196
|
return {
|
|
@@ -4257,32 +4260,99 @@ var formStore = createStore((set, get) => ({
|
|
|
4257
4260
|
const updatedSections = cleanedSchema.sections.map((section) => ({
|
|
4258
4261
|
...section,
|
|
4259
4262
|
fields: section.fields.map((field) => {
|
|
4260
|
-
if (field.type === "select"
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
)
|
|
4263
|
+
if (field.type === "select") {
|
|
4264
|
+
let masterType;
|
|
4265
|
+
let updatedField = { ...field };
|
|
4266
|
+
if (field.masterTypeName && !field.groupName) {
|
|
4267
|
+
masterType = state.masterTypes.find(
|
|
4268
|
+
(mt) => mt.active === true && mt.enumName === field.masterTypeName
|
|
4269
|
+
);
|
|
4270
|
+
if (masterType) {
|
|
4271
|
+
updatedField = {
|
|
4272
|
+
...updatedField,
|
|
4273
|
+
groupName: {
|
|
4274
|
+
id: masterType.id,
|
|
4275
|
+
name: masterType.name
|
|
4276
|
+
}
|
|
4277
|
+
};
|
|
4278
|
+
if (process.env.NODE_ENV === "development") {
|
|
4279
|
+
console.log(`[FormBuilder] Hydrating dropdown field "${field.id}": Resolved groupName from masterTypeName "${field.masterTypeName}"`, {
|
|
4280
|
+
fieldId: field.id,
|
|
4281
|
+
masterTypeName: field.masterTypeName,
|
|
4282
|
+
groupName: updatedField.groupName
|
|
4283
|
+
});
|
|
4284
|
+
}
|
|
4285
|
+
} else {
|
|
4286
|
+
console.warn(`[FormBuilder] Master type not found for masterTypeName: "${field.masterTypeName}"`, {
|
|
4287
|
+
fieldId: field.id,
|
|
4288
|
+
masterTypeName: field.masterTypeName
|
|
4289
|
+
});
|
|
4290
|
+
}
|
|
4291
|
+
} else if (field.groupName) {
|
|
4292
|
+
masterType = state.masterTypes.find(
|
|
4293
|
+
(mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
|
|
4294
|
+
);
|
|
4295
|
+
if (masterType && !field.masterTypeName && masterType.enumName) {
|
|
4296
|
+
updatedField = {
|
|
4297
|
+
...updatedField,
|
|
4298
|
+
masterTypeName: masterType.enumName
|
|
4299
|
+
};
|
|
4300
|
+
}
|
|
4301
|
+
} else if (field.masterTypeName && field.groupName) {
|
|
4302
|
+
masterType = state.masterTypes.find(
|
|
4303
|
+
(mt) => mt.active === true && mt.enumName === field.masterTypeName && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
|
|
4304
|
+
);
|
|
4305
|
+
if (!masterType) {
|
|
4306
|
+
masterType = state.masterTypes.find(
|
|
4307
|
+
(mt) => mt.active === true && mt.enumName === field.masterTypeName
|
|
4308
|
+
);
|
|
4309
|
+
if (masterType) {
|
|
4310
|
+
updatedField = {
|
|
4311
|
+
...updatedField,
|
|
4312
|
+
groupName: {
|
|
4313
|
+
id: masterType.id,
|
|
4314
|
+
name: masterType.name
|
|
4315
|
+
}
|
|
4316
|
+
};
|
|
4317
|
+
}
|
|
4318
|
+
}
|
|
4319
|
+
}
|
|
4264
4320
|
if (masterType) {
|
|
4321
|
+
let options = [];
|
|
4265
4322
|
if (masterType.enumName && state.dropdownOptionsMap && state.dropdownOptionsMap[masterType.enumName]) {
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4323
|
+
options = state.dropdownOptionsMap[masterType.enumName];
|
|
4324
|
+
if (process.env.NODE_ENV === "development") {
|
|
4325
|
+
console.log(`[FormBuilder] Hydrating dropdown field "${field.id}": Loaded ${options.length} options from dropdownOptionsMap for "${masterType.enumName}"`);
|
|
4326
|
+
}
|
|
4327
|
+
} else if (masterType.indexes && masterType.indexes.length > 0) {
|
|
4328
|
+
options = convertIndexesToOptions(masterType.indexes);
|
|
4329
|
+
if (process.env.NODE_ENV === "development") {
|
|
4330
|
+
console.log(`[FormBuilder] Hydrating dropdown field "${field.id}": Loaded ${options.length} options from master type indexes for "${masterType.displayName}"`);
|
|
4331
|
+
}
|
|
4332
|
+
} else {
|
|
4333
|
+
console.warn(`[FormBuilder] Master type "${masterType.displayName}" (${masterType.name}) has empty indexes array and no dropdownOptionsMap entry. Dropdown will have no options. Please ensure the API returns populated indexes or provide dropdownOptionsMap.`, {
|
|
4270
4334
|
masterTypeId: masterType.id,
|
|
4271
4335
|
masterTypeName: masterType.name,
|
|
4272
4336
|
enumName: masterType.enumName,
|
|
4273
|
-
indexes: masterType.indexes
|
|
4337
|
+
indexes: masterType.indexes,
|
|
4338
|
+
fieldId: field.id
|
|
4274
4339
|
});
|
|
4275
4340
|
}
|
|
4276
|
-
if (
|
|
4277
|
-
if (!
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4341
|
+
if (options.length > 0) {
|
|
4342
|
+
if (!updatedField.options || updatedField.options.length === 0 || areDefaultOptions(updatedField.options)) {
|
|
4343
|
+
updatedField = {
|
|
4344
|
+
...updatedField,
|
|
4345
|
+
options
|
|
4346
|
+
};
|
|
4281
4347
|
}
|
|
4282
4348
|
}
|
|
4283
|
-
} else {
|
|
4284
|
-
console.warn("[FormBuilder] Master type not found for groupName:", field.groupName
|
|
4349
|
+
} else if (field.groupName) {
|
|
4350
|
+
console.warn("[FormBuilder] Master type not found for groupName:", field.groupName, {
|
|
4351
|
+
fieldId: field.id,
|
|
4352
|
+
groupName: field.groupName
|
|
4353
|
+
});
|
|
4285
4354
|
}
|
|
4355
|
+
return updatedField;
|
|
4286
4356
|
}
|
|
4287
4357
|
return field;
|
|
4288
4358
|
})
|
|
@@ -4321,10 +4391,17 @@ var formStore = createStore((set, get) => ({
|
|
|
4321
4391
|
const updatedSections = state.schema.sections.map((section) => ({
|
|
4322
4392
|
...section,
|
|
4323
4393
|
fields: section.fields.map((field) => {
|
|
4324
|
-
if (field.type === "select"
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4394
|
+
if (field.type === "select") {
|
|
4395
|
+
let masterType;
|
|
4396
|
+
if (field.masterTypeName) {
|
|
4397
|
+
masterType = state.masterTypes.find(
|
|
4398
|
+
(mt) => mt.active === true && mt.enumName === field.masterTypeName
|
|
4399
|
+
);
|
|
4400
|
+
} else if (field.groupName) {
|
|
4401
|
+
masterType = state.masterTypes.find(
|
|
4402
|
+
(mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
|
|
4403
|
+
);
|
|
4404
|
+
}
|
|
4328
4405
|
if (masterType && masterType.indexes && masterType.indexes.length > 0) {
|
|
4329
4406
|
if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
|
|
4330
4407
|
const options = convertIndexesToOptions(masterType.indexes);
|
|
@@ -4362,10 +4439,17 @@ var formStore = createStore((set, get) => ({
|
|
|
4362
4439
|
const updatedSections = state.schema.sections.map((section) => ({
|
|
4363
4440
|
...section,
|
|
4364
4441
|
fields: section.fields.map((field) => {
|
|
4365
|
-
if (field.type === "select"
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4442
|
+
if (field.type === "select") {
|
|
4443
|
+
let masterType;
|
|
4444
|
+
if (field.masterTypeName) {
|
|
4445
|
+
masterType = state.masterTypes.find(
|
|
4446
|
+
(mt) => mt.active === true && mt.enumName === field.masterTypeName
|
|
4447
|
+
);
|
|
4448
|
+
} else if (field.groupName) {
|
|
4449
|
+
masterType = state.masterTypes.find(
|
|
4450
|
+
(mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
|
|
4451
|
+
);
|
|
4452
|
+
}
|
|
4369
4453
|
if (masterType && masterType.enumName && map[masterType.enumName]) {
|
|
4370
4454
|
return { ...field, options: map[masterType.enumName] };
|
|
4371
4455
|
}
|
|
@@ -4406,16 +4490,40 @@ var formStore = createStore((set, get) => ({
|
|
|
4406
4490
|
const updatedSections = state.schema.sections.map((section) => ({
|
|
4407
4491
|
...section,
|
|
4408
4492
|
fields: section.fields.map((field) => {
|
|
4409
|
-
if (field.type === "select"
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
)
|
|
4493
|
+
if (field.type === "select") {
|
|
4494
|
+
let masterType;
|
|
4495
|
+
let updatedField = { ...field };
|
|
4496
|
+
if (field.masterTypeName) {
|
|
4497
|
+
masterType = masterTypes.find(
|
|
4498
|
+
(mt) => mt.active === true && mt.enumName === field.masterTypeName
|
|
4499
|
+
);
|
|
4500
|
+
if (masterType && !field.groupName) {
|
|
4501
|
+
updatedField = {
|
|
4502
|
+
...updatedField,
|
|
4503
|
+
groupName: {
|
|
4504
|
+
id: masterType.id,
|
|
4505
|
+
name: masterType.name
|
|
4506
|
+
}
|
|
4507
|
+
};
|
|
4508
|
+
}
|
|
4509
|
+
} else if (field.groupName) {
|
|
4510
|
+
masterType = masterTypes.find(
|
|
4511
|
+
(mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
|
|
4512
|
+
);
|
|
4513
|
+
if (masterType && !field.masterTypeName && masterType.enumName) {
|
|
4514
|
+
updatedField = {
|
|
4515
|
+
...updatedField,
|
|
4516
|
+
masterTypeName: masterType.enumName
|
|
4517
|
+
};
|
|
4518
|
+
}
|
|
4519
|
+
}
|
|
4413
4520
|
if (masterType && masterType.indexes && masterType.indexes.length > 0) {
|
|
4414
|
-
if (!
|
|
4521
|
+
if (!updatedField.options || updatedField.options.length === 0 || areDefaultOptions(updatedField.options)) {
|
|
4415
4522
|
const options = convertIndexesToOptions(masterType.indexes);
|
|
4416
|
-
return { ...
|
|
4523
|
+
return { ...updatedField, options };
|
|
4417
4524
|
}
|
|
4418
4525
|
}
|
|
4526
|
+
return updatedField;
|
|
4419
4527
|
}
|
|
4420
4528
|
return field;
|
|
4421
4529
|
})
|
|
@@ -8001,6 +8109,7 @@ var FormBuilder = class {
|
|
|
8001
8109
|
id: selectedMasterType.id,
|
|
8002
8110
|
name: selectedMasterType.name
|
|
8003
8111
|
},
|
|
8112
|
+
masterTypeName: selectedEnumName,
|
|
8004
8113
|
options: options.length > 0 ? options : void 0
|
|
8005
8114
|
});
|
|
8006
8115
|
if (this.options.onGroupSelectionChange) {
|
|
@@ -8013,19 +8122,28 @@ var FormBuilder = class {
|
|
|
8013
8122
|
} else {
|
|
8014
8123
|
formStore.getState().updateField(selectedField.id, {
|
|
8015
8124
|
groupName: void 0,
|
|
8125
|
+
masterTypeName: void 0,
|
|
8016
8126
|
options: void 0
|
|
8017
8127
|
// Clear options when groupName is cleared
|
|
8018
8128
|
});
|
|
8019
8129
|
}
|
|
8020
8130
|
}
|
|
8021
8131
|
});
|
|
8132
|
+
let currentMasterType;
|
|
8133
|
+
if (selectedField.masterTypeName) {
|
|
8134
|
+
currentMasterType = activeMasterTypes.find((mt) => mt.enumName === selectedField.masterTypeName);
|
|
8135
|
+
} else if (selectedField.groupName) {
|
|
8136
|
+
currentMasterType = activeMasterTypes.find(
|
|
8137
|
+
(mt) => mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name
|
|
8138
|
+
);
|
|
8139
|
+
}
|
|
8022
8140
|
groupNameSelect.appendChild(createElement("option", {
|
|
8023
8141
|
value: "",
|
|
8024
8142
|
text: "None",
|
|
8025
|
-
selected: !
|
|
8143
|
+
selected: !currentMasterType
|
|
8026
8144
|
}));
|
|
8027
8145
|
activeMasterTypes.forEach((mt) => {
|
|
8028
|
-
const isSelected = selectedField.
|
|
8146
|
+
const isSelected = currentMasterType && (selectedField.masterTypeName && mt.enumName === selectedField.masterTypeName || selectedField.groupName && (mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name));
|
|
8029
8147
|
const optionValue = mt.enumName || mt.id || mt.name;
|
|
8030
8148
|
groupNameSelect.appendChild(createElement("option", {
|
|
8031
8149
|
value: optionValue,
|
|
@@ -8035,20 +8153,23 @@ var FormBuilder = class {
|
|
|
8035
8153
|
});
|
|
8036
8154
|
groupNameGroup.appendChild(groupNameSelect);
|
|
8037
8155
|
body.appendChild(groupNameGroup);
|
|
8038
|
-
if (
|
|
8039
|
-
|
|
8040
|
-
|
|
8041
|
-
|
|
8042
|
-
if (currentMasterType) {
|
|
8043
|
-
|
|
8044
|
-
|
|
8045
|
-
|
|
8046
|
-
|
|
8047
|
-
|
|
8048
|
-
|
|
8049
|
-
|
|
8050
|
-
|
|
8051
|
-
|
|
8156
|
+
if (currentMasterType && (!selectedField.options || selectedField.options.length === 0)) {
|
|
8157
|
+
let options = [];
|
|
8158
|
+
if (currentMasterType.enumName && dropdownOptionsMap && dropdownOptionsMap[currentMasterType.enumName]) {
|
|
8159
|
+
options = dropdownOptionsMap[currentMasterType.enumName];
|
|
8160
|
+
} else if (currentMasterType.indexes && currentMasterType.indexes.length > 0) {
|
|
8161
|
+
options = convertIndexesToOptions(currentMasterType.indexes);
|
|
8162
|
+
}
|
|
8163
|
+
if (options.length > 0) {
|
|
8164
|
+
formStore.getState().updateField(selectedField.id, { options });
|
|
8165
|
+
}
|
|
8166
|
+
if (selectedField.masterTypeName && !selectedField.groupName) {
|
|
8167
|
+
formStore.getState().updateField(selectedField.id, {
|
|
8168
|
+
groupName: {
|
|
8169
|
+
id: currentMasterType.id,
|
|
8170
|
+
name: currentMasterType.name
|
|
8171
|
+
}
|
|
8172
|
+
});
|
|
8052
8173
|
}
|
|
8053
8174
|
}
|
|
8054
8175
|
}
|