@ngstarter-ui/components 21.0.50 → 21.0.51

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-form-builder.mjs","sources":["../../../projects/components/form-builder/src/config.ts","../../../projects/components/form-builder/src/field-host/field-host.ts","../../../projects/components/form-builder/src/field-host/field-host.html","../../../projects/components/form-builder/src/form-renderer/form-renderer.ts","../../../projects/components/form-builder/src/form-renderer/form-renderer.html","../../../projects/components/form-builder/src/settings-host/settings-host.ts","../../../projects/components/form-builder/src/settings-host/settings-host.html","../../../projects/components/form-builder/src/form-builder/form-builder.ts","../../../projects/components/form-builder/src/form-builder/form-builder.html","../../../projects/components/form-builder/src/settings/basic-field-settings/basic-field-settings.ts","../../../projects/components/form-builder/src/settings/basic-field-settings/basic-field-settings.html","../../../projects/components/form-builder/src/settings/basic-layout-settings/basic-layout-settings.ts","../../../projects/components/form-builder/src/settings/basic-layout-settings/basic-layout-settings.html","../../../projects/components/form-builder/src/settings/basic-section-settings/basic-section-settings.ts","../../../projects/components/form-builder/src/settings/basic-section-settings/basic-section-settings.html","../../../projects/components/form-builder/ngstarter-ui-components-form-builder.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport {\n FormBuilderField,\n FormBuilderFieldDefinition,\n FormBuilderItemDefinition,\n FormBuilderSelectDataSourceDefinition,\n FormBuilderSchema,\n FormBuilderSettingsDefinition,\n FormBuilderUploadCallback,\n FormBuilderValidationRule\n} from './types';\n\nexport const FORM_BUILDER_ITEMS =\n new InjectionToken<FormBuilderItemDefinition[]>('FORM_BUILDER_ITEMS');\n\nexport const FORM_BUILDER_FIELDS =\n new InjectionToken<FormBuilderFieldDefinition[]>('FORM_BUILDER_FIELDS');\n\nexport const FORM_BUILDER_SETTINGS =\n new InjectionToken<FormBuilderSettingsDefinition[]>('FORM_BUILDER_SETTINGS');\n\nexport const FORM_BUILDER_UPLOAD_CALLBACK =\n new InjectionToken<FormBuilderUploadCallback>('FORM_BUILDER_UPLOAD_CALLBACK');\n\nexport const FORM_BUILDER_SELECT_DATA_SOURCES =\n new InjectionToken<FormBuilderSelectDataSourceDefinition[]>('FORM_BUILDER_SELECT_DATA_SOURCES');\n\nexport function formBuilderField(definition: FormBuilderFieldDefinition): FormBuilderFieldDefinition {\n return definition;\n}\n\nexport function formBuilderItem(definition: FormBuilderItemDefinition): FormBuilderItemDefinition {\n return definition;\n}\n\nexport function formBuilderSettings(definition: FormBuilderSettingsDefinition): FormBuilderSettingsDefinition {\n return definition;\n}\n\nexport function provideFormBuilderField(definition: FormBuilderFieldDefinition): Provider {\n return {\n provide: FORM_BUILDER_FIELDS,\n useValue: definition,\n multi: true\n };\n}\n\nexport function provideFormBuilderFields(definitions: FormBuilderFieldDefinition[]): Provider[] {\n return definitions.map(definition => provideFormBuilderField(definition));\n}\n\nexport function provideFormBuilderSelectDataSource(definition: FormBuilderSelectDataSourceDefinition): Provider {\n return {\n provide: FORM_BUILDER_SELECT_DATA_SOURCES,\n useValue: definition,\n multi: true\n };\n}\n\nexport function provideFormBuilderSelectDataSources(definitions: FormBuilderSelectDataSourceDefinition[]): Provider[] {\n return definitions.map(definition => provideFormBuilderSelectDataSource(definition));\n}\n\nexport function provideFormBuilder(config: {\n items?: FormBuilderItemDefinition[];\n fields?: FormBuilderFieldDefinition[];\n settings?: FormBuilderSettingsDefinition[];\n selectDataSources?: FormBuilderSelectDataSourceDefinition[];\n uploadCallback?: FormBuilderUploadCallback;\n} = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n ...(config.uploadCallback ? [{\n provide: FORM_BUILDER_UPLOAD_CALLBACK,\n useValue: config.uploadCallback\n }] : []),\n ...(config.items ?? []).map(item => ({\n provide: FORM_BUILDER_ITEMS,\n useValue: item,\n multi: true\n })),\n ...(config.fields ?? []).map(field => ({\n provide: FORM_BUILDER_FIELDS,\n useValue: field,\n multi: true\n })),\n ...(config.settings ?? []).map(settings => ({\n provide: FORM_BUILDER_SETTINGS,\n useValue: settings,\n multi: true\n })),\n ...(config.selectDataSources ?? []).map(dataSource => ({\n provide: FORM_BUILDER_SELECT_DATA_SOURCES,\n useValue: dataSource,\n multi: true\n }))\n ]);\n}\n\nconst FIELD_WIDTH_OPTIONS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n .map(width => ({ label: `${width}/12`, value: width }));\n\nconst SPACER_HEIGHT_OPTIONS = [8, 16, 24, 32, 48, 64]\n .map(height => ({ label: `${height}px`, value: height }));\n\nconst ORIENTATION_OPTIONS = [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' }\n];\n\nconst SELECT_OPTIONS_SOURCE_OPTIONS = [\n { label: 'Custom options', value: 'static' },\n { label: 'Data source', value: 'dataSource' }\n];\n\nexport const FORM_BUILDER_FIELD_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'field-base-settings',\n title: 'Field',\n fields: [\n { id: 'field-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'field-name', name: 'name', type: 'text', label: 'Field ID' },\n { id: 'field-hint', name: 'hint', type: 'text', label: 'Hint' },\n { id: 'field-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS },\n { id: 'field-required', name: 'required', type: 'toggle', label: 'Required field', defaultValue: false },\n { id: 'field-readonly', name: 'readonly', type: 'toggle', label: 'Readonly', defaultValue: false },\n { id: 'field-disabled', name: 'disabled', type: 'toggle', label: 'Disabled', defaultValue: false }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_INPUT_FIELD_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'input-field-base-settings',\n title: 'Field',\n fields: [\n { id: 'input-field-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'input-field-name', name: 'name', type: 'text', label: 'Field ID' },\n { id: 'input-field-placeholder', name: 'placeholder', type: 'text', label: 'Placeholder' },\n { id: 'input-field-hint', name: 'hint', type: 'text', label: 'Hint' },\n { id: 'input-field-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS },\n { id: 'input-field-required', name: 'required', type: 'toggle', label: 'Required field', defaultValue: false },\n { id: 'input-field-readonly', name: 'readonly', type: 'toggle', label: 'Readonly', defaultValue: false },\n { id: 'input-field-disabled', name: 'disabled', type: 'toggle', label: 'Disabled', defaultValue: false }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_LAYOUT_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'layout-base-settings',\n title: 'Layout',\n fields: [\n { id: 'layout-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'layout-hint', name: 'hint', type: 'text', label: 'Hint' },\n { id: 'layout-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_LAYOUT_CONTAINER_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'layout-container-base-settings',\n title: 'Layout',\n fields: [\n { id: 'layout-container-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'layout-container-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_STATIC_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'static-base-settings',\n title: 'Static block',\n fields: [\n { id: 'static-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'static-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'section-base-settings',\n title: 'Section',\n fields: [\n { id: 'section-title', name: 'title', type: 'text', label: 'Title' },\n { id: 'section-description', name: 'description', type: 'textarea', label: 'Description', hint: 'Optional helper text rendered under the section title.' },\n { id: 'section-collapsed', name: 'collapsed', type: 'toggle', label: 'Collapsed', defaultValue: false }\n ]\n }\n ]\n};\n\nconst CHECKED_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'checked-settings',\n title: 'Default state',\n fields: [\n { id: 'default-checked', name: 'defaultValue', type: 'toggle', label: 'Checked', defaultValue: false }\n ]\n }\n ]\n};\n\nconst OPTIONS_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'options-settings',\n title: 'Options',\n fields: [\n {\n id: 'options',\n name: 'options',\n type: 'textarea',\n label: 'Options',\n hint: 'One option per line. Use Label:value or Label:value:selected.',\n settings: {\n valueAdapter: 'optionsText'\n }\n }\n ]\n }\n ]\n};\n\nfunction selectSettingsSchema(field: FormBuilderField): FormBuilderSchema {\n const optionsSource = field.optionsSource ?? (field.dataSource ? 'dataSource' : 'static');\n const sourceSection = {\n id: 'select-options-source-settings',\n title: 'Options',\n fields: [\n {\n id: 'select-options-source',\n name: 'optionsSource',\n type: 'segmented',\n label: 'Options source',\n defaultValue: 'static',\n options: SELECT_OPTIONS_SOURCE_OPTIONS,\n settings: {\n valueAdapter: 'selectOptionsSource'\n }\n }\n ]\n };\n\n const dataSourceSection = {\n id: 'select-data-source-settings',\n title: 'Data source',\n fields: [\n {\n id: 'select-data-source',\n name: 'dataSource',\n type: 'select',\n label: 'Data source',\n hint: 'Choose a registered data source.',\n settings: {\n valueAdapter: 'selectDataSource'\n }\n }\n ]\n };\n\n return {\n sections: [\n sourceSection,\n ...(optionsSource === 'dataSource'\n ? [dataSourceSection]\n : OPTIONS_SETTINGS_SCHEMA.sections)\n ]\n };\n}\n\nconst HIDDEN_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'hidden-settings',\n title: 'Hidden field',\n fields: [\n { id: 'hidden-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'hidden-name', name: 'name', type: 'text', label: 'Field ID' },\n { id: 'hidden-default-value', name: 'defaultValue', type: 'text', label: 'Value' },\n { id: 'hidden-disabled', name: 'disabled', type: 'toggle', label: 'Disabled', defaultValue: false }\n ]\n }\n ]\n};\n\nexport const DEFAULT_FORM_BUILDER_FIELDS: FormBuilderFieldDefinition[] = [\n {\n type: 'text',\n label: 'Text',\n group: 'Basic',\n icon: 'fluent:text-font-24-regular',\n defaults: {\n label: 'Text field',\n placeholder: 'Enter text'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'number',\n label: 'Number',\n group: 'Basic',\n icon: 'fluent:number-symbol-24-regular',\n defaults: {\n label: 'Number',\n placeholder: '0'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'email',\n label: 'Email',\n group: 'Basic',\n icon: 'fluent:mail-24-regular',\n defaults: {\n label: 'Email',\n placeholder: 'name@example.com'\n },\n settings: {\n extends: 'input-field'\n },\n validators: field => field.required ? [Validators.required, Validators.email] : [Validators.email]\n },\n {\n type: 'hidden',\n label: 'Hidden',\n group: 'Basic',\n icon: 'fluent:eye-off-24-regular',\n description: 'Native hidden input included in submitted form values.',\n defaults: {\n label: 'Hidden field',\n defaultValue: ''\n },\n settings: {\n extends: 'none',\n schema: HIDDEN_SETTINGS_SCHEMA\n }\n },\n {\n type: 'textarea',\n label: 'Textarea',\n group: 'Basic',\n icon: 'fluent:text-description-24-regular',\n defaults: {\n label: 'Description',\n placeholder: 'Enter description',\n width: 12\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'group',\n label: 'Group',\n kind: 'layout',\n group: 'Layout',\n icon: 'fluent:group-24-regular',\n description: 'Container for nested fields.',\n acceptsChildren: true,\n defaults: {\n kind: 'layout',\n label: 'Group',\n width: 12,\n children: []\n },\n settings: {\n extends: 'layout-container'\n }\n },\n {\n type: 'repeater',\n label: 'Repeater',\n kind: 'layout',\n group: 'Layout',\n icon: 'fluent:copy-add-24-regular',\n description: 'Repeat a group of nested fields as a FormArray.',\n acceptsChildren: true,\n defaults: {\n kind: 'layout',\n label: 'Repeater',\n name: 'items',\n width: 12,\n settings: {\n allowNullValue: false,\n emptyText: 'No items added yet.'\n },\n children: []\n },\n settings: {\n extends: 'layout-container',\n schema: {\n sections: [\n {\n id: 'repeater-settings',\n title: 'Repeater',\n fields: [\n {\n id: 'repeater-allow-null-value',\n name: 'settings.allowNullValue',\n type: 'toggle',\n label: 'Allow null value',\n defaultValue: false\n },\n {\n id: 'repeater-empty-text',\n name: 'settings.emptyText',\n type: 'textarea',\n label: 'Empty text',\n defaultValue: 'No items added yet.'\n }\n ]\n }\n ]\n }\n }\n },\n {\n type: 'spacer',\n label: 'Spacer',\n kind: 'static',\n group: 'Layout',\n icon: 'fluent:resize-large-24-regular',\n description: 'Static vertical space between form elements.',\n defaults: {\n kind: 'static',\n label: 'Spacer',\n width: 12,\n settings: {\n height: 24\n }\n },\n settings: {\n extends: 'static',\n schema: {\n sections: [\n {\n id: 'spacer-settings',\n title: 'Spacer',\n fields: [\n { id: 'spacer-height', name: 'settings.height', type: 'select', label: 'Height', defaultValue: 24, options: SPACER_HEIGHT_OPTIONS }\n ]\n }\n ]\n }\n }\n },\n {\n type: 'select',\n label: 'Select',\n group: 'Choices',\n icon: 'fluent:multiselect-ltr-24-regular',\n defaults: {\n label: 'Select',\n placeholder: 'Choose an option',\n clearable: true,\n optionsSource: 'static',\n options: [\n { label: 'Option 1', value: 'option_1' },\n { label: 'Option 2', value: 'option_2' }\n ]\n },\n settings: {\n extends: 'input-field',\n schema: context => ({\n sections: [\n {\n id: 'select-behavior-settings',\n title: 'Select',\n fields: [\n {\n id: 'select-multiple',\n name: 'multiple',\n type: 'toggle',\n label: 'Multiple',\n defaultValue: false,\n settings: {\n valueAdapter: 'selectMultiple'\n }\n },\n { id: 'select-clearable', name: 'clearable', type: 'toggle', label: 'Clearable', defaultValue: true }\n ]\n },\n ...selectSettingsSchema(context.item as FormBuilderField).sections\n ]\n })\n }\n },\n {\n type: 'radio',\n label: 'Radio',\n group: 'Choices',\n icon: 'fluent:radio-button-24-regular',\n defaults: {\n label: 'Radio',\n settings: {\n orientation: 'vertical'\n },\n options: [\n { label: 'Option 1', value: 'option_1' },\n { label: 'Option 2', value: 'option_2' }\n ]\n },\n settings: {\n extends: 'field',\n schema: {\n sections: [\n {\n id: 'radio-settings',\n title: 'Radio',\n fields: [\n { id: 'radio-orientation', name: 'settings.orientation', type: 'select', label: 'Orientation', defaultValue: 'vertical', options: ORIENTATION_OPTIONS }\n ]\n },\n ...OPTIONS_SETTINGS_SCHEMA.sections\n ]\n }\n }\n },\n {\n type: 'checkbox',\n label: 'Checkbox',\n group: 'Choices',\n icon: 'fluent:checkbox-checked-24-regular',\n defaults: {\n label: 'Checkbox',\n defaultValue: false\n },\n settings: {\n extends: 'field',\n schema: CHECKED_SETTINGS_SCHEMA\n }\n },\n {\n type: 'toggle',\n label: 'Toggle',\n group: 'Choices',\n icon: 'fluent:toggle-right-24-regular',\n defaults: {\n label: 'Toggle',\n defaultValue: false\n },\n settings: {\n extends: 'field',\n schema: CHECKED_SETTINGS_SCHEMA\n }\n },\n {\n type: 'date',\n label: 'Date',\n group: 'Date and time',\n icon: 'fluent:calendar-ltr-24-regular',\n defaults: {\n label: 'Date',\n placeholder: 'Select date'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'time',\n label: 'Time',\n group: 'Date and time',\n icon: 'fluent:clock-24-regular',\n defaults: {\n label: 'Time',\n placeholder: 'Select time'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'date-range',\n label: 'Date range',\n group: 'Date and time',\n icon: 'fluent:calendar-date-24-regular',\n defaults: {\n label: 'Date range',\n placeholder: 'Start date',\n width: 12\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'upload',\n label: 'Upload',\n group: 'Files',\n icon: 'fluent:arrow-upload-24-regular',\n defaults: {\n label: 'Upload',\n placeholder: 'Drop files or click to upload',\n width: 12,\n multiple: false,\n settings: {\n accept: '*/*'\n }\n },\n settings: {\n extends: 'input-field',\n schema: {\n sections: [\n {\n id: 'upload-settings',\n title: 'Upload',\n fields: [\n {\n id: 'upload-multiple',\n name: 'multiple',\n type: 'toggle',\n label: 'Multiple',\n defaultValue: false,\n settings: {\n valueAdapter: 'multipleDefaultValue'\n }\n },\n {\n id: 'upload-accept',\n name: 'settings.accept',\n type: 'text',\n label: 'Accepted file types',\n defaultValue: '*/*',\n hint: 'Use MIME types separated by commas, for example image/*,application/pdf.'\n }\n ]\n }\n ]\n }\n }\n },\n {\n type: 'timezone-select',\n label: 'Timezone select',\n group: 'Date and time',\n icon: 'fluent:globe-clock-24-regular',\n defaults: {\n label: 'Timezone',\n placeholder: 'Select timezone'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'currency',\n label: 'Currency',\n group: 'Finance',\n icon: 'fluent:money-24-regular',\n defaults: {\n label: 'Amount',\n placeholder: '0.00'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'currency-select',\n label: 'Currency select',\n group: 'Finance',\n icon: 'fluent:money-hand-24-regular',\n defaults: {\n label: 'Currency',\n placeholder: 'Select currency'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'country-select',\n label: 'Country select',\n group: 'Location',\n icon: 'fluent:globe-location-24-regular',\n defaults: {\n label: 'Country',\n placeholder: 'Select country',\n clearable: true\n },\n settings: {\n extends: 'input-field',\n schema: {\n sections: [\n {\n id: 'country-select-settings',\n title: 'Country select',\n fields: [\n { id: 'country-clearable', name: 'clearable', type: 'toggle', label: 'Clearable', defaultValue: true }\n ]\n }\n ]\n }\n }\n }\n];\n\nexport const DEFAULT_FORM_BUILDER_ITEMS: FormBuilderItemDefinition[] = [\n {\n type: 'section',\n label: 'Section',\n kind: 'layout',\n group: 'Layout',\n icon: 'fluent:folder-24-regular',\n description: 'Top-level layout container.',\n acceptsChildren: true,\n settings: {\n extends: 'none',\n schema: FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA\n }\n },\n ...DEFAULT_FORM_BUILDER_FIELDS\n];\n\nexport function validatorsFromRules(rules: FormBuilderValidationRule[] = [], field?: FormBuilderField) {\n const validators = [];\n\n if (field?.required || rules.some(rule => rule.type === 'required')) {\n validators.push(Validators.required);\n }\n\n for (const rule of rules) {\n if (rule.type === 'email') {\n validators.push(Validators.email);\n } else if (rule.type === 'minLength') {\n validators.push(Validators.minLength(Number(rule.value)));\n } else if (rule.type === 'maxLength') {\n validators.push(Validators.maxLength(Number(rule.value)));\n } else if (rule.type === 'min') {\n validators.push(Validators.min(Number(rule.value)));\n } else if (rule.type === 'max') {\n validators.push(Validators.max(Number(rule.value)));\n }\n }\n\n return validators;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Type,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport {\n Datepicker,\n DatepickerInput,\n DatepickerToggle,\n DateRange,\n DateRangeInput,\n DateRangePicker,\n EndDate,\n provideNativeDateAdapter,\n StartDate\n} from '@ngstarter-ui/components/datepicker';\nimport { FormField, Hint, IconButtonSuffix, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport {\n Select,\n SelectDataSource,\n SelectOptionContentContext,\n SelectOptionContentDef,\n SelectValueContext,\n SelectValueDef\n} from '@ngstarter-ui/components/select';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { Checkbox } from '@ngstarter-ui/components/checkbox';\nimport { SlideToggle } from '@ngstarter-ui/components/slide-toggle';\nimport { RadioButton, RadioGroup, RadioGroupOrientation } from '@ngstarter-ui/components/radio';\nimport { Segmented, SegmentedButton } from '@ngstarter-ui/components/segmented';\nimport { CountrySelect } from '@ngstarter-ui/components/country-select';\nimport { CurrencySelect } from '@ngstarter-ui/components/currency-select';\nimport { TimezoneSelect } from '@ngstarter-ui/components/timezone-select';\nimport { Timepicker, TimepickerInput, TimepickerToggle } from '@ngstarter-ui/components/timepicker';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport {\n UploadArea,\n UploadAreaDropStateDirective,\n UploadAreaIconDirective,\n UploadAreaInvalidStateDirective,\n UploadAreaMainStateDirective,\n UploadFileSelectedEvent,\n UploadTriggerDirective\n} from '@ngstarter-ui/components/upload';\nimport { FORM_BUILDER_SELECT_DATA_SOURCES, FORM_BUILDER_UPLOAD_CALLBACK } from '../config';\nimport { FormBuilderField, FormBuilderFieldDefinition, FormBuilderUploadCallback } from '../types';\n\n@Component({\n selector: 'ngs-form-builder-field-host',\n exportAs: 'ngsFormBuilderFieldHost',\n imports: [\n ReactiveFormsModule,\n Datepicker,\n DatepickerInput,\n DatepickerToggle,\n DateRangeInput,\n DateRangePicker,\n StartDate,\n EndDate,\n FormField,\n Hint,\n IconButtonSuffix,\n Label,\n Input,\n NgComponentOutlet,\n Select,\n SelectOptionContentDef,\n SelectValueDef,\n Option,\n Checkbox,\n SlideToggle,\n RadioButton,\n RadioGroup,\n Segmented,\n SegmentedButton,\n CountrySelect,\n CurrencySelect,\n TimezoneSelect,\n Timepicker,\n TimepickerInput,\n TimepickerToggle,\n Icon,\n UploadArea,\n UploadAreaIconDirective,\n UploadAreaMainStateDirective,\n UploadAreaDropStateDirective,\n UploadAreaInvalidStateDirective,\n UploadTriggerDirective\n ],\n templateUrl: './field-host.html',\n styleUrl: './field-host.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n provideNativeDateAdapter()\n ],\n host: {\n 'class': 'ngs-form-builder-field-host',\n '[class.is-custom]': 'customLoaded()',\n '[class.is-width-1]': '!editableCanvas() && field().width === 1',\n '[class.is-width-2]': '!editableCanvas() && field().width === 2',\n '[class.is-width-3]': '!editableCanvas() && field().width === 3',\n '[class.is-width-4]': '!editableCanvas() && field().width === 4',\n '[class.is-width-5]': '!editableCanvas() && field().width === 5',\n '[class.is-width-6]': '!editableCanvas() && field().width === 6',\n '[class.is-width-7]': '!editableCanvas() && field().width === 7',\n '[class.is-width-8]': '!editableCanvas() && field().width === 8',\n '[class.is-width-9]': '!editableCanvas() && field().width === 9',\n '[class.is-width-10]': '!editableCanvas() && field().width === 10',\n '[class.is-width-11]': '!editableCanvas() && field().width === 11',\n '[class.is-width-12]': '!editableCanvas() && (field().width ?? 12) === 12',\n '[class.is-hidden-field]': '!editableCanvas() && field().type === \"hidden\"'\n }\n})\nexport class FormBuilderFieldHost {\n private readonly providedUploadCallback = inject(FORM_BUILDER_UPLOAD_CALLBACK, { optional: true });\n private readonly selectDataSources = inject(FORM_BUILDER_SELECT_DATA_SOURCES, { optional: true }) ?? [];\n\n readonly field = input.required<FormBuilderField>();\n readonly control = input.required<FormControl>();\n readonly definitions = input<FormBuilderFieldDefinition[]>([]);\n readonly readonly = input(false);\n readonly editableCanvas = input(false);\n readonly uploadCallback = input<FormBuilderUploadCallback | null | undefined>(undefined);\n\n protected readonly customLoaded = signal(false);\n protected readonly controlValue = signal<any>(null);\n protected readonly textInputType = computed(() => {\n const type = this.field().type;\n return type === 'number' || type === 'email' ? type : 'text';\n });\n protected readonly radioOrientation = computed<RadioGroupOrientation>(() =>\n this.field().settings?.['orientation'] === 'horizontal' ? 'horizontal' : 'vertical'\n );\n protected readonly uploadAccept = computed(() => this.field().settings?.['accept'] || '*/*');\n protected readonly uploadDisabled = computed(() =>\n this.readonly() || this.field().readonly || this.field().disabled || this.control().disabled\n );\n protected readonly dateRangeDisabled = computed(() =>\n this.readonly() || this.field().readonly || this.field().disabled || this.control().disabled\n );\n protected readonly uploadSelectedText = computed(() => {\n const value = this.controlValue();\n const files = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n\n if (!files.length) {\n return this.field().placeholder || 'Drop files or click to upload';\n }\n\n if (files.length === 1) {\n return files[0]?.name || '1 file selected';\n }\n\n return `${files.length} files selected`;\n });\n protected readonly spacerHeight = computed(() => {\n const height = Number(this.field().settings?.['height'] ?? 24);\n return [8, 16, 24, 32, 48, 64].includes(height) ? height : 24;\n });\n protected readonly dateRangeStartValue = computed(() => this.formatDateRangePart(this.controlValue()?.start));\n protected readonly dateRangeEndValue = computed(() => this.formatDateRangePart(this.controlValue()?.end));\n protected readonly selectUsesDataSource = computed(() => {\n const field = this.field();\n\n return field.optionsSource === 'dataSource' || (!field.optionsSource && !!field.dataSource);\n });\n protected readonly selectDataSourceDefinition = computed(() => {\n if (!this.selectUsesDataSource()) {\n return null;\n }\n\n const dataSourceId = this.field().dataSource;\n\n if (!dataSourceId) {\n return null;\n }\n\n return this.selectDataSources.find(dataSource => dataSource.id === dataSourceId) ?? null;\n });\n protected readonly selectDataSource = computed<SelectDataSource | null>(() =>\n this.selectDataSourceDefinition()?.dataSource ?? null\n );\n protected readonly selectOptionContentComponent = computed<Type<any> | null>(() =>\n this.selectDataSourceDefinition()?.optionContentComponent ?? null\n );\n protected readonly selectValueComponent = computed<Type<any> | null>(() =>\n this.selectDataSourceDefinition()?.valueComponent ?? null\n );\n protected readonly selectPageSize = computed(() => this.field().dataSourceOptions?.pageSize ?? 20);\n protected readonly selectSearchable = computed(() => this.field().dataSourceOptions?.searchable ?? true);\n protected readonly selectSearchDebounce = computed(() => this.field().dataSourceOptions?.searchDebounce ?? 250);\n protected readonly selectMinSearchLength = computed(() => this.field().dataSourceOptions?.minSearchLength ?? 1);\n protected readonly selectLoadOnOpen = computed(() => this.field().dataSourceOptions?.loadOnOpen ?? true);\n\n private readonly anchor = viewChild.required('anchor', { read: ViewContainerRef });\n\n constructor() {\n effect(onCleanup => {\n const control = this.control();\n\n this.controlValue.set(control.value);\n const subscription = control.valueChanges.subscribe(value => {\n this.controlValue.set(value);\n });\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n effect(async () => {\n const field = this.field();\n const control = this.control();\n const definitions = this.definitions();\n const viewContainer = this.anchor();\n const renderer = definitions.find(definition => definition.type === field.type)?.renderer;\n\n viewContainer.clear();\n this.customLoaded.set(false);\n\n if (!renderer) {\n return;\n }\n\n const componentType = await renderer();\n const componentRef = viewContainer.createComponent(componentType);\n componentRef.setInput('field', field);\n componentRef.setInput('control', control);\n componentRef.setInput('readonly', this.readonly());\n componentRef.setInput('definition', definitions.find(definition => definition.type === field.type));\n this.customLoaded.set(true);\n });\n }\n\n protected async onUploadFilesSelected(event: UploadFileSelectedEvent): Promise<void> {\n if (this.uploadDisabled()) {\n return;\n }\n\n const fallbackValue = this.field().multiple\n ? event.files\n : event.files[0] ?? null;\n const callback = this.uploadCallback() ?? this.providedUploadCallback;\n let value = fallbackValue;\n\n if (callback) {\n this.control().markAsPending();\n const uploadedValue = await callback({\n field: this.field(),\n control: this.control(),\n event: event.event,\n files: event.files,\n fileList: event.fileList,\n multiple: event.multiple\n });\n\n if (uploadedValue !== undefined) {\n value = uploadedValue;\n }\n }\n\n this.control().setValue(value);\n this.control().markAsDirty();\n this.control().markAsTouched();\n this.control().updateValueAndValidity();\n }\n\n protected selectOptionContentInputs(\n data: unknown,\n option: SelectOptionContentContext['option'],\n value: unknown,\n label: string,\n selected: boolean,\n disabled: boolean,\n multiple: boolean\n ): Record<string, unknown> {\n const context: SelectOptionContentContext = {\n $implicit: data,\n data,\n option,\n value,\n label,\n selected,\n disabled,\n multiple\n };\n\n return {\n context,\n field: this.field(),\n control: this.control(),\n data,\n option,\n value,\n label,\n selected,\n disabled,\n multiple\n };\n }\n\n protected selectValueInputs(\n data: SelectValueContext['data'],\n option: SelectValueContext['option'],\n value: SelectValueContext['value'],\n label: string,\n labels: string[],\n count: number,\n multiple: boolean\n ): Record<string, unknown> {\n const context: SelectValueContext = {\n $implicit: data,\n data,\n option,\n value,\n label,\n labels,\n count,\n multiple\n };\n\n return {\n context,\n field: this.field(),\n control: this.control(),\n data,\n option,\n value,\n label,\n labels,\n count,\n multiple\n };\n }\n\n protected onDateRangeChanged(rangeInput: DateRangeInput<any>): void {\n queueMicrotask(() => {\n const range = rangeInput.value;\n const nextRange = range ?? new DateRange(null, null);\n this.control().setValue(nextRange);\n this.control().markAsDirty();\n this.control().markAsTouched();\n });\n }\n\n private formatDateRangePart(value: unknown): string {\n if (!value) {\n return '';\n }\n\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n\n return String(value);\n }\n}\n","<ng-container #anchor/>\n\n@if (!customLoaded()) {\n @switch (field().type) {\n @case ('textarea') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <textarea ngsInput\n rows=\"3\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\"></textarea>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('hidden') {\n <input type=\"hidden\" [formControl]=\"control()\">\n }\n\n @case ('select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [multiple]=\"field().multiple ?? false\"\n [clearable]=\"field().clearable ?? false\"\n [dataSource]=\"selectDataSource()\"\n [pageSize]=\"selectPageSize()\"\n [searchable]=\"selectSearchable()\"\n [searchDebounce]=\"selectSearchDebounce()\"\n [minSearchLength]=\"selectMinSearchLength()\"\n [loadOnOpen]=\"selectLoadOnOpen()\">\n @if (selectOptionContentComponent(); as optionComponent) {\n <ng-template ngsOptionContentDef\n let-data\n let-option=\"option\"\n let-value=\"value\"\n let-label=\"label\"\n let-selected=\"selected\"\n let-disabled=\"disabled\"\n let-multiple=\"multiple\">\n <ng-container\n [ngComponentOutlet]=\"optionComponent\"\n [ngComponentOutletInputs]=\"selectOptionContentInputs(data, option, value, label, selected, disabled, multiple)\"/>\n </ng-template>\n }\n\n @if (selectValueComponent(); as valueComponent) {\n <ng-template ngsSelectValueDef\n let-data\n let-option=\"option\"\n let-value=\"value\"\n let-label=\"label\"\n let-labels=\"labels\"\n let-count=\"count\"\n let-multiple=\"multiple\">\n <ng-container\n [ngComponentOutlet]=\"valueComponent\"\n [ngComponentOutletInputs]=\"selectValueInputs(data, option, value, label, labels, count, multiple)\"/>\n </ng-template>\n }\n\n @if (!selectUsesDataSource()) {\n @for (option of field().options ?? []; track option.value) {\n <ngs-option [value]=\"option.value\">{{ option.label }}</ngs-option>\n }\n }\n </ngs-select>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('radio') {\n <div class=\"ngs-form-builder-choice-field\">\n <span class=\"ngs-form-builder-choice-label\">{{ field().label }}</span>\n <ngs-radio-group [formControl]=\"control()\"\n [name]=\"field().name\"\n [orientation]=\"radioOrientation()\">\n @for (option of field().options ?? []; track option.value) {\n <ngs-radio-button [value]=\"option.value\">{{ option.label }}</ngs-radio-button>\n }\n </ngs-radio-group>\n @if (field().hint) {\n <span class=\"ngs-form-builder-choice-hint\">{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('segmented') {\n <div class=\"ngs-form-builder-choice-field\">\n <span class=\"ngs-form-builder-choice-label\">{{ field().label }}</span>\n <ngs-segmented [formControl]=\"control()\"\n [disabled]=\"readonly() || !!field().readonly || !!field().disabled\">\n @for (option of field().options ?? []; track option.value) {\n <button ngs-segmented-button type=\"button\" [value]=\"option.value\">{{ option.label }}</button>\n }\n </ngs-segmented>\n @if (field().hint) {\n <span class=\"ngs-form-builder-choice-hint\">{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('checkbox') {\n <div class=\"ngs-form-builder-check-field\">\n <ngs-checkbox [formControl]=\"control()\">\n {{ field().label }}\n </ngs-checkbox>\n @if (field().hint) {\n <span>{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('toggle') {\n <div class=\"ngs-form-builder-check-field\">\n <ngs-slide-toggle [formControl]=\"control()\">\n {{ field().label }}\n </ngs-slide-toggle>\n @if (field().hint) {\n <span>{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('date') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n [ngsDatepicker]=\"picker\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n <ngs-datepicker-toggle ngsIconButtonSuffix [for]=\"picker\"/>\n <ngs-datepicker #picker/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('time') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n [ngsTimepicker]=\"timePicker\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n <ngs-timepicker-toggle ngsIconButtonSuffix [for]=\"timePicker\"/>\n <ngs-timepicker #timePicker/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('date-range') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-date-range-input #rangeInput [rangePicker]=\"rangePicker\">\n <input ngsStartDate\n [value]=\"dateRangeStartValue()\"\n [placeholder]=\"field().placeholder || 'Start date'\"\n [readonly]=\"readonly() || field().readonly\"\n [disabled]=\"dateRangeDisabled()\"\n (input)=\"onDateRangeChanged(rangeInput)\">\n <input ngsEndDate\n [value]=\"dateRangeEndValue()\"\n placeholder=\"End date\"\n [readonly]=\"readonly() || field().readonly\"\n [disabled]=\"dateRangeDisabled()\"\n (input)=\"onDateRangeChanged(rangeInput)\">\n </ngs-date-range-input>\n <ngs-datepicker-toggle ngsIconButtonSuffix [for]=\"rangePicker\"/>\n <ngs-date-range-picker #rangePicker/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('upload') {\n <div class=\"ngs-form-builder-upload-field\"\n [class.is-disabled]=\"uploadDisabled()\">\n <span class=\"ngs-form-builder-choice-label\">{{ field().label }}</span>\n <ngs-upload-area ngsUploadTrigger\n [accept]=\"uploadAccept()\"\n [multiple]=\"field().multiple ?? false\"\n (fileSelected)=\"onUploadFilesSelected($event)\">\n <ngs-icon name=\"fluent:arrow-upload-24-regular\" ngsUploadAreaIcon/>\n <ng-container ngsUploadAreaMainState>\n {{ uploadSelectedText() }}\n </ng-container>\n <ng-container ngsUploadAreaDropState>\n Drop files here\n </ng-container>\n <ng-container ngsUploadAreaInvalidState>\n Invalid file type\n </ng-container>\n </ngs-upload-area>\n @if (field().hint) {\n <span class=\"ngs-form-builder-choice-hint\">{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('spacer') {\n <div class=\"ngs-form-builder-spacer\"\n [class.is-height-8]=\"spacerHeight() === 8\"\n [class.is-height-16]=\"spacerHeight() === 16\"\n [class.is-height-24]=\"spacerHeight() === 24\"\n [class.is-height-32]=\"spacerHeight() === 32\"\n [class.is-height-48]=\"spacerHeight() === 48\"\n [class.is-height-64]=\"spacerHeight() === 64\"\n aria-hidden=\"true\"></div>\n }\n\n @case ('timezone-select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-timezone-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [required]=\"field().required ?? false\"/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('currency') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n type=\"number\"\n inputmode=\"decimal\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('currency-select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-currency-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [required]=\"field().required ?? false\"/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('country-select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-country-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [clearable]=\"field().clearable ?? false\"\n [required]=\"field().required ?? false\"/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @default {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n [type]=\"textInputType()\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { AbstractControl, FormArray, ReactiveFormsModule, FormControl, FormGroup, ValidationErrors } from '@angular/forms';\nimport { Button } from '@ngstarter-ui/components/button';\nimport { DEFAULT_FORM_BUILDER_ITEMS, FORM_BUILDER_FIELDS, FORM_BUILDER_ITEMS, validatorsFromRules } from '../config';\nimport { FormBuilderField, FormBuilderFieldDefinition, FormBuilderItemDefinition, FormBuilderLayoutItem, FormBuilderSchema, FormBuilderSection, FormBuilderUploadCallback } from '../types';\nimport { FormBuilderFieldHost } from '../field-host/field-host';\n\ninterface FormRendererCanvasItem extends FormBuilderLayoutItem {\n field?: FormBuilderField;\n section?: FormBuilderSection;\n}\n\n@Component({\n selector: 'ngs-form-renderer',\n exportAs: 'ngsFormRenderer',\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n Button,\n FormBuilderFieldHost\n ],\n templateUrl: './form-renderer.html',\n styleUrl: './form-renderer.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-form-renderer'\n }\n})\nexport class FormRenderer {\n private readonly providedItems = inject(FORM_BUILDER_ITEMS, { optional: true }) ?? [];\n private readonly providedFields = inject(FORM_BUILDER_FIELDS, { optional: true }) ?? [];\n private readonly orphanControls = new Map<string, FormControl>();\n\n readonly schema = input.required<FormBuilderSchema>();\n readonly readonly = input(false);\n readonly showSubmit = input(true);\n readonly submitLabel = input('Submit');\n readonly uploadCallback = input<FormBuilderUploadCallback | null | undefined>(undefined);\n readonly value = model<Record<string, any>>({});\n readonly formSubmit = output<Record<string, any>>();\n readonly formReady = output<FormGroup>();\n\n protected readonly definitions = computed<FormBuilderFieldDefinition[]>(() => [\n ...DEFAULT_FORM_BUILDER_ITEMS,\n ...this.providedFields,\n ...this.providedItems\n ].reduce<FormBuilderFieldDefinition[]>((definitions, definition) => {\n const normalized = normalizeFieldDefinition(definition);\n const index = definitions.findIndex(item => item.type === normalized.type);\n\n if (index === -1) {\n definitions.push(normalized);\n } else {\n definitions[index] = {\n ...definitions[index],\n ...normalized,\n defaults: {\n ...definitions[index].defaults,\n ...normalized.defaults\n }\n };\n }\n\n return definitions;\n }, []));\n protected readonly visibleCanvasItems = computed<FormRendererCanvasItem[]>(() =>\n this.resolveCanvasItems(this.schema()).filter(item => !!item.field || !!item.section?.fields.length)\n );\n protected readonly formGroup = computed(() => this.createFormGroup());\n\n constructor() {\n effect(onCleanup => {\n const form = this.formGroup();\n this.formReady.emit(form);\n const subscription = form.valueChanges.subscribe(() => {\n this.value.set(form.getRawValue());\n });\n\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n protected getControl(field: FormBuilderField, formGroup = this.formGroup()): FormControl {\n const control = formGroup.controls[field.name];\n\n if (control instanceof FormControl) {\n return control;\n }\n\n const existing = this.orphanControls.get(field.id);\n\n if (existing) {\n return existing;\n }\n\n const nextControl = new FormControl({\n value: this.fieldInitialValue(field),\n disabled: true\n });\n this.orphanControls.set(field.id, nextControl);\n return nextControl;\n }\n\n protected isContainerField(field: FormBuilderField): boolean {\n const definition = this.definitions().find(item => item.type === field.type);\n\n return definition?.acceptsChildren === true ||\n definition?.kind === 'layout' ||\n field.kind === 'layout' ||\n field.type === 'group' ||\n field.type === 'grid';\n }\n\n protected visibleChildren(field: FormBuilderField): FormBuilderField[] {\n return field.children ?? [];\n }\n\n protected isRepeaterField(field: FormBuilderField): boolean {\n return field.type === 'repeater';\n }\n\n protected repeaterArray(field: FormBuilderField, formGroup = this.formGroup()): FormArray<FormGroup> {\n const control = formGroup.controls[field.name];\n\n return control instanceof FormArray\n ? control as FormArray<FormGroup>\n : new FormArray<FormGroup>([]);\n }\n\n protected repeaterGroups(field: FormBuilderField, formGroup = this.formGroup()): FormGroup[] {\n return this.repeaterArray(field, formGroup).controls;\n }\n\n protected repeaterEmptyText(field: FormBuilderField): string {\n const emptyText = field.settings?.['emptyText'];\n\n return typeof emptyText === 'string' ? emptyText.trim() : '';\n }\n\n protected addRepeaterItem(field: FormBuilderField, formGroup = this.formGroup()): void {\n if (this.readonly()) {\n return;\n }\n\n const array = this.repeaterArray(field, formGroup);\n\n array.push(this.createRepeaterGroup(field));\n array.updateValueAndValidity();\n }\n\n protected removeRepeaterItem(field: FormBuilderField, index: number, formGroup = this.formGroup()): void {\n if (this.readonly()) {\n return;\n }\n\n if (!this.canRemoveRepeaterItem(field, formGroup)) {\n return;\n }\n\n const array = this.repeaterArray(field, formGroup);\n\n array.removeAt(index);\n array.updateValueAndValidity();\n }\n\n protected canRemoveRepeaterItem(field: FormBuilderField, formGroup = this.formGroup()): boolean {\n return this.allowsNullValue(field) || this.repeaterArray(field, formGroup).length > 1;\n }\n\n protected submit(): void {\n const form = this.formGroup();\n\n if (form.invalid) {\n form.markAllAsTouched();\n return;\n }\n\n this.formSubmit.emit(form.getRawValue());\n }\n\n private createFormGroup(): FormGroup {\n const controls: Record<string, AbstractControl> = {};\n const value = this.value();\n\n const fields = [\n ...(this.schema().fields ?? []),\n ...this.schema().sections.flatMap(section => section.fields)\n ];\n\n this.addFieldsToControls(controls, fields, value);\n\n return new FormGroup(controls);\n }\n\n private addFieldsToControls(\n controls: Record<string, AbstractControl>,\n fields: FormBuilderField[],\n value: Record<string, any>\n ): void {\n for (const field of fields) {\n const definition = this.definitions().find(item => item.type === field.type);\n\n if (this.isRepeaterField(field)) {\n controls[field.name] = this.createRepeaterArray(field, value[field.name]);\n continue;\n }\n\n if (this.isContainerField(field)) {\n this.addFieldsToControls(controls, field.children ?? [], value);\n continue;\n }\n\n if (definition?.kind === 'static' || field.kind === 'static') {\n continue;\n }\n\n const validators = definition?.validators?.(field) ?? validatorsFromRules(field.validation, field);\n const control = new FormControl(\n {\n value: value[field.name] ?? this.fieldInitialValue(field),\n disabled: field.disabled || this.readonly()\n },\n validators\n );\n\n controls[field.name] = control;\n }\n }\n\n private createRepeaterArray(field: FormBuilderField, value: unknown): FormArray<FormGroup> {\n const allowNullValue = this.allowsNullValue(field);\n const rows = Array.isArray(value) && (allowNullValue || value.length > 0)\n ? value\n : allowNullValue\n ? []\n : [{}];\n const validators = allowNullValue ? [] : [repeaterRequiredValidator];\n\n return new FormArray(rows.map(row => this.createRepeaterGroup(field, row)), validators);\n }\n\n private createRepeaterGroup(field: FormBuilderField, value: unknown = {}): FormGroup {\n const controls: Record<string, AbstractControl> = {};\n const rowValue = isRecord(value) ? value : {};\n\n for (const child of flattenFields(field.children ?? [])) {\n const definition = this.definitions().find(item => item.type === child.type);\n\n if (this.isContainerField(child) || definition?.kind === 'static' || child.kind === 'static') {\n continue;\n }\n\n const validators = definition?.validators?.(child) ?? validatorsFromRules(child.validation, child);\n controls[child.name] = new FormControl(\n {\n value: rowValue[child.name] ?? this.fieldInitialValue(child),\n disabled: child.disabled || this.readonly()\n },\n validators\n );\n }\n\n return new FormGroup(controls);\n }\n\n private fieldInitialValue(field: FormBuilderField): any {\n if (field.defaultValue !== undefined) {\n return field.defaultValue;\n }\n\n if (field.type === 'upload') {\n return field.multiple ? [] : null;\n }\n\n const selectedValues = (field.options ?? [])\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (field.type === 'checkbox-list' || field.multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n }\n\n private allowsNullValue(field: FormBuilderField): boolean {\n return field.settings?.['allowNullValue'] === true;\n }\n\n private resolveCanvasItems(schema: FormBuilderSchema): FormRendererCanvasItem[] {\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n const items: FormRendererCanvasItem[] = [];\n\n for (const item of normalizedLayout(schema)) {\n if (item.kind === 'field') {\n const field = fieldsById.get(item.id);\n\n if (field) {\n items.push({ ...item, field });\n }\n\n continue;\n }\n\n const section = sectionsById.get(item.id);\n\n if (section) {\n items.push({ ...item, section });\n }\n }\n\n return items;\n }\n}\n\nfunction normalizeFieldDefinition(definition: FormBuilderItemDefinition): FormBuilderFieldDefinition {\n return {\n ...definition,\n kind: definition.kind ?? 'field'\n } as FormBuilderFieldDefinition;\n}\n\nfunction flattenFields(fields: FormBuilderField[]): FormBuilderField[] {\n return fields.flatMap(field => [field, ...flattenFields(field.children ?? [])]);\n}\n\nfunction isRecord(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction repeaterRequiredValidator(control: AbstractControl): ValidationErrors | null {\n return control instanceof FormArray && control.length === 0\n ? { repeaterRequired: true }\n : null;\n}\n\nfunction normalizedLayout(schema: FormBuilderSchema): FormBuilderLayoutItem[] {\n const used = new Set<string>();\n const layout: FormBuilderLayoutItem[] = [];\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n\n for (const item of schema.layout ?? []) {\n const key = `${item.kind}:${item.id}`;\n\n if (used.has(key)) {\n continue;\n }\n\n if ((item.kind === 'field' && fieldsById.has(item.id)) || (item.kind === 'section' && sectionsById.has(item.id))) {\n used.add(key);\n layout.push(item);\n }\n }\n\n for (const field of schema.fields ?? []) {\n const key = `field:${field.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'field', id: field.id });\n }\n }\n\n for (const section of schema.sections) {\n const key = `section:${section.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'section', id: section.id });\n }\n }\n\n return layout;\n}\n","<ng-template #renderFields let-fields let-controlGroup=\"controlGroup\">\n <div class=\"ngs-form-renderer-grid\">\n @for (field of fields; track field.id) {\n @if (isRepeaterField(field)) {\n <section class=\"ngs-form-renderer-grid-field ngs-form-renderer-repeater\">\n <header>\n <div>\n <h4>{{ field.label }}</h4>\n @if (field.hint) {\n <p>{{ field.hint }}</p>\n }\n </div>\n\n @if (!readonly()) {\n <button ngsButton=\"outlined\" type=\"button\" (click)=\"addRepeaterItem(field, controlGroup)\">\n +\n </button>\n }\n </header>\n\n <div class=\"ngs-form-renderer-repeater-items\">\n @if (!repeaterGroups(field, controlGroup).length && repeaterEmptyText(field)) {\n <p class=\"ngs-form-renderer-repeater-empty\">{{ repeaterEmptyText(field) }}</p>\n }\n\n @for (group of repeaterGroups(field, controlGroup); track $index) {\n <div class=\"ngs-form-renderer-repeater-item\" [formGroup]=\"group\">\n <div class=\"ngs-form-renderer-repeater-item-header\">\n <span>{{ field.label }} {{ $index + 1 }}</span>\n @if (!readonly() && canRemoveRepeaterItem(field, controlGroup)) {\n <button ngsButton=\"text\" type=\"button\" (click)=\"removeRepeaterItem(field, $index, controlGroup)\">\n Remove\n </button>\n }\n </div>\n\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: visibleChildren(field), controlGroup: group }\"/>\n </div>\n }\n </div>\n </section>\n } @else if (isContainerField(field)) {\n <section class=\"ngs-form-renderer-grid-field\">\n <header>\n <h4>{{ field.label }}</h4>\n @if (field.hint) {\n <p>{{ field.hint }}</p>\n }\n </header>\n\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: visibleChildren(field), controlGroup: controlGroup }\"/>\n </section>\n } @else {\n <ngs-form-builder-field-host\n [field]=\"field\"\n [control]=\"getControl(field, controlGroup)\"\n [definitions]=\"definitions()\"\n [uploadCallback]=\"uploadCallback()\"\n [readonly]=\"readonly()\"/>\n }\n }\n </div>\n</ng-template>\n\n<form [formGroup]=\"formGroup()\" (ngSubmit)=\"submit()\">\n <div class=\"flex flex-col gap-6\">\n @for (item of visibleCanvasItems(); track item.kind + ':' + item.id) {\n @if (item.field) {\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: [item.field], controlGroup: formGroup() }\"/>\n } @else if (item.section; as section) {\n <section class=\"ngs-form-renderer-section\">\n @if (section.title || section.description) {\n <header>\n @if (section.title) {\n <h3>{{ section.title }}</h3>\n }\n @if (section.description) {\n <p>{{ section.description }}</p>\n }\n </header>\n }\n\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: section.fields, controlGroup: formGroup() }\"/>\n </section>\n }\n }\n\n @if (showSubmit() && !readonly()) {\n <div class=\"flex justify-end\">\n <button ngsButton=\"filled\" type=\"submit\">{{ submitLabel() }}</button>\n </div>\n }\n </div>\n</form>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport {\n FORM_BUILDER_FIELD_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_INPUT_FIELD_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_LAYOUT_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_LAYOUT_CONTAINER_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_SELECT_DATA_SOURCES,\n FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_STATIC_BASE_SETTINGS_SCHEMA\n} from '../config';\nimport {\n FormBuilderComponentImporter,\n FormBuilderField,\n FormBuilderFieldDefinition,\n FormBuilderItemDefinition,\n FormBuilderOption,\n FormBuilderSchema,\n FormBuilderSection,\n FormBuilderSettingsConfig,\n FormBuilderSettingsDefinition,\n FormBuilderSettingsInheritance\n} from '../types';\nimport { FormRenderer } from '../form-renderer/form-renderer';\n\n@Component({\n selector: 'ngs-form-builder-settings-host',\n exportAs: 'ngsFormBuilderSettingsHost',\n imports: [\n FormRenderer\n ],\n templateUrl: './settings-host.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-form-builder-settings-host',\n '[class.is-empty]': '!settingsSchema() && !legacyLoaded()'\n }\n})\nexport class FormBuilderSettingsHost {\n private readonly selectDataSources = inject(FORM_BUILDER_SELECT_DATA_SOURCES, { optional: true }) ?? [];\n\n readonly field = input<FormBuilderField | null>(null);\n readonly section = input<FormBuilderSection | null>(null);\n readonly schema = input.required<FormBuilderSchema>();\n readonly definitions = input<FormBuilderFieldDefinition[]>([]);\n readonly settingsDefinitions = input<FormBuilderSettingsDefinition[]>([]);\n readonly update = input<(changes: Partial<FormBuilderField>) => void>();\n readonly updateSection = input<(changes: Partial<FormBuilderSection>) => void>();\n\n protected readonly itemDefinition = computed(() => {\n const field = this.field();\n const section = this.section();\n\n if (section) {\n return this.definitions().find(definition => definition.type === 'section');\n }\n\n return field ? this.definitions().find(definition => definition.type === field.type) : undefined;\n });\n protected readonly settingsSchema = computed(() => {\n const definition = this.itemDefinition();\n const config = this.settingsConfig(definition);\n const inheritance = config?.extends ?? this.inferSettingsInheritance(definition);\n const schemas = [\n this.baseSettingsSchema(inheritance),\n this.resolveOwnSettingsSchema(config, definition)\n ].filter((schema): schema is FormBuilderSchema => !!schema);\n\n return this.withRegisteredSelectDataSources(mergeSettingsSchemas(schemas));\n });\n protected readonly settingsValue = computed(() => {\n const item = this.section() ?? this.field();\n const schema = this.settingsSchema();\n const value: Record<string, any> = {};\n\n if (!item || !schema) {\n return value;\n }\n\n for (const settingField of flattenSettingsFields(schema)) {\n value[settingField.name] = this.readSettingValue(item, settingField);\n }\n\n return value;\n });\n protected readonly legacyLoaded = signal(false);\n private readonly anchor = viewChild.required('anchor', { read: ViewContainerRef });\n\n constructor() {\n effect(async () => {\n const field = this.field();\n const section = this.section();\n const definitions = this.definitions();\n const settingDefinitions = this.settingsDefinitions();\n const viewContainer = this.anchor();\n const type = section ? 'section' : field?.type;\n const itemDefinition = type ? definitions.find(definition => definition.type === type) : undefined;\n const kind = section ? 'layout' : (itemDefinition?.kind ?? field?.kind ?? 'field');\n const legacySettings = this.legacySettingsImporter(itemDefinition) ?? settingDefinitions.find(definition => {\n if (type && (definition.itemType === type || definition.fieldType === type || definition.type === type)) {\n return true;\n }\n\n return !!definition.kind && definition.kind === kind;\n })?.component;\n\n viewContainer.clear();\n this.legacyLoaded.set(false);\n\n if (!legacySettings) {\n return;\n }\n\n const componentType = await legacySettings();\n const componentRef = viewContainer.createComponent(componentType);\n componentRef.setInput('item', section ?? field);\n componentRef.setInput('field', field);\n componentRef.setInput('section', section);\n componentRef.setInput('schema', this.schema());\n componentRef.setInput('definition', itemDefinition);\n componentRef.setInput('update', section ? this.updateSection() : this.update());\n componentRef.setInput('updateField', this.update());\n componentRef.setInput('updateSection', this.updateSection());\n this.legacyLoaded.set(true);\n });\n }\n\n protected applySettingsValue(value: Record<string, any>): void {\n const schema = this.settingsSchema();\n const section = this.section();\n const field = this.field();\n\n if (!schema) {\n return;\n }\n\n if (section) {\n const patch = this.createSettingsPatch(section, schema, value);\n\n if (Object.keys(patch).length) {\n this.updateSection()?.(patch);\n }\n\n return;\n }\n\n if (field) {\n const patch = this.createSettingsPatch(field, schema, value);\n\n if (Object.keys(patch).length) {\n this.update()?.(patch);\n }\n }\n }\n\n private createSettingsPatch<T extends FormBuilderField | FormBuilderSection>(\n item: T,\n schema: FormBuilderSchema,\n value: Record<string, any>\n ): Partial<T> {\n const patch: Record<string, any> = {};\n\n for (const settingField of flattenSettingsFields(schema)) {\n if (settingField.settings?.['valueAdapter'] === 'selectOptionsSource' && isFormBuilderField(item)) {\n const nextSource = value[settingField.name] === 'dataSource' ? 'dataSource' : 'static';\n\n if (nextSource === this.readSettingValue(item, settingField)) {\n continue;\n }\n\n patch['optionsSource'] = nextSource;\n patch['defaultValue'] = nextSource === 'dataSource'\n ? item.multiple ? [] : null\n : resolveSelectedDefaultValue(item.options ?? [], item);\n\n continue;\n }\n\n if (settingField.settings?.['valueAdapter'] === 'optionsText' && isFormBuilderField(item)) {\n if (value[settingField.name] === this.readSettingValue(item, settingField)) {\n continue;\n }\n\n const nextOptions = parseOptionsText(String(value[settingField.name] ?? ''), item);\n\n patch['options'] = nextOptions;\n patch['defaultValue'] = resolveSelectedDefaultValue(nextOptions, item);\n continue;\n }\n\n if (settingField.settings?.['valueAdapter'] === 'selectMultiple' && isFormBuilderField(item)) {\n const multiple = value[settingField.name] === true;\n\n if (multiple === (item.multiple === true)) {\n continue;\n }\n\n const options = multiple ? item.options ?? [] : normalizeSelectedOptions(item.options ?? [], { ...item, multiple });\n\n patch['multiple'] = multiple;\n patch['options'] = options;\n patch['defaultValue'] = resolveMultipleDefaultValue(item, options, multiple);\n continue;\n }\n\n if (settingField.settings?.['valueAdapter'] === 'multipleDefaultValue' && isFormBuilderField(item)) {\n const multiple = value[settingField.name] === true;\n\n if (multiple === (item.multiple === true)) {\n continue;\n }\n\n patch['multiple'] = multiple;\n patch['defaultValue'] = multiple ? [] : null;\n continue;\n }\n\n const nextValue = value[settingField.name];\n\n if (nextValue === this.readSettingValue(item, settingField)) {\n continue;\n }\n\n seedPathPatch(patch, item, settingField.name);\n setPathValue(patch, settingField.name, nextValue);\n }\n\n return patch as Partial<T>;\n }\n\n private readSettingValue(item: FormBuilderField | FormBuilderSection, settingField: FormBuilderField): any {\n if (settingField.settings?.['valueAdapter'] === 'selectOptionsSource' && isFormBuilderField(item)) {\n return item.optionsSource ?? (item.dataSource ? 'dataSource' : 'static');\n }\n\n if (settingField.settings?.['valueAdapter'] === 'optionsText' && isFormBuilderField(item)) {\n return optionsToText(item.options ?? [], item.defaultValue);\n }\n\n const value = getPathValue(item, settingField.name);\n\n return value === undefined ? settingField.defaultValue ?? null : value;\n }\n\n private settingsConfig(definition: FormBuilderItemDefinition | undefined): FormBuilderSettingsConfig | undefined {\n return definition?.settings && typeof definition.settings !== 'function'\n ? definition.settings\n : undefined;\n }\n\n private legacySettingsImporter(definition: FormBuilderItemDefinition | undefined): FormBuilderComponentImporter | undefined {\n return typeof definition?.settings === 'function'\n ? definition.settings\n : undefined;\n }\n\n private resolveOwnSettingsSchema(\n config: FormBuilderSettingsConfig | undefined,\n definition: FormBuilderItemDefinition | undefined\n ): FormBuilderSchema | null {\n const schema = config?.schema;\n\n if (!schema) {\n return null;\n }\n\n if (typeof schema !== 'function') {\n return schema;\n }\n\n const section = this.section();\n\n if (section) {\n return schema({\n item: section,\n section,\n schema: this.schema(),\n definition,\n update: this.updateSection()!,\n updateSection: this.updateSection()!\n });\n }\n\n const field = this.field()!;\n\n return schema({\n item: field,\n field,\n schema: this.schema(),\n definition,\n update: this.update()!,\n updateField: this.update()!\n });\n }\n\n private inferSettingsInheritance(definition: FormBuilderItemDefinition | undefined): FormBuilderSettingsInheritance {\n const field = this.field();\n\n if (this.section()) {\n return 'none';\n }\n\n const kind = definition?.kind ?? field?.kind ?? 'field';\n\n if (kind === 'static') {\n return 'static';\n }\n\n if (kind === 'layout' || definition?.acceptsChildren || field?.children?.length) {\n return 'layout';\n }\n\n return 'field';\n }\n\n private baseSettingsSchema(inheritance: FormBuilderSettingsInheritance): FormBuilderSchema | null {\n if (this.section()) {\n return inheritance === 'none' ? null : FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA;\n }\n\n switch (inheritance) {\n case 'field':\n return FORM_BUILDER_FIELD_BASE_SETTINGS_SCHEMA;\n case 'input-field':\n return FORM_BUILDER_INPUT_FIELD_BASE_SETTINGS_SCHEMA;\n case 'layout':\n return FORM_BUILDER_LAYOUT_BASE_SETTINGS_SCHEMA;\n case 'layout-container':\n return FORM_BUILDER_LAYOUT_CONTAINER_BASE_SETTINGS_SCHEMA;\n case 'static':\n return FORM_BUILDER_STATIC_BASE_SETTINGS_SCHEMA;\n default:\n return null;\n }\n }\n\n private withRegisteredSelectDataSources(schema: FormBuilderSchema | null): FormBuilderSchema | null {\n if (!schema) {\n return null;\n }\n\n const dataSourceOptions = this.selectDataSources.map(dataSource => ({\n label: dataSource.name,\n value: dataSource.id\n }));\n\n return {\n ...schema,\n fields: schema.fields?.map(field => this.withSelectDataSourceOptions(field, dataSourceOptions)),\n sections: schema.sections.map(section => ({\n ...section,\n fields: section.fields.map(field => this.withSelectDataSourceOptions(field, dataSourceOptions))\n }))\n };\n }\n\n private withSelectDataSourceOptions(field: FormBuilderField, options: FormBuilderOption[]): FormBuilderField {\n const children = field.children?.map(child => this.withSelectDataSourceOptions(child, options));\n\n if (field.settings?.['valueAdapter'] !== 'selectDataSource') {\n return children ? { ...field, children } : field;\n }\n\n return {\n ...field,\n children,\n options\n };\n }\n}\n\nfunction mergeSettingsSchemas(schemas: FormBuilderSchema[]): FormBuilderSchema | null {\n if (!schemas.length) {\n return null;\n }\n\n return {\n sections: schemas.flatMap(schema => schema.sections.map(section => ({\n ...section,\n fields: section.fields.map(field => ({ ...field }))\n })))\n };\n}\n\nfunction flattenSettingsFields(schema: FormBuilderSchema): FormBuilderField[] {\n return [\n ...(schema.fields ?? []),\n ...schema.sections.flatMap(section => section.fields)\n ].flatMap(field => [field, ...flattenSettingsFields({ sections: [], fields: field.children ?? [] })]);\n}\n\nfunction getPathValue(source: Record<string, any>, path: string): any {\n return path.split('.').reduce<any>((value, key) => value?.[key], source);\n}\n\nfunction setPathValue(target: Record<string, any>, path: string, value: any): void {\n const keys = path.split('.');\n let cursor = target;\n\n keys.slice(0, -1).forEach(key => {\n cursor[key] = cursor[key] ?? {};\n cursor = cursor[key];\n });\n\n cursor[keys[keys.length - 1]] = value;\n}\n\nfunction seedPathPatch(target: Record<string, any>, source: Record<string, any>, path: string): void {\n const [rootKey] = path.split('.');\n const sourceValue = source[rootKey];\n\n if (!path.includes('.') || target[rootKey] !== undefined || !isPlainObject(sourceValue)) {\n return;\n }\n\n target[rootKey] = { ...sourceValue };\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isFormBuilderField(item: FormBuilderField | FormBuilderSection): item is FormBuilderField {\n return 'type' in item;\n}\n\nfunction optionsToText(options: FormBuilderOption[], defaultValue: any): string {\n return options\n .map(option => `${option.label}:${option.value}${isOptionSelected(option, defaultValue) ? ':selected' : ''}`)\n .join('\\n');\n}\n\nfunction parseOptionsText(value: string, field: FormBuilderField): FormBuilderOption[] {\n return normalizeSelectedOptions(value\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map((line, index) => {\n const parsed = parseOptionLine(line);\n\n return {\n label: parsed?.label || `Option ${index + 1}`,\n value: parsed?.value || `option_${index + 1}`,\n selected: parsed?.selected || undefined\n };\n }), field);\n}\n\nfunction parseOptionLine(line: string): FormBuilderOption | null {\n const parts = line.split(':').map(part => part.trim());\n\n if (parts.length < 2 || !parts[0] || !parts[1]) {\n return null;\n }\n\n return {\n label: parts[0],\n value: parts[1],\n selected: parts[2] === 'selected'\n };\n}\n\nfunction normalizeSelectedOptions(options: FormBuilderOption[], field: FormBuilderField): FormBuilderOption[] {\n if (field.type === 'checkbox-list' || field.multiple) {\n return options;\n }\n\n let selectedSeen = false;\n\n return options.map(option => {\n if (!option.selected) {\n return option;\n }\n\n if (selectedSeen) {\n return {\n ...option,\n selected: undefined\n };\n }\n\n selectedSeen = true;\n return option;\n });\n}\n\nfunction resolveSelectedDefaultValue(options: FormBuilderOption[], field: FormBuilderField): any {\n const selectedValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (field.type === 'checkbox-list' || field.multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n}\n\nfunction resolveMultipleDefaultValue(field: FormBuilderField, options: FormBuilderOption[], multiple: boolean): any {\n const selectedValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (multiple) {\n return Array.isArray(field.defaultValue)\n ? field.defaultValue\n : field.defaultValue == null\n ? selectedValues\n : [field.defaultValue];\n }\n\n return Array.isArray(field.defaultValue)\n ? field.defaultValue[0] ?? selectedValues[0] ?? null\n : field.defaultValue ?? selectedValues[0] ?? null;\n}\n\nfunction isOptionSelected(option: FormBuilderOption, defaultValue: any): boolean {\n if (option.selected) {\n return true;\n }\n\n return Array.isArray(defaultValue)\n ? defaultValue.includes(option.value)\n : defaultValue === option.value;\n}\n","@if (settingsSchema(); as schema) {\n <ngs-form-renderer\n [schema]=\"schema\"\n [value]=\"settingsValue()\"\n [showSubmit]=\"false\"\n (valueChange)=\"applySettingsValue($event)\"/>\n}\n\n<ng-container #anchor/>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, TemplateRef, computed, inject, input, model, numberAttribute, output, signal, viewChild } from '@angular/core';\nimport { FormsModule, FormControl } from '@angular/forms';\nimport { Button } from '@ngstarter-ui/components/button';\nimport { Card, CardAside, CardContent, CardHeader } from '@ngstarter-ui/components/card';\nimport { ConfirmManager } from '@ngstarter-ui/components/confirm';\nimport { Dialog, DialogActions, DialogClose, DialogContent, DialogTitle } from '@ngstarter-ui/components/dialog';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { Panel, PanelAside, PanelContent, PanelHeader, PanelSidebar } from '@ngstarter-ui/components/panel';\nimport { ScrollbarArea } from '@ngstarter-ui/components/scrollbar-area';\nimport { Tab, TabGroup } from '@ngstarter-ui/components/tabs';\nimport {Toolbar, ToolbarItem, ToolbarSpacer, ToolbarSubtitle, ToolbarTitle} from '@ngstarter-ui/components/toolbar';\nimport { Tree, TreeDragPlaceholder, TreeNode, TreeNodeDef, TreeNodeDrop, TreeNodeDropPosition, TreeNodePadding } from '@ngstarter-ui/components/tree';\nimport {\n DEFAULT_FORM_BUILDER_ITEMS,\n FORM_BUILDER_FIELDS,\n FORM_BUILDER_ITEMS,\n FORM_BUILDER_SETTINGS\n} from '../config';\nimport {\n FormBuilderField,\n FormBuilderFieldChange,\n FormBuilderFieldDefinition,\n FormBuilderItemDefinition,\n FormBuilderLayoutItem,\n FormBuilderFieldWidth,\n FormBuilderSchema,\n FormBuilderSection,\n FormBuilderSettingsDefinition,\n FormBuilderUploadCallback\n} from '../types';\nimport { FormBuilderFieldHost } from '../field-host/field-host';\nimport { FormRenderer } from '../form-renderer/form-renderer';\nimport { FormBuilderSettingsHost } from '../settings-host/settings-host';\n\ninterface FormBuilderPaletteGroup {\n name: string;\n fields: FormBuilderFieldDefinition[];\n}\n\ninterface FormBuilderFieldTreeNode {\n id: string;\n label: string;\n name?: string;\n type: string;\n icon: string;\n kind: 'section' | 'field';\n field?: FormBuilderField;\n section?: FormBuilderSection;\n children?: FormBuilderFieldTreeNode[];\n}\n\ninterface FormBuilderFieldLocation {\n field: FormBuilderField;\n section?: FormBuilderSection;\n siblings: FormBuilderField[];\n index: number;\n}\n\ninterface FormBuilderTreeInsertTarget {\n fields: FormBuilderField[];\n index: number;\n section?: FormBuilderSection;\n owner?: FormBuilderField;\n}\n\ninterface FormBuilderContainerLocation {\n id: string;\n fields: FormBuilderField[];\n section?: FormBuilderSection;\n owner?: FormBuilderField;\n}\n\ninterface FormBuilderCanvasItem extends FormBuilderLayoutItem {\n field?: FormBuilderField;\n section?: FormBuilderSection;\n}\n\ntype FormBuilderNativeDragItem =\n | { kind: 'field'; definition: FormBuilderFieldDefinition }\n | { kind: 'section' };\n\ninterface FormBuilderNativeDropTarget {\n containerId: string;\n index: number;\n}\n\ninterface FormBuilderPendingNativeDropTarget {\n target: FormBuilderNativeDropTarget;\n clientX: number;\n clientY: number;\n}\n\nconst ROOT_DROP_LIST_ID = 'ngs-form-builder-root-fields';\nconst PALETTE_DRAG_TYPE = 'application/x-ngstarter-form-builder-field';\nconst PALETTE_DRAG_ITEM = 'application/x-ngstarter-form-builder-item';\nconst ACTUAL_FIELDS_TAB_INDEX = 1;\n\n@Component({\n selector: 'ngs-form-builder',\n exportAs: 'ngsFormBuilder',\n imports: [\n NgTemplateOutlet,\n FormsModule,\n Button,\n Card,\n CardAside,\n CardContent,\n CardHeader,\n DialogActions,\n DialogClose,\n DialogContent,\n DialogTitle,\n Icon,\n Input,\n Panel,\n PanelAside,\n PanelContent,\n PanelHeader,\n PanelSidebar,\n ScrollbarArea,\n Tab,\n TabGroup,\n Toolbar,\n ToolbarItem,\n ToolbarSpacer,\n ToolbarTitle,\n Tree,\n TreeDragPlaceholder,\n TreeNode,\n TreeNodeDef,\n TreeNodePadding,\n FormBuilderFieldHost,\n FormRenderer,\n FormBuilderSettingsHost,\n ToolbarSubtitle\n ],\n templateUrl: './form-builder.html',\n styleUrl: './form-builder.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-form-builder'\n }\n})\nexport class FormBuilder implements OnDestroy {\n private readonly dialog = inject(Dialog);\n private readonly confirmManager = inject(ConfirmManager);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly providedItems = inject(FORM_BUILDER_ITEMS, { optional: true }) ?? [];\n private readonly providedFields = inject(FORM_BUILDER_FIELDS, { optional: true }) ?? [];\n private readonly providedSettings = inject(FORM_BUILDER_SETTINGS, { optional: true }) ?? [];\n private readonly previewControls = new Map<string, FormControl>();\n private readonly fieldTreeNodeCache = new Map<string, FormBuilderFieldTreeNode>();\n private readonly canvasAnimationTimers = new WeakMap<HTMLElement, number>();\n private readonly actualFieldsTree = viewChild<Tree<FormBuilderFieldTreeNode>>('actualFieldsTree');\n private fieldTreeRootNodes: FormBuilderFieldTreeNode[] = [];\n private fieldTreeStructureKey = '';\n private suppressPaletteClick = false;\n private pendingNativeDropTarget: FormBuilderPendingNativeDropTarget | null = null;\n private nativeDropTargetDelayTimer: number | null = null;\n\n readonly schema = model<FormBuilderSchema>(createDefaultFormBuilderSchema());\n readonly paletteTitle = input('Fields');\n readonly inspectorTitle = input('Field properties');\n readonly canvasDropPlaceholderDelay = input(200, { transform: numberAttribute });\n readonly uploadCallback = input<FormBuilderUploadCallback | null | undefined>(undefined);\n\n readonly fieldSelected = output<FormBuilderFieldChange>();\n readonly fieldAdded = output<FormBuilderFieldChange>();\n readonly fieldRemoved = output<FormBuilderFieldChange>();\n\n protected readonly search = signal('');\n protected readonly fieldsTabIndex = signal(0);\n protected readonly selectedFieldId = signal<string | null>(null);\n protected readonly nativeDragItem = signal<FormBuilderNativeDragItem | null>(null);\n protected readonly nativeDragFieldDefinition = computed(() => {\n const item = this.nativeDragItem();\n return item?.kind === 'field' ? item.definition : null;\n });\n protected readonly nativeDragSection = computed(() => this.nativeDragItem()?.kind === 'section');\n protected readonly nativeDropTarget = signal<FormBuilderNativeDropTarget | null>(null);\n protected readonly expandedFieldTreeNodeIds = signal<ReadonlySet<string>>(new Set());\n protected readonly definitions = computed<FormBuilderFieldDefinition[]>(() => [\n ...DEFAULT_FORM_BUILDER_ITEMS,\n ...this.providedFields,\n ...this.providedItems\n ].reduce<FormBuilderFieldDefinition[]>((definitions, definition) => {\n const normalized = normalizeFieldDefinition(definition);\n const index = definitions.findIndex(item => item.type === normalized.type);\n\n if (index === -1) {\n definitions.push(normalized);\n } else {\n definitions[index] = {\n ...definitions[index],\n ...normalized,\n defaults: {\n ...definitions[index].defaults,\n ...normalized.defaults\n }\n };\n }\n\n return definitions;\n }, []));\n protected readonly settingsDefinitions = computed<FormBuilderSettingsDefinition[]>(() => this.providedSettings);\n protected readonly canvasItems = computed<FormBuilderCanvasItem[]>(() => this.resolveCanvasItems(this.schema()));\n protected readonly layoutDefinitions = computed<FormBuilderFieldDefinition[]>(() => {\n const query = this.search().trim().toLowerCase();\n\n return this.definitions().filter(definition => {\n if (definition.type === 'section' || (definition.group || 'Other') !== 'Layout') {\n return false;\n }\n\n return this.matchesPaletteQuery(definition, query);\n });\n });\n protected readonly paletteGroups = computed<FormBuilderPaletteGroup[]>(() => {\n const query = this.search().trim().toLowerCase();\n const groups = new Map<string, FormBuilderFieldDefinition[]>();\n\n for (const definition of this.definitions()) {\n const group = definition.group || 'Other';\n\n if (group === 'Layout' || !this.matchesPaletteQuery(definition, query)) {\n continue;\n }\n\n groups.set(group, [...(groups.get(group) ?? []), definition]);\n }\n\n return Array.from(groups, ([name, fields]) => ({ name, fields }));\n });\n protected readonly selectedField = computed(() => {\n const selectedId = this.selectedFieldId();\n return selectedId ? this.findFieldLocation(this.schema(), selectedId)?.field ?? null : null;\n });\n protected readonly selectedSection = computed(() => {\n const selectedId = this.selectedFieldId();\n return selectedId ? this.schema().sections.find(section => section.id === selectedId) ?? null : null;\n });\n protected readonly fieldTree = computed<FormBuilderFieldTreeNode[]>(() => {\n const nodes = this.resolveCanvasItems(this.schema()).map(item => {\n return item.field\n ? this.upsertFieldTreeNode(item.field)\n : this.upsertSectionTreeNode(item.section!);\n });\n const structureKey = this.resolveFieldTreeStructureKey(nodes);\n\n if (structureKey !== this.fieldTreeStructureKey) {\n this.fieldTreeStructureKey = structureKey;\n this.fieldTreeRootNodes = nodes;\n return this.fieldTreeRootNodes;\n }\n\n replaceArrayContents(this.fieldTreeRootNodes, nodes);\n return this.fieldTreeRootNodes;\n });\n protected readonly fieldTreeChildrenAccessor = (node: FormBuilderFieldTreeNode) => node.children ?? [];\n protected readonly hasFieldTreeChildren = (_: number, node: FormBuilderFieldTreeNode) =>\n !!node.children;\n protected readonly trackFieldTreeNode = (_: number, node: FormBuilderFieldTreeNode) => node.id;\n protected readonly fieldTreeDraggablePredicate = (_node: FormBuilderFieldTreeNode) => true;\n protected readonly fieldTreeDropPredicate = (\n source: FormBuilderFieldTreeNode,\n target: FormBuilderFieldTreeNode,\n position: TreeNodeDropPosition\n ) => this.canDropFieldTreeNode(source, target, position);\n\n protected readonly updateSelectedField = (changes: Partial<FormBuilderField>) => {\n this.patchSelectedField(changes);\n };\n protected readonly updateSelectedSection = (changes: Partial<FormBuilderSection>) => {\n const section = this.selectedSection();\n\n if (section) {\n this.updateSection(section, changes);\n }\n };\n\n ngOnDestroy(): void {\n this.clearPendingNativeDropTarget();\n }\n\n protected paletteDragStarted(event: DragEvent, definition: FormBuilderFieldDefinition): void {\n this.suppressPaletteClick = true;\n this.nativeDragItem.set({ kind: 'field', definition });\n event.dataTransfer?.setData(PALETTE_DRAG_TYPE, definition.type);\n event.dataTransfer?.setData(PALETTE_DRAG_ITEM, 'field');\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'copy';\n this.setPaletteDragImage(event);\n }\n }\n\n protected sectionPaletteDragStarted(event: DragEvent): void {\n this.suppressPaletteClick = true;\n this.nativeDragItem.set({ kind: 'section' });\n event.dataTransfer?.setData(PALETTE_DRAG_ITEM, 'section');\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'copy';\n this.setPaletteDragImage(event);\n }\n }\n\n protected paletteDragEnded(): void {\n this.nativeDragItem.set(null);\n this.clearNativeDropTarget();\n window.setTimeout(() => {\n this.suppressPaletteClick = false;\n });\n }\n\n protected paletteClicked(definition: FormBuilderFieldDefinition): void {\n if (this.suppressPaletteClick) {\n return;\n }\n\n this.addField(definition);\n }\n\n protected nativeCanvasDragOver(event: DragEvent): void {\n this.nativeDragOver(\n event,\n ROOT_DROP_LIST_ID,\n '.ngs-form-builder-field:not(.ngs-form-builder-native-ghost-field), .ngs-form-builder-section:not(.ngs-form-builder-native-ghost-section)'\n );\n }\n\n protected nativeFieldDragOver(event: DragEvent, containerId: string): void {\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeDragOver(event, containerId, '.ngs-form-builder-field:not(.ngs-form-builder-native-ghost-field)');\n }\n\n protected nativeSectionDragOver(event: DragEvent, section: FormBuilderSection): void {\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeDragOverAtIndex(event, this.sectionDropListId(section), section.fields.length);\n }\n\n protected nativeSectionDrop(event: DragEvent, section: FormBuilderSection): void {\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeFieldDrop(event, this.sectionDropListId(section));\n }\n\n protected nativeContainerFieldDragOver(event: DragEvent, field: FormBuilderField): void {\n if (!this.isContainerField(field)) {\n return;\n }\n\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeDragOverAtIndex(event, this.fieldDropListId(field), field.children?.length ?? 0);\n }\n\n protected nativeContainerFieldDragLeave(event: DragEvent, field: FormBuilderField): void {\n if (!this.isContainerField(field)) {\n return;\n }\n\n this.nativeDragLeave(event, this.fieldDropListId(field));\n }\n\n protected nativeContainerFieldDrop(event: DragEvent, field: FormBuilderField): void {\n if (!this.isContainerField(field)) {\n return;\n }\n\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeFieldDrop(event, this.fieldDropListId(field));\n }\n\n protected nativeDragLeave(event: DragEvent, containerId: string): void {\n const target = event.currentTarget;\n const relatedTarget = event.relatedTarget;\n\n if (\n target instanceof HTMLElement &&\n relatedTarget instanceof Node &&\n target.contains(relatedTarget)\n ) {\n return;\n }\n\n this.clearNativeDropTarget(containerId);\n }\n\n protected nativeFieldDrop(event: DragEvent, containerId: string): void {\n const item = this.resolveNativeDragItem(event);\n\n if (!item) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const target = this.nativeDropTarget() ?? this.pendingNativeDropTarget?.target ?? null;\n const index = target?.containerId === containerId ? target.index : 0;\n\n if (item.kind === 'section') {\n if (containerId !== ROOT_DROP_LIST_ID) {\n return;\n }\n\n this.insertNativeSection(index);\n } else {\n this.insertNativeField(item.definition, containerId, index);\n }\n\n this.nativeDragItem.set(null);\n this.clearNativeDropTarget();\n }\n\n protected isNativeDropTarget(containerId: string, index: number): boolean {\n const target = this.nativeDropTarget();\n return target?.containerId === containerId && target.index === index;\n }\n\n protected addField(definition: FormBuilderFieldDefinition, sectionId?: string): void {\n const schema = cloneSchema(this.schema());\n const fields = sectionId\n ? schema.sections.find(item => item.id === sectionId)?.fields\n : schema.fields;\n\n if (!fields) {\n return;\n }\n\n const field = this.createField(definition, schema);\n const section = sectionId ? schema.sections.find(item => item.id === sectionId) : undefined;\n fields.push(field);\n if (!sectionId) {\n schema.layout = this.normalizedLayout(schema);\n }\n this.schema.set(schema);\n this.selectField(field, section);\n this.fieldAdded.emit({ field, section });\n }\n\n protected addSection(): void {\n const schema = cloneSchema(this.schema());\n schema.sections.push({\n id: uniqueId('section'),\n title: `Section ${schema.sections.length + 1}`,\n fields: []\n });\n schema.layout = this.normalizedLayout(schema);\n this.schema.set(schema);\n }\n\n protected openPreview(template: TemplateRef<unknown>): void {\n this.dialog.open(template, {\n width: '760px',\n maxWidth: 'calc(100vw - 48px)',\n maxHeight: 'calc(100vh - 48px)',\n ariaLabel: 'Form preview'\n });\n }\n\n protected removeSection(section: FormBuilderSection): void {\n const schema = cloneSchema(this.schema());\n schema.sections = schema.sections.filter(item => item.id !== section.id);\n schema.layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'section' && item.id === section.id));\n\n if (\n this.selectedFieldId() === section.id ||\n section.fields.some(field => field.id === this.selectedFieldId() || containsField(field, this.selectedFieldId()))\n ) {\n this.selectedFieldId.set(null);\n }\n\n this.schema.set(schema);\n }\n\n protected updateSection(section: FormBuilderSection, changes: Partial<FormBuilderSection>): void {\n const schema = cloneSchema(this.schema());\n const nextSection = schema.sections.find(item => item.id === section.id);\n\n if (!nextSection) {\n return;\n }\n\n Object.assign(nextSection, changes);\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n }\n\n protected isSectionCollapsed(section: FormBuilderSection): boolean {\n return section.collapsed === true;\n }\n\n protected selectField(field: FormBuilderField, section?: FormBuilderSection): void {\n this.selectedFieldId.set(field.id);\n this.fieldSelected.emit({ field, section: section ?? undefined });\n }\n\n protected selectSection(section: FormBuilderSection): void {\n this.selectedFieldId.set(section.id);\n }\n\n protected selectCanvasField(field: FormBuilderField, section?: FormBuilderSection): void {\n this.selectField(field, section);\n this.openActualFieldsTreeForField(field.id);\n }\n\n protected selectFieldTreeNode(node: FormBuilderFieldTreeNode): void {\n if (node.section && !node.field) {\n this.selectSection(node.section);\n this.scrollCanvasSectionIntoView(node.section.id);\n return;\n }\n\n if (node.field) {\n if (node.section?.collapsed) {\n this.updateSection(node.section, { collapsed: false });\n }\n\n this.selectField(node.field, node.section);\n this.scrollCanvasFieldIntoView(node.field.id);\n }\n }\n\n protected toggleFieldTreeNode(\n tree: Tree<FormBuilderFieldTreeNode>,\n node: FormBuilderFieldTreeNode,\n event: MouseEvent\n ): void {\n event.stopPropagation();\n\n if (!node.children) {\n return;\n }\n\n if (tree.isExpanded(node)) {\n tree.collapse(node);\n this.expandedFieldTreeNodeIds.update(ids => {\n const next = new Set(ids);\n next.delete(node.id);\n return next;\n });\n return;\n }\n\n tree.expand(node);\n this.expandedFieldTreeNodeIds.update(ids => new Set(ids).add(node.id));\n }\n\n protected isFieldTreeNodeExpanded(tree: Tree<FormBuilderFieldTreeNode>, node: FormBuilderFieldTreeNode): boolean {\n return tree.isExpanded(node) || this.expandedFieldTreeNodeIds().has(node.id);\n }\n\n protected fieldTreePlaceholderIcon(source: FormBuilderFieldTreeNode): string {\n return source.kind === 'section' ? 'fluent:folder-24-regular' : source.icon;\n }\n\n protected fieldTreeNodeDropped(event: TreeNodeDrop<FormBuilderFieldTreeNode>): void {\n if (event.source.kind === 'section') {\n this.dropFieldTreeSection(event);\n return;\n }\n\n if (\n event.source.kind !== 'field' ||\n event.source.id === event.target.id ||\n (event.target.kind === 'field' && event.position === 'inside' && !this.isContainerField(event.target.field!))\n ) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const schema = cloneSchema(this.schema());\n const sourceLocation = this.findFieldLocation(schema, event.source.id);\n\n if (!sourceLocation) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n if (\n event.target.kind === 'field' &&\n (sourceLocation.field.id === event.target.id || containsField(sourceLocation.field, event.target.id))\n ) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const movingField = sourceLocation.field;\n this.detachFieldFromLocation(schema, sourceLocation);\n\n if (event.target.kind === 'section') {\n const inserted = event.position === 'inside'\n ? this.insertFieldIntoTreeSection(schema, movingField, event.target.id)\n : this.insertFieldAroundTreeSection(schema, movingField, event.target.id, event.position);\n\n if (inserted) {\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n this.selectField(movingField, event.position === 'inside' ? inserted.section : undefined);\n return;\n }\n }\n\n if (event.target.kind === 'field') {\n const target = this.resolveTreeFieldInsertTarget(schema, event.target.id, event.position);\n\n if (target) {\n target.fields.splice(target.index, 0, movingField);\n if (target.fields === (schema.fields ?? [])) {\n this.insertRootFieldIntoLayout(schema, movingField, event.target.id, event.position);\n }\n this.expandFieldTreeOwner(target.owner);\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n this.selectField(movingField, target.section);\n return;\n }\n }\n\n this.resetFieldTreeAfterRejectedDrop();\n }\n\n protected confirmRemoveField(field: FormBuilderField): void {\n const confirmRef = this.confirmManager.open({\n title: 'Delete field',\n description: `Delete \"${field.label}\" from this form? This action cannot be undone.`\n });\n\n confirmRef.confirmed.subscribe(() => {\n this.removeField(field);\n });\n }\n\n private removeField(field: FormBuilderField): void {\n const schema = cloneSchema(this.schema());\n const location = this.findFieldLocation(schema, field.id);\n\n if (!location) {\n return;\n }\n\n location.siblings.splice(location.index, 1);\n schema.layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === field.id));\n this.deletePreviewControls(field);\n\n if (this.selectedFieldId() === field.id || containsField(field, this.selectedFieldId())) {\n this.selectedFieldId.set(null);\n }\n\n this.schema.set(schema);\n this.fieldRemoved.emit({ field, section: location.section });\n }\n\n protected sectionDropListId(section: FormBuilderSection): string {\n return `ngs-form-builder-section-${section.id}`;\n }\n\n protected fieldDropListId(field: FormBuilderField): string {\n return `ngs-form-builder-field-${field.id}`;\n }\n\n protected rootDropListId(): string {\n return ROOT_DROP_LIST_ID;\n }\n\n protected previewControl(field: FormBuilderField): FormControl {\n const existing = this.previewControls.get(field.id);\n\n if (existing) {\n return existing;\n }\n\n const control = new FormControl({\n value: this.fieldInitialValue(field),\n disabled: true\n });\n this.previewControls.set(field.id, control);\n return control;\n }\n\n protected patchSelectedField(changes: Partial<FormBuilderField>): void {\n const selectedId = this.selectedFieldId();\n\n if (!selectedId) {\n return;\n }\n\n const schema = cloneSchema(this.schema());\n const location = this.findFieldLocation(schema, selectedId);\n\n if (!location) {\n return;\n }\n\n const nextField = {\n ...location.field,\n ...changes\n };\n\n if (this.isContainerField(nextField) && !nextField.children) {\n nextField.children = [];\n }\n\n location.siblings[location.index] = nextField;\n this.schema.set(schema);\n this.syncPreviewControl(nextField);\n }\n\n protected isContainerField(field: FormBuilderField): boolean {\n const definition = this.definitions().find(item => item.type === field.type);\n\n return definition?.acceptsChildren === true ||\n definition?.kind === 'layout' ||\n field.kind === 'layout' ||\n field.type === 'group' ||\n field.type === 'grid';\n }\n\n protected fieldIcon(field: FormBuilderField): string {\n return this.definitions().find(definition => definition.type === field.type)?.icon || 'fluent:form-24-regular';\n }\n\n protected definitionWidth(definition: FormBuilderFieldDefinition): FormBuilderFieldWidth {\n return definition.defaults?.width ?? this.defaultWidth(definition.type);\n }\n\n private matchesPaletteQuery(definition: FormBuilderFieldDefinition, query: string): boolean {\n return !query ||\n definition.label.toLowerCase().includes(query) ||\n definition.type.toLowerCase().includes(query) ||\n (definition.description?.toLowerCase().includes(query) ?? false);\n }\n\n private nativeDragOver(event: DragEvent, containerId: string, itemSelector: string): void {\n const item = this.nativeDragItem();\n\n if (!item || (item.kind === 'section' && containerId !== ROOT_DROP_LIST_ID)) {\n return;\n }\n\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n\n this.scheduleNativeDropTarget(event, {\n containerId,\n index: this.resolveNativeDropIndex(event, itemSelector)\n });\n }\n\n private nativeDragOverAtIndex(event: DragEvent, containerId: string, index: number): void {\n const item = this.nativeDragItem();\n\n if (!item || item.kind === 'section') {\n return;\n }\n\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n\n this.scheduleNativeDropTarget(event, { containerId, index });\n }\n\n private scheduleNativeDropTarget(event: DragEvent, target: FormBuilderNativeDropTarget): void {\n const current = this.nativeDropTarget();\n\n if (this.isSameNativeDropTarget(current, target)) {\n this.clearPendingNativeDropTarget();\n return;\n }\n\n const delay = Math.max(0, this.canvasDropPlaceholderDelay() || 0);\n\n if (delay === 0) {\n this.clearPendingNativeDropTarget();\n this.setNativeDropTarget(target);\n return;\n }\n\n if (\n this.pendingNativeDropTarget &&\n this.isSameNativeDropTarget(this.pendingNativeDropTarget.target, target) &&\n this.pendingNativeDropTarget.clientX === event.clientX &&\n this.pendingNativeDropTarget.clientY === event.clientY\n ) {\n return;\n }\n\n this.clearPendingNativeDropTarget();\n this.setNativeDropTarget(null);\n\n const pending: FormBuilderPendingNativeDropTarget = {\n target,\n clientX: event.clientX,\n clientY: event.clientY\n };\n\n this.pendingNativeDropTarget = pending;\n this.nativeDropTargetDelayTimer = window.setTimeout(() => {\n if (this.pendingNativeDropTarget !== pending) {\n return;\n }\n\n this.pendingNativeDropTarget = null;\n this.nativeDropTargetDelayTimer = null;\n this.setNativeDropTarget(target);\n }, delay);\n }\n\n private clearNativeDropTarget(containerId?: string): void {\n if (!containerId || this.pendingNativeDropTarget?.target.containerId === containerId) {\n this.clearPendingNativeDropTarget();\n }\n\n if (!containerId || this.nativeDropTarget()?.containerId === containerId) {\n this.setNativeDropTarget(null);\n }\n }\n\n private clearPendingNativeDropTarget(): void {\n if (this.nativeDropTargetDelayTimer !== null) {\n window.clearTimeout(this.nativeDropTargetDelayTimer);\n this.nativeDropTargetDelayTimer = null;\n }\n\n this.pendingNativeDropTarget = null;\n }\n\n private setNativeDropTarget(target: FormBuilderNativeDropTarget | null): void {\n const current = this.nativeDropTarget();\n\n if (this.isSameNativeDropTarget(current, target)) {\n return;\n }\n\n const previousRects = this.captureCanvasItemRects();\n this.nativeDropTarget.set(target);\n this.afterNextPaint(() => this.animateCanvasItemMoves(previousRects));\n }\n\n private isSameNativeDropTarget(\n first: FormBuilderNativeDropTarget | null | undefined,\n second: FormBuilderNativeDropTarget | null | undefined\n ): boolean {\n return first?.containerId === second?.containerId && first?.index === second?.index;\n }\n\n private captureCanvasItemRects(): Map<string, DOMRect> {\n const rects = new Map<string, DOMRect>();\n\n for (const element of this.getCanvasAnimatedItems()) {\n const key = this.getCanvasAnimatedItemKey(element);\n\n if (key) {\n rects.set(key, element.getBoundingClientRect());\n }\n }\n\n return rects;\n }\n\n private animateCanvasItemMoves(previousRects: Map<string, DOMRect>): void {\n if (!previousRects.size) {\n return;\n }\n\n for (const element of this.getCanvasAnimatedItems()) {\n const key = this.getCanvasAnimatedItemKey(element);\n const previousRect = key ? previousRects.get(key) : undefined;\n\n if (!previousRect) {\n continue;\n }\n\n const nextRect = element.getBoundingClientRect();\n const deltaX = previousRect.left - nextRect.left;\n const deltaY = previousRect.top - nextRect.top;\n\n if (Math.abs(deltaX) < 0.5 && Math.abs(deltaY) < 0.5) {\n continue;\n }\n\n const animationTimer = this.canvasAnimationTimers.get(element);\n\n if (animationTimer) {\n window.clearTimeout(animationTimer);\n }\n\n element.style.transition = 'none';\n element.style.transform = `translate(${deltaX}px, ${deltaY}px)`;\n element.getBoundingClientRect();\n element.style.transition = 'transform 160ms cubic-bezier(0, 0, 0.2, 1)';\n element.style.transform = '';\n this.canvasAnimationTimers.set(element, window.setTimeout(() => {\n element.style.transition = '';\n element.style.transform = '';\n }, 180));\n }\n }\n\n private getCanvasAnimatedItems(): HTMLElement[] {\n return Array.from(this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-canvas [data-form-builder-field-id], .ngs-form-builder-canvas [data-form-builder-section-id]'\n ));\n }\n\n private getCanvasAnimatedItemKey(element: HTMLElement): string | null {\n const fieldId = element.dataset['formBuilderFieldId'];\n\n if (fieldId) {\n return `field:${fieldId}`;\n }\n\n const sectionId = element.dataset['formBuilderSectionId'];\n return sectionId ? `section:${sectionId}` : null;\n }\n\n private insertNativeField(definition: FormBuilderFieldDefinition, containerId: string, index: number): void {\n const schema = cloneSchema(this.schema());\n const field = this.createField(definition, schema);\n\n if (containerId === ROOT_DROP_LIST_ID) {\n const layout = this.normalizedLayout(schema);\n schema.fields ??= [];\n schema.fields.push(field);\n layout.splice(clampIndex(index, layout.length), 0, { kind: 'field', id: field.id });\n schema.layout = layout;\n this.schema.set(schema);\n this.selectField(field);\n this.fieldAdded.emit({ field });\n return;\n }\n\n const targetContainer = this.findContainerLocation(schema, containerId);\n\n if (!targetContainer) {\n return;\n }\n\n targetContainer.fields.splice(clampIndex(index, targetContainer.fields.length), 0, field);\n this.expandFieldTreeOwner(targetContainer.owner);\n this.schema.set(schema);\n this.selectField(field, targetContainer.section);\n this.fieldAdded.emit({ field, section: targetContainer.section });\n }\n\n private insertNativeSection(index: number): void {\n const schema = cloneSchema(this.schema());\n const section = {\n id: uniqueId('section'),\n title: `Section ${schema.sections.length + 1}`,\n fields: []\n };\n const layout = this.normalizedLayout(schema);\n\n schema.sections.push(section);\n layout.splice(clampIndex(index, layout.length), 0, { kind: 'section', id: section.id });\n schema.layout = layout;\n this.schema.set(schema);\n }\n\n private resolveNativeDragItem(event: DragEvent): FormBuilderNativeDragItem | null {\n const currentItem = this.nativeDragItem();\n\n if (currentItem) {\n return currentItem;\n }\n\n if (event.dataTransfer?.getData(PALETTE_DRAG_ITEM) === 'section') {\n return { kind: 'section' };\n }\n\n const type = event.dataTransfer?.getData(PALETTE_DRAG_TYPE);\n const definition = type ? this.definitions().find(item => item.type === type) ?? null : null;\n return definition ? { kind: 'field', definition } : null;\n }\n\n private resolveNativeDropIndex(event: DragEvent, itemSelector: string): number {\n const container = event.currentTarget;\n\n if (!(container instanceof HTMLElement)) {\n return 0;\n }\n\n const items = Array.from(container.children).filter((child): child is HTMLElement => {\n return child instanceof HTMLElement && child.matches(itemSelector);\n });\n\n for (let index = 0; index < items.length; index += 1) {\n const rect = items[index].getBoundingClientRect();\n const centerY = rect.top + rect.height / 2;\n const centerX = rect.left + rect.width / 2;\n const sameRow = event.clientY >= rect.top && event.clientY <= rect.bottom;\n\n if (event.clientY < centerY || (sameRow && event.clientX < centerX)) {\n return index;\n }\n }\n\n return items.length;\n }\n\n private setPaletteDragImage(event: DragEvent): void {\n const source = event.currentTarget;\n\n if (!(source instanceof HTMLElement) || !event.dataTransfer) {\n return;\n }\n\n const clone = source.cloneNode(true);\n\n if (!(clone instanceof HTMLElement)) {\n return;\n }\n\n clone.classList.add('ngs-form-builder-native-drag-image');\n source.parentElement?.appendChild(clone);\n const rect = source.getBoundingClientRect();\n event.dataTransfer.setDragImage(clone, Math.min(event.offsetX, rect.width), Math.min(event.offsetY, rect.height));\n window.setTimeout(() => clone.remove());\n }\n\n private createField(definition: FormBuilderFieldDefinition, schema: FormBuilderSchema): FormBuilderField {\n const baseLabel = definition.defaults?.label || definition.label;\n const name = uniqueFieldName(toFieldName(baseLabel), schema);\n const kind = definition.defaults?.kind ?? definition.kind ?? 'field';\n\n const field: FormBuilderField = {\n id: uniqueId('field'),\n name,\n type: definition.type,\n kind,\n label: baseLabel,\n width: definition.defaults?.width ?? this.defaultWidth(definition.type),\n ...definition.defaults\n };\n\n if (field.defaultValue === undefined) {\n field.defaultValue = this.fieldInitialValue(field);\n }\n\n return field;\n }\n\n private defaultWidth(type: string): FormBuilderFieldWidth {\n return 12;\n }\n\n private resolveCanvasItems(schema: FormBuilderSchema): FormBuilderCanvasItem[] {\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n const items: FormBuilderCanvasItem[] = [];\n\n for (const item of this.normalizedLayout(schema)) {\n if (item.kind === 'field') {\n const field = fieldsById.get(item.id);\n\n if (field) {\n items.push({ ...item, field });\n }\n\n continue;\n }\n\n const section = sectionsById.get(item.id);\n\n if (section) {\n items.push({ ...item, section });\n }\n }\n\n return items;\n }\n\n private normalizedLayout(schema: FormBuilderSchema): FormBuilderLayoutItem[] {\n const used = new Set<string>();\n const layout: FormBuilderLayoutItem[] = [];\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n\n for (const item of schema.layout ?? []) {\n const key = `${item.kind}:${item.id}`;\n\n if (used.has(key)) {\n continue;\n }\n\n if ((item.kind === 'field' && fieldsById.has(item.id)) || (item.kind === 'section' && sectionsById.has(item.id))) {\n used.add(key);\n layout.push(item);\n }\n }\n\n for (const field of schema.fields ?? []) {\n const key = `field:${field.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'field', id: field.id });\n }\n }\n\n for (const section of schema.sections) {\n const key = `section:${section.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'section', id: section.id });\n }\n }\n\n return layout;\n }\n\n private detachFieldFromLocation(schema: FormBuilderSchema, location: FormBuilderFieldLocation): void {\n location.siblings.splice(location.index, 1);\n\n if (location.siblings === (schema.fields ?? [])) {\n schema.layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === location.field.id));\n }\n }\n\n private insertFieldIntoTreeSection(\n schema: FormBuilderSchema,\n field: FormBuilderField,\n sectionId: string\n ): FormBuilderTreeInsertTarget | null {\n const section = schema.sections.find(item => item.id === sectionId);\n\n if (!section) {\n return null;\n }\n\n section.fields.push(field);\n return {\n fields: section.fields,\n index: section.fields.length - 1,\n section\n };\n }\n\n private insertFieldAroundTreeSection(\n schema: FormBuilderSchema,\n field: FormBuilderField,\n sectionId: string,\n position: 'before' | 'after' | 'inside'\n ): FormBuilderTreeInsertTarget | null {\n if (position === 'inside') {\n return this.insertFieldIntoTreeSection(schema, field, sectionId);\n }\n\n const section = schema.sections.find(item => item.id === sectionId);\n\n if (!section) {\n return null;\n }\n\n schema.fields ??= [];\n\n if (!schema.fields.some(item => item.id === field.id)) {\n schema.fields.push(field);\n }\n\n const layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === field.id));\n const sectionIndex = layout.findIndex(item => item.kind === 'section' && item.id === sectionId);\n layout.splice(sectionIndex === -1 ? layout.length : sectionIndex + (position === 'after' ? 1 : 0), 0, {\n kind: 'field',\n id: field.id\n });\n schema.layout = layout;\n\n return {\n fields: schema.fields,\n index: schema.fields.findIndex(item => item.id === field.id)\n };\n }\n\n private resolveTreeFieldInsertTarget(\n schema: FormBuilderSchema,\n targetFieldId: string,\n position: 'before' | 'inside' | 'after'\n ): FormBuilderTreeInsertTarget | null {\n const targetLocation = this.findFieldLocation(schema, targetFieldId);\n\n if (!targetLocation) {\n return null;\n }\n\n if (position === 'inside' && this.isContainerField(targetLocation.field)) {\n targetLocation.field.children ??= [];\n return {\n fields: targetLocation.field.children,\n index: targetLocation.field.children.length,\n section: targetLocation.section,\n owner: targetLocation.field\n };\n }\n\n const insertIndex = position === 'before' ? targetLocation.index : targetLocation.index + 1;\n return {\n fields: targetLocation.siblings,\n index: insertIndex,\n section: targetLocation.section\n };\n }\n\n private insertRootFieldIntoLayout(\n schema: FormBuilderSchema,\n field: FormBuilderField,\n targetFieldId: string,\n position: 'before' | 'inside' | 'after'\n ): void {\n schema.fields ??= [];\n\n if (!schema.fields.some(item => item.id === field.id)) {\n schema.fields.push(field);\n }\n\n const layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === field.id));\n const targetIndex = layout.findIndex(item => item.kind === 'field' && item.id === targetFieldId);\n layout.splice(targetIndex === -1 ? layout.length : targetIndex + (position === 'before' ? 0 : 1), 0, {\n kind: 'field',\n id: field.id\n });\n schema.layout = layout;\n }\n\n private resetFieldTreeAfterRejectedDrop(): void {\n this.schema.set(cloneSchema(this.schema()));\n this.restoreFieldTreeExpansion();\n }\n\n private canDropFieldTreeNode(\n source: FormBuilderFieldTreeNode,\n target: FormBuilderFieldTreeNode,\n position: TreeNodeDropPosition\n ): boolean {\n if (source.id === target.id) {\n return false;\n }\n\n if (source.kind === 'section') {\n return position !== 'inside' && (target.kind === 'section' || this.isRootFieldTreeNode(target));\n }\n\n if (target.kind === 'field' && position === 'inside') {\n return !!target.field && this.isContainerField(target.field);\n }\n\n return true;\n }\n\n private dropFieldTreeSection(event: TreeNodeDrop<FormBuilderFieldTreeNode>): void {\n if (!this.canDropFieldTreeNode(event.source, event.target, event.position)) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const schema = cloneSchema(this.schema());\n const layout = this.normalizedLayout(schema);\n const sourceIndex = layout.findIndex(item => item.kind === 'section' && item.id === event.source.id);\n const targetKind = event.target.kind === 'section' ? 'section' : 'field';\n const targetIndex = layout.findIndex(item => item.kind === targetKind && item.id === event.target.id);\n\n if (sourceIndex < 0 || targetIndex < 0) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const [sectionItem] = layout.splice(sourceIndex, 1);\n const adjustedTargetIndex = sourceIndex < targetIndex ? targetIndex - 1 : targetIndex;\n layout.splice(adjustedTargetIndex + (event.position === 'after' ? 1 : 0), 0, sectionItem);\n schema.layout = layout;\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n }\n\n private isRootFieldTreeNode(node: FormBuilderFieldTreeNode): boolean {\n if (node.kind !== 'field') {\n return false;\n }\n\n return this.resolveCanvasItems(this.schema()).some(item => item.kind === 'field' && item.id === node.id);\n }\n\n private restoreFieldTreeExpansion(): void {\n const expandedIds = this.expandedFieldTreeNodeIds();\n\n if (!expandedIds.size) {\n return;\n }\n\n this.afterNextPaint(() => {\n this.afterNextPaint(() => {\n const tree = this.actualFieldsTree();\n\n if (!tree) {\n return;\n }\n\n for (const node of this.flattenFieldTree(this.fieldTree())) {\n if (node.children && expandedIds.has(node.id)) {\n tree.expand(node);\n }\n }\n });\n });\n }\n\n private expandFieldTreeOwner(owner: FormBuilderField | undefined): void {\n if (!owner) {\n return;\n }\n\n this.expandedFieldTreeNodeIds.update(ids => new Set(ids).add(owner.id));\n }\n\n private flattenFieldTree(nodes: FormBuilderFieldTreeNode[]): FormBuilderFieldTreeNode[] {\n return nodes.flatMap(node => [node, ...this.flattenFieldTree(node.children ?? [])]);\n }\n\n private openActualFieldsTreeForField(fieldId: string): void {\n const path = this.findFieldTreeNodePath(this.fieldTree(), fieldId);\n\n this.fieldsTabIndex.set(ACTUAL_FIELDS_TAB_INDEX);\n\n if (!path.length) {\n return;\n }\n\n const expandableIds = path\n .slice(0, -1)\n .filter(node => !!node.children)\n .map(node => node.id);\n\n if (expandableIds.length) {\n this.expandedFieldTreeNodeIds.update(ids => {\n const next = new Set(ids);\n\n for (const id of expandableIds) {\n next.add(id);\n }\n\n return next;\n });\n }\n\n this.afterNextPaint(() => {\n this.afterNextPaint(() => {\n const tree = this.actualFieldsTree();\n\n if (tree) {\n for (const node of path.slice(0, -1)) {\n if (node.children) {\n tree.expand(node);\n }\n }\n }\n\n this.scrollFieldTreeNodeIntoView(fieldId);\n });\n });\n }\n\n private findFieldTreeNodePath(\n nodes: FormBuilderFieldTreeNode[],\n fieldId: string,\n path: FormBuilderFieldTreeNode[] = []\n ): FormBuilderFieldTreeNode[] {\n for (const node of nodes) {\n const nextPath = [...path, node];\n\n if (node.id === fieldId) {\n return nextPath;\n }\n\n const childPath = this.findFieldTreeNodePath(node.children ?? [], fieldId, nextPath);\n\n if (childPath.length) {\n return childPath;\n }\n }\n\n return [];\n }\n\n private scrollFieldTreeNodeIntoView(fieldId: string): void {\n const target = this.findFieldTreeNodeElement(fieldId);\n\n if (!target) {\n return;\n }\n\n const scrollableContent = target\n .closest('ngs-scrollbar-area')\n ?.querySelector<HTMLElement>('.scrollable-content');\n\n if (!scrollableContent) {\n target.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n return;\n }\n\n this.scrollElementFullyIntoView(target, scrollableContent);\n }\n\n private findFieldTreeNodeElement(fieldId: string): HTMLElement | null {\n const nodes = this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-palette [data-form-builder-tree-node-id]'\n );\n\n return Array.from(nodes).find(node => node.dataset['formBuilderTreeNodeId'] === fieldId) ?? null;\n }\n\n private scrollCanvasFieldIntoView(fieldId: string): void {\n this.scrollCanvasItemIntoView(() => this.findCanvasFieldElement(fieldId));\n }\n\n private scrollCanvasSectionIntoView(sectionId: string): void {\n this.scrollCanvasItemIntoView(() => this.findCanvasSectionElement(sectionId));\n }\n\n private scrollCanvasItemIntoView(resolveTarget: () => HTMLElement | null): void {\n this.afterNextPaint(() => {\n this.afterNextPaint(() => {\n const target = resolveTarget();\n\n if (!target) {\n return;\n }\n\n const scrollableContent = target\n .closest('ngs-scrollbar-area')\n ?.querySelector<HTMLElement>('.scrollable-content');\n\n if (!scrollableContent) {\n target.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n return;\n }\n\n this.scrollElementFullyIntoView(target, scrollableContent);\n });\n });\n }\n\n private findCanvasFieldElement(fieldId: string): HTMLElement | null {\n const fields = this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-canvas [data-form-builder-field-id]'\n );\n\n return Array.from(fields).find(field => field.dataset['formBuilderFieldId'] === fieldId) ?? null;\n }\n\n private findCanvasSectionElement(sectionId: string): HTMLElement | null {\n const sections = this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-canvas [data-form-builder-section-id]'\n );\n\n return Array.from(sections).find(section => section.dataset['formBuilderSectionId'] === sectionId) ?? null;\n }\n\n private syncPreviewControl(field: FormBuilderField): void {\n const control = this.previewControls.get(field.id);\n\n if (!control) {\n return;\n }\n\n queueMicrotask(() => {\n const value = this.fieldInitialValue(field);\n\n if (control.value !== value) {\n control.setValue(value, { emitEvent: false });\n }\n\n if (control.enabled) {\n control.disable({ emitEvent: false });\n }\n });\n }\n\n private fieldInitialValue(field: FormBuilderField): any {\n if (field.defaultValue !== undefined) {\n return field.defaultValue;\n }\n\n if (field.type === 'upload') {\n return field.multiple ? [] : null;\n }\n\n const selectedValues = (field.options ?? [])\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (field.type === 'checkbox-list' || field.multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n }\n\n private scrollElementFullyIntoView(target: HTMLElement, scrollableContent: HTMLElement): void {\n const padding = 16;\n const containerRect = scrollableContent.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const availableHeight = Math.max(0, containerRect.height - padding * 2);\n const availableWidth = Math.max(0, containerRect.width - padding * 2);\n let top = scrollableContent.scrollTop;\n let left = scrollableContent.scrollLeft;\n\n if (targetRect.height > availableHeight || targetRect.top < containerRect.top + padding) {\n top += targetRect.top - containerRect.top - padding;\n } else if (targetRect.bottom > containerRect.bottom - padding) {\n top += targetRect.bottom - containerRect.bottom + padding;\n }\n\n if (targetRect.width > availableWidth || targetRect.left < containerRect.left + padding) {\n left += targetRect.left - containerRect.left - padding;\n } else if (targetRect.right > containerRect.right - padding) {\n left += targetRect.right - containerRect.right + padding;\n }\n\n scrollableContent.scrollTo({\n top: Math.max(0, top),\n left: Math.max(0, left),\n behavior: 'smooth'\n });\n }\n\n private afterNextPaint(callback: () => void): void {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n return;\n }\n\n window.setTimeout(callback);\n }\n\n private upsertSectionTreeNode(section: FormBuilderSection): FormBuilderFieldTreeNode {\n const node = this.getCachedFieldTreeNode(section.id);\n const children = section.fields.map(field => this.upsertFieldTreeNode(field, section));\n\n node.label = section.title;\n node.name = undefined;\n node.type = 'section';\n node.icon = 'fluent:folder-24-regular';\n node.kind = 'section';\n node.field = undefined;\n node.section = section;\n node.children ??= [];\n replaceArrayContents(node.children, children);\n return node;\n }\n\n private upsertFieldTreeNode(field: FormBuilderField, section?: FormBuilderSection): FormBuilderFieldTreeNode {\n const definition = this.definitions().find(item => item.type === field.type);\n const node = this.getCachedFieldTreeNode(field.id);\n const children = field.children?.map(child => this.upsertFieldTreeNode(child, section));\n\n node.label = field.label;\n node.name = field.name;\n node.type = field.type;\n node.icon = definition?.icon || 'fluent:form-24-regular';\n node.kind = 'field';\n node.field = field;\n node.section = section;\n\n if (children?.length || this.isContainerField(field)) {\n node.children ??= [];\n replaceArrayContents(node.children, children ?? []);\n } else {\n node.children = undefined;\n }\n\n return node;\n }\n\n private getCachedFieldTreeNode(id: string): FormBuilderFieldTreeNode {\n const cached = this.fieldTreeNodeCache.get(id);\n\n if (cached) {\n return cached;\n }\n\n const node: FormBuilderFieldTreeNode = {\n id,\n label: '',\n type: '',\n icon: 'fluent:form-24-regular',\n kind: 'field'\n };\n\n this.fieldTreeNodeCache.set(id, node);\n return node;\n }\n\n private resolveFieldTreeStructureKey(nodes: FormBuilderFieldTreeNode[]): string {\n return nodes\n .map(node => `${node.kind}:${node.id}[${this.resolveFieldTreeStructureKey(node.children ?? [])}]`)\n .join('|');\n }\n\n private findContainerLocation(schema: FormBuilderSchema, containerId: string): FormBuilderContainerLocation | null {\n if (containerId === ROOT_DROP_LIST_ID) {\n return {\n id: containerId,\n fields: schema.fields ?? []\n };\n }\n\n const rootNested = this.findFieldContainerLocation(schema.fields ?? [], undefined, containerId);\n\n if (rootNested) {\n return rootNested;\n }\n\n for (const section of schema.sections) {\n if (this.sectionDropListId(section) === containerId) {\n return {\n id: containerId,\n fields: section.fields,\n section\n };\n }\n\n const nested = this.findFieldContainerLocation(section.fields, section, containerId);\n\n if (nested) {\n return nested;\n }\n }\n\n return null;\n }\n\n private findFieldContainerLocation(\n fields: FormBuilderField[],\n section: FormBuilderSection | undefined,\n containerId: string\n ): FormBuilderContainerLocation | null {\n for (const field of fields) {\n if (this.isContainerField(field) && this.fieldDropListId(field) === containerId) {\n field.children ??= [];\n\n return {\n id: containerId,\n fields: field.children,\n section,\n owner: field\n };\n }\n\n const nested = this.findFieldContainerLocation(field.children ?? [], section, containerId);\n\n if (nested) {\n return nested;\n }\n }\n\n return null;\n }\n\n private findFieldLocation(schema: FormBuilderSchema, fieldId: string): FormBuilderFieldLocation | null {\n const rootLocation = findFieldLocationInFields(schema.fields ?? [], fieldId);\n\n if (rootLocation) {\n return rootLocation;\n }\n\n for (const section of schema.sections) {\n const location = findFieldLocationInFields(section.fields, fieldId, section);\n\n if (location) {\n return location;\n }\n }\n\n return null;\n }\n\n private deletePreviewControls(field: FormBuilderField): void {\n this.previewControls.delete(field.id);\n\n for (const child of field.children ?? []) {\n this.deletePreviewControls(child);\n }\n }\n}\n\nexport function createDefaultFormBuilderSchema(): FormBuilderSchema {\n return {\n title: 'New form',\n fields: [],\n layout: [],\n sections: []\n };\n}\n\nfunction uniqueId(prefix: string): string {\n return `${prefix}_${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction cloneSchema(schema: FormBuilderSchema): FormBuilderSchema {\n return {\n ...schema,\n fields: (schema.fields ?? []).map(cloneField),\n layout: schema.layout?.map(item => ({ ...item })),\n sections: schema.sections.map(section => ({\n ...section,\n fields: section.fields.map(cloneField)\n }))\n };\n}\n\nfunction cloneField(field: FormBuilderField): FormBuilderField {\n return {\n ...field,\n options: field.options?.map(option => ({ ...option })),\n validation: field.validation?.map(rule => ({ ...rule })),\n settings: field.settings ? { ...field.settings } : undefined,\n children: field.children?.map(cloneField)\n };\n}\n\nfunction clampIndex(index: number, length: number): number {\n return Math.max(0, Math.min(index, length));\n}\n\nfunction replaceArrayContents<T>(target: T[], source: T[]): void {\n target.splice(0, target.length, ...source);\n}\n\nfunction normalizeFieldDefinition(definition: FormBuilderItemDefinition): FormBuilderFieldDefinition {\n return {\n ...definition,\n kind: definition.kind ?? 'field'\n } as FormBuilderFieldDefinition;\n}\n\nfunction toFieldName(label: string): string {\n return label\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '') || 'field';\n}\n\nfunction uniqueFieldName(baseName: string, schema: FormBuilderSchema): string {\n const usedNames = new Set(\n [\n ...(schema.fields ?? []).flatMap(field => collectFieldNames(field)),\n ...schema.sections.flatMap(section => section.fields.flatMap(field => collectFieldNames(field)))\n ]\n );\n\n if (!usedNames.has(baseName)) {\n return baseName;\n }\n\n let index = 2;\n let nextName = `${baseName}_${index}`;\n\n while (usedNames.has(nextName)) {\n index += 1;\n nextName = `${baseName}_${index}`;\n }\n\n return nextName;\n}\n\nfunction collectFieldNames(field: FormBuilderField): string[] {\n return [field.name, ...(field.children ?? []).flatMap(collectFieldNames)];\n}\n\nfunction findFieldLocationInFields(\n fields: FormBuilderField[],\n fieldId: string,\n section?: FormBuilderSection\n): FormBuilderFieldLocation | null {\n const index = fields.findIndex(field => field.id === fieldId);\n\n if (index !== -1) {\n return {\n field: fields[index],\n section,\n siblings: fields,\n index\n };\n }\n\n for (const field of fields) {\n const location = findFieldLocationInFields(field.children ?? [], fieldId, section);\n\n if (location) {\n return location;\n }\n }\n\n return null;\n}\n\nfunction containsField(field: FormBuilderField, fieldId: string | null): boolean {\n if (!fieldId) {\n return false;\n }\n\n return (field.children ?? []).some(child => child.id === fieldId || containsField(child, fieldId));\n}\n","<ng-template #nativeFieldGhost>\n @if (nativeDragFieldDefinition(); as definition) {\n <div\n class=\"ngs-form-builder-field ngs-form-builder-field-placeholder ngs-form-builder-native-ghost-field\"\n [class.is-width-1]=\"definitionWidth(definition) === 1\"\n [class.is-width-2]=\"definitionWidth(definition) === 2\"\n [class.is-width-3]=\"definitionWidth(definition) === 3\"\n [class.is-width-4]=\"definitionWidth(definition) === 4\"\n [class.is-width-5]=\"definitionWidth(definition) === 5\"\n [class.is-width-6]=\"definitionWidth(definition) === 6\"\n [class.is-width-7]=\"definitionWidth(definition) === 7\"\n [class.is-width-8]=\"definitionWidth(definition) === 8\"\n [class.is-width-9]=\"definitionWidth(definition) === 9\"\n [class.is-width-10]=\"definitionWidth(definition) === 10\"\n [class.is-width-11]=\"definitionWidth(definition) === 11\"\n [class.is-width-12]=\"definitionWidth(definition) === 12\"></div>\n }\n</ng-template>\n\n<ng-template #nativeSectionGhost>\n <ngs-card class=\"ngs-form-builder-section ngs-form-builder-native-ghost-section\">\n <ngs-card-header>\n <div class=\"ngs-form-builder-section-heading\">\n <span class=\"ngs-form-builder-drag-icon\">\n <ngs-icon name=\"fluent:folder-add-24-regular\"/>\n </span>\n <span class=\"ngs-form-builder-section-title\">Section</span>\n </div>\n </ngs-card-header>\n </ngs-card>\n</ng-template>\n\n<ng-template #fieldList let-fields let-containerId=\"containerId\" let-section=\"section\">\n <div\n class=\"ngs-form-builder-drop-list ngs-form-builder-canvas-drop-list\"\n [id]=\"containerId\"\n (dragover)=\"nativeFieldDragOver($event, containerId)\"\n (dragleave)=\"nativeDragLeave($event, containerId)\"\n (drop)=\"nativeFieldDrop($event, containerId)\">\n @for (field of fields; track field.id; let fieldIndex = $index) {\n @if (isNativeDropTarget(containerId, fieldIndex)) {\n <ng-container [ngTemplateOutlet]=\"nativeFieldGhost\"/>\n }\n @if (isContainerField(field)) {\n <div\n class=\"ngs-form-builder-field is-container\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (dragover)=\"nativeContainerFieldDragOver($event, field)\"\n (dragleave)=\"nativeContainerFieldDragLeave($event, field)\"\n (drop)=\"nativeContainerFieldDrop($event, field)\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field, section)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <div class=\"ngs-form-builder-grid-field\">\n <ng-container\n [ngTemplateOutlet]=\"fieldList\"\n [ngTemplateOutletContext]=\"{\n $implicit: field.children ?? [],\n containerId: fieldDropListId(field),\n section\n }\"/>\n </div>\n </div>\n } @else {\n <div\n class=\"ngs-form-builder-field\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field, section)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <ngs-form-builder-field-host\n [field]=\"field\"\n [control]=\"previewControl(field)\"\n [definitions]=\"definitions()\"\n [uploadCallback]=\"uploadCallback()\"\n [readonly]=\"true\"\n [editableCanvas]=\"true\"/>\n </div>\n }\n }\n\n @if (isNativeDropTarget(containerId, fields.length)) {\n <ng-container [ngTemplateOutlet]=\"nativeFieldGhost\"/>\n }\n </div>\n</ng-template>\n\n<ngs-panel class=\"ngs-form-builder-shell\">\n <ngs-panel-header autoHeight class=\"border-b border-border px-5 py-3\">\n <ngs-toolbar>\n <div class=\"min-w-0\">\n <ngs-toolbar-subtitle>Form builder</ngs-toolbar-subtitle>\n <ngs-toolbar-title appearance=\"large\" class=\"truncate\">{{ schema().title || 'Untitled form' }}</ngs-toolbar-title>\n </div>\n\n <ngs-toolbar-spacer/>\n\n <ngs-toolbar-item>\n <button ngsButton=\"outlined\" type=\"button\" (click)=\"openPreview(previewDialog)\">\n <ngs-icon name=\"fluent:eye-24-regular\"/>\n Preview\n </button>\n </ngs-toolbar-item>\n </ngs-toolbar>\n </ngs-panel-header>\n\n <ngs-panel-sidebar class=\"ngs-form-builder-palette w-80 border-e border-border\">\n <ngs-tab-group\n animationDuration=\"0ms\"\n [selectedIndex]=\"fieldsTabIndex()\"\n (selectedIndexChange)=\"fieldsTabIndex.set($event)\">\n <ngs-tab label=\"Fields\" class=\"relative\">\n <ngs-scrollbar-area>\n <div class=\"flex flex-col gap-5 p-4\">\n <section class=\"flex flex-col gap-2\">\n <h4 class=\"text-xs font-semibold uppercase tracking-normal text-secondary\">Layout</h4>\n <button\n type=\"button\"\n class=\"ngs-form-builder-palette-item\"\n draggable=\"true\"\n (dragstart)=\"sectionPaletteDragStarted($event)\"\n (dragend)=\"paletteDragEnded()\">\n <span class=\"ngs-form-builder-palette-item-content\">\n <span class=\"ngs-form-builder-palette-item-label\">\n <ngs-icon name=\"fluent:folder-add-24-regular\"/>\n <span>Section</span>\n </span>\n </span>\n </button>\n\n @for (definition of layoutDefinitions(); track definition.type) {\n <button\n type=\"button\"\n class=\"ngs-form-builder-palette-item\"\n draggable=\"true\"\n (dragstart)=\"paletteDragStarted($event, definition)\"\n (dragend)=\"paletteDragEnded()\"\n (click)=\"paletteClicked(definition)\">\n <span class=\"ngs-form-builder-palette-item-content\">\n <span class=\"ngs-form-builder-palette-item-label\">\n <ngs-icon [name]=\"definition.icon || 'fluent:form-24-regular'\"/>\n <span>{{ definition.label }}</span>\n </span>\n </span>\n </button>\n }\n </section>\n\n @for (group of paletteGroups(); track group.name) {\n <section class=\"flex flex-col gap-2\">\n <h4 class=\"text-xs font-semibold uppercase tracking-normal text-secondary\">{{ group.name }}</h4>\n <div class=\"flex flex-col gap-2\">\n @for (definition of group.fields; track definition.type) {\n <button\n type=\"button\"\n class=\"ngs-form-builder-palette-item\"\n draggable=\"true\"\n (dragstart)=\"paletteDragStarted($event, definition)\"\n (dragend)=\"paletteDragEnded()\"\n (click)=\"paletteClicked(definition)\">\n <span class=\"ngs-form-builder-palette-item-content\">\n <span class=\"ngs-form-builder-palette-item-label\">\n <ngs-icon [name]=\"definition.icon || 'fluent:form-24-regular'\"/>\n <span>{{ definition.label }}</span>\n </span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n </div>\n </ngs-scrollbar-area>\n </ngs-tab>\n <ngs-tab label=\"Layers\" class=\"relative\">\n <ngs-scrollbar-area>\n <div class=\"px-4 py-4\">\n <ngs-tree\n #actualFieldsTree=\"ngsTree\"\n [dataSource]=\"fieldTree()\"\n [childrenAccessor]=\"fieldTreeChildrenAccessor\"\n [trackBy]=\"trackFieldTreeNode\"\n [draggablePredicate]=\"fieldTreeDraggablePredicate\"\n [dropPredicate]=\"fieldTreeDropPredicate\"\n [nodePaddingIndent]=\"80\"\n [reorderOnDrop]=\"false\"\n (nodeDrop)=\"fieldTreeNodeDropped($event)\"\n draggable>\n <ng-template ngsTreeDragPlaceholder let-source=\"source\">\n <div class=\"ngs-form-builder-tree-drag-placeholder\">\n <ngs-icon [name]=\"fieldTreePlaceholderIcon(source)\"/>\n <span>{{ source.label }}</span>\n </div>\n </ng-template>\n\n <ngs-tree-node *ngsTreeNodeDef=\"let node; when: hasFieldTreeChildren\"\n ngsTreeNodePadding\n [value]=\"node.id\"\n [cdkTreeNodeTypeaheadLabel]=\"node.label\">\n <button\n ngsIconButton\n class=\"ngs-form-builder-tree-toggle\"\n [attr.aria-label]=\"'Toggle ' + node.label\"\n (click)=\"toggleFieldTreeNode(actualFieldsTree, node, $event)\">\n <ngs-icon [name]=\"isFieldTreeNodeExpanded(actualFieldsTree, node) ? 'fluent:chevron-down-24-regular' : 'fluent:chevron-right-24-regular'\" class=\"size-4\"/>\n </button>\n <button\n ngsButton=\"text\"\n type=\"button\"\n class=\"ngs-form-builder-tree-item\"\n [class.is-selected]=\"selectedFieldId() === node.id\"\n [attr.data-form-builder-tree-node-id]=\"node.id\"\n (click)=\"selectFieldTreeNode(node)\">\n <ngs-icon [name]=\"node.icon\"/>\n <span>{{ node.label }}</span>\n <!-- @if (node.name) {-->\n <!-- <small>{{ node.name }}</small>-->\n <!-- }-->\n </button>\n </ngs-tree-node>\n\n <ngs-tree-node *ngsTreeNodeDef=\"let node\" ngsTreeNodePadding [value]=\"node.id\">\n <button\n ngsButton=\"text\"\n type=\"button\"\n class=\"ngs-form-builder-tree-item\"\n [class.is-selected]=\"selectedFieldId() === node.id\"\n [attr.data-form-builder-tree-node-id]=\"node.id\"\n (click)=\"selectFieldTreeNode(node)\">\n <ngs-icon [name]=\"node.icon\"/>\n {{ node.label }}\n<!-- <span class=\"inline-flex flex-col\">-->\n<!-- -->\n<!-- @if (node.name) {-->\n<!-- <small>{{ node.name }}</small>-->\n<!-- }-->\n<!-- </span>-->\n </button>\n </ngs-tree-node>\n </ngs-tree>\n </div>\n </ngs-scrollbar-area>\n </ngs-tab>\n </ngs-tab-group>\n </ngs-panel-sidebar>\n\n <ngs-panel-content>\n <ngs-scrollbar-area [absolute]=\"true\">\n <div class=\"ngs-form-builder-canvas flex flex-col gap-5 p-6\">\n <div\n class=\"ngs-form-builder-canvas-list\"\n [id]=\"rootDropListId()\"\n (dragover)=\"nativeCanvasDragOver($event)\"\n (dragleave)=\"nativeDragLeave($event, rootDropListId())\"\n (drop)=\"nativeFieldDrop($event, rootDropListId())\">\n @for (item of canvasItems(); track item.kind + ':' + item.id; let itemIndex = $index) {\n @if (isNativeDropTarget(rootDropListId(), itemIndex)) {\n <ng-container [ngTemplateOutlet]=\"nativeDragSection() ? nativeSectionGhost : nativeFieldGhost\"/>\n }\n @if (item.field; as field) {\n @if (isContainerField(field)) {\n <div\n class=\"ngs-form-builder-field is-container\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (dragover)=\"nativeContainerFieldDragOver($event, field)\"\n (dragleave)=\"nativeContainerFieldDragLeave($event, field)\"\n (drop)=\"nativeContainerFieldDrop($event, field)\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <div class=\"ngs-form-builder-grid-field\">\n <ng-container\n [ngTemplateOutlet]=\"fieldList\"\n [ngTemplateOutletContext]=\"{\n $implicit: field.children ?? [],\n containerId: fieldDropListId(field)\n }\"/>\n </div>\n </div>\n } @else {\n <div\n class=\"ngs-form-builder-field\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <ngs-form-builder-field-host\n [field]=\"field\"\n [control]=\"previewControl(field)\"\n [definitions]=\"definitions()\"\n [uploadCallback]=\"uploadCallback()\"\n [readonly]=\"true\"\n [editableCanvas]=\"true\"/>\n </div>\n }\n } @else if (item.section; as section) {\n <ngs-card class=\"ngs-form-builder-section\"\n [attr.data-form-builder-section-id]=\"section.id\"\n (dragover)=\"nativeSectionDragOver($event, section)\"\n (dragleave)=\"nativeDragLeave($event, sectionDropListId(section))\"\n (drop)=\"nativeSectionDrop($event, section)\"\n (click)=\"selectSection(section)\">\n <ngs-card-header>\n <div class=\"ngs-form-builder-section-heading\">\n <input ngsInput\n class=\"ngs-form-builder-section-title\"\n [ngModel]=\"section.title\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateSection(section, { title: $event })\"\n aria-label=\"Section title\">\n </div>\n @if (section.description) {\n <p class=\"truncate text-sm text-secondary\">{{ section.description }}</p>\n }\n\n <ngs-card-aside>\n <div class=\"ngs-form-builder-section-actions\">\n <button ngsIconButton type=\"button\" aria-label=\"Collapse section\" (click)=\"updateSection(section, { collapsed: !section.collapsed })\">\n <ngs-icon [name]=\"isSectionCollapsed(section) ? 'fluent:chevron-down-24-regular' : 'fluent:chevron-up-24-regular'\"/>\n </button>\n <button ngsIconButton type=\"button\" aria-label=\"Delete section\" (click)=\"removeSection(section)\">\n <ngs-icon name=\"fluent:delete-24-regular\"/>\n </button>\n </div>\n </ngs-card-aside>\n </ngs-card-header>\n\n @if (!isSectionCollapsed(section)) {\n <ngs-card-content>\n <ng-container\n [ngTemplateOutlet]=\"fieldList\"\n [ngTemplateOutletContext]=\"{\n $implicit: section.fields,\n containerId: sectionDropListId(section),\n section\n }\"/>\n </ngs-card-content>\n } @else if (isNativeDropTarget(sectionDropListId(section), section.fields.length)) {\n <ngs-card-content>\n <div class=\"ngs-form-builder-drop-list ngs-form-builder-canvas-drop-list\">\n <ng-container [ngTemplateOutlet]=\"nativeFieldGhost\"/>\n </div>\n </ngs-card-content>\n }\n </ngs-card>\n }\n }\n\n @if (isNativeDropTarget(rootDropListId(), canvasItems().length)) {\n <ng-container [ngTemplateOutlet]=\"nativeDragSection() ? nativeSectionGhost : nativeFieldGhost\"/>\n }\n\n </div>\n </div>\n </ngs-scrollbar-area>\n </ngs-panel-content>\n\n <ngs-panel-aside class=\"ngs-form-builder-inspector w-88 border-s border-border\">\n @if (selectedField() || selectedSection()) {\n <ngs-panel-header class=\"ps-5 pe-2 border-b border-border\">\n <ngs-toolbar>\n <ngs-toolbar-title class=\"truncate\">\n {{ inspectorTitle() }}\n </ngs-toolbar-title>\n <ngs-toolbar-subtitle>\n {{ selectedField()?.label || selectedSection()?.title }}\n </ngs-toolbar-subtitle>\n <ngs-toolbar-spacer/>\n <ngs-toolbar-item>\n <button ngsIconButton type=\"button\" aria-label=\"Clear selection\" (click)=\"selectedFieldId.set(null)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </ngs-toolbar-item>\n </ngs-toolbar>\n </ngs-panel-header>\n }\n\n <ngs-panel-content>\n @if (selectedField() || selectedSection()) {\n <ngs-scrollbar-area [absolute]=\"true\">\n <div class=\"flex flex-col gap-4 p-5\">\n <ngs-form-builder-settings-host\n [field]=\"selectedField()\"\n [section]=\"selectedSection()\"\n [schema]=\"schema()\"\n [definitions]=\"definitions()\"\n [settingsDefinitions]=\"settingsDefinitions()\"\n [update]=\"updateSelectedField\"\n [updateSection]=\"updateSelectedSection\"/>\n\n @if (selectedField(); as field) {\n <div class=\"mt-3\">\n <button ngsButton=\"text\" type=\"button\" class=\"ngs-form-builder-delete-button\" (click)=\"confirmRemoveField(field)\">\n <ngs-icon name=\"fluent:delete-24-regular\"/>\n Delete field\n </button>\n </div>\n }\n </div>\n </ngs-scrollbar-area>\n } @else {\n <div class=\"ngs-form-builder-empty-inspector\">\n Select a field on the canvas or in the fields tree to edit its settings.\n </div>\n }\n </ngs-panel-content>\n </ngs-panel-aside>\n</ngs-panel>\n\n<ng-template #previewDialog>\n <h3 ngs-dialog-title>{{ schema().title || 'Form preview' }}</h3>\n <ngs-dialog-content class=\"ngs-form-builder-preview-dialog-content\">\n <ngs-form-renderer\n [schema]=\"schema()\"\n [uploadCallback]=\"uploadCallback()\"\n [showSubmit]=\"false\"/>\n </ngs-dialog-content>\n <ngs-dialog-actions align=\"end\">\n <button ngsButton=\"outlined\" type=\"button\" ngs-dialog-close>Close</button>\n </ngs-dialog-actions>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, DestroyRef, computed, effect, inject, input } from '@angular/core';\nimport { AbstractControl, FormControl, FormsModule, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Error as FormFieldError, FormField, Hint, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { Select } from '@ngstarter-ui/components/select';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { SlideToggle, SlideToggleGroup } from '@ngstarter-ui/components/slide-toggle';\nimport { FormBuilderField, FormBuilderFieldWidth, FormBuilderOption } from '../../types';\n\ntype RadioOrientation = 'vertical' | 'horizontal';\ntype SpacerHeight = 8 | 16 | 24 | 32 | 48 | 64;\n\n@Component({\n selector: 'ngs-basic-form-builder-field-settings',\n exportAs: 'ngsBasicFormBuilderFieldSettings',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n FormFieldError,\n FormField,\n Hint,\n Label,\n Input,\n Select,\n Option,\n SlideToggle,\n SlideToggleGroup\n ],\n templateUrl: './basic-field-settings.html',\n styleUrl: './basic-field-settings.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-basic-form-builder-field-settings'\n }\n})\nexport class BasicFormBuilderFieldSettings {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly field = input.required<FormBuilderField>();\n readonly update = input.required<(changes: Partial<FormBuilderField>) => void>();\n\n protected readonly optionsControl = new FormControl('', {\n nonNullable: true,\n validators: optionsTextValidator\n });\n protected readonly fieldWidthOptions: FormBuilderFieldWidth[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n protected readonly radioOrientationOptions: RadioOrientation[] = ['vertical', 'horizontal'];\n protected readonly spacerHeightOptions: SpacerHeight[] = [8, 16, 24, 32, 48, 64];\n protected readonly hasCheckedState = computed(() => ['checkbox', 'toggle'].includes(this.field().type));\n protected readonly hasPlaceholder = computed(() => !['checkbox', 'toggle', 'radio', 'spacer'].includes(this.field().type));\n protected readonly hasOptions = computed(() => ['select', 'radio', 'checkbox-list'].includes(this.field().type));\n protected readonly hasClearable = computed(() => ['select', 'country-select'].includes(this.field().type));\n protected readonly hasMultiple = computed(() => ['select', 'upload'].includes(this.field().type));\n protected readonly isSelect = computed(() => this.field().type === 'select');\n protected readonly isUpload = computed(() => this.field().type === 'upload');\n protected readonly isRadio = computed(() => this.field().type === 'radio');\n protected readonly isSpacer = computed(() => this.field().type === 'spacer');\n protected readonly hasBehaviorToggles = computed(() => !this.isSpacer());\n protected readonly radioOrientation = computed<RadioOrientation>(() =>\n this.field().settings?.['orientation'] === 'horizontal' ? 'horizontal' : 'vertical'\n );\n protected readonly optionsText = computed(() =>\n (this.field().options ?? [])\n .map(option => `${option.label}:${option.value}${this.isOptionSelected(option) ? ':selected' : ''}`)\n .join('\\n')\n );\n\n constructor() {\n effect(() => {\n const nextValue = this.optionsText();\n\n if (this.optionsControl.value !== nextValue) {\n this.optionsControl.setValue(nextValue, { emitEvent: false });\n }\n });\n\n this.optionsControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n if (this.optionsControl.invalid) {\n return;\n }\n\n this.patchOptions(value);\n });\n }\n\n protected patch(changes: Partial<FormBuilderField>): void {\n this.update()(changes);\n }\n\n protected patchSettings(changes: Record<string, any>): void {\n this.patch({\n settings: {\n ...this.field().settings,\n ...changes\n }\n });\n }\n\n protected patchMultiple(multiple: boolean): void {\n if (this.field().type === 'select') {\n this.patchSelectMultiple(multiple);\n return;\n }\n\n this.patch({\n multiple,\n defaultValue: multiple ? [] : null\n });\n }\n\n protected patchSelectMultiple(multiple: boolean): void {\n const field = this.field();\n const options = multiple ? field.options ?? [] : this.normalizeSelectedOptions(field.options ?? [], false);\n const selectedValues = this.selectedOptionValues(options);\n let defaultValue: any = null;\n\n if (multiple) {\n defaultValue = Array.isArray(field.defaultValue)\n ? field.defaultValue\n : field.defaultValue == null\n ? selectedValues\n : [field.defaultValue];\n } else {\n defaultValue = Array.isArray(field.defaultValue)\n ? field.defaultValue[0] ?? selectedValues[0] ?? null\n : field.defaultValue ?? selectedValues[0] ?? null;\n }\n\n this.patch({ multiple, options, defaultValue });\n }\n\n protected patchRadioOrientation(orientation: RadioOrientation): void {\n this.patch({\n settings: {\n ...this.field().settings,\n orientation\n }\n });\n }\n\n protected patchOptions(value: string): void {\n const options = this.normalizeSelectedOptions(value\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map((line, index) => {\n const parsed = parseOptionLine(line);\n\n return {\n label: parsed?.label || `Option ${index + 1}`,\n value: parsed?.value || `option_${index + 1}`,\n selected: parsed?.selected || undefined\n };\n }));\n\n this.patch({\n options,\n defaultValue: this.resolveSelectedDefaultValue(options)\n });\n }\n\n private normalizeSelectedOptions(options: FormBuilderOption[], multiple = this.field().multiple): FormBuilderOption[] {\n if (this.field().type === 'checkbox-list' || multiple) {\n return options;\n }\n\n let selectedSeen = false;\n\n return options.map(option => {\n if (!option.selected) {\n return option;\n }\n\n if (selectedSeen) {\n return {\n ...option,\n selected: undefined\n };\n }\n\n selectedSeen = true;\n return option;\n });\n }\n\n private resolveSelectedDefaultValue(options: FormBuilderOption[]): any {\n const selectedValues = this.selectedOptionValues(options);\n\n if (this.field().type === 'checkbox-list' || this.field().multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n }\n\n private selectedOptionValues(options: FormBuilderOption[]): any[] {\n return options\n .filter(option => option.selected)\n .map(option => option.value);\n }\n\n private isOptionSelected(option: FormBuilderOption): boolean {\n if (option.selected) {\n return true;\n }\n\n const defaultValue = this.field().defaultValue;\n return Array.isArray(defaultValue)\n ? defaultValue.includes(option.value)\n : defaultValue === option.value;\n }\n}\n\nfunction optionsTextValidator(control: AbstractControl<string>): ValidationErrors | null {\n const hasInvalidLine = (control.value ?? '')\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .some(line => !parseOptionLine(line));\n\n return hasInvalidLine ? { formBuilderOptionsFormat: true } : null;\n}\n\nfunction parseOptionLine(line: string): { label: string; value: string; selected: boolean } | null {\n const parts = line.split(':').map(part => part.trim());\n\n if (parts.length < 2 || parts.length > 3) {\n return null;\n }\n\n const [label, value, selected] = parts;\n\n if (!label || !value) {\n return null;\n }\n\n if (selected !== undefined && selected !== 'selected') {\n return null;\n }\n\n return {\n label,\n value,\n selected: selected === 'selected'\n };\n}\n","<div class=\"flex flex-col gap-4\">\n <ngs-form-field>\n <ngs-label>Label</ngs-label>\n <input ngsInput\n [ngModel]=\"field().label\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ label: $event })\">\n </ngs-form-field>\n\n @if (!isSpacer()) {\n <ngs-form-field>\n <ngs-label>Field ID</ngs-label>\n <input ngsInput\n [ngModel]=\"field().name\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ name: $event })\">\n </ngs-form-field>\n }\n\n @if (hasPlaceholder()) {\n <ngs-form-field>\n <ngs-label>Placeholder</ngs-label>\n <input ngsInput\n [ngModel]=\"field().placeholder || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ placeholder: $event })\">\n </ngs-form-field>\n }\n\n @if (!isSpacer()) {\n <ngs-form-field>\n <ngs-label>Hint</ngs-label>\n <input ngsInput\n [ngModel]=\"field().hint || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ hint: $event })\">\n </ngs-form-field>\n }\n\n <ngs-form-field>\n <ngs-label>Width</ngs-label>\n <ngs-select [ngModel]=\"field().width ?? 12\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ width: $event })\">\n @for (width of fieldWidthOptions; track width) {\n <ngs-option [value]=\"width\">{{ width }}/12</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n\n @if (hasBehaviorToggles()) {\n <ngs-slide-toggle-group class=\"mb-4\">\n <ngs-slide-toggle [ngModel]=\"field().required ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ required: $event })\">\n Required field\n </ngs-slide-toggle>\n\n <ngs-slide-toggle [ngModel]=\"field().readonly ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ readonly: $event })\">\n Readonly\n </ngs-slide-toggle>\n\n <ngs-slide-toggle [ngModel]=\"field().disabled ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ disabled: $event })\">\n Disabled\n </ngs-slide-toggle>\n\n @if (hasCheckedState()) {\n <ngs-slide-toggle [ngModel]=\"field().defaultValue === true\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ defaultValue: $event })\">\n Checked\n </ngs-slide-toggle>\n }\n\n @if (hasMultiple()) {\n <ngs-slide-toggle [ngModel]=\"field().multiple ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchMultiple($event)\">\n Multiple\n </ngs-slide-toggle>\n }\n\n @if (hasClearable()) {\n <ngs-slide-toggle [ngModel]=\"field().clearable ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ clearable: $event })\">\n Clearable\n </ngs-slide-toggle>\n }\n </ngs-slide-toggle-group>\n }\n\n @if (isUpload()) {\n <ngs-form-field>\n <ngs-label>Accepted file types</ngs-label>\n <input ngsInput\n [ngModel]=\"field().settings?.['accept'] || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchSettings({ accept: $event })\">\n <ngs-hint>Use MIME types separated by commas, for example image/*,application/pdf.</ngs-hint>\n </ngs-form-field>\n }\n\n @if (isSpacer()) {\n <ngs-form-field>\n <ngs-label>Height</ngs-label>\n <ngs-select [ngModel]=\"field().settings?.['height'] ?? 24\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchSettings({ height: $event })\">\n @for (height of spacerHeightOptions; track height) {\n <ngs-option [value]=\"height\">{{ height }}px</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n\n @if (isRadio()) {\n <ngs-form-field>\n <ngs-label>Orientation</ngs-label>\n <ngs-select [ngModel]=\"radioOrientation()\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchRadioOrientation($event)\">\n @for (orientation of radioOrientationOptions; track orientation) {\n <ngs-option [value]=\"orientation\">{{ orientation }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n\n @if (hasOptions()) {\n <ngs-form-field>\n <ngs-label>Options</ngs-label>\n <textarea ngsInput\n rows=\"4\"\n [formControl]=\"optionsControl\"></textarea>\n @if (optionsControl.hasError('formBuilderOptionsFormat')) {\n <ngs-error>Use Label:value or Label:value:selected.</ngs-error>\n }\n <ngs-hint>One option per line. Use Label:value or Label:value:selected.</ngs-hint>\n </ngs-form-field>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormField, Hint, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { Select } from '@ngstarter-ui/components/select';\nimport { FormBuilderField, FormBuilderFieldWidth } from '../../types';\n\n@Component({\n selector: 'ngs-basic-form-builder-layout-settings',\n exportAs: 'ngsBasicFormBuilderLayoutSettings',\n imports: [\n FormsModule,\n FormField,\n Hint,\n Label,\n Input,\n Option,\n Select\n ],\n templateUrl: './basic-layout-settings.html',\n styleUrl: './basic-layout-settings.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-basic-form-builder-layout-settings'\n }\n})\nexport class BasicFormBuilderLayoutSettings {\n readonly field = input.required<FormBuilderField>();\n readonly update = input.required<(changes: Partial<FormBuilderField>) => void>();\n\n protected readonly fieldWidthOptions: FormBuilderFieldWidth[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n protected readonly showHintSetting = computed(() => this.field().type !== 'group');\n\n protected patch(changes: Partial<FormBuilderField>): void {\n this.update()(changes);\n }\n}\n","<div class=\"flex flex-col gap-4\">\n <ngs-form-field>\n <ngs-label>Label</ngs-label>\n <input ngsInput\n [ngModel]=\"field().label\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ label: $event })\">\n </ngs-form-field>\n\n @if (showHintSetting()) {\n <ngs-form-field>\n <ngs-label>Hint</ngs-label>\n <input ngsInput\n [ngModel]=\"field().hint || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ hint: $event })\">\n <ngs-hint>Shown below the layout title in preview and renderer.</ngs-hint>\n </ngs-form-field>\n }\n\n <ngs-form-field>\n <ngs-label>Width</ngs-label>\n <ngs-select [ngModel]=\"field().width ?? 12\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ width: $event })\">\n @for (width of fieldWidthOptions; track width) {\n <ngs-option [value]=\"width\">{{ width }}/12</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormField, Hint, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { SlideToggle } from '@ngstarter-ui/components/slide-toggle';\nimport { FormBuilderSection } from '../../types';\n\n@Component({\n selector: 'ngs-basic-form-builder-section-settings',\n exportAs: 'ngsBasicFormBuilderSectionSettings',\n imports: [\n FormsModule,\n FormField,\n Hint,\n Label,\n Input,\n SlideToggle\n ],\n templateUrl: './basic-section-settings.html',\n styleUrl: './basic-section-settings.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-basic-form-builder-section-settings'\n }\n})\nexport class BasicFormBuilderSectionSettings {\n readonly section = input.required<FormBuilderSection>();\n readonly update = input.required<(changes: Partial<FormBuilderSection>) => void>();\n\n protected patch(changes: Partial<FormBuilderSection>): void {\n this.update()(changes);\n }\n}\n","<div class=\"flex flex-col gap-4\">\n <ngs-form-field>\n <ngs-label>Title</ngs-label>\n <input ngsInput\n [ngModel]=\"section().title\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ title: $event })\">\n </ngs-form-field>\n\n <ngs-form-field>\n <ngs-label>Description</ngs-label>\n <textarea ngsInput\n rows=\"3\"\n [ngModel]=\"section().description || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ description: $event })\"></textarea>\n <ngs-hint>Optional helper text rendered under the section title.</ngs-hint>\n </ngs-form-field>\n\n <ngs-slide-toggle [ngModel]=\"section().collapsed ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ collapsed: $event })\">\n Collapsed\n </ngs-slide-toggle>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["normalizeFieldDefinition","parseOptionLine","FormFieldError"],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-form-builder.mjs","sources":["../../../projects/components/form-builder/src/config.ts","../../../projects/components/form-builder/src/field-host/field-host.ts","../../../projects/components/form-builder/src/field-host/field-host.html","../../../projects/components/form-builder/src/form-renderer/form-renderer.ts","../../../projects/components/form-builder/src/form-renderer/form-renderer.html","../../../projects/components/form-builder/src/settings-host/settings-host.ts","../../../projects/components/form-builder/src/settings-host/settings-host.html","../../../projects/components/form-builder/src/form-builder/form-builder.ts","../../../projects/components/form-builder/src/form-builder/form-builder.html","../../../projects/components/form-builder/src/form-logic/form-logic.ts","../../../projects/components/form-builder/src/form-logic/form-logic.html","../../../projects/components/form-builder/src/settings/basic-field-settings/basic-field-settings.ts","../../../projects/components/form-builder/src/settings/basic-field-settings/basic-field-settings.html","../../../projects/components/form-builder/src/settings/basic-layout-settings/basic-layout-settings.ts","../../../projects/components/form-builder/src/settings/basic-layout-settings/basic-layout-settings.html","../../../projects/components/form-builder/src/settings/basic-section-settings/basic-section-settings.ts","../../../projects/components/form-builder/src/settings/basic-section-settings/basic-section-settings.html","../../../projects/components/form-builder/ngstarter-ui-components-form-builder.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport {\n FormBuilderField,\n FormBuilderFieldDefinition,\n FormBuilderItemDefinition,\n FormBuilderSelectDataSourceDefinition,\n FormBuilderSchema,\n FormBuilderSettingsDefinition,\n FormBuilderUploadCallback,\n FormBuilderValidationRule\n} from './types';\n\nexport const FORM_BUILDER_ITEMS =\n new InjectionToken<FormBuilderItemDefinition[]>('FORM_BUILDER_ITEMS');\n\nexport const FORM_BUILDER_FIELDS =\n new InjectionToken<FormBuilderFieldDefinition[]>('FORM_BUILDER_FIELDS');\n\nexport const FORM_BUILDER_SETTINGS =\n new InjectionToken<FormBuilderSettingsDefinition[]>('FORM_BUILDER_SETTINGS');\n\nexport const FORM_BUILDER_UPLOAD_CALLBACK =\n new InjectionToken<FormBuilderUploadCallback>('FORM_BUILDER_UPLOAD_CALLBACK');\n\nexport const FORM_BUILDER_SELECT_DATA_SOURCES =\n new InjectionToken<FormBuilderSelectDataSourceDefinition[]>('FORM_BUILDER_SELECT_DATA_SOURCES');\n\nexport function formBuilderField(definition: FormBuilderFieldDefinition): FormBuilderFieldDefinition {\n return definition;\n}\n\nexport function formBuilderItem(definition: FormBuilderItemDefinition): FormBuilderItemDefinition {\n return definition;\n}\n\nexport function formBuilderSettings(definition: FormBuilderSettingsDefinition): FormBuilderSettingsDefinition {\n return definition;\n}\n\nexport function provideFormBuilderField(definition: FormBuilderFieldDefinition): Provider {\n return {\n provide: FORM_BUILDER_FIELDS,\n useValue: definition,\n multi: true\n };\n}\n\nexport function provideFormBuilderFields(definitions: FormBuilderFieldDefinition[]): Provider[] {\n return definitions.map(definition => provideFormBuilderField(definition));\n}\n\nexport function provideFormBuilderSelectDataSource(definition: FormBuilderSelectDataSourceDefinition): Provider {\n return {\n provide: FORM_BUILDER_SELECT_DATA_SOURCES,\n useValue: definition,\n multi: true\n };\n}\n\nexport function provideFormBuilderSelectDataSources(definitions: FormBuilderSelectDataSourceDefinition[]): Provider[] {\n return definitions.map(definition => provideFormBuilderSelectDataSource(definition));\n}\n\nexport function provideFormBuilder(config: {\n items?: FormBuilderItemDefinition[];\n fields?: FormBuilderFieldDefinition[];\n settings?: FormBuilderSettingsDefinition[];\n selectDataSources?: FormBuilderSelectDataSourceDefinition[];\n uploadCallback?: FormBuilderUploadCallback;\n} = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n ...(config.uploadCallback ? [{\n provide: FORM_BUILDER_UPLOAD_CALLBACK,\n useValue: config.uploadCallback\n }] : []),\n ...(config.items ?? []).map(item => ({\n provide: FORM_BUILDER_ITEMS,\n useValue: item,\n multi: true\n })),\n ...(config.fields ?? []).map(field => ({\n provide: FORM_BUILDER_FIELDS,\n useValue: field,\n multi: true\n })),\n ...(config.settings ?? []).map(settings => ({\n provide: FORM_BUILDER_SETTINGS,\n useValue: settings,\n multi: true\n })),\n ...(config.selectDataSources ?? []).map(dataSource => ({\n provide: FORM_BUILDER_SELECT_DATA_SOURCES,\n useValue: dataSource,\n multi: true\n }))\n ]);\n}\n\nconst FIELD_WIDTH_OPTIONS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n .map(width => ({ label: `${width}/12`, value: width }));\n\nconst SPACER_HEIGHT_OPTIONS = [8, 16, 24, 32, 48, 64]\n .map(height => ({ label: `${height}px`, value: height }));\n\nconst ORIENTATION_OPTIONS = [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' }\n];\n\nconst SELECT_OPTIONS_SOURCE_OPTIONS = [\n { label: 'Custom options', value: 'static' },\n { label: 'Data source', value: 'dataSource' }\n];\n\nexport const FORM_BUILDER_FIELD_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'field-base-settings',\n title: 'Field',\n fields: [\n { id: 'field-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'field-name', name: 'name', type: 'text', label: 'Field ID' },\n { id: 'field-hint', name: 'hint', type: 'text', label: 'Hint' },\n { id: 'field-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS },\n { id: 'field-required', name: 'required', type: 'toggle', label: 'Required field', defaultValue: false },\n { id: 'field-readonly', name: 'readonly', type: 'toggle', label: 'Readonly', defaultValue: false },\n { id: 'field-disabled', name: 'disabled', type: 'toggle', label: 'Disabled', defaultValue: false }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_INPUT_FIELD_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'input-field-base-settings',\n title: 'Field',\n fields: [\n { id: 'input-field-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'input-field-name', name: 'name', type: 'text', label: 'Field ID' },\n { id: 'input-field-placeholder', name: 'placeholder', type: 'text', label: 'Placeholder' },\n { id: 'input-field-hint', name: 'hint', type: 'text', label: 'Hint' },\n { id: 'input-field-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS },\n { id: 'input-field-required', name: 'required', type: 'toggle', label: 'Required field', defaultValue: false },\n { id: 'input-field-readonly', name: 'readonly', type: 'toggle', label: 'Readonly', defaultValue: false },\n { id: 'input-field-disabled', name: 'disabled', type: 'toggle', label: 'Disabled', defaultValue: false }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_LAYOUT_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'layout-base-settings',\n title: 'Layout',\n fields: [\n { id: 'layout-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'layout-hint', name: 'hint', type: 'text', label: 'Hint' },\n { id: 'layout-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_LAYOUT_CONTAINER_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'layout-container-base-settings',\n title: 'Layout',\n fields: [\n { id: 'layout-container-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'layout-container-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_STATIC_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'static-base-settings',\n title: 'Static block',\n fields: [\n { id: 'static-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'static-width', name: 'width', type: 'select', label: 'Width', defaultValue: 12, options: FIELD_WIDTH_OPTIONS }\n ]\n }\n ]\n};\n\nexport const FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'section-base-settings',\n title: 'Section',\n fields: [\n { id: 'section-title', name: 'title', type: 'text', label: 'Title' },\n { id: 'section-description', name: 'description', type: 'textarea', label: 'Description', hint: 'Optional helper text rendered under the section title.' },\n { id: 'section-collapsed', name: 'collapsed', type: 'toggle', label: 'Collapsed', defaultValue: false }\n ]\n }\n ]\n};\n\nconst CHECKED_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'checked-settings',\n title: 'Default state',\n fields: [\n { id: 'default-checked', name: 'defaultValue', type: 'toggle', label: 'Checked', defaultValue: false }\n ]\n }\n ]\n};\n\nconst OPTIONS_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'options-settings',\n title: 'Options',\n fields: [\n {\n id: 'options',\n name: 'options',\n type: 'textarea',\n label: 'Options',\n hint: 'One option per line. Use Label:value or Label:value:selected.',\n settings: {\n valueAdapter: 'optionsText'\n }\n }\n ]\n }\n ]\n};\n\nfunction selectSettingsSchema(field: FormBuilderField): FormBuilderSchema {\n const optionsSource = field.optionsSource ?? (field.dataSource ? 'dataSource' : 'static');\n const sourceSection = {\n id: 'select-options-source-settings',\n title: 'Options',\n fields: [\n {\n id: 'select-options-source',\n name: 'optionsSource',\n type: 'segmented',\n label: 'Options source',\n defaultValue: 'static',\n options: SELECT_OPTIONS_SOURCE_OPTIONS,\n settings: {\n valueAdapter: 'selectOptionsSource'\n }\n }\n ]\n };\n\n const dataSourceSection = {\n id: 'select-data-source-settings',\n title: 'Data source',\n fields: [\n {\n id: 'select-data-source',\n name: 'dataSource',\n type: 'select',\n label: 'Data source',\n hint: 'Choose a registered data source.',\n settings: {\n valueAdapter: 'selectDataSource'\n }\n }\n ]\n };\n\n return {\n sections: [\n sourceSection,\n ...(optionsSource === 'dataSource'\n ? [dataSourceSection]\n : OPTIONS_SETTINGS_SCHEMA.sections)\n ]\n };\n}\n\nconst HIDDEN_SETTINGS_SCHEMA: FormBuilderSchema = {\n sections: [\n {\n id: 'hidden-settings',\n title: 'Hidden field',\n fields: [\n { id: 'hidden-label', name: 'label', type: 'text', label: 'Label' },\n { id: 'hidden-name', name: 'name', type: 'text', label: 'Field ID' },\n { id: 'hidden-default-value', name: 'defaultValue', type: 'text', label: 'Value' },\n { id: 'hidden-disabled', name: 'disabled', type: 'toggle', label: 'Disabled', defaultValue: false }\n ]\n }\n ]\n};\n\nexport const DEFAULT_FORM_BUILDER_FIELDS: FormBuilderFieldDefinition[] = [\n {\n type: 'text',\n label: 'Text',\n group: 'Basic',\n icon: 'fluent:text-font-24-regular',\n defaults: {\n label: 'Text field',\n placeholder: 'Enter text'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'number',\n label: 'Number',\n group: 'Basic',\n icon: 'fluent:number-symbol-24-regular',\n defaults: {\n label: 'Number',\n placeholder: '0'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'email',\n label: 'Email',\n group: 'Basic',\n icon: 'fluent:mail-24-regular',\n defaults: {\n label: 'Email',\n placeholder: 'name@example.com'\n },\n settings: {\n extends: 'input-field'\n },\n validators: field => field.required ? [Validators.required, Validators.email] : [Validators.email]\n },\n {\n type: 'hidden',\n label: 'Hidden',\n group: 'Basic',\n icon: 'fluent:eye-off-24-regular',\n description: 'Native hidden input included in submitted form values.',\n defaults: {\n label: 'Hidden field',\n defaultValue: ''\n },\n settings: {\n extends: 'none',\n schema: HIDDEN_SETTINGS_SCHEMA\n }\n },\n {\n type: 'textarea',\n label: 'Textarea',\n group: 'Basic',\n icon: 'fluent:text-description-24-regular',\n defaults: {\n label: 'Description',\n placeholder: 'Enter description',\n width: 12\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'group',\n label: 'Group',\n kind: 'layout',\n group: 'Layout',\n icon: 'fluent:group-24-regular',\n description: 'Container for nested fields.',\n acceptsChildren: true,\n defaults: {\n kind: 'layout',\n label: 'Group',\n width: 12,\n children: []\n },\n settings: {\n extends: 'layout-container'\n }\n },\n {\n type: 'repeater',\n label: 'Repeater',\n kind: 'layout',\n group: 'Layout',\n icon: 'fluent:copy-add-24-regular',\n description: 'Repeat a group of nested fields as a FormArray.',\n acceptsChildren: true,\n defaults: {\n kind: 'layout',\n label: 'Repeater',\n name: 'items',\n width: 12,\n settings: {\n allowNullValue: false,\n emptyText: 'No items added yet.'\n },\n children: []\n },\n settings: {\n extends: 'layout-container',\n schema: {\n sections: [\n {\n id: 'repeater-settings',\n title: 'Repeater',\n fields: [\n {\n id: 'repeater-allow-null-value',\n name: 'settings.allowNullValue',\n type: 'toggle',\n label: 'Allow null value',\n defaultValue: false\n },\n {\n id: 'repeater-empty-text',\n name: 'settings.emptyText',\n type: 'textarea',\n label: 'Empty text',\n defaultValue: 'No items added yet.'\n }\n ]\n }\n ]\n }\n }\n },\n {\n type: 'spacer',\n label: 'Spacer',\n kind: 'static',\n group: 'Layout',\n icon: 'fluent:resize-large-24-regular',\n description: 'Static vertical space between form elements.',\n defaults: {\n kind: 'static',\n label: 'Spacer',\n width: 12,\n settings: {\n height: 24\n }\n },\n settings: {\n extends: 'static',\n schema: {\n sections: [\n {\n id: 'spacer-settings',\n title: 'Spacer',\n fields: [\n { id: 'spacer-height', name: 'settings.height', type: 'select', label: 'Height', defaultValue: 24, options: SPACER_HEIGHT_OPTIONS }\n ]\n }\n ]\n }\n }\n },\n {\n type: 'select',\n label: 'Select',\n group: 'Choices',\n icon: 'fluent:multiselect-ltr-24-regular',\n defaults: {\n label: 'Select',\n placeholder: 'Choose an option',\n clearable: true,\n optionsSource: 'static',\n options: [\n { label: 'Option 1', value: 'option_1' },\n { label: 'Option 2', value: 'option_2' }\n ]\n },\n settings: {\n extends: 'input-field',\n schema: context => ({\n sections: [\n {\n id: 'select-behavior-settings',\n title: 'Select',\n fields: [\n {\n id: 'select-multiple',\n name: 'multiple',\n type: 'toggle',\n label: 'Multiple',\n defaultValue: false,\n settings: {\n valueAdapter: 'selectMultiple'\n }\n },\n { id: 'select-clearable', name: 'clearable', type: 'toggle', label: 'Clearable', defaultValue: true }\n ]\n },\n ...selectSettingsSchema(context.item as FormBuilderField).sections\n ]\n })\n }\n },\n {\n type: 'radio',\n label: 'Radio',\n group: 'Choices',\n icon: 'fluent:radio-button-24-regular',\n defaults: {\n label: 'Radio',\n settings: {\n orientation: 'vertical'\n },\n options: [\n { label: 'Option 1', value: 'option_1' },\n { label: 'Option 2', value: 'option_2' }\n ]\n },\n settings: {\n extends: 'field',\n schema: {\n sections: [\n {\n id: 'radio-settings',\n title: 'Radio',\n fields: [\n { id: 'radio-orientation', name: 'settings.orientation', type: 'select', label: 'Orientation', defaultValue: 'vertical', options: ORIENTATION_OPTIONS }\n ]\n },\n ...OPTIONS_SETTINGS_SCHEMA.sections\n ]\n }\n }\n },\n {\n type: 'checkbox',\n label: 'Checkbox',\n group: 'Choices',\n icon: 'fluent:checkbox-checked-24-regular',\n defaults: {\n label: 'Checkbox',\n defaultValue: false\n },\n settings: {\n extends: 'field',\n schema: CHECKED_SETTINGS_SCHEMA\n }\n },\n {\n type: 'toggle',\n label: 'Toggle',\n group: 'Choices',\n icon: 'fluent:toggle-right-24-regular',\n defaults: {\n label: 'Toggle',\n defaultValue: false\n },\n settings: {\n extends: 'field',\n schema: CHECKED_SETTINGS_SCHEMA\n }\n },\n {\n type: 'date',\n label: 'Date',\n group: 'Date and time',\n icon: 'fluent:calendar-ltr-24-regular',\n defaults: {\n label: 'Date',\n placeholder: 'Select date'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'time',\n label: 'Time',\n group: 'Date and time',\n icon: 'fluent:clock-24-regular',\n defaults: {\n label: 'Time',\n placeholder: 'Select time'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'date-range',\n label: 'Date range',\n group: 'Date and time',\n icon: 'fluent:calendar-date-24-regular',\n defaults: {\n label: 'Date range',\n placeholder: 'Start date',\n width: 12\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'upload',\n label: 'Upload',\n group: 'Files',\n icon: 'fluent:arrow-upload-24-regular',\n defaults: {\n label: 'Upload',\n placeholder: 'Drop files or click to upload',\n width: 12,\n multiple: false,\n settings: {\n accept: '*/*'\n }\n },\n settings: {\n extends: 'input-field',\n schema: {\n sections: [\n {\n id: 'upload-settings',\n title: 'Upload',\n fields: [\n {\n id: 'upload-multiple',\n name: 'multiple',\n type: 'toggle',\n label: 'Multiple',\n defaultValue: false,\n settings: {\n valueAdapter: 'multipleDefaultValue'\n }\n },\n {\n id: 'upload-accept',\n name: 'settings.accept',\n type: 'text',\n label: 'Accepted file types',\n defaultValue: '*/*',\n hint: 'Use MIME types separated by commas, for example image/*,application/pdf.'\n }\n ]\n }\n ]\n }\n }\n },\n {\n type: 'timezone-select',\n label: 'Timezone select',\n group: 'Date and time',\n icon: 'fluent:globe-clock-24-regular',\n defaults: {\n label: 'Timezone',\n placeholder: 'Select timezone'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'currency',\n label: 'Currency',\n group: 'Finance',\n icon: 'fluent:money-24-regular',\n defaults: {\n label: 'Amount',\n placeholder: '0.00'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'currency-select',\n label: 'Currency select',\n group: 'Finance',\n icon: 'fluent:money-hand-24-regular',\n defaults: {\n label: 'Currency',\n placeholder: 'Select currency'\n },\n settings: {\n extends: 'input-field'\n }\n },\n {\n type: 'country-select',\n label: 'Country select',\n group: 'Location',\n icon: 'fluent:globe-location-24-regular',\n defaults: {\n label: 'Country',\n placeholder: 'Select country',\n clearable: true\n },\n settings: {\n extends: 'input-field',\n schema: {\n sections: [\n {\n id: 'country-select-settings',\n title: 'Country select',\n fields: [\n { id: 'country-clearable', name: 'clearable', type: 'toggle', label: 'Clearable', defaultValue: true }\n ]\n }\n ]\n }\n }\n }\n];\n\nexport const DEFAULT_FORM_BUILDER_ITEMS: FormBuilderItemDefinition[] = [\n {\n type: 'section',\n label: 'Section',\n kind: 'layout',\n group: 'Layout',\n icon: 'fluent:folder-24-regular',\n description: 'Top-level layout container.',\n acceptsChildren: true,\n settings: {\n extends: 'none',\n schema: FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA\n }\n },\n ...DEFAULT_FORM_BUILDER_FIELDS\n];\n\nexport function validatorsFromRules(rules: FormBuilderValidationRule[] = [], field?: FormBuilderField) {\n const validators = [];\n\n if (field?.required || rules.some(rule => rule.type === 'required')) {\n validators.push(Validators.required);\n }\n\n for (const rule of rules) {\n if (rule.type === 'email') {\n validators.push(Validators.email);\n } else if (rule.type === 'minLength') {\n validators.push(Validators.minLength(Number(rule.value)));\n } else if (rule.type === 'maxLength') {\n validators.push(Validators.maxLength(Number(rule.value)));\n } else if (rule.type === 'min') {\n validators.push(Validators.min(Number(rule.value)));\n } else if (rule.type === 'max') {\n validators.push(Validators.max(Number(rule.value)));\n }\n }\n\n return validators;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Type,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport {\n Datepicker,\n DatepickerInput,\n DatepickerToggle,\n DateRange,\n DateRangeInput,\n DateRangePicker,\n EndDate,\n provideNativeDateAdapter,\n StartDate\n} from '@ngstarter-ui/components/datepicker';\nimport { FormField, Hint, IconButtonSuffix, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport {\n Select,\n SelectDataSource,\n SelectOptionContentContext,\n SelectOptionContentDef,\n SelectValueContext,\n SelectValueDef\n} from '@ngstarter-ui/components/select';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { Checkbox } from '@ngstarter-ui/components/checkbox';\nimport { SlideToggle } from '@ngstarter-ui/components/slide-toggle';\nimport { RadioButton, RadioGroup, RadioGroupOrientation } from '@ngstarter-ui/components/radio';\nimport { Segmented, SegmentedButton } from '@ngstarter-ui/components/segmented';\nimport { CountrySelect } from '@ngstarter-ui/components/country-select';\nimport { CurrencySelect } from '@ngstarter-ui/components/currency-select';\nimport { TimezoneSelect } from '@ngstarter-ui/components/timezone-select';\nimport { Timepicker, TimepickerInput, TimepickerToggle } from '@ngstarter-ui/components/timepicker';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport {\n UploadArea,\n UploadAreaDropStateDirective,\n UploadAreaIconDirective,\n UploadAreaInvalidStateDirective,\n UploadAreaMainStateDirective,\n UploadFileSelectedEvent,\n UploadTriggerDirective\n} from '@ngstarter-ui/components/upload';\nimport { FORM_BUILDER_SELECT_DATA_SOURCES, FORM_BUILDER_UPLOAD_CALLBACK } from '../config';\nimport { FormBuilderField, FormBuilderFieldDefinition, FormBuilderUploadCallback } from '../types';\n\n@Component({\n selector: 'ngs-form-builder-field-host',\n exportAs: 'ngsFormBuilderFieldHost',\n imports: [\n ReactiveFormsModule,\n Datepicker,\n DatepickerInput,\n DatepickerToggle,\n DateRangeInput,\n DateRangePicker,\n StartDate,\n EndDate,\n FormField,\n Hint,\n IconButtonSuffix,\n Label,\n Input,\n NgComponentOutlet,\n Select,\n SelectOptionContentDef,\n SelectValueDef,\n Option,\n Checkbox,\n SlideToggle,\n RadioButton,\n RadioGroup,\n Segmented,\n SegmentedButton,\n CountrySelect,\n CurrencySelect,\n TimezoneSelect,\n Timepicker,\n TimepickerInput,\n TimepickerToggle,\n Icon,\n UploadArea,\n UploadAreaIconDirective,\n UploadAreaMainStateDirective,\n UploadAreaDropStateDirective,\n UploadAreaInvalidStateDirective,\n UploadTriggerDirective\n ],\n templateUrl: './field-host.html',\n styleUrl: './field-host.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n provideNativeDateAdapter()\n ],\n host: {\n 'class': 'ngs-form-builder-field-host',\n '[class.is-custom]': 'customLoaded()',\n '[class.is-width-1]': '!editableCanvas() && field().width === 1',\n '[class.is-width-2]': '!editableCanvas() && field().width === 2',\n '[class.is-width-3]': '!editableCanvas() && field().width === 3',\n '[class.is-width-4]': '!editableCanvas() && field().width === 4',\n '[class.is-width-5]': '!editableCanvas() && field().width === 5',\n '[class.is-width-6]': '!editableCanvas() && field().width === 6',\n '[class.is-width-7]': '!editableCanvas() && field().width === 7',\n '[class.is-width-8]': '!editableCanvas() && field().width === 8',\n '[class.is-width-9]': '!editableCanvas() && field().width === 9',\n '[class.is-width-10]': '!editableCanvas() && field().width === 10',\n '[class.is-width-11]': '!editableCanvas() && field().width === 11',\n '[class.is-width-12]': '!editableCanvas() && (field().width ?? 12) === 12',\n '[class.is-hidden-field]': '!editableCanvas() && field().type === \"hidden\"'\n }\n})\nexport class FormBuilderFieldHost {\n private readonly providedUploadCallback = inject(FORM_BUILDER_UPLOAD_CALLBACK, { optional: true });\n private readonly selectDataSources = inject(FORM_BUILDER_SELECT_DATA_SOURCES, { optional: true }) ?? [];\n\n readonly field = input.required<FormBuilderField>();\n readonly control = input.required<FormControl>();\n readonly definitions = input<FormBuilderFieldDefinition[]>([]);\n readonly readonly = input(false);\n readonly editableCanvas = input(false);\n readonly uploadCallback = input<FormBuilderUploadCallback | null | undefined>(undefined);\n\n protected readonly customLoaded = signal(false);\n protected readonly controlValue = signal<any>(null);\n protected readonly textInputType = computed(() => {\n const type = this.field().type;\n return type === 'number' || type === 'email' ? type : 'text';\n });\n protected readonly radioOrientation = computed<RadioGroupOrientation>(() =>\n this.field().settings?.['orientation'] === 'horizontal' ? 'horizontal' : 'vertical'\n );\n protected readonly uploadAccept = computed(() => this.field().settings?.['accept'] || '*/*');\n protected readonly uploadDisabled = computed(() =>\n this.readonly() || this.field().readonly || this.field().disabled || this.control().disabled\n );\n protected readonly dateRangeDisabled = computed(() =>\n this.readonly() || this.field().readonly || this.field().disabled || this.control().disabled\n );\n protected readonly uploadSelectedText = computed(() => {\n const value = this.controlValue();\n const files = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n\n if (!files.length) {\n return this.field().placeholder || 'Drop files or click to upload';\n }\n\n if (files.length === 1) {\n return files[0]?.name || '1 file selected';\n }\n\n return `${files.length} files selected`;\n });\n protected readonly spacerHeight = computed(() => {\n const height = Number(this.field().settings?.['height'] ?? 24);\n return [8, 16, 24, 32, 48, 64].includes(height) ? height : 24;\n });\n protected readonly dateRangeStartValue = computed(() => this.formatDateRangePart(this.controlValue()?.start));\n protected readonly dateRangeEndValue = computed(() => this.formatDateRangePart(this.controlValue()?.end));\n protected readonly selectUsesDataSource = computed(() => {\n const field = this.field();\n\n return field.optionsSource === 'dataSource' || (!field.optionsSource && !!field.dataSource);\n });\n protected readonly selectDataSourceDefinition = computed(() => {\n if (!this.selectUsesDataSource()) {\n return null;\n }\n\n const dataSourceId = this.field().dataSource;\n\n if (!dataSourceId) {\n return null;\n }\n\n return this.selectDataSources.find(dataSource => dataSource.id === dataSourceId) ?? null;\n });\n protected readonly selectDataSource = computed<SelectDataSource | null>(() =>\n this.selectDataSourceDefinition()?.dataSource ?? null\n );\n protected readonly selectOptionContentComponent = computed<Type<any> | null>(() =>\n this.selectDataSourceDefinition()?.optionContentComponent ?? null\n );\n protected readonly selectValueComponent = computed<Type<any> | null>(() =>\n this.selectDataSourceDefinition()?.valueComponent ?? null\n );\n protected readonly selectPageSize = computed(() => this.field().dataSourceOptions?.pageSize ?? 20);\n protected readonly selectSearchable = computed(() => this.field().dataSourceOptions?.searchable ?? true);\n protected readonly selectSearchDebounce = computed(() => this.field().dataSourceOptions?.searchDebounce ?? 250);\n protected readonly selectMinSearchLength = computed(() => this.field().dataSourceOptions?.minSearchLength ?? 1);\n protected readonly selectLoadOnOpen = computed(() => this.field().dataSourceOptions?.loadOnOpen ?? true);\n\n private readonly anchor = viewChild.required('anchor', { read: ViewContainerRef });\n\n constructor() {\n effect(onCleanup => {\n const control = this.control();\n\n this.controlValue.set(control.value);\n const subscription = control.valueChanges.subscribe(value => {\n this.controlValue.set(value);\n });\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n effect(async () => {\n const field = this.field();\n const control = this.control();\n const definitions = this.definitions();\n const viewContainer = this.anchor();\n const renderer = definitions.find(definition => definition.type === field.type)?.renderer;\n\n viewContainer.clear();\n this.customLoaded.set(false);\n\n if (!renderer) {\n return;\n }\n\n const componentType = await renderer();\n const componentRef = viewContainer.createComponent(componentType);\n componentRef.setInput('field', field);\n componentRef.setInput('control', control);\n componentRef.setInput('readonly', this.readonly());\n componentRef.setInput('definition', definitions.find(definition => definition.type === field.type));\n this.customLoaded.set(true);\n });\n }\n\n protected async onUploadFilesSelected(event: UploadFileSelectedEvent): Promise<void> {\n if (this.uploadDisabled()) {\n return;\n }\n\n const fallbackValue = this.field().multiple\n ? event.files\n : event.files[0] ?? null;\n const callback = this.uploadCallback() ?? this.providedUploadCallback;\n let value = fallbackValue;\n\n if (callback) {\n this.control().markAsPending();\n const uploadedValue = await callback({\n field: this.field(),\n control: this.control(),\n event: event.event,\n files: event.files,\n fileList: event.fileList,\n multiple: event.multiple\n });\n\n if (uploadedValue !== undefined) {\n value = uploadedValue;\n }\n }\n\n this.control().setValue(value);\n this.control().markAsDirty();\n this.control().markAsTouched();\n this.control().updateValueAndValidity();\n }\n\n protected selectOptionContentInputs(\n data: unknown,\n option: SelectOptionContentContext['option'],\n value: unknown,\n label: string,\n selected: boolean,\n disabled: boolean,\n multiple: boolean\n ): Record<string, unknown> {\n const context: SelectOptionContentContext = {\n $implicit: data,\n data,\n option,\n value,\n label,\n selected,\n disabled,\n multiple\n };\n\n return {\n context,\n field: this.field(),\n control: this.control(),\n data,\n option,\n value,\n label,\n selected,\n disabled,\n multiple\n };\n }\n\n protected selectValueInputs(\n data: SelectValueContext['data'],\n option: SelectValueContext['option'],\n value: SelectValueContext['value'],\n label: string,\n labels: string[],\n count: number,\n multiple: boolean\n ): Record<string, unknown> {\n const context: SelectValueContext = {\n $implicit: data,\n data,\n option,\n value,\n label,\n labels,\n count,\n multiple\n };\n\n return {\n context,\n field: this.field(),\n control: this.control(),\n data,\n option,\n value,\n label,\n labels,\n count,\n multiple\n };\n }\n\n protected onDateRangeChanged(rangeInput: DateRangeInput<any>): void {\n queueMicrotask(() => {\n const range = rangeInput.value;\n const nextRange = range ?? new DateRange(null, null);\n this.control().setValue(nextRange);\n this.control().markAsDirty();\n this.control().markAsTouched();\n });\n }\n\n private formatDateRangePart(value: unknown): string {\n if (!value) {\n return '';\n }\n\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n\n return String(value);\n }\n}\n","<ng-container #anchor/>\n\n@if (!customLoaded()) {\n @switch (field().type) {\n @case ('textarea') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <textarea ngsInput\n rows=\"3\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\"></textarea>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('hidden') {\n <input type=\"hidden\" [formControl]=\"control()\">\n }\n\n @case ('select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [multiple]=\"field().multiple ?? false\"\n [clearable]=\"field().clearable ?? false\"\n [dataSource]=\"selectDataSource()\"\n [pageSize]=\"selectPageSize()\"\n [searchable]=\"selectSearchable()\"\n [searchDebounce]=\"selectSearchDebounce()\"\n [minSearchLength]=\"selectMinSearchLength()\"\n [loadOnOpen]=\"selectLoadOnOpen()\">\n @if (selectOptionContentComponent(); as optionComponent) {\n <ng-template ngsOptionContentDef\n let-data\n let-option=\"option\"\n let-value=\"value\"\n let-label=\"label\"\n let-selected=\"selected\"\n let-disabled=\"disabled\"\n let-multiple=\"multiple\">\n <ng-container\n [ngComponentOutlet]=\"optionComponent\"\n [ngComponentOutletInputs]=\"selectOptionContentInputs(data, option, value, label, selected, disabled, multiple)\"/>\n </ng-template>\n }\n\n @if (selectValueComponent(); as valueComponent) {\n <ng-template ngsSelectValueDef\n let-data\n let-option=\"option\"\n let-value=\"value\"\n let-label=\"label\"\n let-labels=\"labels\"\n let-count=\"count\"\n let-multiple=\"multiple\">\n <ng-container\n [ngComponentOutlet]=\"valueComponent\"\n [ngComponentOutletInputs]=\"selectValueInputs(data, option, value, label, labels, count, multiple)\"/>\n </ng-template>\n }\n\n @if (!selectUsesDataSource()) {\n @for (option of field().options ?? []; track option.value) {\n <ngs-option [value]=\"option.value\">{{ option.label }}</ngs-option>\n }\n }\n </ngs-select>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('radio') {\n <div class=\"ngs-form-builder-choice-field\">\n <span class=\"ngs-form-builder-choice-label\">{{ field().label }}</span>\n <ngs-radio-group [formControl]=\"control()\"\n [name]=\"field().name\"\n [orientation]=\"radioOrientation()\">\n @for (option of field().options ?? []; track option.value) {\n <ngs-radio-button [value]=\"option.value\">{{ option.label }}</ngs-radio-button>\n }\n </ngs-radio-group>\n @if (field().hint) {\n <span class=\"ngs-form-builder-choice-hint\">{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('segmented') {\n <div class=\"ngs-form-builder-choice-field\">\n <span class=\"ngs-form-builder-choice-label\">{{ field().label }}</span>\n <ngs-segmented [formControl]=\"control()\"\n [disabled]=\"readonly() || !!field().readonly || !!field().disabled\">\n @for (option of field().options ?? []; track option.value) {\n <button ngs-segmented-button type=\"button\" [value]=\"option.value\">{{ option.label }}</button>\n }\n </ngs-segmented>\n @if (field().hint) {\n <span class=\"ngs-form-builder-choice-hint\">{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('checkbox') {\n <div class=\"ngs-form-builder-check-field\">\n <ngs-checkbox [formControl]=\"control()\">\n {{ field().label }}\n </ngs-checkbox>\n @if (field().hint) {\n <span>{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('toggle') {\n <div class=\"ngs-form-builder-check-field\">\n <ngs-slide-toggle [formControl]=\"control()\">\n {{ field().label }}\n </ngs-slide-toggle>\n @if (field().hint) {\n <span>{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('date') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n [ngsDatepicker]=\"picker\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n <ngs-datepicker-toggle ngsIconButtonSuffix [for]=\"picker\"/>\n <ngs-datepicker #picker/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('time') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n [ngsTimepicker]=\"timePicker\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n <ngs-timepicker-toggle ngsIconButtonSuffix [for]=\"timePicker\"/>\n <ngs-timepicker #timePicker/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('date-range') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-date-range-input #rangeInput [rangePicker]=\"rangePicker\">\n <input ngsStartDate\n [value]=\"dateRangeStartValue()\"\n [placeholder]=\"field().placeholder || 'Start date'\"\n [readonly]=\"readonly() || field().readonly\"\n [disabled]=\"dateRangeDisabled()\"\n (input)=\"onDateRangeChanged(rangeInput)\">\n <input ngsEndDate\n [value]=\"dateRangeEndValue()\"\n placeholder=\"End date\"\n [readonly]=\"readonly() || field().readonly\"\n [disabled]=\"dateRangeDisabled()\"\n (input)=\"onDateRangeChanged(rangeInput)\">\n </ngs-date-range-input>\n <ngs-datepicker-toggle ngsIconButtonSuffix [for]=\"rangePicker\"/>\n <ngs-date-range-picker #rangePicker/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('upload') {\n <div class=\"ngs-form-builder-upload-field\"\n [class.is-disabled]=\"uploadDisabled()\">\n <span class=\"ngs-form-builder-choice-label\">{{ field().label }}</span>\n <ngs-upload-area ngsUploadTrigger\n [accept]=\"uploadAccept()\"\n [multiple]=\"field().multiple ?? false\"\n (fileSelected)=\"onUploadFilesSelected($event)\">\n <ngs-icon name=\"fluent:arrow-upload-24-regular\" ngsUploadAreaIcon/>\n <ng-container ngsUploadAreaMainState>\n {{ uploadSelectedText() }}\n </ng-container>\n <ng-container ngsUploadAreaDropState>\n Drop files here\n </ng-container>\n <ng-container ngsUploadAreaInvalidState>\n Invalid file type\n </ng-container>\n </ngs-upload-area>\n @if (field().hint) {\n <span class=\"ngs-form-builder-choice-hint\">{{ field().hint }}</span>\n }\n </div>\n }\n\n @case ('spacer') {\n <div class=\"ngs-form-builder-spacer\"\n [class.is-height-8]=\"spacerHeight() === 8\"\n [class.is-height-16]=\"spacerHeight() === 16\"\n [class.is-height-24]=\"spacerHeight() === 24\"\n [class.is-height-32]=\"spacerHeight() === 32\"\n [class.is-height-48]=\"spacerHeight() === 48\"\n [class.is-height-64]=\"spacerHeight() === 64\"\n aria-hidden=\"true\"></div>\n }\n\n @case ('timezone-select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-timezone-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [required]=\"field().required ?? false\"/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('currency') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n type=\"number\"\n inputmode=\"decimal\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('currency-select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-currency-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [required]=\"field().required ?? false\"/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @case ('country-select') {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <ngs-country-select [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [clearable]=\"field().clearable ?? false\"\n [required]=\"field().required ?? false\"/>\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n\n @default {\n <ngs-form-field>\n <ngs-label>{{ field().label }}</ngs-label>\n <input ngsInput\n [type]=\"textInputType()\"\n [formControl]=\"control()\"\n [placeholder]=\"field().placeholder || ''\"\n [readonly]=\"readonly() || field().readonly\">\n @if (field().hint) {\n <ngs-hint>{{ field().hint }}</ngs-hint>\n }\n </ngs-form-field>\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { AbstractControl, FormArray, ReactiveFormsModule, FormControl, FormGroup, ValidationErrors } from '@angular/forms';\nimport { Button } from '@ngstarter-ui/components/button';\nimport { DEFAULT_FORM_BUILDER_ITEMS, FORM_BUILDER_FIELDS, FORM_BUILDER_ITEMS, validatorsFromRules } from '../config';\nimport { FormBuilderField, FormBuilderFieldDefinition, FormBuilderItemDefinition, FormBuilderLayoutItem, FormBuilderSchema, FormBuilderSection, FormBuilderUploadCallback } from '../types';\nimport { FormBuilderFieldHost } from '../field-host/field-host';\n\ninterface FormRendererCanvasItem extends FormBuilderLayoutItem {\n field?: FormBuilderField;\n section?: FormBuilderSection;\n}\n\n@Component({\n selector: 'ngs-form-renderer',\n exportAs: 'ngsFormRenderer',\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n Button,\n FormBuilderFieldHost\n ],\n templateUrl: './form-renderer.html',\n styleUrl: './form-renderer.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-form-renderer'\n }\n})\nexport class FormRenderer {\n private readonly providedItems = inject(FORM_BUILDER_ITEMS, { optional: true }) ?? [];\n private readonly providedFields = inject(FORM_BUILDER_FIELDS, { optional: true }) ?? [];\n private readonly orphanControls = new Map<string, FormControl>();\n\n readonly schema = input.required<FormBuilderSchema>();\n readonly readonly = input(false);\n readonly showSubmit = input(true);\n readonly submitLabel = input('Submit');\n readonly uploadCallback = input<FormBuilderUploadCallback | null | undefined>(undefined);\n readonly value = model<Record<string, any>>({});\n readonly formSubmit = output<Record<string, any>>();\n readonly formReady = output<FormGroup>();\n\n protected readonly definitions = computed<FormBuilderFieldDefinition[]>(() => [\n ...DEFAULT_FORM_BUILDER_ITEMS,\n ...this.providedFields,\n ...this.providedItems\n ].reduce<FormBuilderFieldDefinition[]>((definitions, definition) => {\n const normalized = normalizeFieldDefinition(definition);\n const index = definitions.findIndex(item => item.type === normalized.type);\n\n if (index === -1) {\n definitions.push(normalized);\n } else {\n definitions[index] = {\n ...definitions[index],\n ...normalized,\n defaults: {\n ...definitions[index].defaults,\n ...normalized.defaults\n }\n };\n }\n\n return definitions;\n }, []));\n protected readonly visibleCanvasItems = computed<FormRendererCanvasItem[]>(() =>\n this.resolveCanvasItems(this.schema()).filter(item => !!item.field || !!item.section?.fields.length)\n );\n protected readonly formGroup = computed(() => this.createFormGroup());\n\n constructor() {\n effect(onCleanup => {\n const form = this.formGroup();\n this.formReady.emit(form);\n const subscription = form.valueChanges.subscribe(() => {\n this.value.set(form.getRawValue());\n });\n\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n protected getControl(field: FormBuilderField, formGroup = this.formGroup()): FormControl {\n const control = formGroup.controls[field.name];\n\n if (control instanceof FormControl) {\n return control;\n }\n\n const existing = this.orphanControls.get(field.id);\n\n if (existing) {\n return existing;\n }\n\n const nextControl = new FormControl({\n value: this.fieldInitialValue(field),\n disabled: true\n });\n this.orphanControls.set(field.id, nextControl);\n return nextControl;\n }\n\n protected isContainerField(field: FormBuilderField): boolean {\n const definition = this.definitions().find(item => item.type === field.type);\n\n return definition?.acceptsChildren === true ||\n definition?.kind === 'layout' ||\n field.kind === 'layout' ||\n field.type === 'group' ||\n field.type === 'grid';\n }\n\n protected visibleChildren(field: FormBuilderField): FormBuilderField[] {\n return field.children ?? [];\n }\n\n protected isRepeaterField(field: FormBuilderField): boolean {\n return field.type === 'repeater';\n }\n\n protected repeaterArray(field: FormBuilderField, formGroup = this.formGroup()): FormArray<FormGroup> {\n const control = formGroup.controls[field.name];\n\n return control instanceof FormArray\n ? control as FormArray<FormGroup>\n : new FormArray<FormGroup>([]);\n }\n\n protected repeaterGroups(field: FormBuilderField, formGroup = this.formGroup()): FormGroup[] {\n return this.repeaterArray(field, formGroup).controls;\n }\n\n protected repeaterEmptyText(field: FormBuilderField): string {\n const emptyText = field.settings?.['emptyText'];\n\n return typeof emptyText === 'string' ? emptyText.trim() : '';\n }\n\n protected addRepeaterItem(field: FormBuilderField, formGroup = this.formGroup()): void {\n if (this.readonly()) {\n return;\n }\n\n const array = this.repeaterArray(field, formGroup);\n\n array.push(this.createRepeaterGroup(field));\n array.updateValueAndValidity();\n }\n\n protected removeRepeaterItem(field: FormBuilderField, index: number, formGroup = this.formGroup()): void {\n if (this.readonly()) {\n return;\n }\n\n if (!this.canRemoveRepeaterItem(field, formGroup)) {\n return;\n }\n\n const array = this.repeaterArray(field, formGroup);\n\n array.removeAt(index);\n array.updateValueAndValidity();\n }\n\n protected canRemoveRepeaterItem(field: FormBuilderField, formGroup = this.formGroup()): boolean {\n return this.allowsNullValue(field) || this.repeaterArray(field, formGroup).length > 1;\n }\n\n protected submit(): void {\n const form = this.formGroup();\n\n if (form.invalid) {\n form.markAllAsTouched();\n return;\n }\n\n this.formSubmit.emit(form.getRawValue());\n }\n\n private createFormGroup(): FormGroup {\n const controls: Record<string, AbstractControl> = {};\n const value = this.value();\n\n const fields = [\n ...(this.schema().fields ?? []),\n ...this.schema().sections.flatMap(section => section.fields)\n ];\n\n this.addFieldsToControls(controls, fields, value);\n\n return new FormGroup(controls);\n }\n\n private addFieldsToControls(\n controls: Record<string, AbstractControl>,\n fields: FormBuilderField[],\n value: Record<string, any>\n ): void {\n for (const field of fields) {\n const definition = this.definitions().find(item => item.type === field.type);\n\n if (this.isRepeaterField(field)) {\n controls[field.name] = this.createRepeaterArray(field, value[field.name]);\n continue;\n }\n\n if (this.isContainerField(field)) {\n this.addFieldsToControls(controls, field.children ?? [], value);\n continue;\n }\n\n if (definition?.kind === 'static' || field.kind === 'static') {\n continue;\n }\n\n const validators = definition?.validators?.(field) ?? validatorsFromRules(field.validation, field);\n const control = new FormControl(\n {\n value: value[field.name] ?? this.fieldInitialValue(field),\n disabled: field.disabled || this.readonly()\n },\n validators\n );\n\n controls[field.name] = control;\n }\n }\n\n private createRepeaterArray(field: FormBuilderField, value: unknown): FormArray<FormGroup> {\n const allowNullValue = this.allowsNullValue(field);\n const rows = Array.isArray(value) && (allowNullValue || value.length > 0)\n ? value\n : allowNullValue\n ? []\n : [{}];\n const validators = allowNullValue ? [] : [repeaterRequiredValidator];\n\n return new FormArray(rows.map(row => this.createRepeaterGroup(field, row)), validators);\n }\n\n private createRepeaterGroup(field: FormBuilderField, value: unknown = {}): FormGroup {\n const controls: Record<string, AbstractControl> = {};\n const rowValue = isRecord(value) ? value : {};\n\n for (const child of flattenFields(field.children ?? [])) {\n const definition = this.definitions().find(item => item.type === child.type);\n\n if (this.isContainerField(child) || definition?.kind === 'static' || child.kind === 'static') {\n continue;\n }\n\n const validators = definition?.validators?.(child) ?? validatorsFromRules(child.validation, child);\n controls[child.name] = new FormControl(\n {\n value: rowValue[child.name] ?? this.fieldInitialValue(child),\n disabled: child.disabled || this.readonly()\n },\n validators\n );\n }\n\n return new FormGroup(controls);\n }\n\n private fieldInitialValue(field: FormBuilderField): any {\n if (field.defaultValue !== undefined) {\n return field.defaultValue;\n }\n\n if (field.type === 'upload') {\n return field.multiple ? [] : null;\n }\n\n const selectedValues = (field.options ?? [])\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (field.type === 'checkbox-list' || field.multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n }\n\n private allowsNullValue(field: FormBuilderField): boolean {\n return field.settings?.['allowNullValue'] === true;\n }\n\n private resolveCanvasItems(schema: FormBuilderSchema): FormRendererCanvasItem[] {\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n const items: FormRendererCanvasItem[] = [];\n\n for (const item of normalizedLayout(schema)) {\n if (item.kind === 'field') {\n const field = fieldsById.get(item.id);\n\n if (field) {\n items.push({ ...item, field });\n }\n\n continue;\n }\n\n const section = sectionsById.get(item.id);\n\n if (section) {\n items.push({ ...item, section });\n }\n }\n\n return items;\n }\n}\n\nfunction normalizeFieldDefinition(definition: FormBuilderItemDefinition): FormBuilderFieldDefinition {\n return {\n ...definition,\n kind: definition.kind ?? 'field'\n } as FormBuilderFieldDefinition;\n}\n\nfunction flattenFields(fields: FormBuilderField[]): FormBuilderField[] {\n return fields.flatMap(field => [field, ...flattenFields(field.children ?? [])]);\n}\n\nfunction isRecord(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction repeaterRequiredValidator(control: AbstractControl): ValidationErrors | null {\n return control instanceof FormArray && control.length === 0\n ? { repeaterRequired: true }\n : null;\n}\n\nfunction normalizedLayout(schema: FormBuilderSchema): FormBuilderLayoutItem[] {\n const used = new Set<string>();\n const layout: FormBuilderLayoutItem[] = [];\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n\n for (const item of schema.layout ?? []) {\n const key = `${item.kind}:${item.id}`;\n\n if (used.has(key)) {\n continue;\n }\n\n if ((item.kind === 'field' && fieldsById.has(item.id)) || (item.kind === 'section' && sectionsById.has(item.id))) {\n used.add(key);\n layout.push(item);\n }\n }\n\n for (const field of schema.fields ?? []) {\n const key = `field:${field.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'field', id: field.id });\n }\n }\n\n for (const section of schema.sections) {\n const key = `section:${section.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'section', id: section.id });\n }\n }\n\n return layout;\n}\n","<ng-template #renderFields let-fields let-controlGroup=\"controlGroup\">\n <div class=\"ngs-form-renderer-grid\">\n @for (field of fields; track field.id) {\n @if (isRepeaterField(field)) {\n <section class=\"ngs-form-renderer-grid-field ngs-form-renderer-repeater\">\n <header>\n <div>\n <h4>{{ field.label }}</h4>\n @if (field.hint) {\n <p>{{ field.hint }}</p>\n }\n </div>\n\n @if (!readonly()) {\n <button ngsButton=\"outlined\" type=\"button\" (click)=\"addRepeaterItem(field, controlGroup)\">\n +\n </button>\n }\n </header>\n\n <div class=\"ngs-form-renderer-repeater-items\">\n @if (!repeaterGroups(field, controlGroup).length && repeaterEmptyText(field)) {\n <p class=\"ngs-form-renderer-repeater-empty\">{{ repeaterEmptyText(field) }}</p>\n }\n\n @for (group of repeaterGroups(field, controlGroup); track $index) {\n <div class=\"ngs-form-renderer-repeater-item\" [formGroup]=\"group\">\n <div class=\"ngs-form-renderer-repeater-item-header\">\n <span>{{ field.label }} {{ $index + 1 }}</span>\n @if (!readonly() && canRemoveRepeaterItem(field, controlGroup)) {\n <button ngsButton=\"text\" type=\"button\" (click)=\"removeRepeaterItem(field, $index, controlGroup)\">\n Remove\n </button>\n }\n </div>\n\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: visibleChildren(field), controlGroup: group }\"/>\n </div>\n }\n </div>\n </section>\n } @else if (isContainerField(field)) {\n <section class=\"ngs-form-renderer-grid-field\">\n <header>\n <h4>{{ field.label }}</h4>\n @if (field.hint) {\n <p>{{ field.hint }}</p>\n }\n </header>\n\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: visibleChildren(field), controlGroup: controlGroup }\"/>\n </section>\n } @else {\n <ngs-form-builder-field-host\n [field]=\"field\"\n [control]=\"getControl(field, controlGroup)\"\n [definitions]=\"definitions()\"\n [uploadCallback]=\"uploadCallback()\"\n [readonly]=\"readonly()\"/>\n }\n }\n </div>\n</ng-template>\n\n<form [formGroup]=\"formGroup()\" (ngSubmit)=\"submit()\">\n <div class=\"flex flex-col gap-6\">\n @for (item of visibleCanvasItems(); track item.kind + ':' + item.id) {\n @if (item.field) {\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: [item.field], controlGroup: formGroup() }\"/>\n } @else if (item.section; as section) {\n <section class=\"ngs-form-renderer-section\">\n @if (section.title || section.description) {\n <header>\n @if (section.title) {\n <h3>{{ section.title }}</h3>\n }\n @if (section.description) {\n <p>{{ section.description }}</p>\n }\n </header>\n }\n\n <ng-container\n [ngTemplateOutlet]=\"renderFields\"\n [ngTemplateOutletContext]=\"{ $implicit: section.fields, controlGroup: formGroup() }\"/>\n </section>\n }\n }\n\n @if (showSubmit() && !readonly()) {\n <div class=\"flex justify-end\">\n <button ngsButton=\"filled\" type=\"submit\">{{ submitLabel() }}</button>\n </div>\n }\n </div>\n</form>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport {\n FORM_BUILDER_FIELD_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_INPUT_FIELD_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_LAYOUT_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_LAYOUT_CONTAINER_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_SELECT_DATA_SOURCES,\n FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA,\n FORM_BUILDER_STATIC_BASE_SETTINGS_SCHEMA\n} from '../config';\nimport {\n FormBuilderComponentImporter,\n FormBuilderField,\n FormBuilderFieldDefinition,\n FormBuilderItemDefinition,\n FormBuilderOption,\n FormBuilderSchema,\n FormBuilderSection,\n FormBuilderSettingsConfig,\n FormBuilderSettingsDefinition,\n FormBuilderSettingsInheritance\n} from '../types';\nimport { FormRenderer } from '../form-renderer/form-renderer';\n\n@Component({\n selector: 'ngs-form-builder-settings-host',\n exportAs: 'ngsFormBuilderSettingsHost',\n imports: [\n FormRenderer\n ],\n templateUrl: './settings-host.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-form-builder-settings-host',\n '[class.is-empty]': '!settingsSchema() && !legacyLoaded()'\n }\n})\nexport class FormBuilderSettingsHost {\n private readonly selectDataSources = inject(FORM_BUILDER_SELECT_DATA_SOURCES, { optional: true }) ?? [];\n\n readonly field = input<FormBuilderField | null>(null);\n readonly section = input<FormBuilderSection | null>(null);\n readonly schema = input.required<FormBuilderSchema>();\n readonly definitions = input<FormBuilderFieldDefinition[]>([]);\n readonly settingsDefinitions = input<FormBuilderSettingsDefinition[]>([]);\n readonly update = input<(changes: Partial<FormBuilderField>) => void>();\n readonly updateSection = input<(changes: Partial<FormBuilderSection>) => void>();\n\n protected readonly itemDefinition = computed(() => {\n const field = this.field();\n const section = this.section();\n\n if (section) {\n return this.definitions().find(definition => definition.type === 'section');\n }\n\n return field ? this.definitions().find(definition => definition.type === field.type) : undefined;\n });\n protected readonly settingsSchema = computed(() => {\n const definition = this.itemDefinition();\n const config = this.settingsConfig(definition);\n const inheritance = config?.extends ?? this.inferSettingsInheritance(definition);\n const schemas = [\n this.baseSettingsSchema(inheritance),\n this.resolveOwnSettingsSchema(config, definition)\n ].filter((schema): schema is FormBuilderSchema => !!schema);\n\n return this.withRegisteredSelectDataSources(mergeSettingsSchemas(schemas));\n });\n protected readonly settingsValue = computed(() => {\n const item = this.section() ?? this.field();\n const schema = this.settingsSchema();\n const value: Record<string, any> = {};\n\n if (!item || !schema) {\n return value;\n }\n\n for (const settingField of flattenSettingsFields(schema)) {\n value[settingField.name] = this.readSettingValue(item, settingField);\n }\n\n return value;\n });\n protected readonly legacyLoaded = signal(false);\n private readonly anchor = viewChild.required('anchor', { read: ViewContainerRef });\n\n constructor() {\n effect(async () => {\n const field = this.field();\n const section = this.section();\n const definitions = this.definitions();\n const settingDefinitions = this.settingsDefinitions();\n const viewContainer = this.anchor();\n const type = section ? 'section' : field?.type;\n const itemDefinition = type ? definitions.find(definition => definition.type === type) : undefined;\n const kind = section ? 'layout' : (itemDefinition?.kind ?? field?.kind ?? 'field');\n const legacySettings = this.legacySettingsImporter(itemDefinition) ?? settingDefinitions.find(definition => {\n if (type && (definition.itemType === type || definition.fieldType === type || definition.type === type)) {\n return true;\n }\n\n return !!definition.kind && definition.kind === kind;\n })?.component;\n\n viewContainer.clear();\n this.legacyLoaded.set(false);\n\n if (!legacySettings) {\n return;\n }\n\n const componentType = await legacySettings();\n const componentRef = viewContainer.createComponent(componentType);\n componentRef.setInput('item', section ?? field);\n componentRef.setInput('field', field);\n componentRef.setInput('section', section);\n componentRef.setInput('schema', this.schema());\n componentRef.setInput('definition', itemDefinition);\n componentRef.setInput('update', section ? this.updateSection() : this.update());\n componentRef.setInput('updateField', this.update());\n componentRef.setInput('updateSection', this.updateSection());\n this.legacyLoaded.set(true);\n });\n }\n\n protected applySettingsValue(value: Record<string, any>): void {\n const schema = this.settingsSchema();\n const section = this.section();\n const field = this.field();\n\n if (!schema) {\n return;\n }\n\n if (section) {\n const patch = this.createSettingsPatch(section, schema, value);\n\n if (Object.keys(patch).length) {\n this.updateSection()?.(patch);\n }\n\n return;\n }\n\n if (field) {\n const patch = this.createSettingsPatch(field, schema, value);\n\n if (Object.keys(patch).length) {\n this.update()?.(patch);\n }\n }\n }\n\n private createSettingsPatch<T extends FormBuilderField | FormBuilderSection>(\n item: T,\n schema: FormBuilderSchema,\n value: Record<string, any>\n ): Partial<T> {\n const patch: Record<string, any> = {};\n\n for (const settingField of flattenSettingsFields(schema)) {\n if (settingField.settings?.['valueAdapter'] === 'selectOptionsSource' && isFormBuilderField(item)) {\n const nextSource = value[settingField.name] === 'dataSource' ? 'dataSource' : 'static';\n\n if (nextSource === this.readSettingValue(item, settingField)) {\n continue;\n }\n\n patch['optionsSource'] = nextSource;\n patch['defaultValue'] = nextSource === 'dataSource'\n ? item.multiple ? [] : null\n : resolveSelectedDefaultValue(item.options ?? [], item);\n\n continue;\n }\n\n if (settingField.settings?.['valueAdapter'] === 'optionsText' && isFormBuilderField(item)) {\n if (value[settingField.name] === this.readSettingValue(item, settingField)) {\n continue;\n }\n\n const nextOptions = parseOptionsText(String(value[settingField.name] ?? ''), item);\n\n patch['options'] = nextOptions;\n patch['defaultValue'] = resolveSelectedDefaultValue(nextOptions, item);\n continue;\n }\n\n if (settingField.settings?.['valueAdapter'] === 'selectMultiple' && isFormBuilderField(item)) {\n const multiple = value[settingField.name] === true;\n\n if (multiple === (item.multiple === true)) {\n continue;\n }\n\n const options = multiple ? item.options ?? [] : normalizeSelectedOptions(item.options ?? [], { ...item, multiple });\n\n patch['multiple'] = multiple;\n patch['options'] = options;\n patch['defaultValue'] = resolveMultipleDefaultValue(item, options, multiple);\n continue;\n }\n\n if (settingField.settings?.['valueAdapter'] === 'multipleDefaultValue' && isFormBuilderField(item)) {\n const multiple = value[settingField.name] === true;\n\n if (multiple === (item.multiple === true)) {\n continue;\n }\n\n patch['multiple'] = multiple;\n patch['defaultValue'] = multiple ? [] : null;\n continue;\n }\n\n const nextValue = value[settingField.name];\n\n if (nextValue === this.readSettingValue(item, settingField)) {\n continue;\n }\n\n seedPathPatch(patch, item, settingField.name);\n setPathValue(patch, settingField.name, nextValue);\n }\n\n return patch as Partial<T>;\n }\n\n private readSettingValue(item: FormBuilderField | FormBuilderSection, settingField: FormBuilderField): any {\n if (settingField.settings?.['valueAdapter'] === 'selectOptionsSource' && isFormBuilderField(item)) {\n return item.optionsSource ?? (item.dataSource ? 'dataSource' : 'static');\n }\n\n if (settingField.settings?.['valueAdapter'] === 'optionsText' && isFormBuilderField(item)) {\n return optionsToText(item.options ?? [], item.defaultValue);\n }\n\n const value = getPathValue(item, settingField.name);\n\n return value === undefined ? settingField.defaultValue ?? null : value;\n }\n\n private settingsConfig(definition: FormBuilderItemDefinition | undefined): FormBuilderSettingsConfig | undefined {\n return definition?.settings && typeof definition.settings !== 'function'\n ? definition.settings\n : undefined;\n }\n\n private legacySettingsImporter(definition: FormBuilderItemDefinition | undefined): FormBuilderComponentImporter | undefined {\n return typeof definition?.settings === 'function'\n ? definition.settings\n : undefined;\n }\n\n private resolveOwnSettingsSchema(\n config: FormBuilderSettingsConfig | undefined,\n definition: FormBuilderItemDefinition | undefined\n ): FormBuilderSchema | null {\n const schema = config?.schema;\n\n if (!schema) {\n return null;\n }\n\n if (typeof schema !== 'function') {\n return schema;\n }\n\n const section = this.section();\n\n if (section) {\n return schema({\n item: section,\n section,\n schema: this.schema(),\n definition,\n update: this.updateSection()!,\n updateSection: this.updateSection()!\n });\n }\n\n const field = this.field()!;\n\n return schema({\n item: field,\n field,\n schema: this.schema(),\n definition,\n update: this.update()!,\n updateField: this.update()!\n });\n }\n\n private inferSettingsInheritance(definition: FormBuilderItemDefinition | undefined): FormBuilderSettingsInheritance {\n const field = this.field();\n\n if (this.section()) {\n return 'none';\n }\n\n const kind = definition?.kind ?? field?.kind ?? 'field';\n\n if (kind === 'static') {\n return 'static';\n }\n\n if (kind === 'layout' || definition?.acceptsChildren || field?.children?.length) {\n return 'layout';\n }\n\n return 'field';\n }\n\n private baseSettingsSchema(inheritance: FormBuilderSettingsInheritance): FormBuilderSchema | null {\n if (this.section()) {\n return inheritance === 'none' ? null : FORM_BUILDER_SECTION_BASE_SETTINGS_SCHEMA;\n }\n\n switch (inheritance) {\n case 'field':\n return FORM_BUILDER_FIELD_BASE_SETTINGS_SCHEMA;\n case 'input-field':\n return FORM_BUILDER_INPUT_FIELD_BASE_SETTINGS_SCHEMA;\n case 'layout':\n return FORM_BUILDER_LAYOUT_BASE_SETTINGS_SCHEMA;\n case 'layout-container':\n return FORM_BUILDER_LAYOUT_CONTAINER_BASE_SETTINGS_SCHEMA;\n case 'static':\n return FORM_BUILDER_STATIC_BASE_SETTINGS_SCHEMA;\n default:\n return null;\n }\n }\n\n private withRegisteredSelectDataSources(schema: FormBuilderSchema | null): FormBuilderSchema | null {\n if (!schema) {\n return null;\n }\n\n const dataSourceOptions = this.selectDataSources.map(dataSource => ({\n label: dataSource.name,\n value: dataSource.id\n }));\n\n return {\n ...schema,\n fields: schema.fields?.map(field => this.withSelectDataSourceOptions(field, dataSourceOptions)),\n sections: schema.sections.map(section => ({\n ...section,\n fields: section.fields.map(field => this.withSelectDataSourceOptions(field, dataSourceOptions))\n }))\n };\n }\n\n private withSelectDataSourceOptions(field: FormBuilderField, options: FormBuilderOption[]): FormBuilderField {\n const children = field.children?.map(child => this.withSelectDataSourceOptions(child, options));\n\n if (field.settings?.['valueAdapter'] !== 'selectDataSource') {\n return children ? { ...field, children } : field;\n }\n\n return {\n ...field,\n children,\n options\n };\n }\n}\n\nfunction mergeSettingsSchemas(schemas: FormBuilderSchema[]): FormBuilderSchema | null {\n if (!schemas.length) {\n return null;\n }\n\n return {\n sections: schemas.flatMap(schema => schema.sections.map(section => ({\n ...section,\n fields: section.fields.map(field => ({ ...field }))\n })))\n };\n}\n\nfunction flattenSettingsFields(schema: FormBuilderSchema): FormBuilderField[] {\n return [\n ...(schema.fields ?? []),\n ...schema.sections.flatMap(section => section.fields)\n ].flatMap(field => [field, ...flattenSettingsFields({ sections: [], fields: field.children ?? [] })]);\n}\n\nfunction getPathValue(source: Record<string, any>, path: string): any {\n return path.split('.').reduce<any>((value, key) => value?.[key], source);\n}\n\nfunction setPathValue(target: Record<string, any>, path: string, value: any): void {\n const keys = path.split('.');\n let cursor = target;\n\n keys.slice(0, -1).forEach(key => {\n cursor[key] = cursor[key] ?? {};\n cursor = cursor[key];\n });\n\n cursor[keys[keys.length - 1]] = value;\n}\n\nfunction seedPathPatch(target: Record<string, any>, source: Record<string, any>, path: string): void {\n const [rootKey] = path.split('.');\n const sourceValue = source[rootKey];\n\n if (!path.includes('.') || target[rootKey] !== undefined || !isPlainObject(sourceValue)) {\n return;\n }\n\n target[rootKey] = { ...sourceValue };\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isFormBuilderField(item: FormBuilderField | FormBuilderSection): item is FormBuilderField {\n return 'type' in item;\n}\n\nfunction optionsToText(options: FormBuilderOption[], defaultValue: any): string {\n return options\n .map(option => `${option.label}:${option.value}${isOptionSelected(option, defaultValue) ? ':selected' : ''}`)\n .join('\\n');\n}\n\nfunction parseOptionsText(value: string, field: FormBuilderField): FormBuilderOption[] {\n return normalizeSelectedOptions(value\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map((line, index) => {\n const parsed = parseOptionLine(line);\n\n return {\n label: parsed?.label || `Option ${index + 1}`,\n value: parsed?.value || `option_${index + 1}`,\n selected: parsed?.selected || undefined\n };\n }), field);\n}\n\nfunction parseOptionLine(line: string): FormBuilderOption | null {\n const parts = line.split(':').map(part => part.trim());\n\n if (parts.length < 2 || !parts[0] || !parts[1]) {\n return null;\n }\n\n return {\n label: parts[0],\n value: parts[1],\n selected: parts[2] === 'selected'\n };\n}\n\nfunction normalizeSelectedOptions(options: FormBuilderOption[], field: FormBuilderField): FormBuilderOption[] {\n if (field.type === 'checkbox-list' || field.multiple) {\n return options;\n }\n\n let selectedSeen = false;\n\n return options.map(option => {\n if (!option.selected) {\n return option;\n }\n\n if (selectedSeen) {\n return {\n ...option,\n selected: undefined\n };\n }\n\n selectedSeen = true;\n return option;\n });\n}\n\nfunction resolveSelectedDefaultValue(options: FormBuilderOption[], field: FormBuilderField): any {\n const selectedValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (field.type === 'checkbox-list' || field.multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n}\n\nfunction resolveMultipleDefaultValue(field: FormBuilderField, options: FormBuilderOption[], multiple: boolean): any {\n const selectedValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (multiple) {\n return Array.isArray(field.defaultValue)\n ? field.defaultValue\n : field.defaultValue == null\n ? selectedValues\n : [field.defaultValue];\n }\n\n return Array.isArray(field.defaultValue)\n ? field.defaultValue[0] ?? selectedValues[0] ?? null\n : field.defaultValue ?? selectedValues[0] ?? null;\n}\n\nfunction isOptionSelected(option: FormBuilderOption, defaultValue: any): boolean {\n if (option.selected) {\n return true;\n }\n\n return Array.isArray(defaultValue)\n ? defaultValue.includes(option.value)\n : defaultValue === option.value;\n}\n","@if (settingsSchema(); as schema) {\n <ngs-form-renderer\n [schema]=\"schema\"\n [value]=\"settingsValue()\"\n [showSubmit]=\"false\"\n (valueChange)=\"applySettingsValue($event)\"/>\n}\n\n<ng-container #anchor/>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, TemplateRef, computed, inject, input, model, numberAttribute, output, signal, viewChild } from '@angular/core';\nimport { FormsModule, FormControl } from '@angular/forms';\nimport { Button } from '@ngstarter-ui/components/button';\nimport { Card, CardAside, CardContent, CardHeader } from '@ngstarter-ui/components/card';\nimport { ConfirmManager } from '@ngstarter-ui/components/confirm';\nimport { Dialog, DialogActions, DialogClose, DialogContent, DialogTitle } from '@ngstarter-ui/components/dialog';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { Panel, PanelAside, PanelContent, PanelHeader, PanelSidebar } from '@ngstarter-ui/components/panel';\nimport { ScrollbarArea } from '@ngstarter-ui/components/scrollbar-area';\nimport { Tab, TabGroup } from '@ngstarter-ui/components/tabs';\nimport {Toolbar, ToolbarItem, ToolbarSpacer, ToolbarSubtitle, ToolbarTitle} from '@ngstarter-ui/components/toolbar';\nimport { Tree, TreeDragPlaceholder, TreeNode, TreeNodeDef, TreeNodeDrop, TreeNodeDropPosition, TreeNodePadding } from '@ngstarter-ui/components/tree';\nimport {\n DEFAULT_FORM_BUILDER_ITEMS,\n FORM_BUILDER_FIELDS,\n FORM_BUILDER_ITEMS,\n FORM_BUILDER_SETTINGS\n} from '../config';\nimport {\n FormBuilderField,\n FormBuilderFieldChange,\n FormBuilderFieldDefinition,\n FormBuilderItemDefinition,\n FormBuilderLayoutItem,\n FormBuilderFieldWidth,\n FormBuilderSchema,\n FormBuilderSection,\n FormBuilderSettingsDefinition,\n FormBuilderUploadCallback\n} from '../types';\nimport { FormBuilderFieldHost } from '../field-host/field-host';\nimport { FormRenderer } from '../form-renderer/form-renderer';\nimport { FormBuilderSettingsHost } from '../settings-host/settings-host';\n\ninterface FormBuilderPaletteGroup {\n name: string;\n fields: FormBuilderFieldDefinition[];\n}\n\ninterface FormBuilderFieldTreeNode {\n id: string;\n label: string;\n name?: string;\n type: string;\n icon: string;\n kind: 'section' | 'field';\n field?: FormBuilderField;\n section?: FormBuilderSection;\n children?: FormBuilderFieldTreeNode[];\n}\n\ninterface FormBuilderFieldLocation {\n field: FormBuilderField;\n section?: FormBuilderSection;\n siblings: FormBuilderField[];\n index: number;\n}\n\ninterface FormBuilderTreeInsertTarget {\n fields: FormBuilderField[];\n index: number;\n section?: FormBuilderSection;\n owner?: FormBuilderField;\n}\n\ninterface FormBuilderContainerLocation {\n id: string;\n fields: FormBuilderField[];\n section?: FormBuilderSection;\n owner?: FormBuilderField;\n}\n\ninterface FormBuilderCanvasItem extends FormBuilderLayoutItem {\n field?: FormBuilderField;\n section?: FormBuilderSection;\n}\n\ntype FormBuilderNativeDragItem =\n | { kind: 'field'; definition: FormBuilderFieldDefinition }\n | { kind: 'section' };\n\ninterface FormBuilderNativeDropTarget {\n containerId: string;\n index: number;\n}\n\ninterface FormBuilderPendingNativeDropTarget {\n target: FormBuilderNativeDropTarget;\n clientX: number;\n clientY: number;\n}\n\nconst ROOT_DROP_LIST_ID = 'ngs-form-builder-root-fields';\nconst PALETTE_DRAG_TYPE = 'application/x-ngstarter-form-builder-field';\nconst PALETTE_DRAG_ITEM = 'application/x-ngstarter-form-builder-item';\nconst ACTUAL_FIELDS_TAB_INDEX = 1;\n\n@Component({\n selector: 'ngs-form-builder',\n exportAs: 'ngsFormBuilder',\n imports: [\n NgTemplateOutlet,\n FormsModule,\n Button,\n Card,\n CardAside,\n CardContent,\n CardHeader,\n DialogActions,\n DialogClose,\n DialogContent,\n DialogTitle,\n Icon,\n Input,\n Panel,\n PanelAside,\n PanelContent,\n PanelHeader,\n PanelSidebar,\n ScrollbarArea,\n Tab,\n TabGroup,\n Toolbar,\n ToolbarItem,\n ToolbarSpacer,\n ToolbarTitle,\n Tree,\n TreeDragPlaceholder,\n TreeNode,\n TreeNodeDef,\n TreeNodePadding,\n FormBuilderFieldHost,\n FormRenderer,\n FormBuilderSettingsHost,\n ToolbarSubtitle\n ],\n templateUrl: './form-builder.html',\n styleUrl: './form-builder.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-form-builder'\n }\n})\nexport class FormBuilder implements OnDestroy {\n private readonly dialog = inject(Dialog);\n private readonly confirmManager = inject(ConfirmManager);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly providedItems = inject(FORM_BUILDER_ITEMS, { optional: true }) ?? [];\n private readonly providedFields = inject(FORM_BUILDER_FIELDS, { optional: true }) ?? [];\n private readonly providedSettings = inject(FORM_BUILDER_SETTINGS, { optional: true }) ?? [];\n private readonly previewControls = new Map<string, FormControl>();\n private readonly fieldTreeNodeCache = new Map<string, FormBuilderFieldTreeNode>();\n private readonly canvasAnimationTimers = new WeakMap<HTMLElement, number>();\n private readonly actualFieldsTree = viewChild<Tree<FormBuilderFieldTreeNode>>('actualFieldsTree');\n private fieldTreeRootNodes: FormBuilderFieldTreeNode[] = [];\n private fieldTreeStructureKey = '';\n private suppressPaletteClick = false;\n private pendingNativeDropTarget: FormBuilderPendingNativeDropTarget | null = null;\n private nativeDropTargetDelayTimer: number | null = null;\n\n readonly schema = model<FormBuilderSchema>(createDefaultFormBuilderSchema());\n readonly paletteTitle = input('Fields');\n readonly inspectorTitle = input('Field properties');\n readonly canvasDropPlaceholderDelay = input(200, { transform: numberAttribute });\n readonly uploadCallback = input<FormBuilderUploadCallback | null | undefined>(undefined);\n\n readonly fieldSelected = output<FormBuilderFieldChange>();\n readonly fieldAdded = output<FormBuilderFieldChange>();\n readonly fieldRemoved = output<FormBuilderFieldChange>();\n\n protected readonly search = signal('');\n protected readonly fieldsTabIndex = signal(0);\n protected readonly selectedFieldId = signal<string | null>(null);\n protected readonly nativeDragItem = signal<FormBuilderNativeDragItem | null>(null);\n protected readonly nativeDragFieldDefinition = computed(() => {\n const item = this.nativeDragItem();\n return item?.kind === 'field' ? item.definition : null;\n });\n protected readonly nativeDragSection = computed(() => this.nativeDragItem()?.kind === 'section');\n protected readonly nativeDropTarget = signal<FormBuilderNativeDropTarget | null>(null);\n protected readonly expandedFieldTreeNodeIds = signal<ReadonlySet<string>>(new Set());\n protected readonly definitions = computed<FormBuilderFieldDefinition[]>(() => [\n ...DEFAULT_FORM_BUILDER_ITEMS,\n ...this.providedFields,\n ...this.providedItems\n ].reduce<FormBuilderFieldDefinition[]>((definitions, definition) => {\n const normalized = normalizeFieldDefinition(definition);\n const index = definitions.findIndex(item => item.type === normalized.type);\n\n if (index === -1) {\n definitions.push(normalized);\n } else {\n definitions[index] = {\n ...definitions[index],\n ...normalized,\n defaults: {\n ...definitions[index].defaults,\n ...normalized.defaults\n }\n };\n }\n\n return definitions;\n }, []));\n protected readonly settingsDefinitions = computed<FormBuilderSettingsDefinition[]>(() => this.providedSettings);\n protected readonly canvasItems = computed<FormBuilderCanvasItem[]>(() => this.resolveCanvasItems(this.schema()));\n protected readonly layoutDefinitions = computed<FormBuilderFieldDefinition[]>(() => {\n const query = this.search().trim().toLowerCase();\n\n return this.definitions().filter(definition => {\n if (definition.type === 'section' || (definition.group || 'Other') !== 'Layout') {\n return false;\n }\n\n return this.matchesPaletteQuery(definition, query);\n });\n });\n protected readonly paletteGroups = computed<FormBuilderPaletteGroup[]>(() => {\n const query = this.search().trim().toLowerCase();\n const groups = new Map<string, FormBuilderFieldDefinition[]>();\n\n for (const definition of this.definitions()) {\n const group = definition.group || 'Other';\n\n if (group === 'Layout' || !this.matchesPaletteQuery(definition, query)) {\n continue;\n }\n\n groups.set(group, [...(groups.get(group) ?? []), definition]);\n }\n\n return Array.from(groups, ([name, fields]) => ({ name, fields }));\n });\n protected readonly selectedField = computed(() => {\n const selectedId = this.selectedFieldId();\n return selectedId ? this.findFieldLocation(this.schema(), selectedId)?.field ?? null : null;\n });\n protected readonly selectedSection = computed(() => {\n const selectedId = this.selectedFieldId();\n return selectedId ? this.schema().sections.find(section => section.id === selectedId) ?? null : null;\n });\n protected readonly fieldTree = computed<FormBuilderFieldTreeNode[]>(() => {\n const nodes = this.resolveCanvasItems(this.schema()).map(item => {\n return item.field\n ? this.upsertFieldTreeNode(item.field)\n : this.upsertSectionTreeNode(item.section!);\n });\n const structureKey = this.resolveFieldTreeStructureKey(nodes);\n\n if (structureKey !== this.fieldTreeStructureKey) {\n this.fieldTreeStructureKey = structureKey;\n this.fieldTreeRootNodes = nodes;\n return this.fieldTreeRootNodes;\n }\n\n replaceArrayContents(this.fieldTreeRootNodes, nodes);\n return this.fieldTreeRootNodes;\n });\n protected readonly fieldTreeChildrenAccessor = (node: FormBuilderFieldTreeNode) => node.children ?? [];\n protected readonly hasFieldTreeChildren = (_: number, node: FormBuilderFieldTreeNode) =>\n !!node.children;\n protected readonly trackFieldTreeNode = (_: number, node: FormBuilderFieldTreeNode) => node.id;\n protected readonly fieldTreeDraggablePredicate = (_node: FormBuilderFieldTreeNode) => true;\n protected readonly fieldTreeDropPredicate = (\n source: FormBuilderFieldTreeNode,\n target: FormBuilderFieldTreeNode,\n position: TreeNodeDropPosition\n ) => this.canDropFieldTreeNode(source, target, position);\n\n protected readonly updateSelectedField = (changes: Partial<FormBuilderField>) => {\n this.patchSelectedField(changes);\n };\n protected readonly updateSelectedSection = (changes: Partial<FormBuilderSection>) => {\n const section = this.selectedSection();\n\n if (section) {\n this.updateSection(section, changes);\n }\n };\n\n ngOnDestroy(): void {\n this.clearPendingNativeDropTarget();\n }\n\n protected paletteDragStarted(event: DragEvent, definition: FormBuilderFieldDefinition): void {\n this.suppressPaletteClick = true;\n this.nativeDragItem.set({ kind: 'field', definition });\n event.dataTransfer?.setData(PALETTE_DRAG_TYPE, definition.type);\n event.dataTransfer?.setData(PALETTE_DRAG_ITEM, 'field');\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'copy';\n this.setPaletteDragImage(event);\n }\n }\n\n protected sectionPaletteDragStarted(event: DragEvent): void {\n this.suppressPaletteClick = true;\n this.nativeDragItem.set({ kind: 'section' });\n event.dataTransfer?.setData(PALETTE_DRAG_ITEM, 'section');\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'copy';\n this.setPaletteDragImage(event);\n }\n }\n\n protected paletteDragEnded(): void {\n this.nativeDragItem.set(null);\n this.clearNativeDropTarget();\n window.setTimeout(() => {\n this.suppressPaletteClick = false;\n });\n }\n\n protected paletteClicked(definition: FormBuilderFieldDefinition): void {\n if (this.suppressPaletteClick) {\n return;\n }\n\n this.addField(definition);\n }\n\n protected nativeCanvasDragOver(event: DragEvent): void {\n this.nativeDragOver(\n event,\n ROOT_DROP_LIST_ID,\n '.ngs-form-builder-field:not(.ngs-form-builder-native-ghost-field), .ngs-form-builder-section:not(.ngs-form-builder-native-ghost-section)'\n );\n }\n\n protected nativeFieldDragOver(event: DragEvent, containerId: string): void {\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeDragOver(event, containerId, '.ngs-form-builder-field:not(.ngs-form-builder-native-ghost-field)');\n }\n\n protected nativeSectionDragOver(event: DragEvent, section: FormBuilderSection): void {\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeDragOverAtIndex(event, this.sectionDropListId(section), section.fields.length);\n }\n\n protected nativeSectionDrop(event: DragEvent, section: FormBuilderSection): void {\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeFieldDrop(event, this.sectionDropListId(section));\n }\n\n protected nativeContainerFieldDragOver(event: DragEvent, field: FormBuilderField): void {\n if (!this.isContainerField(field)) {\n return;\n }\n\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeDragOverAtIndex(event, this.fieldDropListId(field), field.children?.length ?? 0);\n }\n\n protected nativeContainerFieldDragLeave(event: DragEvent, field: FormBuilderField): void {\n if (!this.isContainerField(field)) {\n return;\n }\n\n this.nativeDragLeave(event, this.fieldDropListId(field));\n }\n\n protected nativeContainerFieldDrop(event: DragEvent, field: FormBuilderField): void {\n if (!this.isContainerField(field)) {\n return;\n }\n\n if (this.nativeDragItem()?.kind === 'section') {\n return;\n }\n\n event.stopPropagation();\n this.nativeFieldDrop(event, this.fieldDropListId(field));\n }\n\n protected nativeDragLeave(event: DragEvent, containerId: string): void {\n const target = event.currentTarget;\n const relatedTarget = event.relatedTarget;\n\n if (\n target instanceof HTMLElement &&\n relatedTarget instanceof Node &&\n target.contains(relatedTarget)\n ) {\n return;\n }\n\n this.clearNativeDropTarget(containerId);\n }\n\n protected nativeFieldDrop(event: DragEvent, containerId: string): void {\n const item = this.resolveNativeDragItem(event);\n\n if (!item) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const target = this.nativeDropTarget() ?? this.pendingNativeDropTarget?.target ?? null;\n const index = target?.containerId === containerId ? target.index : 0;\n\n if (item.kind === 'section') {\n if (containerId !== ROOT_DROP_LIST_ID) {\n return;\n }\n\n this.insertNativeSection(index);\n } else {\n this.insertNativeField(item.definition, containerId, index);\n }\n\n this.nativeDragItem.set(null);\n this.clearNativeDropTarget();\n }\n\n protected isNativeDropTarget(containerId: string, index: number): boolean {\n const target = this.nativeDropTarget();\n return target?.containerId === containerId && target.index === index;\n }\n\n protected addField(definition: FormBuilderFieldDefinition, sectionId?: string): void {\n const schema = cloneSchema(this.schema());\n const fields = sectionId\n ? schema.sections.find(item => item.id === sectionId)?.fields\n : schema.fields;\n\n if (!fields) {\n return;\n }\n\n const field = this.createField(definition, schema);\n const section = sectionId ? schema.sections.find(item => item.id === sectionId) : undefined;\n fields.push(field);\n if (!sectionId) {\n schema.layout = this.normalizedLayout(schema);\n }\n this.schema.set(schema);\n this.selectField(field, section);\n this.fieldAdded.emit({ field, section });\n }\n\n protected addSection(): void {\n const schema = cloneSchema(this.schema());\n schema.sections.push({\n id: uniqueId('section'),\n title: `Section ${schema.sections.length + 1}`,\n fields: []\n });\n schema.layout = this.normalizedLayout(schema);\n this.schema.set(schema);\n }\n\n protected openPreview(template: TemplateRef<unknown>): void {\n this.dialog.open(template, {\n width: '760px',\n maxWidth: 'calc(100vw - 48px)',\n maxHeight: 'calc(100vh - 48px)',\n ariaLabel: 'Form preview'\n });\n }\n\n protected removeSection(section: FormBuilderSection): void {\n const schema = cloneSchema(this.schema());\n schema.sections = schema.sections.filter(item => item.id !== section.id);\n schema.layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'section' && item.id === section.id));\n\n if (\n this.selectedFieldId() === section.id ||\n section.fields.some(field => field.id === this.selectedFieldId() || containsField(field, this.selectedFieldId()))\n ) {\n this.selectedFieldId.set(null);\n }\n\n this.schema.set(schema);\n }\n\n protected updateSection(section: FormBuilderSection, changes: Partial<FormBuilderSection>): void {\n const schema = cloneSchema(this.schema());\n const nextSection = schema.sections.find(item => item.id === section.id);\n\n if (!nextSection) {\n return;\n }\n\n Object.assign(nextSection, changes);\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n }\n\n protected isSectionCollapsed(section: FormBuilderSection): boolean {\n return section.collapsed === true;\n }\n\n protected selectField(field: FormBuilderField, section?: FormBuilderSection): void {\n this.selectedFieldId.set(field.id);\n this.fieldSelected.emit({ field, section: section ?? undefined });\n }\n\n protected selectSection(section: FormBuilderSection): void {\n this.selectedFieldId.set(section.id);\n }\n\n protected selectCanvasField(field: FormBuilderField, section?: FormBuilderSection): void {\n this.selectField(field, section);\n this.openActualFieldsTreeForField(field.id);\n }\n\n protected selectFieldTreeNode(node: FormBuilderFieldTreeNode): void {\n if (node.section && !node.field) {\n this.selectSection(node.section);\n this.scrollCanvasSectionIntoView(node.section.id);\n return;\n }\n\n if (node.field) {\n if (node.section?.collapsed) {\n this.updateSection(node.section, { collapsed: false });\n }\n\n this.selectField(node.field, node.section);\n this.scrollCanvasFieldIntoView(node.field.id);\n }\n }\n\n protected toggleFieldTreeNode(\n tree: Tree<FormBuilderFieldTreeNode>,\n node: FormBuilderFieldTreeNode,\n event: MouseEvent\n ): void {\n event.stopPropagation();\n\n if (!node.children) {\n return;\n }\n\n if (tree.isExpanded(node)) {\n tree.collapse(node);\n this.expandedFieldTreeNodeIds.update(ids => {\n const next = new Set(ids);\n next.delete(node.id);\n return next;\n });\n return;\n }\n\n tree.expand(node);\n this.expandedFieldTreeNodeIds.update(ids => new Set(ids).add(node.id));\n }\n\n protected isFieldTreeNodeExpanded(tree: Tree<FormBuilderFieldTreeNode>, node: FormBuilderFieldTreeNode): boolean {\n return tree.isExpanded(node) || this.expandedFieldTreeNodeIds().has(node.id);\n }\n\n protected fieldTreePlaceholderIcon(source: FormBuilderFieldTreeNode): string {\n return source.kind === 'section' ? 'fluent:folder-24-regular' : source.icon;\n }\n\n protected fieldTreeNodeDropped(event: TreeNodeDrop<FormBuilderFieldTreeNode>): void {\n if (event.source.kind === 'section') {\n this.dropFieldTreeSection(event);\n return;\n }\n\n if (\n event.source.kind !== 'field' ||\n event.source.id === event.target.id ||\n (event.target.kind === 'field' && event.position === 'inside' && !this.isContainerField(event.target.field!))\n ) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const schema = cloneSchema(this.schema());\n const sourceLocation = this.findFieldLocation(schema, event.source.id);\n\n if (!sourceLocation) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n if (\n event.target.kind === 'field' &&\n (sourceLocation.field.id === event.target.id || containsField(sourceLocation.field, event.target.id))\n ) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const movingField = sourceLocation.field;\n this.detachFieldFromLocation(schema, sourceLocation);\n\n if (event.target.kind === 'section') {\n const inserted = event.position === 'inside'\n ? this.insertFieldIntoTreeSection(schema, movingField, event.target.id)\n : this.insertFieldAroundTreeSection(schema, movingField, event.target.id, event.position);\n\n if (inserted) {\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n this.selectField(movingField, event.position === 'inside' ? inserted.section : undefined);\n return;\n }\n }\n\n if (event.target.kind === 'field') {\n const target = this.resolveTreeFieldInsertTarget(schema, event.target.id, event.position);\n\n if (target) {\n target.fields.splice(target.index, 0, movingField);\n if (target.fields === (schema.fields ?? [])) {\n this.insertRootFieldIntoLayout(schema, movingField, event.target.id, event.position);\n }\n this.expandFieldTreeOwner(target.owner);\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n this.selectField(movingField, target.section);\n return;\n }\n }\n\n this.resetFieldTreeAfterRejectedDrop();\n }\n\n protected confirmRemoveField(field: FormBuilderField): void {\n const confirmRef = this.confirmManager.open({\n title: 'Delete field',\n description: `Delete \"${field.label}\" from this form? This action cannot be undone.`\n });\n\n confirmRef.confirmed.subscribe(() => {\n this.removeField(field);\n });\n }\n\n private removeField(field: FormBuilderField): void {\n const schema = cloneSchema(this.schema());\n const location = this.findFieldLocation(schema, field.id);\n\n if (!location) {\n return;\n }\n\n location.siblings.splice(location.index, 1);\n schema.layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === field.id));\n this.deletePreviewControls(field);\n\n if (this.selectedFieldId() === field.id || containsField(field, this.selectedFieldId())) {\n this.selectedFieldId.set(null);\n }\n\n this.schema.set(schema);\n this.fieldRemoved.emit({ field, section: location.section });\n }\n\n protected sectionDropListId(section: FormBuilderSection): string {\n return `ngs-form-builder-section-${section.id}`;\n }\n\n protected fieldDropListId(field: FormBuilderField): string {\n return `ngs-form-builder-field-${field.id}`;\n }\n\n protected rootDropListId(): string {\n return ROOT_DROP_LIST_ID;\n }\n\n protected previewControl(field: FormBuilderField): FormControl {\n const existing = this.previewControls.get(field.id);\n\n if (existing) {\n return existing;\n }\n\n const control = new FormControl({\n value: this.fieldInitialValue(field),\n disabled: true\n });\n this.previewControls.set(field.id, control);\n return control;\n }\n\n protected patchSelectedField(changes: Partial<FormBuilderField>): void {\n const selectedId = this.selectedFieldId();\n\n if (!selectedId) {\n return;\n }\n\n const schema = cloneSchema(this.schema());\n const location = this.findFieldLocation(schema, selectedId);\n\n if (!location) {\n return;\n }\n\n const nextField = {\n ...location.field,\n ...changes\n };\n\n if (this.isContainerField(nextField) && !nextField.children) {\n nextField.children = [];\n }\n\n location.siblings[location.index] = nextField;\n this.schema.set(schema);\n this.syncPreviewControl(nextField);\n }\n\n protected isContainerField(field: FormBuilderField): boolean {\n const definition = this.definitions().find(item => item.type === field.type);\n\n return definition?.acceptsChildren === true ||\n definition?.kind === 'layout' ||\n field.kind === 'layout' ||\n field.type === 'group' ||\n field.type === 'grid';\n }\n\n protected fieldIcon(field: FormBuilderField): string {\n return this.definitions().find(definition => definition.type === field.type)?.icon || 'fluent:form-24-regular';\n }\n\n protected definitionWidth(definition: FormBuilderFieldDefinition): FormBuilderFieldWidth {\n return definition.defaults?.width ?? this.defaultWidth(definition.type);\n }\n\n private matchesPaletteQuery(definition: FormBuilderFieldDefinition, query: string): boolean {\n return !query ||\n definition.label.toLowerCase().includes(query) ||\n definition.type.toLowerCase().includes(query) ||\n (definition.description?.toLowerCase().includes(query) ?? false);\n }\n\n private nativeDragOver(event: DragEvent, containerId: string, itemSelector: string): void {\n const item = this.nativeDragItem();\n\n if (!item || (item.kind === 'section' && containerId !== ROOT_DROP_LIST_ID)) {\n return;\n }\n\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n\n this.scheduleNativeDropTarget(event, {\n containerId,\n index: this.resolveNativeDropIndex(event, itemSelector)\n });\n }\n\n private nativeDragOverAtIndex(event: DragEvent, containerId: string, index: number): void {\n const item = this.nativeDragItem();\n\n if (!item || item.kind === 'section') {\n return;\n }\n\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n\n this.scheduleNativeDropTarget(event, { containerId, index });\n }\n\n private scheduleNativeDropTarget(event: DragEvent, target: FormBuilderNativeDropTarget): void {\n const current = this.nativeDropTarget();\n\n if (this.isSameNativeDropTarget(current, target)) {\n this.clearPendingNativeDropTarget();\n return;\n }\n\n const delay = Math.max(0, this.canvasDropPlaceholderDelay() || 0);\n\n if (delay === 0) {\n this.clearPendingNativeDropTarget();\n this.setNativeDropTarget(target);\n return;\n }\n\n if (\n this.pendingNativeDropTarget &&\n this.isSameNativeDropTarget(this.pendingNativeDropTarget.target, target) &&\n this.pendingNativeDropTarget.clientX === event.clientX &&\n this.pendingNativeDropTarget.clientY === event.clientY\n ) {\n return;\n }\n\n this.clearPendingNativeDropTarget();\n this.setNativeDropTarget(null);\n\n const pending: FormBuilderPendingNativeDropTarget = {\n target,\n clientX: event.clientX,\n clientY: event.clientY\n };\n\n this.pendingNativeDropTarget = pending;\n this.nativeDropTargetDelayTimer = window.setTimeout(() => {\n if (this.pendingNativeDropTarget !== pending) {\n return;\n }\n\n this.pendingNativeDropTarget = null;\n this.nativeDropTargetDelayTimer = null;\n this.setNativeDropTarget(target);\n }, delay);\n }\n\n private clearNativeDropTarget(containerId?: string): void {\n if (!containerId || this.pendingNativeDropTarget?.target.containerId === containerId) {\n this.clearPendingNativeDropTarget();\n }\n\n if (!containerId || this.nativeDropTarget()?.containerId === containerId) {\n this.setNativeDropTarget(null);\n }\n }\n\n private clearPendingNativeDropTarget(): void {\n if (this.nativeDropTargetDelayTimer !== null) {\n window.clearTimeout(this.nativeDropTargetDelayTimer);\n this.nativeDropTargetDelayTimer = null;\n }\n\n this.pendingNativeDropTarget = null;\n }\n\n private setNativeDropTarget(target: FormBuilderNativeDropTarget | null): void {\n const current = this.nativeDropTarget();\n\n if (this.isSameNativeDropTarget(current, target)) {\n return;\n }\n\n const previousRects = this.captureCanvasItemRects();\n this.nativeDropTarget.set(target);\n this.afterNextPaint(() => this.animateCanvasItemMoves(previousRects));\n }\n\n private isSameNativeDropTarget(\n first: FormBuilderNativeDropTarget | null | undefined,\n second: FormBuilderNativeDropTarget | null | undefined\n ): boolean {\n return first?.containerId === second?.containerId && first?.index === second?.index;\n }\n\n private captureCanvasItemRects(): Map<string, DOMRect> {\n const rects = new Map<string, DOMRect>();\n\n for (const element of this.getCanvasAnimatedItems()) {\n const key = this.getCanvasAnimatedItemKey(element);\n\n if (key) {\n rects.set(key, element.getBoundingClientRect());\n }\n }\n\n return rects;\n }\n\n private animateCanvasItemMoves(previousRects: Map<string, DOMRect>): void {\n if (!previousRects.size) {\n return;\n }\n\n for (const element of this.getCanvasAnimatedItems()) {\n const key = this.getCanvasAnimatedItemKey(element);\n const previousRect = key ? previousRects.get(key) : undefined;\n\n if (!previousRect) {\n continue;\n }\n\n const nextRect = element.getBoundingClientRect();\n const deltaX = previousRect.left - nextRect.left;\n const deltaY = previousRect.top - nextRect.top;\n\n if (Math.abs(deltaX) < 0.5 && Math.abs(deltaY) < 0.5) {\n continue;\n }\n\n const animationTimer = this.canvasAnimationTimers.get(element);\n\n if (animationTimer) {\n window.clearTimeout(animationTimer);\n }\n\n element.style.transition = 'none';\n element.style.transform = `translate(${deltaX}px, ${deltaY}px)`;\n element.getBoundingClientRect();\n element.style.transition = 'transform 160ms cubic-bezier(0, 0, 0.2, 1)';\n element.style.transform = '';\n this.canvasAnimationTimers.set(element, window.setTimeout(() => {\n element.style.transition = '';\n element.style.transform = '';\n }, 180));\n }\n }\n\n private getCanvasAnimatedItems(): HTMLElement[] {\n return Array.from(this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-canvas [data-form-builder-field-id], .ngs-form-builder-canvas [data-form-builder-section-id]'\n ));\n }\n\n private getCanvasAnimatedItemKey(element: HTMLElement): string | null {\n const fieldId = element.dataset['formBuilderFieldId'];\n\n if (fieldId) {\n return `field:${fieldId}`;\n }\n\n const sectionId = element.dataset['formBuilderSectionId'];\n return sectionId ? `section:${sectionId}` : null;\n }\n\n private insertNativeField(definition: FormBuilderFieldDefinition, containerId: string, index: number): void {\n const schema = cloneSchema(this.schema());\n const field = this.createField(definition, schema);\n\n if (containerId === ROOT_DROP_LIST_ID) {\n const layout = this.normalizedLayout(schema);\n schema.fields ??= [];\n schema.fields.push(field);\n layout.splice(clampIndex(index, layout.length), 0, { kind: 'field', id: field.id });\n schema.layout = layout;\n this.schema.set(schema);\n this.selectField(field);\n this.fieldAdded.emit({ field });\n return;\n }\n\n const targetContainer = this.findContainerLocation(schema, containerId);\n\n if (!targetContainer) {\n return;\n }\n\n targetContainer.fields.splice(clampIndex(index, targetContainer.fields.length), 0, field);\n this.expandFieldTreeOwner(targetContainer.owner);\n this.schema.set(schema);\n this.selectField(field, targetContainer.section);\n this.fieldAdded.emit({ field, section: targetContainer.section });\n }\n\n private insertNativeSection(index: number): void {\n const schema = cloneSchema(this.schema());\n const section = {\n id: uniqueId('section'),\n title: `Section ${schema.sections.length + 1}`,\n fields: []\n };\n const layout = this.normalizedLayout(schema);\n\n schema.sections.push(section);\n layout.splice(clampIndex(index, layout.length), 0, { kind: 'section', id: section.id });\n schema.layout = layout;\n this.schema.set(schema);\n }\n\n private resolveNativeDragItem(event: DragEvent): FormBuilderNativeDragItem | null {\n const currentItem = this.nativeDragItem();\n\n if (currentItem) {\n return currentItem;\n }\n\n if (event.dataTransfer?.getData(PALETTE_DRAG_ITEM) === 'section') {\n return { kind: 'section' };\n }\n\n const type = event.dataTransfer?.getData(PALETTE_DRAG_TYPE);\n const definition = type ? this.definitions().find(item => item.type === type) ?? null : null;\n return definition ? { kind: 'field', definition } : null;\n }\n\n private resolveNativeDropIndex(event: DragEvent, itemSelector: string): number {\n const container = event.currentTarget;\n\n if (!(container instanceof HTMLElement)) {\n return 0;\n }\n\n const items = Array.from(container.children).filter((child): child is HTMLElement => {\n return child instanceof HTMLElement && child.matches(itemSelector);\n });\n\n for (let index = 0; index < items.length; index += 1) {\n const rect = items[index].getBoundingClientRect();\n const centerY = rect.top + rect.height / 2;\n const centerX = rect.left + rect.width / 2;\n const sameRow = event.clientY >= rect.top && event.clientY <= rect.bottom;\n\n if (event.clientY < centerY || (sameRow && event.clientX < centerX)) {\n return index;\n }\n }\n\n return items.length;\n }\n\n private setPaletteDragImage(event: DragEvent): void {\n const source = event.currentTarget;\n\n if (!(source instanceof HTMLElement) || !event.dataTransfer) {\n return;\n }\n\n const clone = source.cloneNode(true);\n\n if (!(clone instanceof HTMLElement)) {\n return;\n }\n\n clone.classList.add('ngs-form-builder-native-drag-image');\n source.parentElement?.appendChild(clone);\n const rect = source.getBoundingClientRect();\n event.dataTransfer.setDragImage(clone, Math.min(event.offsetX, rect.width), Math.min(event.offsetY, rect.height));\n window.setTimeout(() => clone.remove());\n }\n\n private createField(definition: FormBuilderFieldDefinition, schema: FormBuilderSchema): FormBuilderField {\n const baseLabel = definition.defaults?.label || definition.label;\n const name = uniqueFieldName(toFieldName(baseLabel), schema);\n const kind = definition.defaults?.kind ?? definition.kind ?? 'field';\n\n const field: FormBuilderField = {\n id: uniqueId('field'),\n name,\n type: definition.type,\n kind,\n label: baseLabel,\n width: definition.defaults?.width ?? this.defaultWidth(definition.type),\n ...definition.defaults\n };\n\n if (field.defaultValue === undefined) {\n field.defaultValue = this.fieldInitialValue(field);\n }\n\n return field;\n }\n\n private defaultWidth(type: string): FormBuilderFieldWidth {\n return 12;\n }\n\n private resolveCanvasItems(schema: FormBuilderSchema): FormBuilderCanvasItem[] {\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n const items: FormBuilderCanvasItem[] = [];\n\n for (const item of this.normalizedLayout(schema)) {\n if (item.kind === 'field') {\n const field = fieldsById.get(item.id);\n\n if (field) {\n items.push({ ...item, field });\n }\n\n continue;\n }\n\n const section = sectionsById.get(item.id);\n\n if (section) {\n items.push({ ...item, section });\n }\n }\n\n return items;\n }\n\n private normalizedLayout(schema: FormBuilderSchema): FormBuilderLayoutItem[] {\n const used = new Set<string>();\n const layout: FormBuilderLayoutItem[] = [];\n const fieldsById = new Map((schema.fields ?? []).map(field => [field.id, field]));\n const sectionsById = new Map(schema.sections.map(section => [section.id, section]));\n\n for (const item of schema.layout ?? []) {\n const key = `${item.kind}:${item.id}`;\n\n if (used.has(key)) {\n continue;\n }\n\n if ((item.kind === 'field' && fieldsById.has(item.id)) || (item.kind === 'section' && sectionsById.has(item.id))) {\n used.add(key);\n layout.push(item);\n }\n }\n\n for (const field of schema.fields ?? []) {\n const key = `field:${field.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'field', id: field.id });\n }\n }\n\n for (const section of schema.sections) {\n const key = `section:${section.id}`;\n\n if (!used.has(key)) {\n used.add(key);\n layout.push({ kind: 'section', id: section.id });\n }\n }\n\n return layout;\n }\n\n private detachFieldFromLocation(schema: FormBuilderSchema, location: FormBuilderFieldLocation): void {\n location.siblings.splice(location.index, 1);\n\n if (location.siblings === (schema.fields ?? [])) {\n schema.layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === location.field.id));\n }\n }\n\n private insertFieldIntoTreeSection(\n schema: FormBuilderSchema,\n field: FormBuilderField,\n sectionId: string\n ): FormBuilderTreeInsertTarget | null {\n const section = schema.sections.find(item => item.id === sectionId);\n\n if (!section) {\n return null;\n }\n\n section.fields.push(field);\n return {\n fields: section.fields,\n index: section.fields.length - 1,\n section\n };\n }\n\n private insertFieldAroundTreeSection(\n schema: FormBuilderSchema,\n field: FormBuilderField,\n sectionId: string,\n position: 'before' | 'after' | 'inside'\n ): FormBuilderTreeInsertTarget | null {\n if (position === 'inside') {\n return this.insertFieldIntoTreeSection(schema, field, sectionId);\n }\n\n const section = schema.sections.find(item => item.id === sectionId);\n\n if (!section) {\n return null;\n }\n\n schema.fields ??= [];\n\n if (!schema.fields.some(item => item.id === field.id)) {\n schema.fields.push(field);\n }\n\n const layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === field.id));\n const sectionIndex = layout.findIndex(item => item.kind === 'section' && item.id === sectionId);\n layout.splice(sectionIndex === -1 ? layout.length : sectionIndex + (position === 'after' ? 1 : 0), 0, {\n kind: 'field',\n id: field.id\n });\n schema.layout = layout;\n\n return {\n fields: schema.fields,\n index: schema.fields.findIndex(item => item.id === field.id)\n };\n }\n\n private resolveTreeFieldInsertTarget(\n schema: FormBuilderSchema,\n targetFieldId: string,\n position: 'before' | 'inside' | 'after'\n ): FormBuilderTreeInsertTarget | null {\n const targetLocation = this.findFieldLocation(schema, targetFieldId);\n\n if (!targetLocation) {\n return null;\n }\n\n if (position === 'inside' && this.isContainerField(targetLocation.field)) {\n targetLocation.field.children ??= [];\n return {\n fields: targetLocation.field.children,\n index: targetLocation.field.children.length,\n section: targetLocation.section,\n owner: targetLocation.field\n };\n }\n\n const insertIndex = position === 'before' ? targetLocation.index : targetLocation.index + 1;\n return {\n fields: targetLocation.siblings,\n index: insertIndex,\n section: targetLocation.section\n };\n }\n\n private insertRootFieldIntoLayout(\n schema: FormBuilderSchema,\n field: FormBuilderField,\n targetFieldId: string,\n position: 'before' | 'inside' | 'after'\n ): void {\n schema.fields ??= [];\n\n if (!schema.fields.some(item => item.id === field.id)) {\n schema.fields.push(field);\n }\n\n const layout = this.normalizedLayout(schema).filter(item => !(item.kind === 'field' && item.id === field.id));\n const targetIndex = layout.findIndex(item => item.kind === 'field' && item.id === targetFieldId);\n layout.splice(targetIndex === -1 ? layout.length : targetIndex + (position === 'before' ? 0 : 1), 0, {\n kind: 'field',\n id: field.id\n });\n schema.layout = layout;\n }\n\n private resetFieldTreeAfterRejectedDrop(): void {\n this.schema.set(cloneSchema(this.schema()));\n this.restoreFieldTreeExpansion();\n }\n\n private canDropFieldTreeNode(\n source: FormBuilderFieldTreeNode,\n target: FormBuilderFieldTreeNode,\n position: TreeNodeDropPosition\n ): boolean {\n if (source.id === target.id) {\n return false;\n }\n\n if (source.kind === 'section') {\n return position !== 'inside' && (target.kind === 'section' || this.isRootFieldTreeNode(target));\n }\n\n if (target.kind === 'field' && position === 'inside') {\n return !!target.field && this.isContainerField(target.field);\n }\n\n return true;\n }\n\n private dropFieldTreeSection(event: TreeNodeDrop<FormBuilderFieldTreeNode>): void {\n if (!this.canDropFieldTreeNode(event.source, event.target, event.position)) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const schema = cloneSchema(this.schema());\n const layout = this.normalizedLayout(schema);\n const sourceIndex = layout.findIndex(item => item.kind === 'section' && item.id === event.source.id);\n const targetKind = event.target.kind === 'section' ? 'section' : 'field';\n const targetIndex = layout.findIndex(item => item.kind === targetKind && item.id === event.target.id);\n\n if (sourceIndex < 0 || targetIndex < 0) {\n this.resetFieldTreeAfterRejectedDrop();\n return;\n }\n\n const [sectionItem] = layout.splice(sourceIndex, 1);\n const adjustedTargetIndex = sourceIndex < targetIndex ? targetIndex - 1 : targetIndex;\n layout.splice(adjustedTargetIndex + (event.position === 'after' ? 1 : 0), 0, sectionItem);\n schema.layout = layout;\n this.schema.set(schema);\n this.restoreFieldTreeExpansion();\n }\n\n private isRootFieldTreeNode(node: FormBuilderFieldTreeNode): boolean {\n if (node.kind !== 'field') {\n return false;\n }\n\n return this.resolveCanvasItems(this.schema()).some(item => item.kind === 'field' && item.id === node.id);\n }\n\n private restoreFieldTreeExpansion(): void {\n const expandedIds = this.expandedFieldTreeNodeIds();\n\n if (!expandedIds.size) {\n return;\n }\n\n this.afterNextPaint(() => {\n this.afterNextPaint(() => {\n const tree = this.actualFieldsTree();\n\n if (!tree) {\n return;\n }\n\n for (const node of this.flattenFieldTree(this.fieldTree())) {\n if (node.children && expandedIds.has(node.id)) {\n tree.expand(node);\n }\n }\n });\n });\n }\n\n private expandFieldTreeOwner(owner: FormBuilderField | undefined): void {\n if (!owner) {\n return;\n }\n\n this.expandedFieldTreeNodeIds.update(ids => new Set(ids).add(owner.id));\n }\n\n private flattenFieldTree(nodes: FormBuilderFieldTreeNode[]): FormBuilderFieldTreeNode[] {\n return nodes.flatMap(node => [node, ...this.flattenFieldTree(node.children ?? [])]);\n }\n\n private openActualFieldsTreeForField(fieldId: string): void {\n const path = this.findFieldTreeNodePath(this.fieldTree(), fieldId);\n\n this.fieldsTabIndex.set(ACTUAL_FIELDS_TAB_INDEX);\n\n if (!path.length) {\n return;\n }\n\n const expandableIds = path\n .slice(0, -1)\n .filter(node => !!node.children)\n .map(node => node.id);\n\n if (expandableIds.length) {\n this.expandedFieldTreeNodeIds.update(ids => {\n const next = new Set(ids);\n\n for (const id of expandableIds) {\n next.add(id);\n }\n\n return next;\n });\n }\n\n this.afterNextPaint(() => {\n this.afterNextPaint(() => {\n const tree = this.actualFieldsTree();\n\n if (tree) {\n for (const node of path.slice(0, -1)) {\n if (node.children) {\n tree.expand(node);\n }\n }\n }\n\n this.scrollFieldTreeNodeIntoView(fieldId);\n });\n });\n }\n\n private findFieldTreeNodePath(\n nodes: FormBuilderFieldTreeNode[],\n fieldId: string,\n path: FormBuilderFieldTreeNode[] = []\n ): FormBuilderFieldTreeNode[] {\n for (const node of nodes) {\n const nextPath = [...path, node];\n\n if (node.id === fieldId) {\n return nextPath;\n }\n\n const childPath = this.findFieldTreeNodePath(node.children ?? [], fieldId, nextPath);\n\n if (childPath.length) {\n return childPath;\n }\n }\n\n return [];\n }\n\n private scrollFieldTreeNodeIntoView(fieldId: string): void {\n const target = this.findFieldTreeNodeElement(fieldId);\n\n if (!target) {\n return;\n }\n\n const scrollableContent = target\n .closest('ngs-scrollbar-area')\n ?.querySelector<HTMLElement>('.scrollable-content');\n\n if (!scrollableContent) {\n target.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n return;\n }\n\n this.scrollElementFullyIntoView(target, scrollableContent);\n }\n\n private findFieldTreeNodeElement(fieldId: string): HTMLElement | null {\n const nodes = this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-palette [data-form-builder-tree-node-id]'\n );\n\n return Array.from(nodes).find(node => node.dataset['formBuilderTreeNodeId'] === fieldId) ?? null;\n }\n\n private scrollCanvasFieldIntoView(fieldId: string): void {\n this.scrollCanvasItemIntoView(() => this.findCanvasFieldElement(fieldId));\n }\n\n private scrollCanvasSectionIntoView(sectionId: string): void {\n this.scrollCanvasItemIntoView(() => this.findCanvasSectionElement(sectionId));\n }\n\n private scrollCanvasItemIntoView(resolveTarget: () => HTMLElement | null): void {\n this.afterNextPaint(() => {\n this.afterNextPaint(() => {\n const target = resolveTarget();\n\n if (!target) {\n return;\n }\n\n const scrollableContent = target\n .closest('ngs-scrollbar-area')\n ?.querySelector<HTMLElement>('.scrollable-content');\n\n if (!scrollableContent) {\n target.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n return;\n }\n\n this.scrollElementFullyIntoView(target, scrollableContent);\n });\n });\n }\n\n private findCanvasFieldElement(fieldId: string): HTMLElement | null {\n const fields = this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-canvas [data-form-builder-field-id]'\n );\n\n return Array.from(fields).find(field => field.dataset['formBuilderFieldId'] === fieldId) ?? null;\n }\n\n private findCanvasSectionElement(sectionId: string): HTMLElement | null {\n const sections = this.elementRef.nativeElement.querySelectorAll<HTMLElement>(\n '.ngs-form-builder-canvas [data-form-builder-section-id]'\n );\n\n return Array.from(sections).find(section => section.dataset['formBuilderSectionId'] === sectionId) ?? null;\n }\n\n private syncPreviewControl(field: FormBuilderField): void {\n const control = this.previewControls.get(field.id);\n\n if (!control) {\n return;\n }\n\n queueMicrotask(() => {\n const value = this.fieldInitialValue(field);\n\n if (control.value !== value) {\n control.setValue(value, { emitEvent: false });\n }\n\n if (control.enabled) {\n control.disable({ emitEvent: false });\n }\n });\n }\n\n private fieldInitialValue(field: FormBuilderField): any {\n if (field.defaultValue !== undefined) {\n return field.defaultValue;\n }\n\n if (field.type === 'upload') {\n return field.multiple ? [] : null;\n }\n\n const selectedValues = (field.options ?? [])\n .filter(option => option.selected)\n .map(option => option.value);\n\n if (field.type === 'checkbox-list' || field.multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n }\n\n private scrollElementFullyIntoView(target: HTMLElement, scrollableContent: HTMLElement): void {\n const padding = 16;\n const containerRect = scrollableContent.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const availableHeight = Math.max(0, containerRect.height - padding * 2);\n const availableWidth = Math.max(0, containerRect.width - padding * 2);\n let top = scrollableContent.scrollTop;\n let left = scrollableContent.scrollLeft;\n\n if (targetRect.height > availableHeight || targetRect.top < containerRect.top + padding) {\n top += targetRect.top - containerRect.top - padding;\n } else if (targetRect.bottom > containerRect.bottom - padding) {\n top += targetRect.bottom - containerRect.bottom + padding;\n }\n\n if (targetRect.width > availableWidth || targetRect.left < containerRect.left + padding) {\n left += targetRect.left - containerRect.left - padding;\n } else if (targetRect.right > containerRect.right - padding) {\n left += targetRect.right - containerRect.right + padding;\n }\n\n scrollableContent.scrollTo({\n top: Math.max(0, top),\n left: Math.max(0, left),\n behavior: 'smooth'\n });\n }\n\n private afterNextPaint(callback: () => void): void {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n return;\n }\n\n window.setTimeout(callback);\n }\n\n private upsertSectionTreeNode(section: FormBuilderSection): FormBuilderFieldTreeNode {\n const node = this.getCachedFieldTreeNode(section.id);\n const children = section.fields.map(field => this.upsertFieldTreeNode(field, section));\n\n node.label = section.title;\n node.name = undefined;\n node.type = 'section';\n node.icon = 'fluent:folder-24-regular';\n node.kind = 'section';\n node.field = undefined;\n node.section = section;\n node.children ??= [];\n replaceArrayContents(node.children, children);\n return node;\n }\n\n private upsertFieldTreeNode(field: FormBuilderField, section?: FormBuilderSection): FormBuilderFieldTreeNode {\n const definition = this.definitions().find(item => item.type === field.type);\n const node = this.getCachedFieldTreeNode(field.id);\n const children = field.children?.map(child => this.upsertFieldTreeNode(child, section));\n\n node.label = field.label;\n node.name = field.name;\n node.type = field.type;\n node.icon = definition?.icon || 'fluent:form-24-regular';\n node.kind = 'field';\n node.field = field;\n node.section = section;\n\n if (children?.length || this.isContainerField(field)) {\n node.children ??= [];\n replaceArrayContents(node.children, children ?? []);\n } else {\n node.children = undefined;\n }\n\n return node;\n }\n\n private getCachedFieldTreeNode(id: string): FormBuilderFieldTreeNode {\n const cached = this.fieldTreeNodeCache.get(id);\n\n if (cached) {\n return cached;\n }\n\n const node: FormBuilderFieldTreeNode = {\n id,\n label: '',\n type: '',\n icon: 'fluent:form-24-regular',\n kind: 'field'\n };\n\n this.fieldTreeNodeCache.set(id, node);\n return node;\n }\n\n private resolveFieldTreeStructureKey(nodes: FormBuilderFieldTreeNode[]): string {\n return nodes\n .map(node => `${node.kind}:${node.id}[${this.resolveFieldTreeStructureKey(node.children ?? [])}]`)\n .join('|');\n }\n\n private findContainerLocation(schema: FormBuilderSchema, containerId: string): FormBuilderContainerLocation | null {\n if (containerId === ROOT_DROP_LIST_ID) {\n return {\n id: containerId,\n fields: schema.fields ?? []\n };\n }\n\n const rootNested = this.findFieldContainerLocation(schema.fields ?? [], undefined, containerId);\n\n if (rootNested) {\n return rootNested;\n }\n\n for (const section of schema.sections) {\n if (this.sectionDropListId(section) === containerId) {\n return {\n id: containerId,\n fields: section.fields,\n section\n };\n }\n\n const nested = this.findFieldContainerLocation(section.fields, section, containerId);\n\n if (nested) {\n return nested;\n }\n }\n\n return null;\n }\n\n private findFieldContainerLocation(\n fields: FormBuilderField[],\n section: FormBuilderSection | undefined,\n containerId: string\n ): FormBuilderContainerLocation | null {\n for (const field of fields) {\n if (this.isContainerField(field) && this.fieldDropListId(field) === containerId) {\n field.children ??= [];\n\n return {\n id: containerId,\n fields: field.children,\n section,\n owner: field\n };\n }\n\n const nested = this.findFieldContainerLocation(field.children ?? [], section, containerId);\n\n if (nested) {\n return nested;\n }\n }\n\n return null;\n }\n\n private findFieldLocation(schema: FormBuilderSchema, fieldId: string): FormBuilderFieldLocation | null {\n const rootLocation = findFieldLocationInFields(schema.fields ?? [], fieldId);\n\n if (rootLocation) {\n return rootLocation;\n }\n\n for (const section of schema.sections) {\n const location = findFieldLocationInFields(section.fields, fieldId, section);\n\n if (location) {\n return location;\n }\n }\n\n return null;\n }\n\n private deletePreviewControls(field: FormBuilderField): void {\n this.previewControls.delete(field.id);\n\n for (const child of field.children ?? []) {\n this.deletePreviewControls(child);\n }\n }\n}\n\nexport function createDefaultFormBuilderSchema(): FormBuilderSchema {\n return {\n title: 'New form',\n fields: [],\n layout: [],\n sections: []\n };\n}\n\nfunction uniqueId(prefix: string): string {\n return `${prefix}_${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction cloneSchema(schema: FormBuilderSchema): FormBuilderSchema {\n return {\n ...schema,\n fields: (schema.fields ?? []).map(cloneField),\n layout: schema.layout?.map(item => ({ ...item })),\n sections: schema.sections.map(section => ({\n ...section,\n fields: section.fields.map(cloneField)\n }))\n };\n}\n\nfunction cloneField(field: FormBuilderField): FormBuilderField {\n return {\n ...field,\n options: field.options?.map(option => ({ ...option })),\n validation: field.validation?.map(rule => ({ ...rule })),\n settings: field.settings ? { ...field.settings } : undefined,\n children: field.children?.map(cloneField)\n };\n}\n\nfunction clampIndex(index: number, length: number): number {\n return Math.max(0, Math.min(index, length));\n}\n\nfunction replaceArrayContents<T>(target: T[], source: T[]): void {\n target.splice(0, target.length, ...source);\n}\n\nfunction normalizeFieldDefinition(definition: FormBuilderItemDefinition): FormBuilderFieldDefinition {\n return {\n ...definition,\n kind: definition.kind ?? 'field'\n } as FormBuilderFieldDefinition;\n}\n\nfunction toFieldName(label: string): string {\n return label\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '') || 'field';\n}\n\nfunction uniqueFieldName(baseName: string, schema: FormBuilderSchema): string {\n const usedNames = new Set(\n [\n ...(schema.fields ?? []).flatMap(field => collectFieldNames(field)),\n ...schema.sections.flatMap(section => section.fields.flatMap(field => collectFieldNames(field)))\n ]\n );\n\n if (!usedNames.has(baseName)) {\n return baseName;\n }\n\n let index = 2;\n let nextName = `${baseName}_${index}`;\n\n while (usedNames.has(nextName)) {\n index += 1;\n nextName = `${baseName}_${index}`;\n }\n\n return nextName;\n}\n\nfunction collectFieldNames(field: FormBuilderField): string[] {\n return [field.name, ...(field.children ?? []).flatMap(collectFieldNames)];\n}\n\nfunction findFieldLocationInFields(\n fields: FormBuilderField[],\n fieldId: string,\n section?: FormBuilderSection\n): FormBuilderFieldLocation | null {\n const index = fields.findIndex(field => field.id === fieldId);\n\n if (index !== -1) {\n return {\n field: fields[index],\n section,\n siblings: fields,\n index\n };\n }\n\n for (const field of fields) {\n const location = findFieldLocationInFields(field.children ?? [], fieldId, section);\n\n if (location) {\n return location;\n }\n }\n\n return null;\n}\n\nfunction containsField(field: FormBuilderField, fieldId: string | null): boolean {\n if (!fieldId) {\n return false;\n }\n\n return (field.children ?? []).some(child => child.id === fieldId || containsField(child, fieldId));\n}\n","<ng-template #nativeFieldGhost>\n @if (nativeDragFieldDefinition(); as definition) {\n <div\n class=\"ngs-form-builder-field ngs-form-builder-field-placeholder ngs-form-builder-native-ghost-field\"\n [class.is-width-1]=\"definitionWidth(definition) === 1\"\n [class.is-width-2]=\"definitionWidth(definition) === 2\"\n [class.is-width-3]=\"definitionWidth(definition) === 3\"\n [class.is-width-4]=\"definitionWidth(definition) === 4\"\n [class.is-width-5]=\"definitionWidth(definition) === 5\"\n [class.is-width-6]=\"definitionWidth(definition) === 6\"\n [class.is-width-7]=\"definitionWidth(definition) === 7\"\n [class.is-width-8]=\"definitionWidth(definition) === 8\"\n [class.is-width-9]=\"definitionWidth(definition) === 9\"\n [class.is-width-10]=\"definitionWidth(definition) === 10\"\n [class.is-width-11]=\"definitionWidth(definition) === 11\"\n [class.is-width-12]=\"definitionWidth(definition) === 12\"></div>\n }\n</ng-template>\n\n<ng-template #nativeSectionGhost>\n <ngs-card class=\"ngs-form-builder-section ngs-form-builder-native-ghost-section\">\n <ngs-card-header>\n <div class=\"ngs-form-builder-section-heading\">\n <span class=\"ngs-form-builder-drag-icon\">\n <ngs-icon name=\"fluent:folder-add-24-regular\"/>\n </span>\n <span class=\"ngs-form-builder-section-title\">Section</span>\n </div>\n </ngs-card-header>\n </ngs-card>\n</ng-template>\n\n<ng-template #fieldList let-fields let-containerId=\"containerId\" let-section=\"section\">\n <div\n class=\"ngs-form-builder-drop-list ngs-form-builder-canvas-drop-list\"\n [id]=\"containerId\"\n (dragover)=\"nativeFieldDragOver($event, containerId)\"\n (dragleave)=\"nativeDragLeave($event, containerId)\"\n (drop)=\"nativeFieldDrop($event, containerId)\">\n @for (field of fields; track field.id; let fieldIndex = $index) {\n @if (isNativeDropTarget(containerId, fieldIndex)) {\n <ng-container [ngTemplateOutlet]=\"nativeFieldGhost\"/>\n }\n @if (isContainerField(field)) {\n <div\n class=\"ngs-form-builder-field is-container\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (dragover)=\"nativeContainerFieldDragOver($event, field)\"\n (dragleave)=\"nativeContainerFieldDragLeave($event, field)\"\n (drop)=\"nativeContainerFieldDrop($event, field)\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field, section)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <div class=\"ngs-form-builder-grid-field\">\n <ng-container\n [ngTemplateOutlet]=\"fieldList\"\n [ngTemplateOutletContext]=\"{\n $implicit: field.children ?? [],\n containerId: fieldDropListId(field),\n section\n }\"/>\n </div>\n </div>\n } @else {\n <div\n class=\"ngs-form-builder-field\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field, section)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <ngs-form-builder-field-host\n [field]=\"field\"\n [control]=\"previewControl(field)\"\n [definitions]=\"definitions()\"\n [uploadCallback]=\"uploadCallback()\"\n [readonly]=\"true\"\n [editableCanvas]=\"true\"/>\n </div>\n }\n }\n\n @if (isNativeDropTarget(containerId, fields.length)) {\n <ng-container [ngTemplateOutlet]=\"nativeFieldGhost\"/>\n }\n </div>\n</ng-template>\n\n<ngs-panel class=\"ngs-form-builder-shell\">\n <ngs-panel-header autoHeight class=\"border-b border-border px-5 py-3\">\n <ngs-toolbar>\n <div class=\"min-w-0\">\n <ngs-toolbar-subtitle>Form builder</ngs-toolbar-subtitle>\n <ngs-toolbar-title appearance=\"large\" class=\"truncate\">{{ schema().title || 'Untitled form' }}</ngs-toolbar-title>\n </div>\n\n <ngs-toolbar-spacer/>\n\n <ngs-toolbar-item>\n <button ngsButton=\"outlined\" type=\"button\" (click)=\"openPreview(previewDialog)\">\n <ngs-icon name=\"fluent:eye-24-regular\"/>\n Preview\n </button>\n </ngs-toolbar-item>\n </ngs-toolbar>\n </ngs-panel-header>\n\n <ngs-panel-sidebar class=\"ngs-form-builder-palette w-80 border-e border-border\">\n <ngs-tab-group\n animationDuration=\"0ms\"\n [selectedIndex]=\"fieldsTabIndex()\"\n (selectedIndexChange)=\"fieldsTabIndex.set($event)\">\n <ngs-tab label=\"Fields\" class=\"relative\">\n <ngs-scrollbar-area>\n <div class=\"flex flex-col gap-5 p-4\">\n <section class=\"flex flex-col gap-2\">\n <h4 class=\"text-xs font-semibold uppercase tracking-normal text-secondary\">Layout</h4>\n <button\n type=\"button\"\n class=\"ngs-form-builder-palette-item\"\n draggable=\"true\"\n (dragstart)=\"sectionPaletteDragStarted($event)\"\n (dragend)=\"paletteDragEnded()\">\n <span class=\"ngs-form-builder-palette-item-content\">\n <span class=\"ngs-form-builder-palette-item-label\">\n <ngs-icon name=\"fluent:folder-add-24-regular\"/>\n <span>Section</span>\n </span>\n </span>\n </button>\n\n @for (definition of layoutDefinitions(); track definition.type) {\n <button\n type=\"button\"\n class=\"ngs-form-builder-palette-item\"\n draggable=\"true\"\n (dragstart)=\"paletteDragStarted($event, definition)\"\n (dragend)=\"paletteDragEnded()\"\n (click)=\"paletteClicked(definition)\">\n <span class=\"ngs-form-builder-palette-item-content\">\n <span class=\"ngs-form-builder-palette-item-label\">\n <ngs-icon [name]=\"definition.icon || 'fluent:form-24-regular'\"/>\n <span>{{ definition.label }}</span>\n </span>\n </span>\n </button>\n }\n </section>\n\n @for (group of paletteGroups(); track group.name) {\n <section class=\"flex flex-col gap-2\">\n <h4 class=\"text-xs font-semibold uppercase tracking-normal text-secondary\">{{ group.name }}</h4>\n <div class=\"flex flex-col gap-2\">\n @for (definition of group.fields; track definition.type) {\n <button\n type=\"button\"\n class=\"ngs-form-builder-palette-item\"\n draggable=\"true\"\n (dragstart)=\"paletteDragStarted($event, definition)\"\n (dragend)=\"paletteDragEnded()\"\n (click)=\"paletteClicked(definition)\">\n <span class=\"ngs-form-builder-palette-item-content\">\n <span class=\"ngs-form-builder-palette-item-label\">\n <ngs-icon [name]=\"definition.icon || 'fluent:form-24-regular'\"/>\n <span>{{ definition.label }}</span>\n </span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n </div>\n </ngs-scrollbar-area>\n </ngs-tab>\n <ngs-tab label=\"Layers\" class=\"relative\">\n <ngs-scrollbar-area>\n <div class=\"px-4 py-4\">\n <ngs-tree\n #actualFieldsTree=\"ngsTree\"\n [dataSource]=\"fieldTree()\"\n [childrenAccessor]=\"fieldTreeChildrenAccessor\"\n [trackBy]=\"trackFieldTreeNode\"\n [draggablePredicate]=\"fieldTreeDraggablePredicate\"\n [dropPredicate]=\"fieldTreeDropPredicate\"\n [nodePaddingIndent]=\"80\"\n [reorderOnDrop]=\"false\"\n (nodeDrop)=\"fieldTreeNodeDropped($event)\"\n draggable>\n <ng-template ngsTreeDragPlaceholder let-source=\"source\">\n <div class=\"ngs-form-builder-tree-drag-placeholder\">\n <ngs-icon [name]=\"fieldTreePlaceholderIcon(source)\"/>\n <span>{{ source.label }}</span>\n </div>\n </ng-template>\n\n <ngs-tree-node *ngsTreeNodeDef=\"let node; when: hasFieldTreeChildren\"\n ngsTreeNodePadding\n [value]=\"node.id\"\n [cdkTreeNodeTypeaheadLabel]=\"node.label\">\n <button\n ngsIconButton\n class=\"ngs-form-builder-tree-toggle\"\n [attr.aria-label]=\"'Toggle ' + node.label\"\n (click)=\"toggleFieldTreeNode(actualFieldsTree, node, $event)\">\n <ngs-icon [name]=\"isFieldTreeNodeExpanded(actualFieldsTree, node) ? 'fluent:chevron-down-24-regular' : 'fluent:chevron-right-24-regular'\" class=\"size-4\"/>\n </button>\n <button\n ngsButton=\"text\"\n type=\"button\"\n class=\"ngs-form-builder-tree-item\"\n [class.is-selected]=\"selectedFieldId() === node.id\"\n [attr.data-form-builder-tree-node-id]=\"node.id\"\n (click)=\"selectFieldTreeNode(node)\">\n <ngs-icon [name]=\"node.icon\"/>\n <span>{{ node.label }}</span>\n <!-- @if (node.name) {-->\n <!-- <small>{{ node.name }}</small>-->\n <!-- }-->\n </button>\n </ngs-tree-node>\n\n <ngs-tree-node *ngsTreeNodeDef=\"let node\" ngsTreeNodePadding [value]=\"node.id\">\n <button\n ngsButton=\"text\"\n type=\"button\"\n class=\"ngs-form-builder-tree-item\"\n [class.is-selected]=\"selectedFieldId() === node.id\"\n [attr.data-form-builder-tree-node-id]=\"node.id\"\n (click)=\"selectFieldTreeNode(node)\">\n <ngs-icon [name]=\"node.icon\"/>\n {{ node.label }}\n<!-- <span class=\"inline-flex flex-col\">-->\n<!-- -->\n<!-- @if (node.name) {-->\n<!-- <small>{{ node.name }}</small>-->\n<!-- }-->\n<!-- </span>-->\n </button>\n </ngs-tree-node>\n </ngs-tree>\n </div>\n </ngs-scrollbar-area>\n </ngs-tab>\n </ngs-tab-group>\n </ngs-panel-sidebar>\n\n <ngs-panel-content>\n <ngs-scrollbar-area [absolute]=\"true\">\n <div class=\"ngs-form-builder-canvas flex flex-col gap-5 p-6\">\n <div\n class=\"ngs-form-builder-canvas-list\"\n [id]=\"rootDropListId()\"\n (dragover)=\"nativeCanvasDragOver($event)\"\n (dragleave)=\"nativeDragLeave($event, rootDropListId())\"\n (drop)=\"nativeFieldDrop($event, rootDropListId())\">\n @for (item of canvasItems(); track item.kind + ':' + item.id; let itemIndex = $index) {\n @if (isNativeDropTarget(rootDropListId(), itemIndex)) {\n <ng-container [ngTemplateOutlet]=\"nativeDragSection() ? nativeSectionGhost : nativeFieldGhost\"/>\n }\n @if (item.field; as field) {\n @if (isContainerField(field)) {\n <div\n class=\"ngs-form-builder-field is-container\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (dragover)=\"nativeContainerFieldDragOver($event, field)\"\n (dragleave)=\"nativeContainerFieldDragLeave($event, field)\"\n (drop)=\"nativeContainerFieldDrop($event, field)\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <div class=\"ngs-form-builder-grid-field\">\n <ng-container\n [ngTemplateOutlet]=\"fieldList\"\n [ngTemplateOutletContext]=\"{\n $implicit: field.children ?? [],\n containerId: fieldDropListId(field)\n }\"/>\n </div>\n </div>\n } @else {\n <div\n class=\"ngs-form-builder-field\"\n [class.is-width-1]=\"(field.width ?? 12) === 1\"\n [class.is-width-2]=\"field.width === 2\"\n [class.is-width-3]=\"field.width === 3\"\n [class.is-width-4]=\"field.width === 4\"\n [class.is-width-5]=\"field.width === 5\"\n [class.is-width-6]=\"field.width === 6\"\n [class.is-width-7]=\"field.width === 7\"\n [class.is-width-8]=\"field.width === 8\"\n [class.is-width-9]=\"field.width === 9\"\n [class.is-width-10]=\"field.width === 10\"\n [class.is-width-11]=\"field.width === 11\"\n [class.is-width-12]=\"(field.width ?? 12) === 12\"\n [class.is-selected]=\"selectedFieldId() === field.id\"\n [attr.data-form-builder-field-id]=\"field.id\"\n (click)=\"$event.stopPropagation(); selectCanvasField(field)\">\n <div class=\"ngs-form-builder-field-header\">\n <div class=\"ngs-form-builder-field-label\">\n <ngs-icon [name]=\"fieldIcon(field)\"/>\n <span>{{ field.label }}</span>\n </div>\n </div>\n\n <ngs-form-builder-field-host\n [field]=\"field\"\n [control]=\"previewControl(field)\"\n [definitions]=\"definitions()\"\n [uploadCallback]=\"uploadCallback()\"\n [readonly]=\"true\"\n [editableCanvas]=\"true\"/>\n </div>\n }\n } @else if (item.section; as section) {\n <ngs-card class=\"ngs-form-builder-section\"\n [attr.data-form-builder-section-id]=\"section.id\"\n (dragover)=\"nativeSectionDragOver($event, section)\"\n (dragleave)=\"nativeDragLeave($event, sectionDropListId(section))\"\n (drop)=\"nativeSectionDrop($event, section)\"\n (click)=\"selectSection(section)\">\n <ngs-card-header>\n <div class=\"ngs-form-builder-section-heading\">\n <input ngsInput\n class=\"ngs-form-builder-section-title\"\n [ngModel]=\"section.title\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateSection(section, { title: $event })\"\n aria-label=\"Section title\">\n </div>\n @if (section.description) {\n <p class=\"truncate text-sm text-secondary\">{{ section.description }}</p>\n }\n\n <ngs-card-aside>\n <div class=\"ngs-form-builder-section-actions\">\n <button ngsIconButton type=\"button\" aria-label=\"Collapse section\" (click)=\"updateSection(section, { collapsed: !section.collapsed })\">\n <ngs-icon [name]=\"isSectionCollapsed(section) ? 'fluent:chevron-down-24-regular' : 'fluent:chevron-up-24-regular'\"/>\n </button>\n <button ngsIconButton type=\"button\" aria-label=\"Delete section\" (click)=\"removeSection(section)\">\n <ngs-icon name=\"fluent:delete-24-regular\"/>\n </button>\n </div>\n </ngs-card-aside>\n </ngs-card-header>\n\n @if (!isSectionCollapsed(section)) {\n <ngs-card-content>\n <ng-container\n [ngTemplateOutlet]=\"fieldList\"\n [ngTemplateOutletContext]=\"{\n $implicit: section.fields,\n containerId: sectionDropListId(section),\n section\n }\"/>\n </ngs-card-content>\n } @else if (isNativeDropTarget(sectionDropListId(section), section.fields.length)) {\n <ngs-card-content>\n <div class=\"ngs-form-builder-drop-list ngs-form-builder-canvas-drop-list\">\n <ng-container [ngTemplateOutlet]=\"nativeFieldGhost\"/>\n </div>\n </ngs-card-content>\n }\n </ngs-card>\n }\n }\n\n @if (isNativeDropTarget(rootDropListId(), canvasItems().length)) {\n <ng-container [ngTemplateOutlet]=\"nativeDragSection() ? nativeSectionGhost : nativeFieldGhost\"/>\n }\n\n </div>\n </div>\n </ngs-scrollbar-area>\n </ngs-panel-content>\n\n <ngs-panel-aside class=\"ngs-form-builder-inspector w-88 border-s border-border\">\n @if (selectedField() || selectedSection()) {\n <ngs-panel-header class=\"ps-5 pe-2 border-b border-border\">\n <ngs-toolbar>\n <ngs-toolbar-title class=\"truncate\">\n {{ inspectorTitle() }}\n </ngs-toolbar-title>\n <ngs-toolbar-subtitle>\n {{ selectedField()?.label || selectedSection()?.title }}\n </ngs-toolbar-subtitle>\n <ngs-toolbar-spacer/>\n <ngs-toolbar-item>\n <button ngsIconButton type=\"button\" aria-label=\"Clear selection\" (click)=\"selectedFieldId.set(null)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </ngs-toolbar-item>\n </ngs-toolbar>\n </ngs-panel-header>\n }\n\n <ngs-panel-content>\n @if (selectedField() || selectedSection()) {\n <ngs-scrollbar-area [absolute]=\"true\">\n <div class=\"flex flex-col gap-4 p-5\">\n <ngs-form-builder-settings-host\n [field]=\"selectedField()\"\n [section]=\"selectedSection()\"\n [schema]=\"schema()\"\n [definitions]=\"definitions()\"\n [settingsDefinitions]=\"settingsDefinitions()\"\n [update]=\"updateSelectedField\"\n [updateSection]=\"updateSelectedSection\"/>\n\n @if (selectedField(); as field) {\n <div class=\"mt-3\">\n <button ngsButton=\"text\" type=\"button\" class=\"ngs-form-builder-delete-button\" (click)=\"confirmRemoveField(field)\">\n <ngs-icon name=\"fluent:delete-24-regular\"/>\n Delete field\n </button>\n </div>\n }\n </div>\n </ngs-scrollbar-area>\n } @else {\n <div class=\"ngs-form-builder-empty-inspector\">\n Select a field on the canvas or in the fields tree to edit its settings.\n </div>\n }\n </ngs-panel-content>\n </ngs-panel-aside>\n</ngs-panel>\n\n<ng-template #previewDialog>\n <h3 ngs-dialog-title>{{ schema().title || 'Form preview' }}</h3>\n <ngs-dialog-content class=\"ngs-form-builder-preview-dialog-content\">\n <ngs-form-renderer\n [schema]=\"schema()\"\n [uploadCallback]=\"uploadCallback()\"\n [showSubmit]=\"false\"/>\n </ngs-dialog-content>\n <ngs-dialog-actions align=\"end\">\n <button ngsButton=\"outlined\" type=\"button\" ngs-dialog-close>Close</button>\n </ngs-dialog-actions>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { EmptyState, EmptyStateContent, EmptyStateIcon, EmptyStateTitle } from '@ngstarter-ui/components/empty-state';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { FormBuilderSchema } from '../types';\n\n@Component({\n selector: 'ngs-form-logic',\n exportAs: 'ngsFormLogic',\n imports: [\n EmptyState,\n EmptyStateContent,\n EmptyStateIcon,\n EmptyStateTitle,\n Icon\n ],\n templateUrl: './form-logic.html',\n styleUrl: './form-logic.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-form-logic'\n }\n})\nexport class FormLogic {\n readonly schema = input<FormBuilderSchema | null>(null);\n readonly title = input('Form logic');\n readonly description = input('Visual rules for field visibility and calculations will be configured here.');\n}\n","<ngs-empty-state>\n <ngs-empty-state-icon>\n <ngs-icon name=\"fluent:flowchart-24-regular\"/>\n </ngs-empty-state-icon>\n <ngs-empty-state-title>{{ title() }}</ngs-empty-state-title>\n <ngs-empty-state-content>{{ description() }}</ngs-empty-state-content>\n</ngs-empty-state>\n","import { ChangeDetectionStrategy, Component, DestroyRef, computed, effect, inject, input } from '@angular/core';\nimport { AbstractControl, FormControl, FormsModule, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Error as FormFieldError, FormField, Hint, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { Select } from '@ngstarter-ui/components/select';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { SlideToggle, SlideToggleGroup } from '@ngstarter-ui/components/slide-toggle';\nimport { FormBuilderField, FormBuilderFieldWidth, FormBuilderOption } from '../../types';\n\ntype RadioOrientation = 'vertical' | 'horizontal';\ntype SpacerHeight = 8 | 16 | 24 | 32 | 48 | 64;\n\n@Component({\n selector: 'ngs-basic-form-builder-field-settings',\n exportAs: 'ngsBasicFormBuilderFieldSettings',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n FormFieldError,\n FormField,\n Hint,\n Label,\n Input,\n Select,\n Option,\n SlideToggle,\n SlideToggleGroup\n ],\n templateUrl: './basic-field-settings.html',\n styleUrl: './basic-field-settings.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-basic-form-builder-field-settings'\n }\n})\nexport class BasicFormBuilderFieldSettings {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly field = input.required<FormBuilderField>();\n readonly update = input.required<(changes: Partial<FormBuilderField>) => void>();\n\n protected readonly optionsControl = new FormControl('', {\n nonNullable: true,\n validators: optionsTextValidator\n });\n protected readonly fieldWidthOptions: FormBuilderFieldWidth[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n protected readonly radioOrientationOptions: RadioOrientation[] = ['vertical', 'horizontal'];\n protected readonly spacerHeightOptions: SpacerHeight[] = [8, 16, 24, 32, 48, 64];\n protected readonly hasCheckedState = computed(() => ['checkbox', 'toggle'].includes(this.field().type));\n protected readonly hasPlaceholder = computed(() => !['checkbox', 'toggle', 'radio', 'spacer'].includes(this.field().type));\n protected readonly hasOptions = computed(() => ['select', 'radio', 'checkbox-list'].includes(this.field().type));\n protected readonly hasClearable = computed(() => ['select', 'country-select'].includes(this.field().type));\n protected readonly hasMultiple = computed(() => ['select', 'upload'].includes(this.field().type));\n protected readonly isSelect = computed(() => this.field().type === 'select');\n protected readonly isUpload = computed(() => this.field().type === 'upload');\n protected readonly isRadio = computed(() => this.field().type === 'radio');\n protected readonly isSpacer = computed(() => this.field().type === 'spacer');\n protected readonly hasBehaviorToggles = computed(() => !this.isSpacer());\n protected readonly radioOrientation = computed<RadioOrientation>(() =>\n this.field().settings?.['orientation'] === 'horizontal' ? 'horizontal' : 'vertical'\n );\n protected readonly optionsText = computed(() =>\n (this.field().options ?? [])\n .map(option => `${option.label}:${option.value}${this.isOptionSelected(option) ? ':selected' : ''}`)\n .join('\\n')\n );\n\n constructor() {\n effect(() => {\n const nextValue = this.optionsText();\n\n if (this.optionsControl.value !== nextValue) {\n this.optionsControl.setValue(nextValue, { emitEvent: false });\n }\n });\n\n this.optionsControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n if (this.optionsControl.invalid) {\n return;\n }\n\n this.patchOptions(value);\n });\n }\n\n protected patch(changes: Partial<FormBuilderField>): void {\n this.update()(changes);\n }\n\n protected patchSettings(changes: Record<string, any>): void {\n this.patch({\n settings: {\n ...this.field().settings,\n ...changes\n }\n });\n }\n\n protected patchMultiple(multiple: boolean): void {\n if (this.field().type === 'select') {\n this.patchSelectMultiple(multiple);\n return;\n }\n\n this.patch({\n multiple,\n defaultValue: multiple ? [] : null\n });\n }\n\n protected patchSelectMultiple(multiple: boolean): void {\n const field = this.field();\n const options = multiple ? field.options ?? [] : this.normalizeSelectedOptions(field.options ?? [], false);\n const selectedValues = this.selectedOptionValues(options);\n let defaultValue: any = null;\n\n if (multiple) {\n defaultValue = Array.isArray(field.defaultValue)\n ? field.defaultValue\n : field.defaultValue == null\n ? selectedValues\n : [field.defaultValue];\n } else {\n defaultValue = Array.isArray(field.defaultValue)\n ? field.defaultValue[0] ?? selectedValues[0] ?? null\n : field.defaultValue ?? selectedValues[0] ?? null;\n }\n\n this.patch({ multiple, options, defaultValue });\n }\n\n protected patchRadioOrientation(orientation: RadioOrientation): void {\n this.patch({\n settings: {\n ...this.field().settings,\n orientation\n }\n });\n }\n\n protected patchOptions(value: string): void {\n const options = this.normalizeSelectedOptions(value\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map((line, index) => {\n const parsed = parseOptionLine(line);\n\n return {\n label: parsed?.label || `Option ${index + 1}`,\n value: parsed?.value || `option_${index + 1}`,\n selected: parsed?.selected || undefined\n };\n }));\n\n this.patch({\n options,\n defaultValue: this.resolveSelectedDefaultValue(options)\n });\n }\n\n private normalizeSelectedOptions(options: FormBuilderOption[], multiple = this.field().multiple): FormBuilderOption[] {\n if (this.field().type === 'checkbox-list' || multiple) {\n return options;\n }\n\n let selectedSeen = false;\n\n return options.map(option => {\n if (!option.selected) {\n return option;\n }\n\n if (selectedSeen) {\n return {\n ...option,\n selected: undefined\n };\n }\n\n selectedSeen = true;\n return option;\n });\n }\n\n private resolveSelectedDefaultValue(options: FormBuilderOption[]): any {\n const selectedValues = this.selectedOptionValues(options);\n\n if (this.field().type === 'checkbox-list' || this.field().multiple) {\n return selectedValues;\n }\n\n return selectedValues[0] ?? null;\n }\n\n private selectedOptionValues(options: FormBuilderOption[]): any[] {\n return options\n .filter(option => option.selected)\n .map(option => option.value);\n }\n\n private isOptionSelected(option: FormBuilderOption): boolean {\n if (option.selected) {\n return true;\n }\n\n const defaultValue = this.field().defaultValue;\n return Array.isArray(defaultValue)\n ? defaultValue.includes(option.value)\n : defaultValue === option.value;\n }\n}\n\nfunction optionsTextValidator(control: AbstractControl<string>): ValidationErrors | null {\n const hasInvalidLine = (control.value ?? '')\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .some(line => !parseOptionLine(line));\n\n return hasInvalidLine ? { formBuilderOptionsFormat: true } : null;\n}\n\nfunction parseOptionLine(line: string): { label: string; value: string; selected: boolean } | null {\n const parts = line.split(':').map(part => part.trim());\n\n if (parts.length < 2 || parts.length > 3) {\n return null;\n }\n\n const [label, value, selected] = parts;\n\n if (!label || !value) {\n return null;\n }\n\n if (selected !== undefined && selected !== 'selected') {\n return null;\n }\n\n return {\n label,\n value,\n selected: selected === 'selected'\n };\n}\n","<div class=\"flex flex-col gap-4\">\n <ngs-form-field>\n <ngs-label>Label</ngs-label>\n <input ngsInput\n [ngModel]=\"field().label\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ label: $event })\">\n </ngs-form-field>\n\n @if (!isSpacer()) {\n <ngs-form-field>\n <ngs-label>Field ID</ngs-label>\n <input ngsInput\n [ngModel]=\"field().name\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ name: $event })\">\n </ngs-form-field>\n }\n\n @if (hasPlaceholder()) {\n <ngs-form-field>\n <ngs-label>Placeholder</ngs-label>\n <input ngsInput\n [ngModel]=\"field().placeholder || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ placeholder: $event })\">\n </ngs-form-field>\n }\n\n @if (!isSpacer()) {\n <ngs-form-field>\n <ngs-label>Hint</ngs-label>\n <input ngsInput\n [ngModel]=\"field().hint || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ hint: $event })\">\n </ngs-form-field>\n }\n\n <ngs-form-field>\n <ngs-label>Width</ngs-label>\n <ngs-select [ngModel]=\"field().width ?? 12\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ width: $event })\">\n @for (width of fieldWidthOptions; track width) {\n <ngs-option [value]=\"width\">{{ width }}/12</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n\n @if (hasBehaviorToggles()) {\n <ngs-slide-toggle-group class=\"mb-4\">\n <ngs-slide-toggle [ngModel]=\"field().required ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ required: $event })\">\n Required field\n </ngs-slide-toggle>\n\n <ngs-slide-toggle [ngModel]=\"field().readonly ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ readonly: $event })\">\n Readonly\n </ngs-slide-toggle>\n\n <ngs-slide-toggle [ngModel]=\"field().disabled ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ disabled: $event })\">\n Disabled\n </ngs-slide-toggle>\n\n @if (hasCheckedState()) {\n <ngs-slide-toggle [ngModel]=\"field().defaultValue === true\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ defaultValue: $event })\">\n Checked\n </ngs-slide-toggle>\n }\n\n @if (hasMultiple()) {\n <ngs-slide-toggle [ngModel]=\"field().multiple ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchMultiple($event)\">\n Multiple\n </ngs-slide-toggle>\n }\n\n @if (hasClearable()) {\n <ngs-slide-toggle [ngModel]=\"field().clearable ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ clearable: $event })\">\n Clearable\n </ngs-slide-toggle>\n }\n </ngs-slide-toggle-group>\n }\n\n @if (isUpload()) {\n <ngs-form-field>\n <ngs-label>Accepted file types</ngs-label>\n <input ngsInput\n [ngModel]=\"field().settings?.['accept'] || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchSettings({ accept: $event })\">\n <ngs-hint>Use MIME types separated by commas, for example image/*,application/pdf.</ngs-hint>\n </ngs-form-field>\n }\n\n @if (isSpacer()) {\n <ngs-form-field>\n <ngs-label>Height</ngs-label>\n <ngs-select [ngModel]=\"field().settings?.['height'] ?? 24\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchSettings({ height: $event })\">\n @for (height of spacerHeightOptions; track height) {\n <ngs-option [value]=\"height\">{{ height }}px</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n\n @if (isRadio()) {\n <ngs-form-field>\n <ngs-label>Orientation</ngs-label>\n <ngs-select [ngModel]=\"radioOrientation()\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patchRadioOrientation($event)\">\n @for (orientation of radioOrientationOptions; track orientation) {\n <ngs-option [value]=\"orientation\">{{ orientation }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n\n @if (hasOptions()) {\n <ngs-form-field>\n <ngs-label>Options</ngs-label>\n <textarea ngsInput\n rows=\"4\"\n [formControl]=\"optionsControl\"></textarea>\n @if (optionsControl.hasError('formBuilderOptionsFormat')) {\n <ngs-error>Use Label:value or Label:value:selected.</ngs-error>\n }\n <ngs-hint>One option per line. Use Label:value or Label:value:selected.</ngs-hint>\n </ngs-form-field>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormField, Hint, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { Select } from '@ngstarter-ui/components/select';\nimport { FormBuilderField, FormBuilderFieldWidth } from '../../types';\n\n@Component({\n selector: 'ngs-basic-form-builder-layout-settings',\n exportAs: 'ngsBasicFormBuilderLayoutSettings',\n imports: [\n FormsModule,\n FormField,\n Hint,\n Label,\n Input,\n Option,\n Select\n ],\n templateUrl: './basic-layout-settings.html',\n styleUrl: './basic-layout-settings.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-basic-form-builder-layout-settings'\n }\n})\nexport class BasicFormBuilderLayoutSettings {\n readonly field = input.required<FormBuilderField>();\n readonly update = input.required<(changes: Partial<FormBuilderField>) => void>();\n\n protected readonly fieldWidthOptions: FormBuilderFieldWidth[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n protected readonly showHintSetting = computed(() => this.field().type !== 'group');\n\n protected patch(changes: Partial<FormBuilderField>): void {\n this.update()(changes);\n }\n}\n","<div class=\"flex flex-col gap-4\">\n <ngs-form-field>\n <ngs-label>Label</ngs-label>\n <input ngsInput\n [ngModel]=\"field().label\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ label: $event })\">\n </ngs-form-field>\n\n @if (showHintSetting()) {\n <ngs-form-field>\n <ngs-label>Hint</ngs-label>\n <input ngsInput\n [ngModel]=\"field().hint || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ hint: $event })\">\n <ngs-hint>Shown below the layout title in preview and renderer.</ngs-hint>\n </ngs-form-field>\n }\n\n <ngs-form-field>\n <ngs-label>Width</ngs-label>\n <ngs-select [ngModel]=\"field().width ?? 12\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ width: $event })\">\n @for (width of fieldWidthOptions; track width) {\n <ngs-option [value]=\"width\">{{ width }}/12</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormField, Hint, Label } from '@ngstarter-ui/components/form-field';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { SlideToggle } from '@ngstarter-ui/components/slide-toggle';\nimport { FormBuilderSection } from '../../types';\n\n@Component({\n selector: 'ngs-basic-form-builder-section-settings',\n exportAs: 'ngsBasicFormBuilderSectionSettings',\n imports: [\n FormsModule,\n FormField,\n Hint,\n Label,\n Input,\n SlideToggle\n ],\n templateUrl: './basic-section-settings.html',\n styleUrl: './basic-section-settings.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-basic-form-builder-section-settings'\n }\n})\nexport class BasicFormBuilderSectionSettings {\n readonly section = input.required<FormBuilderSection>();\n readonly update = input.required<(changes: Partial<FormBuilderSection>) => void>();\n\n protected patch(changes: Partial<FormBuilderSection>): void {\n this.update()(changes);\n }\n}\n","<div class=\"flex flex-col gap-4\">\n <ngs-form-field>\n <ngs-label>Title</ngs-label>\n <input ngsInput\n [ngModel]=\"section().title\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ title: $event })\">\n </ngs-form-field>\n\n <ngs-form-field>\n <ngs-label>Description</ngs-label>\n <textarea ngsInput\n rows=\"3\"\n [ngModel]=\"section().description || ''\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ description: $event })\"></textarea>\n <ngs-hint>Optional helper text rendered under the section title.</ngs-hint>\n </ngs-form-field>\n\n <ngs-slide-toggle [ngModel]=\"section().collapsed ?? false\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"patch({ collapsed: $event })\">\n Collapsed\n </ngs-slide-toggle>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["normalizeFieldDefinition","parseOptionLine","FormFieldError"],"mappings":"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"}