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.mjs CHANGED
@@ -4186,6 +4186,9 @@ var cleanFormSchema = (schema) => {
4186
4186
  if (field.type === "select" && field.groupName) {
4187
4187
  cleaned.groupName = field.groupName;
4188
4188
  }
4189
+ if (field.type === "select" && field.masterTypeName !== void 0) {
4190
+ cleaned.masterTypeName = field.masterTypeName;
4191
+ }
4189
4192
  return cleaned;
4190
4193
  };
4191
4194
  return {
@@ -4255,32 +4258,99 @@ var formStore = createStore((set, get) => ({
4255
4258
  const updatedSections = cleanedSchema.sections.map((section) => ({
4256
4259
  ...section,
4257
4260
  fields: section.fields.map((field) => {
4258
- if (field.type === "select" && field.groupName) {
4259
- const masterType = state.masterTypes.find(
4260
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4261
- );
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
+ }
4262
4318
  if (masterType) {
4319
+ let options = [];
4263
4320
  if (masterType.enumName && state.dropdownOptionsMap && state.dropdownOptionsMap[masterType.enumName]) {
4264
- return { ...field, options: state.dropdownOptionsMap[masterType.enumName] };
4265
- }
4266
- if (!masterType.indexes || masterType.indexes.length === 0) {
4267
- 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.`, {
4268
4332
  masterTypeId: masterType.id,
4269
4333
  masterTypeName: masterType.name,
4270
4334
  enumName: masterType.enumName,
4271
- indexes: masterType.indexes
4335
+ indexes: masterType.indexes,
4336
+ fieldId: field.id
4272
4337
  });
4273
4338
  }
4274
- if (masterType.indexes && masterType.indexes.length > 0) {
4275
- if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4276
- const options = convertIndexesToOptions(masterType.indexes);
4277
- console.log(`[FormBuilder] Populating ${options.length} options from master type "${masterType.displayName}"`);
4278
- 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
+ };
4279
4345
  }
4280
4346
  }
4281
- } else {
4282
- 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
+ });
4283
4352
  }
4353
+ return updatedField;
4284
4354
  }
4285
4355
  return field;
4286
4356
  })
@@ -4319,10 +4389,17 @@ var formStore = createStore((set, get) => ({
4319
4389
  const updatedSections = state.schema.sections.map((section) => ({
4320
4390
  ...section,
4321
4391
  fields: section.fields.map((field) => {
4322
- if (field.type === "select" && field.groupName) {
4323
- const masterType = state.masterTypes.find(
4324
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4325
- );
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
+ }
4326
4403
  if (masterType && masterType.indexes && masterType.indexes.length > 0) {
4327
4404
  if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4328
4405
  const options = convertIndexesToOptions(masterType.indexes);
@@ -4360,10 +4437,17 @@ var formStore = createStore((set, get) => ({
4360
4437
  const updatedSections = state.schema.sections.map((section) => ({
4361
4438
  ...section,
4362
4439
  fields: section.fields.map((field) => {
4363
- if (field.type === "select" && field.groupName) {
4364
- const masterType = state.masterTypes.find(
4365
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4366
- );
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
+ }
4367
4451
  if (masterType && masterType.enumName && map[masterType.enumName]) {
4368
4452
  return { ...field, options: map[masterType.enumName] };
4369
4453
  }
@@ -4404,16 +4488,40 @@ var formStore = createStore((set, get) => ({
4404
4488
  const updatedSections = state.schema.sections.map((section) => ({
4405
4489
  ...section,
4406
4490
  fields: section.fields.map((field) => {
4407
- if (field.type === "select" && field.groupName) {
4408
- const masterType = masterTypes.find(
4409
- (mt) => mt.active === true && (mt.id === field.groupName?.id || mt.name === field.groupName?.name)
4410
- );
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
+ }
4411
4518
  if (masterType && masterType.indexes && masterType.indexes.length > 0) {
4412
- if (!field.options || field.options.length === 0 || areDefaultOptions(field.options)) {
4519
+ if (!updatedField.options || updatedField.options.length === 0 || areDefaultOptions(updatedField.options)) {
4413
4520
  const options = convertIndexesToOptions(masterType.indexes);
4414
- return { ...field, options };
4521
+ return { ...updatedField, options };
4415
4522
  }
4416
4523
  }
4524
+ return updatedField;
4417
4525
  }
4418
4526
  return field;
4419
4527
  })
@@ -7999,6 +8107,7 @@ var FormBuilder = class {
7999
8107
  id: selectedMasterType.id,
8000
8108
  name: selectedMasterType.name
8001
8109
  },
8110
+ masterTypeName: selectedEnumName,
8002
8111
  options: options.length > 0 ? options : void 0
8003
8112
  });
8004
8113
  if (this.options.onGroupSelectionChange) {
@@ -8011,19 +8120,28 @@ var FormBuilder = class {
8011
8120
  } else {
8012
8121
  formStore.getState().updateField(selectedField.id, {
8013
8122
  groupName: void 0,
8123
+ masterTypeName: void 0,
8014
8124
  options: void 0
8015
8125
  // Clear options when groupName is cleared
8016
8126
  });
8017
8127
  }
8018
8128
  }
8019
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
+ }
8020
8138
  groupNameSelect.appendChild(createElement("option", {
8021
8139
  value: "",
8022
8140
  text: "None",
8023
- selected: !selectedField.groupName
8141
+ selected: !currentMasterType
8024
8142
  }));
8025
8143
  activeMasterTypes.forEach((mt) => {
8026
- 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));
8027
8145
  const optionValue = mt.enumName || mt.id || mt.name;
8028
8146
  groupNameSelect.appendChild(createElement("option", {
8029
8147
  value: optionValue,
@@ -8033,20 +8151,23 @@ var FormBuilder = class {
8033
8151
  });
8034
8152
  groupNameGroup.appendChild(groupNameSelect);
8035
8153
  body.appendChild(groupNameGroup);
8036
- if (selectedField.groupName && (!selectedField.options || selectedField.options.length === 0)) {
8037
- const currentMasterType = activeMasterTypes.find(
8038
- (mt) => mt.id === selectedField.groupName?.id || mt.name === selectedField.groupName?.name
8039
- );
8040
- if (currentMasterType) {
8041
- let options = [];
8042
- if (currentMasterType.enumName && dropdownOptionsMap && dropdownOptionsMap[currentMasterType.enumName]) {
8043
- options = dropdownOptionsMap[currentMasterType.enumName];
8044
- } else if (currentMasterType.indexes && currentMasterType.indexes.length > 0) {
8045
- options = convertIndexesToOptions(currentMasterType.indexes);
8046
- }
8047
- if (options.length > 0) {
8048
- formStore.getState().updateField(selectedField.id, { options });
8049
- }
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
+ });
8050
8171
  }
8051
8172
  }
8052
8173
  }