form-builder-pro 1.0.10 → 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.js CHANGED
@@ -4260,32 +4260,99 @@ var formStore = createStore((set, get) => ({
4260
4260
  const updatedSections = cleanedSchema.sections.map((section) => ({
4261
4261
  ...section,
4262
4262
  fields: section.fields.map((field) => {
4263
- if (field.type === "select" && field.groupName) {
4264
- const masterType = state.masterTypes.find(
4265
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4266
- );
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
+ }
4267
4320
  if (masterType) {
4321
+ let options = [];
4268
4322
  if (masterType.enumName && state.dropdownOptionsMap && state.dropdownOptionsMap[masterType.enumName]) {
4269
- return { ...field, options: state.dropdownOptionsMap[masterType.enumName] };
4270
- }
4271
- if (!masterType.indexes || masterType.indexes.length === 0) {
4272
- console.warn(`[FormBuilder] Master type "${masterType.displayName}" (${masterType.name}) has empty indexes array. Dropdown will have no options. Please ensure the API returns populated indexes.`, {
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.`, {
4273
4334
  masterTypeId: masterType.id,
4274
4335
  masterTypeName: masterType.name,
4275
4336
  enumName: masterType.enumName,
4276
- indexes: masterType.indexes
4337
+ indexes: masterType.indexes,
4338
+ fieldId: field.id
4277
4339
  });
4278
4340
  }
4279
- if (masterType.indexes && masterType.indexes.length > 0) {
4280
- if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4281
- const options = convertIndexesToOptions(masterType.indexes);
4282
- console.log(`[FormBuilder] Populating ${options.length} options from master type "${masterType.displayName}"`);
4283
- return { ...field, options };
4341
+ if (options.length > 0) {
4342
+ if (!updatedField.options || updatedField.options.length === 0 || areDefaultOptions(updatedField.options)) {
4343
+ updatedField = {
4344
+ ...updatedField,
4345
+ options
4346
+ };
4284
4347
  }
4285
4348
  }
4286
- } else {
4287
- 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
+ });
4288
4354
  }
4355
+ return updatedField;
4289
4356
  }
4290
4357
  return field;
4291
4358
  })
@@ -4324,10 +4391,17 @@ var formStore = createStore((set, get) => ({
4324
4391
  const updatedSections = state.schema.sections.map((section) => ({
4325
4392
  ...section,
4326
4393
  fields: section.fields.map((field) => {
4327
- if (field.type === "select" && field.groupName) {
4328
- const masterType = state.masterTypes.find(
4329
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4330
- );
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
+ }
4331
4405
  if (masterType && masterType.indexes && masterType.indexes.length > 0) {
4332
4406
  if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4333
4407
  const options = convertIndexesToOptions(masterType.indexes);
@@ -4365,10 +4439,17 @@ var formStore = createStore((set, get) => ({
4365
4439
  const updatedSections = state.schema.sections.map((section) => ({
4366
4440
  ...section,
4367
4441
  fields: section.fields.map((field) => {
4368
- if (field.type === "select" && field.groupName) {
4369
- const masterType = state.masterTypes.find(
4370
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4371
- );
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
+ }
4372
4453
  if (masterType && masterType.enumName && map[masterType.enumName]) {
4373
4454
  return { ...field, options: map[masterType.enumName] };
4374
4455
  }
@@ -4409,16 +4490,40 @@ var formStore = createStore((set, get) => ({
4409
4490
  const updatedSections = state.schema.sections.map((section) => ({
4410
4491
  ...section,
4411
4492
  fields: section.fields.map((field) => {
4412
- if (field.type === "select" && field.groupName) {
4413
- const masterType = masterTypes.find(
4414
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4415
- );
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
+ }
4416
4520
  if (masterType && masterType.indexes && masterType.indexes.length > 0) {
4417
- if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4521
+ if (!updatedField.options || updatedField.options.length === 0 || areDefaultOptions(updatedField.options)) {
4418
4522
  const options = convertIndexesToOptions(masterType.indexes);
4419
- return { ...field, options };
4523
+ return { ...updatedField, options };
4420
4524
  }
4421
4525
  }
4526
+ return updatedField;
4422
4527
  }
4423
4528
  return field;
4424
4529
  })
@@ -8024,13 +8129,21 @@ var FormBuilder = class {
8024
8129
  }
8025
8130
  }
8026
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
+ }
8027
8140
  groupNameSelect.appendChild(createElement("option", {
8028
8141
  value: "",
8029
8142
  text: "None",
8030
- selected: !selectedField.groupName
8143
+ selected: !currentMasterType
8031
8144
  }));
8032
8145
  activeMasterTypes.forEach((mt) => {
8033
- const isSelected = selectedField.groupName && (selectedField.groupName.id === mt.id || selectedField.groupName.name === mt.name);
8146
+ const isSelected = currentMasterType && (selectedField.masterTypeName && mt.enumName === selectedField.masterTypeName || selectedField.groupName && (mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name));
8034
8147
  const optionValue = mt.enumName || mt.id || mt.name;
8035
8148
  groupNameSelect.appendChild(createElement("option", {
8036
8149
  value: optionValue,
@@ -8040,20 +8153,23 @@ var FormBuilder = class {
8040
8153
  });
8041
8154
  groupNameGroup.appendChild(groupNameSelect);
8042
8155
  body.appendChild(groupNameGroup);
8043
- if (selectedField.groupName && (!selectedField.options || selectedField.options.length === 0)) {
8044
- const currentMasterType = activeMasterTypes.find(
8045
- (mt) => mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name
8046
- );
8047
- if (currentMasterType) {
8048
- let options = [];
8049
- if (currentMasterType.enumName && dropdownOptionsMap && dropdownOptionsMap[currentMasterType.enumName]) {
8050
- options = dropdownOptionsMap[currentMasterType.enumName];
8051
- } else if (currentMasterType.indexes && currentMasterType.indexes.length > 0) {
8052
- options = convertIndexesToOptions(currentMasterType.indexes);
8053
- }
8054
- if (options.length > 0) {
8055
- formStore.getState().updateField(selectedField.id, { options });
8056
- }
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
+ });
8057
8173
  }
8058
8174
  }
8059
8175
  }