From 92804951336ae0a1005494623bea1a43ee4b8629 Mon Sep 17 00:00:00 2001 From: Prasanna Vijayan Date: Wed, 6 Mar 2024 17:53:27 +0530 Subject: [PATCH 1/8] feat: [FC-120856]: Enables two level dependent field --- .../components/fb-field-dropdown.tsx | 7 ++ .../form-builder/components/field-editor.tsx | 66 +++++++++++++---- .../components/form-builder/form-builder.tsx | 2 + .../form-builder/utils/form-builder-utils.ts | 70 ++++++++++++++++++- 4 files changed, 129 insertions(+), 16 deletions(-) diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/components/fb-field-dropdown.tsx b/packages/crayons-extended/custom-objects/src/components/form-builder/components/fb-field-dropdown.tsx index b6252f312..a36f1e445 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/components/fb-field-dropdown.tsx +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/components/fb-field-dropdown.tsx @@ -146,6 +146,13 @@ export class FbFieldDropdown { : [...arrChoices]; } this.validateMaximumChoiceLimits(); + } else if ( + this.dataProvider && + this.dataProvider.length === 0 && + this.level > 2 && + this.isDependentField + ) { + this.errorType = ''; } else { this.errorType = i18nText('errors.minimum'); } diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx index 108595bb1..769baac8e 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx @@ -33,6 +33,7 @@ import { updateChoicesInFields, deleteChoicesInFields, updateRequiredOnAllFields, + validateLevels, } from '../utils/form-builder-utils'; import formMapper from '../assets/form-mapper.json'; import presetSchema from '../assets/form-builder-preset.json'; @@ -550,7 +551,14 @@ export class FieldEditor { /** * function to check the dropdown error values */ - private validateDropdownErrors = (arrDropdownValues, emptyCheck = false) => { + private validateDropdownErrors = ( + arrDropdownValues, + emptyCheck = false, + level = 0 + ) => { + if (level > 2 && arrDropdownValues.length === 0) { + return false; + } if (!arrDropdownValues || arrDropdownValues.length < 1) { this.formErrorMessage = i18nText('errors.minimum'); return false; @@ -618,14 +626,26 @@ export class FieldEditor { }; if (this.isDependentField) { - objValues['fields'] = deepCloneObject(this.fieldBuilderOptions.fields); - } + // Validate levels and update dictInteractive + const elements = validateLevels( + this.dictInteractiveElements, + this.fieldBuilderOptions, + { + CHOICES: 'choices_level_', + NAME: this.DEP_NAME_KEY, + LABEL: this.DEP_LABEL_KEY, + } + ); - // Validate name - if (this.validateDuplicateErrors(this.DEP_LABEL_KEY)) { - this.duplicateError = true; - this.showErrors = true; - return; + objValues['fields'] = deepCloneObject(elements.fieldEl); + this.dictInteractiveElements = elements.dictEl; + + // Validate name + if (this.validateDuplicateErrors(this.DEP_LABEL_KEY)) { + this.duplicateError = true; + this.showErrors = true; + return; + } } // this.showErrors = false; @@ -708,7 +728,8 @@ export class FieldEditor { deepCloneObject(elInteractive.dataProvider) || []; boolValidForm = this.validateDropdownErrors( arrDropdownValues, - true + true, + level ); if (boolValidForm) { @@ -862,7 +883,11 @@ export class FieldEditor { switch (strType) { case 'DELETE': this.errorType = event.detail.errorType; - this.validateDropdownErrors(event.detail.value); + this.validateDropdownErrors( + event.detail.value, + false, + event.detail.level + ); if (this.isDependentField) { this.fieldBuilderOptions = deleteChoicesInFields(this, event); delete this.dependentLevels[`level_${event.detail.level}`]; @@ -870,7 +895,11 @@ export class FieldEditor { break; case 'VALUE_CHANGE': this.errorType = event.detail.errorType; - this.validateDropdownErrors(event.detail.value); + this.validateDropdownErrors( + event.detail.value, + false, + event.detail.level + ); if (this.isDependentField) { this.fieldBuilderOptions = updateChoicesInFields(this, event); } @@ -886,7 +915,11 @@ export class FieldEditor { this.dependentLevels = updateLevelSelection(this, event); break; case 'VALIDATE_DROPDOWN': - this.validateDropdownErrors(event.detail.value); + this.validateDropdownErrors( + event.detail.value, + false, + event.detail.level + ); break; default: break; @@ -991,7 +1024,10 @@ export class FieldEditor { let strInternalName = ''; let boolInternalNameUpdated = false; - if (!this.isInternalNameEdited && this.isNewField) { + if ( + (!this.isInternalNameEdited && this.isNewField) || + (this.isDependentField && !strInputValue) + ) { strInternalName = deriveInternalNameFromLabel(strInputValue); boolInternalNameUpdated = true; } @@ -1391,7 +1427,9 @@ export class FieldEditor { value={strInputInternalName} errorText={strInputError} warningText={strInputWarning} - disabled={!this.isNewField || !boolEditAllowed} + disabled={ + !this.isNewField || !boolEditAllowed || this.isDependentField + } state={ boolShowNameError ? 'error' diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/form-builder.tsx b/packages/crayons-extended/custom-objects/src/components/form-builder/form-builder.tsx index 938602ca1..805580a5a 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/form-builder.tsx +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/form-builder.tsx @@ -23,6 +23,7 @@ import { isPrimaryFieldType, isUniqueField, getDefaultDependentLevels, + checkAndAppendLevel3, } from './utils/form-builder-utils'; import presetSchema from './assets/form-builder-preset.json'; import formMapper from './assets/form-mapper.json'; @@ -290,6 +291,7 @@ export class FormBuilder { }, internalNamePrefix ); + arrFields[i1] = checkAndAppendLevel3(arrFields[i1]); } const objField = arrFields[i1]; diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts index 34fa1427c..0a4f6d4eb 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts @@ -607,12 +607,78 @@ export function updateRequiredOnAllFields(data, isRequired) { function updateRequiredAttribute(field) { field.required = isRequired; - if (hasCustomProperty(field, 'fields') && field.fields.length) { + if (hasCustomProperty(field, 'fields') && field.fields.length > 0) { updateRequiredAttribute(field.fields[0]); } } - updateRequiredAttribute(data.fields[0]); + updateRequiredAttribute(data?.fields[0]); return data; } + +function removeFieldsWithEmptyChoices(data, deleteLevel) { + // Iterate over the structure recursively + function clean(data) { + // Check if current object has a 'fields' property that is an array + if (data.fields && data.fields.length > 0) { + // Filter out objects with an empty 'choices' array + if (deleteLevel === data.fields[0].field_options.level) { + data.fields = []; + } + + // Recursively apply the cleaning process to the remaining fields + data.fields.forEach((field) => clean(field)); + } + } + + // Start the cleaning process with the provided data + clean(data); +} + +export function validateLevels(dictEl, fieldEl, KEYS) { + let deleteLevel = 0; + + function validateField(fields) { + const level = fields[0]?.field_options?.level; + if ( + dictEl[`${KEYS.CHOICES}${level}`].dataProvider.length === 0 && + !dictEl[`${KEYS.NAME}${level}`].value && + !dictEl[`${KEYS.LABEL}${level}`].value && + parseInt(level, 10) > 2 + ) { + delete dictEl[`${KEYS.CHOICES}${level}`]; + delete dictEl[`${KEYS.NAME}${level}`]; + delete dictEl[`${KEYS.LABEL}${level}`]; + deleteLevel = level; + } + + if (fields && fields[0] && fields[0].fields) { + validateField(fields[0].fields); + } + } + + validateField(fieldEl.fields); + + if (deleteLevel > 0) { + removeFieldsWithEmptyChoices(fieldEl, deleteLevel); + } + + return { dictEl, fieldEl: fieldEl.fields }; +} + +export function checkAndAppendLevel3(fields) { + const field = getFieldBasedOnLevel(fields, 2); + + if (field.fields && field.fields.length === 0) { + field.fields = [ + { + type: 'DROPDOWN', + field_options: { level: '3', dependent: 'true' }, + choices: [], + }, + ]; + } + + return fields; +} From de173358823e399f6fe6054cf615d7eb80bdf68a Mon Sep 17 00:00:00 2001 From: Prasanna Vijayan Date: Thu, 7 Mar 2024 15:32:31 +0530 Subject: [PATCH 2/8] fix: adds two level dependency with validation on various steps --- .../form-builder/components/field-editor.tsx | 37 +++++++++++++++---- .../form-builder/utils/form-builder-utils.ts | 26 ++++++++++++- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx index 769baac8e..34721f1a0 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx @@ -34,6 +34,9 @@ import { deleteChoicesInFields, updateRequiredOnAllFields, validateLevels, + getFieldBasedOnLevel, + getModifiedEl, + addIdToNewField, } from '../utils/form-builder-utils'; import formMapper from '../assets/form-mapper.json'; import presetSchema from '../assets/form-builder-preset.json'; @@ -556,9 +559,22 @@ export class FieldEditor { emptyCheck = false, level = 0 ) => { - if (level > 2 && arrDropdownValues.length === 0) { - return false; + if (level > 2 && this.isDependentField) { + const levelToDelete = validateLevels( + this.dictInteractiveElements, + this.fieldBuilderOptions, + { + CHOICES: 'choices_level_', + NAME: this.DEP_NAME_KEY, + LABEL: this.DEP_LABEL_KEY, + } + ); + + if (levelToDelete !== 0) { + return true; + } } + if (!arrDropdownValues || arrDropdownValues.length < 1) { this.formErrorMessage = i18nText('errors.minimum'); return false; @@ -627,7 +643,7 @@ export class FieldEditor { if (this.isDependentField) { // Validate levels and update dictInteractive - const elements = validateLevels( + const elements = getModifiedEl( this.dictInteractiveElements, this.fieldBuilderOptions, { @@ -776,6 +792,10 @@ export class FieldEditor { } } + if (this.isDependentField) { + objValues = addIdToNewField(objValues); + } + // Used to track multiple labels and names if (Object.keys(this.dependentErrors).length !== 0) { return; @@ -1016,7 +1036,11 @@ export class FieldEditor { this.isValuesChanged = true; } + const field = this.isDependentField + ? getFieldBasedOnLevel(this.fieldBuilderOptions, level) + : {}; const dictElName = `${this.DEP_LABEL_KEY}${level}`; + const strInputValue = !isBlur ? event?.detail?.value || '' : event?.target?.['value']?.trim() || ''; @@ -1024,10 +1048,7 @@ export class FieldEditor { let strInternalName = ''; let boolInternalNameUpdated = false; - if ( - (!this.isInternalNameEdited && this.isNewField) || - (this.isDependentField && !strInputValue) - ) { + if ((!this.isInternalNameEdited && this.isNewField) || !field.id) { strInternalName = deriveInternalNameFromLabel(strInputValue); boolInternalNameUpdated = true; } @@ -1075,7 +1096,7 @@ export class FieldEditor { ); } - if (!this.isInternalNameEdited) { + if (!this.isInternalNameEdited || !field.id) { attr['name'] = strInternalName; } } diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts index 0a4f6d4eb..461537d49 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts @@ -660,8 +660,13 @@ export function validateLevels(dictEl, fieldEl, KEYS) { validateField(fieldEl.fields); - if (deleteLevel > 0) { - removeFieldsWithEmptyChoices(fieldEl, deleteLevel); + return deleteLevel; +} + +export function getModifiedEl(dictEl, fieldEl, KEYS) { + const level = validateLevels(dictEl, fieldEl, KEYS); + if (level > 0) { + removeFieldsWithEmptyChoices(fieldEl, level); } return { dictEl, fieldEl: fieldEl.fields }; @@ -682,3 +687,20 @@ export function checkAndAppendLevel3(fields) { return fields; } + +export function addIdToNewField(fieldEl) { + function validateField(fields) { + const field = fields[0]; + if (!field.id) { + field.id = createUUID(); + } + + if (field && field.length > 0) { + validateField(field.fields); + } + } + + validateField(fieldEl.fields); + + return fieldEl; +} From 43a0e3d2ae84d76173c5acad38634d70e013b8a0 Mon Sep 17 00:00:00 2001 From: Prasanna Vijayan Date: Fri, 8 Mar 2024 13:35:05 +0530 Subject: [PATCH 3/8] fix: validating the duplicate before removing the dictEl --- .../form-builder/components/field-editor.tsx | 28 +++++++++---------- .../form-builder/utils/form-builder-utils.ts | 10 ++++--- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx index 34721f1a0..cac84d622 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx @@ -36,7 +36,7 @@ import { validateLevels, getFieldBasedOnLevel, getModifiedEl, - addIdToNewField, + removeIsNewFromField, } from '../utils/form-builder-utils'; import formMapper from '../assets/form-mapper.json'; import presetSchema from '../assets/form-builder-preset.json'; @@ -642,6 +642,13 @@ export class FieldEditor { }; if (this.isDependentField) { + // Validate name + if (this.validateDuplicateErrors(this.DEP_LABEL_KEY)) { + this.duplicateError = true; + this.showErrors = true; + return; + } + // Validate levels and update dictInteractive const elements = getModifiedEl( this.dictInteractiveElements, @@ -655,13 +662,6 @@ export class FieldEditor { objValues['fields'] = deepCloneObject(elements.fieldEl); this.dictInteractiveElements = elements.dictEl; - - // Validate name - if (this.validateDuplicateErrors(this.DEP_LABEL_KEY)) { - this.duplicateError = true; - this.showErrors = true; - return; - } } // this.showErrors = false; @@ -792,15 +792,15 @@ export class FieldEditor { } } - if (this.isDependentField) { - objValues = addIdToNewField(objValues); - } - // Used to track multiple labels and names if (Object.keys(this.dependentErrors).length !== 0) { return; } + if (this.isDependentField) { + objValues = removeIsNewFromField(objValues); + } + if (checkIfCustomToggleField(this.productName, this.dataProvider.name)) { objValues['choices'] = [...this.dataProvider.choices]; } @@ -1048,7 +1048,7 @@ export class FieldEditor { let strInternalName = ''; let boolInternalNameUpdated = false; - if ((!this.isInternalNameEdited && this.isNewField) || !field.id) { + if ((!this.isInternalNameEdited && this.isNewField) || field.isNew) { strInternalName = deriveInternalNameFromLabel(strInputValue); boolInternalNameUpdated = true; } @@ -1096,7 +1096,7 @@ export class FieldEditor { ); } - if (!this.isInternalNameEdited || !field.id) { + if (!this.isInternalNameEdited || field.isNew) { attr['name'] = strInternalName; } } diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts index 461537d49..4f14d5daa 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts @@ -681,6 +681,8 @@ export function checkAndAppendLevel3(fields) { type: 'DROPDOWN', field_options: { level: '3', dependent: 'true' }, choices: [], + id: createUUID(), + isNew: true, }, ]; } @@ -688,14 +690,14 @@ export function checkAndAppendLevel3(fields) { return fields; } -export function addIdToNewField(fieldEl) { +export function removeIsNewFromField(fieldEl) { function validateField(fields) { const field = fields[0]; - if (!field.id) { - field.id = createUUID(); + if (field.isNew) { + delete field.isNew; } - if (field && field.length > 0) { + if (field.fields && field.fields.length > 0) { validateField(field.fields); } } From 10649c3d2bd8eb494c032e0cf398e4ae742edb93 Mon Sep 17 00:00:00 2001 From: Prasanna Vijayan Date: Fri, 8 Mar 2024 14:26:49 +0530 Subject: [PATCH 4/8] fix: validating fields length --- .../src/components/form-builder/utils/form-builder-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts index 4f14d5daa..634748ec6 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/utils/form-builder-utils.ts @@ -653,7 +653,7 @@ export function validateLevels(dictEl, fieldEl, KEYS) { deleteLevel = level; } - if (fields && fields[0] && fields[0].fields) { + if (fields && fields[0] && fields[0].fields && fields[0].fields.length) { validateField(fields[0].fields); } } From 9e64bdafd78d9721a5254e10c00b658996a30ad9 Mon Sep 17 00:00:00 2001 From: Prasanna Vijayan Date: Fri, 8 Mar 2024 19:02:22 +0530 Subject: [PATCH 5/8] fix: adds cloned fieldBuilderOptions and rel for anchor --- .../src/components/form-builder/components/field-editor.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx index cac84d622..ddbd78126 100644 --- a/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx +++ b/packages/crayons-extended/custom-objects/src/components/form-builder/components/field-editor.tsx @@ -652,7 +652,7 @@ export class FieldEditor { // Validate levels and update dictInteractive const elements = getModifiedEl( this.dictInteractiveElements, - this.fieldBuilderOptions, + deepCloneObject(this.fieldBuilderOptions), { CHOICES: 'choices_level_', NAME: this.DEP_NAME_KEY, @@ -660,7 +660,7 @@ export class FieldEditor { } ); - objValues['fields'] = deepCloneObject(elements.fieldEl); + objValues['fields'] = elements.fieldEl; this.dictInteractiveElements = elements.dictEl; } @@ -1633,6 +1633,7 @@ export class FieldEditor { {i18nText('moreOnDependentFields')} From 946451a4d402ca3f53370f31c99ca927c532dc7a Mon Sep 17 00:00:00 2001 From: Arvindan Date: Mon, 18 Mar 2024 17:18:24 +0530 Subject: [PATCH 6/8] chore(release): publish - @freshworks/crayons-custom-objects@1.4.0-beta.9 --- .../custom-objects/CHANGELOG.md | 19 +++++++++++++++++++ .../custom-objects/package.json | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/crayons-extended/custom-objects/CHANGELOG.md b/packages/crayons-extended/custom-objects/CHANGELOG.md index 0cb45f17c..27fa004af 100644 --- a/packages/crayons-extended/custom-objects/CHANGELOG.md +++ b/packages/crayons-extended/custom-objects/CHANGELOG.md @@ -3,6 +3,25 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0-beta.9](https://github.com/freshworks/crayons/compare/@freshworks/crayons-custom-objects@1.4.0-beta.8...@freshworks/crayons-custom-objects@1.4.0-beta.9) (2024-03-18) + + +### Bug Fixes + +* adds cloned fieldBuilderOptions and rel for anchor ([9e64bda](https://github.com/freshworks/crayons/commit/9e64bdafd78d9721a5254e10c00b658996a30ad9)) +* adds two level dependency with validation on various steps ([de17335](https://github.com/freshworks/crayons/commit/de173358823e399f6fe6054cf615d7eb80bdf68a)) +* validating fields length ([10649c3](https://github.com/freshworks/crayons/commit/10649c3d2bd8eb494c032e0cf398e4ae742edb93)) +* validating the duplicate before removing the dictEl ([43a0e3d](https://github.com/freshworks/crayons/commit/43a0e3d2ae84d76173c5acad38634d70e013b8a0)) + + +### Features + +* [FC-120856]: Enables two level dependent field ([9280495](https://github.com/freshworks/crayons/commit/92804951336ae0a1005494623bea1a43ee4b8629)) + + + + + ## [1.4.0-beta.8](https://github.com/freshworks/crayons/compare/@freshworks/crayons-custom-objects@1.4.0-beta.7...@freshworks/crayons-custom-objects@1.4.0-beta.8) (2024-01-17) ### Bug Fixes diff --git a/packages/crayons-extended/custom-objects/package.json b/packages/crayons-extended/custom-objects/package.json index 5d13647d0..014613ab0 100644 --- a/packages/crayons-extended/custom-objects/package.json +++ b/packages/crayons-extended/custom-objects/package.json @@ -1,7 +1,7 @@ { "name": "@freshworks/crayons-custom-objects", "author": "Freshworks Inc", - "version": "1.4.0-beta.8", + "version": "1.4.0-beta.9", "description": "Custom Objects with Crayons", "main": "dist/index.cjs.js", "module": "dist/index.js", From 4012f41b24047c1c3974b76a1bf71931ed1bdb8e Mon Sep 17 00:00:00 2001 From: Arvindan Date: Mon, 18 Mar 2024 17:18:30 +0530 Subject: [PATCH 7/8] chore(release): clean up changelogs --- .../custom-objects/CHANGELOG.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/crayons-extended/custom-objects/CHANGELOG.md b/packages/crayons-extended/custom-objects/CHANGELOG.md index 27fa004af..432a632b2 100644 --- a/packages/crayons-extended/custom-objects/CHANGELOG.md +++ b/packages/crayons-extended/custom-objects/CHANGELOG.md @@ -3,24 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [1.4.0-beta.9](https://github.com/freshworks/crayons/compare/@freshworks/crayons-custom-objects@1.4.0-beta.8...@freshworks/crayons-custom-objects@1.4.0-beta.9) (2024-03-18) - +## [1.4.0-beta.9](https://github.com/freshworks/crayons/compare/@freshworks/crayons-custom-objects@1.4.0-beta.8...@freshworks/crayons-custom-objects@1.4.0-beta.9) (2024-03-18) ### Bug Fixes -* adds cloned fieldBuilderOptions and rel for anchor ([9e64bda](https://github.com/freshworks/crayons/commit/9e64bdafd78d9721a5254e10c00b658996a30ad9)) -* adds two level dependency with validation on various steps ([de17335](https://github.com/freshworks/crayons/commit/de173358823e399f6fe6054cf615d7eb80bdf68a)) -* validating fields length ([10649c3](https://github.com/freshworks/crayons/commit/10649c3d2bd8eb494c032e0cf398e4ae742edb93)) -* validating the duplicate before removing the dictEl ([43a0e3d](https://github.com/freshworks/crayons/commit/43a0e3d2ae84d76173c5acad38634d70e013b8a0)) - +- adds cloned fieldBuilderOptions and rel for anchor ([9e64bda](https://github.com/freshworks/crayons/commit/9e64bdafd78d9721a5254e10c00b658996a30ad9)) +- adds two level dependency with validation on various steps ([de17335](https://github.com/freshworks/crayons/commit/de173358823e399f6fe6054cf615d7eb80bdf68a)) +- validating fields length ([10649c3](https://github.com/freshworks/crayons/commit/10649c3d2bd8eb494c032e0cf398e4ae742edb93)) +- validating the duplicate before removing the dictEl ([43a0e3d](https://github.com/freshworks/crayons/commit/43a0e3d2ae84d76173c5acad38634d70e013b8a0)) ### Features -* [FC-120856]: Enables two level dependent field ([9280495](https://github.com/freshworks/crayons/commit/92804951336ae0a1005494623bea1a43ee4b8629)) - - - - +- [FC-120856]: Enables two level dependent field ([9280495](https://github.com/freshworks/crayons/commit/92804951336ae0a1005494623bea1a43ee4b8629)) ## [1.4.0-beta.8](https://github.com/freshworks/crayons/compare/@freshworks/crayons-custom-objects@1.4.0-beta.7...@freshworks/crayons-custom-objects@1.4.0-beta.8) (2024-01-17) From cb39d5a3679e15eed6b73e148c56b99e24f7a7c4 Mon Sep 17 00:00:00 2001 From: Arvindan Date: Mon, 18 Mar 2024 17:19:47 +0530 Subject: [PATCH 8/8] chore(release): update lock file --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 3bacd6b4e..100d507eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48582,7 +48582,7 @@ }, "packages/crayons-extended/custom-objects": { "name": "@freshworks/crayons-custom-objects", - "version": "1.4.0-beta.8", + "version": "1.4.0-beta.9", "license": "MIT", "dependencies": { "@freshworks/crayons": "^4.3.0-beta.9",