form-builder-pro 1.0.10 → 1.0.12

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
  })
@@ -7602,6 +7707,7 @@ var FormBuilder = class {
7602
7707
  const main = createElement("div", { className: "flex flex-col md:flex-row flex-1 overflow-hidden" });
7603
7708
  if (state.isPreviewMode) {
7604
7709
  const masterTypes = state.masterTypes;
7710
+ const dropdownOptionsMap = state.dropdownOptionsMap;
7605
7711
  if (masterTypes && masterTypes.length > 0 && state.schema.sections) {
7606
7712
  const convertIndexesToOptions = (indexes) => {
7607
7713
  if (!indexes || !Array.isArray(indexes) || indexes.length === 0) {
@@ -7631,14 +7737,28 @@ var FormBuilder = class {
7631
7737
  sections: state.schema.sections.map((section) => ({
7632
7738
  ...section,
7633
7739
  fields: section.fields.map((field) => {
7634
- if (field.type === "select" && field.groupName) {
7635
- const masterType = masterTypes.find(
7636
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
7637
- );
7638
- if (masterType && masterType.indexes && masterType.indexes.length > 0) {
7639
- if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
7640
- const options = convertIndexesToOptions(masterType.indexes);
7641
- return { ...field, options };
7740
+ if (field.type === "select") {
7741
+ let masterType;
7742
+ if (field.masterTypeName) {
7743
+ masterType = masterTypes.find(
7744
+ (mt) => mt.active === true && mt.enumName === field.masterTypeName
7745
+ );
7746
+ } else if (field.groupName) {
7747
+ masterType = masterTypes.find(
7748
+ (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
7749
+ );
7750
+ }
7751
+ if (masterType) {
7752
+ let options = [];
7753
+ if (masterType.enumName && dropdownOptionsMap && dropdownOptionsMap[masterType.enumName]) {
7754
+ options = dropdownOptionsMap[masterType.enumName];
7755
+ } else if (masterType.indexes && masterType.indexes.length > 0) {
7756
+ options = convertIndexesToOptions(masterType.indexes);
7757
+ }
7758
+ if (options.length > 0) {
7759
+ if (field.masterTypeName || !field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
7760
+ return { ...field, options };
7761
+ }
7642
7762
  }
7643
7763
  }
7644
7764
  }
@@ -8024,13 +8144,21 @@ var FormBuilder = class {
8024
8144
  }
8025
8145
  }
8026
8146
  });
8147
+ let currentMasterType;
8148
+ if (selectedField.masterTypeName) {
8149
+ currentMasterType = activeMasterTypes.find((mt) => mt.enumName === selectedField.masterTypeName);
8150
+ } else if (selectedField.groupName) {
8151
+ currentMasterType = activeMasterTypes.find(
8152
+ (mt) => mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name
8153
+ );
8154
+ }
8027
8155
  groupNameSelect.appendChild(createElement("option", {
8028
8156
  value: "",
8029
8157
  text: "None",
8030
- selected: !selectedField.groupName
8158
+ selected: !currentMasterType
8031
8159
  }));
8032
8160
  activeMasterTypes.forEach((mt) => {
8033
- const isSelected = selectedField.groupName && (selectedField.groupName.id === mt.id || selectedField.groupName.name === mt.name);
8161
+ const isSelected = currentMasterType && (selectedField.masterTypeName && mt.enumName === selectedField.masterTypeName || selectedField.groupName && (mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name));
8034
8162
  const optionValue = mt.enumName || mt.id || mt.name;
8035
8163
  groupNameSelect.appendChild(createElement("option", {
8036
8164
  value: optionValue,
@@ -8040,20 +8168,23 @@ var FormBuilder = class {
8040
8168
  });
8041
8169
  groupNameGroup.appendChild(groupNameSelect);
8042
8170
  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
- }
8171
+ if (currentMasterType && (!selectedField.options || selectedField.options.length === 0)) {
8172
+ let options = [];
8173
+ if (currentMasterType.enumName && dropdownOptionsMap && dropdownOptionsMap[currentMasterType.enumName]) {
8174
+ options = dropdownOptionsMap[currentMasterType.enumName];
8175
+ } else if (currentMasterType.indexes && currentMasterType.indexes.length > 0) {
8176
+ options = convertIndexesToOptions(currentMasterType.indexes);
8177
+ }
8178
+ if (options.length > 0) {
8179
+ formStore.getState().updateField(selectedField.id, { options });
8180
+ }
8181
+ if (selectedField.masterTypeName && !selectedField.groupName) {
8182
+ formStore.getState().updateField(selectedField.id, {
8183
+ groupName: {
8184
+ id: currentMasterType.id,
8185
+ name: currentMasterType.name
8186
+ }
8187
+ });
8057
8188
  }
8058
8189
  }
8059
8190
  }