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.mjs CHANGED
@@ -4258,32 +4258,99 @@ var formStore = createStore((set, get) => ({
4258
4258
  const updatedSections = cleanedSchema.sections.map((section) => ({
4259
4259
  ...section,
4260
4260
  fields: section.fields.map((field) => {
4261
- if (field.type === "select" && field.groupName) {
4262
- const masterType = state.masterTypes.find(
4263
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4264
- );
4261
+ if (field.type === "select") {
4262
+ let masterType;
4263
+ let updatedField = { ...field };
4264
+ if (field.masterTypeName && !field.groupName) {
4265
+ masterType = state.masterTypes.find(
4266
+ (mt) => mt.active === true && mt.enumName === field.masterTypeName
4267
+ );
4268
+ if (masterType) {
4269
+ updatedField = {
4270
+ ...updatedField,
4271
+ groupName: {
4272
+ id: masterType.id,
4273
+ name: masterType.name
4274
+ }
4275
+ };
4276
+ if (process.env.NODE_ENV === "development") {
4277
+ console.log(`[FormBuilder] Hydrating dropdown field "${field.id}": Resolved groupName from masterTypeName "${field.masterTypeName}"`, {
4278
+ fieldId: field.id,
4279
+ masterTypeName: field.masterTypeName,
4280
+ groupName: updatedField.groupName
4281
+ });
4282
+ }
4283
+ } else {
4284
+ console.warn(`[FormBuilder] Master type not found for masterTypeName: "${field.masterTypeName}"`, {
4285
+ fieldId: field.id,
4286
+ masterTypeName: field.masterTypeName
4287
+ });
4288
+ }
4289
+ } else if (field.groupName) {
4290
+ masterType = state.masterTypes.find(
4291
+ (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4292
+ );
4293
+ if (masterType && !field.masterTypeName && masterType.enumName) {
4294
+ updatedField = {
4295
+ ...updatedField,
4296
+ masterTypeName: masterType.enumName
4297
+ };
4298
+ }
4299
+ } else if (field.masterTypeName && field.groupName) {
4300
+ masterType = state.masterTypes.find(
4301
+ (mt) => mt.active === true && mt.enumName === field.masterTypeName && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4302
+ );
4303
+ if (!masterType) {
4304
+ masterType = state.masterTypes.find(
4305
+ (mt) => mt.active === true && mt.enumName === field.masterTypeName
4306
+ );
4307
+ if (masterType) {
4308
+ updatedField = {
4309
+ ...updatedField,
4310
+ groupName: {
4311
+ id: masterType.id,
4312
+ name: masterType.name
4313
+ }
4314
+ };
4315
+ }
4316
+ }
4317
+ }
4265
4318
  if (masterType) {
4319
+ let options = [];
4266
4320
  if (masterType.enumName && state.dropdownOptionsMap && state.dropdownOptionsMap[masterType.enumName]) {
4267
- return { ...field, options: state.dropdownOptionsMap[masterType.enumName] };
4268
- }
4269
- if (!masterType.indexes || masterType.indexes.length === 0) {
4270
- 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.`, {
4321
+ options = state.dropdownOptionsMap[masterType.enumName];
4322
+ if (process.env.NODE_ENV === "development") {
4323
+ console.log(`[FormBuilder] Hydrating dropdown field "${field.id}": Loaded ${options.length} options from dropdownOptionsMap for "${masterType.enumName}"`);
4324
+ }
4325
+ } else if (masterType.indexes && masterType.indexes.length > 0) {
4326
+ options = convertIndexesToOptions(masterType.indexes);
4327
+ if (process.env.NODE_ENV === "development") {
4328
+ console.log(`[FormBuilder] Hydrating dropdown field "${field.id}": Loaded ${options.length} options from master type indexes for "${masterType.displayName}"`);
4329
+ }
4330
+ } else {
4331
+ 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.`, {
4271
4332
  masterTypeId: masterType.id,
4272
4333
  masterTypeName: masterType.name,
4273
4334
  enumName: masterType.enumName,
4274
- indexes: masterType.indexes
4335
+ indexes: masterType.indexes,
4336
+ fieldId: field.id
4275
4337
  });
4276
4338
  }
4277
- if (masterType.indexes && masterType.indexes.length > 0) {
4278
- if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4279
- const options = convertIndexesToOptions(masterType.indexes);
4280
- console.log(`[FormBuilder] Populating ${options.length} options from master type "${masterType.displayName}"`);
4281
- return { ...field, options };
4339
+ if (options.length > 0) {
4340
+ if (!updatedField.options || updatedField.options.length === 0 || areDefaultOptions(updatedField.options)) {
4341
+ updatedField = {
4342
+ ...updatedField,
4343
+ options
4344
+ };
4282
4345
  }
4283
4346
  }
4284
- } else {
4285
- console.warn("[FormBuilder] Master type not found for groupName:", field.groupName);
4347
+ } else if (field.groupName) {
4348
+ console.warn("[FormBuilder] Master type not found for groupName:", field.groupName, {
4349
+ fieldId: field.id,
4350
+ groupName: field.groupName
4351
+ });
4286
4352
  }
4353
+ return updatedField;
4287
4354
  }
4288
4355
  return field;
4289
4356
  })
@@ -4322,10 +4389,17 @@ var formStore = createStore((set, get) => ({
4322
4389
  const updatedSections = state.schema.sections.map((section) => ({
4323
4390
  ...section,
4324
4391
  fields: section.fields.map((field) => {
4325
- if (field.type === "select" && field.groupName) {
4326
- const masterType = state.masterTypes.find(
4327
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4328
- );
4392
+ if (field.type === "select") {
4393
+ let masterType;
4394
+ if (field.masterTypeName) {
4395
+ masterType = state.masterTypes.find(
4396
+ (mt) => mt.active === true && mt.enumName === field.masterTypeName
4397
+ );
4398
+ } else if (field.groupName) {
4399
+ masterType = state.masterTypes.find(
4400
+ (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4401
+ );
4402
+ }
4329
4403
  if (masterType && masterType.indexes && masterType.indexes.length > 0) {
4330
4404
  if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4331
4405
  const options = convertIndexesToOptions(masterType.indexes);
@@ -4363,10 +4437,17 @@ var formStore = createStore((set, get) => ({
4363
4437
  const updatedSections = state.schema.sections.map((section) => ({
4364
4438
  ...section,
4365
4439
  fields: section.fields.map((field) => {
4366
- if (field.type === "select" && field.groupName) {
4367
- const masterType = state.masterTypes.find(
4368
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4369
- );
4440
+ if (field.type === "select") {
4441
+ let masterType;
4442
+ if (field.masterTypeName) {
4443
+ masterType = state.masterTypes.find(
4444
+ (mt) => mt.active === true && mt.enumName === field.masterTypeName
4445
+ );
4446
+ } else if (field.groupName) {
4447
+ masterType = state.masterTypes.find(
4448
+ (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4449
+ );
4450
+ }
4370
4451
  if (masterType && masterType.enumName && map[masterType.enumName]) {
4371
4452
  return { ...field, options: map[masterType.enumName] };
4372
4453
  }
@@ -4407,16 +4488,40 @@ var formStore = createStore((set, get) => ({
4407
4488
  const updatedSections = state.schema.sections.map((section) => ({
4408
4489
  ...section,
4409
4490
  fields: section.fields.map((field) => {
4410
- if (field.type === "select" && field.groupName) {
4411
- const masterType = masterTypes.find(
4412
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4413
- );
4491
+ if (field.type === "select") {
4492
+ let masterType;
4493
+ let updatedField = { ...field };
4494
+ if (field.masterTypeName) {
4495
+ masterType = masterTypes.find(
4496
+ (mt) => mt.active === true && mt.enumName === field.masterTypeName
4497
+ );
4498
+ if (masterType && !field.groupName) {
4499
+ updatedField = {
4500
+ ...updatedField,
4501
+ groupName: {
4502
+ id: masterType.id,
4503
+ name: masterType.name
4504
+ }
4505
+ };
4506
+ }
4507
+ } else if (field.groupName) {
4508
+ masterType = masterTypes.find(
4509
+ (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4510
+ );
4511
+ if (masterType && !field.masterTypeName && masterType.enumName) {
4512
+ updatedField = {
4513
+ ...updatedField,
4514
+ masterTypeName: masterType.enumName
4515
+ };
4516
+ }
4517
+ }
4414
4518
  if (masterType && masterType.indexes && masterType.indexes.length > 0) {
4415
- if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4519
+ if (!updatedField.options || updatedField.options.length === 0 || areDefaultOptions(updatedField.options)) {
4416
4520
  const options = convertIndexesToOptions(masterType.indexes);
4417
- return { ...field, options };
4521
+ return { ...updatedField, options };
4418
4522
  }
4419
4523
  }
4524
+ return updatedField;
4420
4525
  }
4421
4526
  return field;
4422
4527
  })
@@ -8022,13 +8127,21 @@ var FormBuilder = class {
8022
8127
  }
8023
8128
  }
8024
8129
  });
8130
+ let currentMasterType;
8131
+ if (selectedField.masterTypeName) {
8132
+ currentMasterType = activeMasterTypes.find((mt) => mt.enumName === selectedField.masterTypeName);
8133
+ } else if (selectedField.groupName) {
8134
+ currentMasterType = activeMasterTypes.find(
8135
+ (mt) => mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name
8136
+ );
8137
+ }
8025
8138
  groupNameSelect.appendChild(createElement("option", {
8026
8139
  value: "",
8027
8140
  text: "None",
8028
- selected: !selectedField.groupName
8141
+ selected: !currentMasterType
8029
8142
  }));
8030
8143
  activeMasterTypes.forEach((mt) => {
8031
- const isSelected = selectedField.groupName && (selectedField.groupName.id === mt.id || selectedField.groupName.name === mt.name);
8144
+ const isSelected = currentMasterType && (selectedField.masterTypeName && mt.enumName === selectedField.masterTypeName || selectedField.groupName && (mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name));
8032
8145
  const optionValue = mt.enumName || mt.id || mt.name;
8033
8146
  groupNameSelect.appendChild(createElement("option", {
8034
8147
  value: optionValue,
@@ -8038,20 +8151,23 @@ var FormBuilder = class {
8038
8151
  });
8039
8152
  groupNameGroup.appendChild(groupNameSelect);
8040
8153
  body.appendChild(groupNameGroup);
8041
- if (selectedField.groupName && (!selectedField.options || selectedField.options.length === 0)) {
8042
- const currentMasterType = activeMasterTypes.find(
8043
- (mt) => mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name
8044
- );
8045
- if (currentMasterType) {
8046
- let options = [];
8047
- if (currentMasterType.enumName && dropdownOptionsMap && dropdownOptionsMap[currentMasterType.enumName]) {
8048
- options = dropdownOptionsMap[currentMasterType.enumName];
8049
- } else if (currentMasterType.indexes && currentMasterType.indexes.length > 0) {
8050
- options = convertIndexesToOptions(currentMasterType.indexes);
8051
- }
8052
- if (options.length > 0) {
8053
- formStore.getState().updateField(selectedField.id, { options });
8054
- }
8154
+ if (currentMasterType && (!selectedField.options || selectedField.options.length === 0)) {
8155
+ let options = [];
8156
+ if (currentMasterType.enumName && dropdownOptionsMap && dropdownOptionsMap[currentMasterType.enumName]) {
8157
+ options = dropdownOptionsMap[currentMasterType.enumName];
8158
+ } else if (currentMasterType.indexes && currentMasterType.indexes.length > 0) {
8159
+ options = convertIndexesToOptions(currentMasterType.indexes);
8160
+ }
8161
+ if (options.length > 0) {
8162
+ formStore.getState().updateField(selectedField.id, { options });
8163
+ }
8164
+ if (selectedField.masterTypeName && !selectedField.groupName) {
8165
+ formStore.getState().updateField(selectedField.id, {
8166
+ groupName: {
8167
+ id: currentMasterType.id,
8168
+ name: currentMasterType.name
8169
+ }
8170
+ });
8055
8171
  }
8056
8172
  }
8057
8173
  }