novo-elements 11.2.0 → 11.2.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/novo-elements-addons-ace-editor.mjs.map +1 -1
- package/fesm2022/novo-elements-addons-ckeditor.mjs.map +1 -1
- package/fesm2022/novo-elements-addons-code-editor.mjs +3 -3
- package/fesm2022/novo-elements-addons-code-editor.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-agenda.mjs +15 -15
- package/fesm2022/novo-elements-elements-agenda.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-aside.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-autocomplete.mjs +7 -5
- package/fesm2022/novo-elements-elements-autocomplete.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-avatar.mjs +2 -1
- package/fesm2022/novo-elements-elements-avatar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-breadcrumbs.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-button.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-calendar.mjs +7 -4
- package/fesm2022/novo-elements-elements-calendar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-card.mjs +1 -1
- package/fesm2022/novo-elements-elements-card.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-category-dropdown.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-checkbox.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-chips.mjs +18 -14
- package/fesm2022/novo-elements-elements-chips.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-color-picker.mjs +1 -1
- package/fesm2022/novo-elements-elements-color-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-common.mjs +28 -28
- package/fesm2022/novo-elements-elements-common.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-data-table.mjs +28 -28
- package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-date-picker.mjs +4 -4
- package/fesm2022/novo-elements-elements-date-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-date-time-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-divider.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-drag-drop.mjs +7 -7
- package/fesm2022/novo-elements-elements-drag-drop.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-dropdown.mjs +9 -9
- package/fesm2022/novo-elements-elements-dropdown.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-expansion.mjs +5 -5
- package/fesm2022/novo-elements-elements-expansion.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-field.mjs +20 -14
- package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-flex.mjs +12 -12
- package/fesm2022/novo-elements-elements-flex.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-form.mjs +16 -15
- package/fesm2022/novo-elements-elements-form.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-header.mjs +6 -6
- package/fesm2022/novo-elements-elements-header.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-icon.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-layout.mjs +2 -2
- package/fesm2022/novo-elements-elements-layout.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-list.mjs +12 -12
- package/fesm2022/novo-elements-elements-list.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-loading.mjs +5 -5
- package/fesm2022/novo-elements-elements-loading.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-menu.mjs +4 -4
- package/fesm2022/novo-elements-elements-menu.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-modal.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-multi-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-non-ideal-state.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-picker.mjs +5 -5
- package/fesm2022/novo-elements-elements-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-places.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-popover.mjs +3 -3
- package/fesm2022/novo-elements-elements-popover.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-progress.mjs +3 -3
- package/fesm2022/novo-elements-elements-progress.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-query-builder.mjs +27 -25
- package/fesm2022/novo-elements-elements-query-builder.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-quick-note.mjs +2 -2
- package/fesm2022/novo-elements-elements-quick-note.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-radio.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-select-search.mjs +2 -2
- package/fesm2022/novo-elements-elements-select-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-select.mjs +5 -5
- package/fesm2022/novo-elements-elements-select.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-simple-table.mjs +30 -30
- package/fesm2022/novo-elements-elements-simple-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-slider.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-stepper.mjs +4 -4
- package/fesm2022/novo-elements-elements-stepper.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-switch.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tabs.mjs +2 -1
- package/fesm2022/novo-elements-elements-tabs.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tiles.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-time-picker.mjs +1 -0
- package/fesm2022/novo-elements-elements-time-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tip-well.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-toast.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-toolbar.mjs +1 -1
- package/fesm2022/novo-elements-elements-toolbar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tooltip.mjs +3 -4
- package/fesm2022/novo-elements-elements-tooltip.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-unless.mjs +1 -1
- package/fesm2022/novo-elements-elements-unless.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-value.mjs +2 -2
- package/fesm2022/novo-elements-elements-value.mjs.map +1 -1
- package/fesm2022/novo-elements-pipes.mjs +9 -9
- package/fesm2022/novo-elements-pipes.mjs.map +1 -1
- package/fesm2022/novo-elements-services.mjs +21 -22
- package/fesm2022/novo-elements-services.mjs.map +1 -1
- package/fesm2022/novo-elements-utils.mjs +33 -17
- package/fesm2022/novo-elements-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/services/date-format/DateFormat.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-form.mjs","sources":["../../../projects/novo-elements/src/elements/form/controls/BaseControl.ts","../../../projects/novo-elements/src/elements/form/controls/ace-editor/AceEditorControl.ts","../../../projects/novo-elements/src/elements/form/FormValidators.ts","../../../projects/novo-elements/src/elements/form/controls/address/AddressControl.ts","../../../projects/novo-elements/src/elements/form/controls/check-list/CheckListControl.ts","../../../projects/novo-elements/src/elements/form/controls/checkbox/CheckboxControl.ts","../../../projects/novo-elements/src/elements/form/controls/code-editor/CodeEditorControl.ts","../../../projects/novo-elements/src/elements/form/controls/custom/CustomControl.ts","../../../projects/novo-elements/src/elements/form/controls/date/DateControl.ts","../../../projects/novo-elements/src/elements/form/controls/date-time/DateTimeControl.ts","../../../projects/novo-elements/src/elements/form/controls/editor/EditorControl.ts","../../../projects/novo-elements/src/elements/form/controls/file/FileControl.ts","../../../projects/novo-elements/src/elements/form/controls/grouped/GroupedControl.ts","../../../projects/novo-elements/src/elements/form/controls/native-select/NativeSelectControl.ts","../../../projects/novo-elements/src/elements/form/controls/picker/PickerControl.ts","../../../projects/novo-elements/src/elements/form/controls/quick-note/QuickNoteControl.ts","../../../projects/novo-elements/src/elements/form/controls/radio/RadioControl.ts","../../../projects/novo-elements/src/elements/form/controls/read-only/ReadOnlyControl.ts","../../../projects/novo-elements/src/elements/form/controls/select/SelectControl.ts","../../../projects/novo-elements/src/elements/form/controls/switch/SwitchControl.ts","../../../projects/novo-elements/src/elements/form/controls/text-area/TextAreaControl.ts","../../../projects/novo-elements/src/elements/form/controls/textbox/TextBoxControl.ts","../../../projects/novo-elements/src/elements/form/controls/tiles/TilesControl.ts","../../../projects/novo-elements/src/elements/form/controls/time/TimeControl.ts","../../../projects/novo-elements/src/elements/form/controls/timezone/TimezoneControl.ts","../../../projects/novo-elements/src/elements/form/controls/ControlFactory.ts","../../../projects/novo-elements/src/elements/form/NovoFormControl.ts","../../../projects/novo-elements/src/elements/form/NovoFormGroup.ts","../../../projects/novo-elements/src/elements/form/utils/FormUtils.ts","../../../projects/novo-elements/src/elements/form/FieldInteractionModals.ts","../../../projects/novo-elements/src/elements/form/FieldInteractionApi.ts","../../../projects/novo-elements/src/elements/form/Control.ts","../../../projects/novo-elements/src/elements/form/ControlGroup.ts","../../../projects/novo-elements/src/elements/form/ControlGroup.html","../../../projects/novo-elements/src/elements/form/extras/address/Address.ts","../../../projects/novo-elements/src/elements/form/extras/file/extras/file/File.ts","../../../projects/novo-elements/src/elements/form/extras/file/FileInput.ts","../../../projects/novo-elements/src/elements/form/extras/file/FileInput.html","../../../projects/novo-elements/src/elements/form/ControlTemplates.ts","../../../projects/novo-elements/src/elements/form/DynamicForm.ts","../../../projects/novo-elements/src/elements/form/extras/number-range/number-range.component.ts","../../../projects/novo-elements/src/elements/form/extras/FormExtras.module.ts","../../../projects/novo-elements/src/elements/form/Form.ts","../../../projects/novo-elements/src/elements/form/Form.module.ts","../../../projects/novo-elements/src/elements/form/novo-elements-elements-form.ts"],"sourcesContent":["// NG2\nimport { EventEmitter } from '@angular/core';\nimport { Validators } from '@angular/forms';\n// APP\nimport { Helpers, notify } from 'novo-elements/utils';\nimport type { IMaskOptions } from '../Control';\nimport type { NovoControlGroupAddConfig } from '../ControlGroup';\n\nexport interface NovoGroupedControlConfig {\n label?: string;\n icon?: string;\n add?: NovoControlGroupAddConfig;\n remove?: boolean;\n key: string;\n initialValue?: {}[];\n}\n\nclass ControlConfig {\n alwaysActive?: Boolean;\n allowInvalidDate?: boolean;\n appendToBody: boolean; // Deprecated;\n associatedEntity: string;\n asyncValidators?: Array<any>;\n checkboxLabel: string;\n closeOnSelect: boolean;\n config: any;\n controlType: string;\n currencyFormat: string;\n customControl?: any;\n customControlConfig?: any;\n dataSpecialization: string;\n dataType: string;\n dateFormat?: string;\n description?: string;\n dirty: boolean;\n disabled: boolean;\n enabled: boolean;\n encrypted: boolean;\n endDate?: Date | Number;\n fileBrowserImageUploadUrl?: string;\n forceClear: EventEmitter<any>;\n headerConfig: any;\n hidden: boolean;\n interactions: Array<{ event?: 'change' | 'focus' | string; invokeOnInit?: boolean; script? }>;\n isEmpty?: Function;\n key: string;\n label: string;\n maskOptions?: IMaskOptions;\n maxlength: number;\n metaType: string;\n military?: boolean;\n minimal?: boolean;\n minlength: number;\n multiple: boolean;\n name: string;\n options: Array<any>;\n optionsType: string;\n parentScrollSelector: string;\n placeholder: string;\n popoverAlways?: boolean;\n popoverAnimation?: boolean;\n popoverContent?: string;\n popoverDisabled?: boolean;\n popoverDismissTimeout?: number;\n popoverHtmlContent?: string;\n popoverOnHover?: boolean;\n popoverPlacement?: 'left' | 'right' | 'top' | 'bottom';\n popoverTitle?: string;\n readOnly: boolean; // \"disabled\", so it appears in the model still;\n removeTooltipArrow?: boolean;\n required: boolean;\n restrictFieldInteractions?: boolean;\n sortOrder: number;\n startDate?: Date | Number;\n startupFocus?: boolean;\n subType?: string;\n template?: any;\n textMaskEnabled?: boolean;\n tooltip?: string;\n tooltipAutoPosition?: boolean;\n tooltipPosition?: string;\n tooltipPreline?: boolean;\n tooltipSize?: string;\n type: string;\n validators: Array<any>;\n value: any;\n warning?: string;\n width: number;\n layoutOptions?: {\n customActions?: boolean;\n download?: boolean;\n draggable?: boolean;\n edit?: boolean;\n iconStyle?: string;\n labelStyle?: string;\n order?: string;\n removable?: boolean;\n customValidation?: { action: string; fn: Function }[];\n removableWhenNew?: boolean;\n };\n tipWell?: {\n button?: boolean;\n icon?: string;\n tip: string;\n };\n isEmbedded = false;\n isInlineEmbedded = false;\n weekStart?: number;\n highlighted = false;\n disabledDateMessage?: string;\n}\n\nexport type NovoControlConfig = Partial<ControlConfig>;\n\nexport class BaseControl extends ControlConfig {\n __type: string = 'BaseControl';\n __config: NovoControlConfig;\n\n constructor(type: string = 'BaseControl', config: NovoControlConfig = {}) {\n super();\n this.__type = type;\n this.__config = config;\n this.alwaysActive = config.alwaysActive;\n this.validators = config.validators || [];\n this.asyncValidators = config.asyncValidators || [];\n this.value = config.value;\n this.key = config.key || '';\n this.label = config.label || '';\n this.checkboxLabel = config.checkboxLabel;\n this.name = config.name || '';\n this.required = !!config.required;\n this.hidden = !!config.hidden;\n this.encrypted = !!config.encrypted;\n this.sortOrder = config.sortOrder === undefined ? 1 : config.sortOrder;\n this.controlType = config.controlType || '';\n this.type = config.type;\n this.subType = config.subType;\n this.metaType = config.metaType;\n this.placeholder = config.placeholder || '';\n this.config = config.config || null;\n this.dirty = !!(config.value !== undefined && config.value !== null);\n this.multiple = !!config.multiple;\n this.headerConfig = config.headerConfig || null;\n this.currencyFormat = config.currencyFormat || null;\n this.associatedEntity = config.associatedEntity || null;\n this.optionsType = config.optionsType || null;\n this.options = config.options || [];\n this.forceClear = new EventEmitter();\n this.readOnly = !!config.readOnly || !!config.disabled;\n this.disabled = !!config.disabled;\n this.enabled = true;\n this.layoutOptions = config.layoutOptions || {};\n this.military = !!config.military;\n this.dateFormat = config.dateFormat;\n this.textMaskEnabled = config.textMaskEnabled;\n this.maskOptions = config.maskOptions;\n this.allowInvalidDate = config.allowInvalidDate;\n this.startDate = config.startDate;\n this.endDate = config.endDate;\n this.restrictFieldInteractions = !!config.restrictFieldInteractions;\n this.highlighted = !!config.highlighted;\n if (!Helpers.isEmpty(config.warning)) {\n this.warning = config.warning;\n }\n\n if (this.required) {\n this.validators.push(Validators.required);\n }\n if (!Helpers.isBlank(config.maxlength)) {\n this.maxlength = config.maxlength;\n this.validators.push(Validators.maxLength(this.maxlength));\n }\n if (!Helpers.isBlank(config.minlength)) {\n this.minlength = config.minlength;\n this.validators.push(Validators.minLength(this.minlength));\n }\n this.closeOnSelect = !!config.closeOnSelect;\n this.interactions = config.interactions;\n this.dataSpecialization = config.dataSpecialization;\n this.dataType = config.dataType;\n this.appendToBody = !!config.appendToBody;\n if (this.appendToBody) {\n notify(`'appendToBody' has been deprecated. Please remove this attribute.`);\n }\n this.parentScrollSelector = config.parentScrollSelector;\n this.description = config.description;\n if (config.tooltip) {\n this.tooltip = config.tooltip;\n this.tooltipPosition = config.tooltipPosition;\n this.tooltipSize = config.tooltipSize;\n this.tooltipPreline = config.tooltipPreline;\n this.removeTooltipArrow = config.removeTooltipArrow;\n this.tooltipAutoPosition = config.tooltipAutoPosition;\n }\n this.popoverAlways = config.popoverAlways;\n this.popoverAnimation = config.popoverAnimation;\n this.popoverContent = config.popoverContent;\n this.popoverDisabled = config.popoverDisabled;\n this.popoverDismissTimeout = config.popoverDismissTimeout;\n this.popoverHtmlContent = config.popoverHtmlContent;\n this.popoverOnHover = config.popoverOnHover;\n this.popoverPlacement = config.popoverPlacement;\n this.popoverTitle = config.popoverTitle;\n this.template = config.template;\n this.customControlConfig = config.customControlConfig;\n this.tipWell = config.tipWell;\n this.width = config.width;\n this.startupFocus = !!config.startupFocus;\n if (config.fileBrowserImageUploadUrl) {\n this.fileBrowserImageUploadUrl = config.fileBrowserImageUploadUrl;\n }\n if (config.isEmpty) {\n this.isEmpty = config.isEmpty;\n }\n this.weekStart = config.weekStart || 0;\n this.disabledDateMessage = config.disabledDateMessage;\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class AceEditorControl extends BaseControl {\n controlType = 'ace-editor';\n\n constructor(config: NovoControlConfig) {\n super('AceEditorControl', config);\n }\n}\n","import { Helpers } from 'novo-elements/utils';\n\nconst MAX_INTEGER = 2147483647;\nconst MIN_YEAR = 1753;\n\nexport class FormValidators {\n private showStateRequiredFlag(subfield, control): boolean {\n return (\n subfield === 'state' &&\n !Helpers.isEmpty(control.config.state) &&\n control.config.state.required &&\n Helpers.isBlank(control.value.state) &&\n control.config.state.updated &&\n !Helpers.isBlank(control.value.countryName) &&\n control.config.state.pickerConfig &&\n control.config.state.pickerConfig.defaultOptions &&\n control.config.state.pickerConfig.defaultOptions.length > 0\n );\n }\n\n // Makes sure the control value does not exceed the max integer value\n static maxInteger(control) {\n return control.value < MAX_INTEGER ? null : { integerTooLarge: true };\n }\n\n // Makes sure the control value is above the minimum year\n static minYear(control) {\n if (!control.value) {\n return null;\n }\n return control.value >= MIN_YEAR ? null : { minYear: true };\n }\n\n // Makes sure the control value does not exceed the max number value\n static maxDouble(control) {\n return control.value < Number.MAX_SAFE_INTEGER ? null : { doubleTooLarge: true };\n }\n\n // Make sure the control value is an email\n static isEmail(control) {\n const EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;\n return !control.value || EMAIL_REGEXP.test(control.value) ? null : { invalidEmail: true };\n }\n // Makes sure the control value is a valid address\n static isValidAddress(control) {\n const fieldList: string[] = ['address1', 'address2', 'city', 'state', 'zip', 'countryID'];\n const invalidAddressFields: string[] = [];\n const maxlengthFields: string[] = [];\n let returnVal: {\n invalidAddress?: boolean;\n invalidAddressFields?: string[];\n invalidAddressForForm?: boolean;\n maxlength?: boolean;\n maxlengthFields?: string[];\n } = null;\n let maxlengthError: boolean = false;\n const showCountryRequiredFlag = (subfield, ctrl) => {\n return (\n subfield === 'countryID' &&\n !Helpers.isEmpty(ctrl.config.countryID) &&\n ctrl.config.countryID.required &&\n Helpers.isBlank(ctrl.value.countryName) &&\n ctrl.config.countryID.updated\n );\n };\n\n const showStateRequiredFlag = (subfield, ctrl): boolean => {\n return (\n subfield === 'state' &&\n !Helpers.isEmpty(ctrl.config.state) &&\n ctrl.config.state.required &&\n Helpers.isBlank(ctrl.value.state) &&\n ctrl.config.state.updated &&\n !Helpers.isBlank(ctrl.value.countryName) &&\n ctrl.config.state.pickerConfig &&\n ctrl.config.state.pickerConfig.defaultOptions &&\n ctrl.config.state.pickerConfig.defaultOptions.length > 0\n );\n };\n\n if (control.value && control.config) {\n let valid = true;\n let formValidity = true;\n fieldList.forEach((subfield: string) => {\n if (!Helpers.isEmpty(control.config[subfield])) {\n if (\n (['countryID', 'state'].indexOf(subfield) === -1 &&\n control.config[subfield].required &&\n !Helpers.isBlank(control.value[subfield]) &&\n Helpers.isEmpty(control.value[subfield])) ||\n showCountryRequiredFlag(subfield, control) ||\n showStateRequiredFlag(subfield, control)\n ) {\n valid = false;\n invalidAddressFields.push(control.config[subfield].label);\n }\n if (\n ((subfield !== 'countryID' && control.config[subfield].required && Helpers.isEmpty(control.value[subfield])) ||\n (subfield === 'countryID' &&\n !Helpers.isEmpty(control.config.countryID) &&\n control.config.countryID.required &&\n Helpers.isEmpty(control.value.countryName))) &&\n !(\n subfield === 'state' &&\n !Helpers.isBlank(control.value.countryName) &&\n control.config.state.pickerConfig &&\n control.config.state.pickerConfig.defaultOptions &&\n control.config.state.pickerConfig.defaultOptions.length === 0\n )\n ) {\n formValidity = false;\n }\n if (\n !Helpers.isEmpty(control.config[subfield].maxlength) &&\n !Helpers.isEmpty(control.value[subfield]) &&\n control.value[subfield].length > control.config[subfield].maxlength\n ) {\n maxlengthError = true;\n maxlengthFields.push(subfield);\n formValidity = false;\n }\n }\n });\n if (!valid || !formValidity || maxlengthError) {\n returnVal = {};\n }\n if (!valid) {\n returnVal.invalidAddress = true;\n returnVal.invalidAddressFields = invalidAddressFields;\n }\n if (!formValidity) {\n returnVal.invalidAddressForForm = true;\n }\n if (maxlengthError) {\n returnVal.maxlength = true;\n returnVal.maxlengthFields = maxlengthFields;\n }\n return returnVal;\n }\n return null;\n }\n}\n","// APP\nimport { FormValidators } from '../../FormValidators';\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class AddressControl extends BaseControl {\n controlType = 'address';\n\n constructor(config: NovoControlConfig) {\n super('AddressControl', config);\n this.validators.push(FormValidators.isValidAddress);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class CheckListControl extends BaseControl {\n controlType = 'checklist';\n\n constructor(config: NovoControlConfig) {\n super('CheckListControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class CheckboxControl extends BaseControl {\n controlType = 'checkbox';\n\n constructor(config: NovoControlConfig) {\n super('CheckboxControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class CodeEditorControl extends BaseControl {\n controlType = 'code-editor';\n\n constructor(config: NovoControlConfig) {\n super('CodeEditorControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class CustomControl extends BaseControl {\n controlType = 'custom';\n\n constructor(config: NovoControlConfig) {\n super(config.template, config);\n this.controlType = config.template;\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class DateControl extends BaseControl {\n controlType = 'date';\n\n constructor(config: NovoControlConfig) {\n super('DateControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class DateTimeControl extends BaseControl {\n controlType = 'date-time';\n\n constructor(config: NovoControlConfig) {\n super('DateTimeControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class EditorControl extends BaseControl {\n controlType = 'editor';\n minimal: boolean = false;\n\n constructor(config: NovoControlConfig) {\n super('EditorControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class FileControl extends BaseControl {\n controlType = 'file';\n\n constructor(config: NovoControlConfig) {\n super('FileControl', config);\n // TODO - translate\n this.placeholder = config.placeholder;\n this.multiple = config.multiple;\n }\n}\n","// APP\nimport { NovoGroupedControlConfig } from './../BaseControl';\n\nexport class GroupedControl implements NovoGroupedControlConfig {\n public __type: string;\n key: string;\n\n constructor(config: NovoGroupedControlConfig) {\n this.__type = 'GroupedControl';\n Object.keys(config).forEach((key) => (this[key] = config[key]));\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class NativeSelectControl extends BaseControl {\n controlType = 'native-select';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('NativeSelectControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class PickerControl extends BaseControl {\n controlType = 'picker';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('PickerControl', config);\n this.options = config.options || [];\n }\n}\n\nexport class TablePickerControl extends PickerControl {\n constructor(config: NovoControlConfig) {\n super(Object.assign(config, { parentScrollSelector: '.table-container' }));\n this.__type = 'TablePickerControl';\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class QuickNoteControl extends BaseControl {\n controlType = 'quick-note';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('QuickNoteControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class RadioControl extends BaseControl {\n controlType = 'radio';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('RadioControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class ReadOnlyControl extends BaseControl {\n controlType = 'read-only';\n\n constructor(config: NovoControlConfig) {\n super('ReadOnlyControl', config);\n config.readOnly = true;\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class SelectControl extends BaseControl {\n controlType = 'select';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('SelectControl', config);\n this.options = config.options || [];\n this.placeholder = config.placeholder || '';\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class SwitchControl extends BaseControl {\n controlType = 'switch';\n\n constructor(config: NovoControlConfig) {\n super('SwitchControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TextAreaControl extends BaseControl {\n controlType = 'text-area';\n\n constructor(config: NovoControlConfig) {\n super('TextAreaControl', config);\n }\n}\n","// APP\nimport { FormValidators } from './../../FormValidators';\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TextBoxControl extends BaseControl {\n controlType: string = 'textbox';\n type: string;\n subType: string;\n\n constructor(config: NovoControlConfig) {\n super('TextBoxControl', config);\n this.type = this.getTextboxType(config.type) || '';\n this.subType = config.type || '';\n this.setValidators(this.subType);\n }\n\n setValidators(type) {\n switch (type) {\n case 'email':\n this.validators.push(FormValidators.isEmail);\n break;\n case 'number':\n case 'currency':\n this.validators.push(FormValidators.maxInteger);\n break;\n case 'float':\n case 'percentage':\n this.validators.push(FormValidators.maxDouble);\n break;\n case 'year':\n this.validators.push(FormValidators.minYear);\n break;\n default:\n break;\n }\n }\n\n getTextboxType(type) {\n switch (type) {\n case 'percentage':\n case 'currency':\n case 'float':\n case 'year':\n return 'number';\n default:\n return type;\n }\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TilesControl extends BaseControl {\n controlType = 'tiles';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('TilesControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TimeControl extends BaseControl {\n controlType = 'time';\n\n constructor(config: NovoControlConfig) {\n super('TimeControl', config);\n }\n}\n","// APP\nimport { findTimeZone, getZonedTime, listTimeZones } from 'timezone-support';\nimport { formatZonedTime } from 'novo-elements/utils';\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class TimezoneControl extends BaseControl {\n controlType = 'timezone';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('TimezoneControl', config);\n this.options = this.buildTimezones(new Date());\n this.placeholder = config.placeholder || '';\n // current timezone\n const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n this.value = tz;\n }\n\n private buildTimezones = (compareDate: Date) => {\n const timezones = listTimeZones()\n .map((zone) => {\n const timezone = findTimeZone(zone);\n const zonedTime = getZonedTime(compareDate, timezone);\n const formatted = formatZonedTime(zonedTime, `z - [${zone}] ([GMT] Z)`).replace('_', ' ');\n\n const option = {\n value: zone,\n label: formatted,\n offset: zonedTime.zone.offset,\n };\n return option;\n })\n // Formats 'noisy' timezones without a letter acronym.\n .map((option) => {\n const rgx = /(^(\\+|-)\\d+\\s- )/;\n const matches = option.label.match(rgx);\n if (matches) {\n const prefix = matches[0];\n option.label = option.label.split(prefix)[1];\n }\n return option;\n })\n // Sorts W -> E, prioritizes america. could be more nuanced based on system tz but simple for now\n .sort((a, b) => {\n const offsetDelta = b.offset - a.offset;\n if (offsetDelta !== 0) {\n return offsetDelta;\n }\n if (a.label < b.label) {\n return -1;\n }\n if (a.label > b.label) {\n return 1;\n }\n return 0;\n });\n return timezones;\n };\n}\n","import { BaseControl } from './BaseControl';\nimport {\n AddressControl,\n CheckboxControl,\n CheckListControl,\n DateTimeControl,\n EditorControl,\n FileControl,\n NativeSelectControl,\n PickerControl,\n QuickNoteControl,\n RadioControl,\n ReadOnlyControl,\n SelectControl,\n SwitchControl,\n TablePickerControl,\n TextAreaControl,\n TextBoxControl,\n TilesControl,\n TimeControl,\n} from './index';\n\nexport class ControlFactory {\n static create(type: string, config: BaseControl): BaseControl {\n switch (type) {\n case 'AddressControl':\n return new AddressControl(config);\n case 'CheckboxControl':\n return new CheckboxControl(config);\n case 'CheckListControl':\n return new CheckListControl(config);\n case 'DateTimeControl':\n return new DateTimeControl(config);\n case 'EditorControl':\n return new EditorControl(config);\n case 'FileControl':\n return new FileControl(config);\n case 'NativeSelectControl':\n return new NativeSelectControl(config);\n case 'PickerControl':\n return new PickerControl(config);\n case 'TablePickerControl':\n return new TablePickerControl(config);\n case 'QuickNoteControl':\n return new QuickNoteControl(config);\n case 'RadioControl':\n return new RadioControl(config);\n case 'ReadOnlyControl':\n return new ReadOnlyControl(config);\n case 'TextAreaControl':\n return new TextAreaControl(config);\n case 'TextBoxControl':\n return new TextBoxControl(config);\n case 'SelectControl':\n return new SelectControl(config);\n case 'SwitchControl':\n return new SwitchControl(config);\n case 'TilesControl':\n return new TilesControl(config);\n case 'TimeControl':\n return new TimeControl(config);\n default:\n console.warn(\n '[ControlFactory] - unable to find control for type. Make sure to set \"editorType\" and \"editorConfig\" on your column',\n type,\n );\n return null;\n }\n }\n}\n","// NG2\nimport { EventEmitter } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { notify } from 'novo-elements/utils';\nimport type { IMaskOptions } from './Control';\n// APP\nimport { NovoControlConfig } from './FormControls';\n\nexport class NovoFormControl extends FormControl {\n displayValueChanges: EventEmitter<any> = new EventEmitter<any>();\n hidden: boolean;\n encrypted: boolean;\n key: string;\n required: boolean;\n readOnly: boolean;\n hasRequiredValidator: boolean;\n label: string;\n tooltip: string;\n tooltipPosition: string;\n tooltipSize?: string;\n tooltipPreline?: boolean;\n tooltipIsHTML?: boolean;\n popoverContent?: string;\n popoverHtmlContent?: string;\n popoverTitle?: string;\n popoverPlacement?: 'left' | 'right' | 'top' | 'bottom';\n popoverOnHover?: boolean;\n popoverAlways?: boolean;\n popoverDisabled?: boolean;\n popoverAnimation?: boolean;\n popoverDismissTimeout?: number;\n removeTooltipArrow?: boolean;\n tooltipAutoPosition?: boolean;\n initialValue: any;\n valueHistory = [];\n validators: any;\n config: any;\n sortOrder: number;\n controlType: string;\n placeholder: string;\n minimal: boolean;\n multiple: boolean;\n headerConfig: any;\n optionsType: string;\n maxlength: number;\n minlength: number;\n options: Array<any>;\n type: string;\n subType: string;\n name: string;\n closeOnSelect: boolean;\n interactions: Array<Object>;\n appendToBody: boolean; // Deprecated\n parentScrollSelector: string;\n description?: string;\n layoutOptions?: { order?: string; download?: boolean; labelStyle?: string; draggable?: boolean; iconStyle?: string };\n military?: boolean;\n dateFormat?: string;\n currencyFormat?: string;\n startDate?: Date | Number;\n endDate?: Date | Number;\n weekStart?: number;\n textMaskEnabled?: boolean;\n maskOptions: IMaskOptions;\n allowInvalidDate?: boolean;\n tipWell?: {\n tip: string;\n icon?: string;\n button?: boolean;\n sanitize?: boolean;\n };\n rawValue?: any;\n customControlConfig?: any;\n checkboxLabel?: string;\n restrictFieldInteractions?: boolean;\n warning?: string;\n highlighted?: boolean;\n disabledDateMessage?: string;\n private historyTimeout: any;\n\n constructor(value: any, control: NovoControlConfig) {\n super(value, control.validators, control.asyncValidators);\n this.validators = control.validators;\n this.initialValue = value;\n this.valueHistory.push(value);\n this.key = control.key;\n this.label = control.label;\n this.readOnly = control.readOnly;\n this.hidden = control.hidden;\n this.encrypted = control.encrypted;\n this.config = control.config;\n this.type = control.type;\n this.subType = control.subType;\n this.required = control.required;\n this.hasRequiredValidator = this.required;\n this.tooltip = control.tooltip;\n this.tooltipPosition = control.tooltipPosition;\n this.tooltipSize = control.tooltipSize;\n this.tooltipPreline = control.tooltipPreline;\n this.removeTooltipArrow = control.removeTooltipArrow;\n this.tooltipAutoPosition = control.tooltipAutoPosition;\n this.label = control.label;\n this.name = control.name;\n this.required = control.required;\n this.sortOrder = control.sortOrder;\n this.controlType = control.controlType;\n this.placeholder = control.placeholder;\n this.minimal = control.minimal;\n this.multiple = control.multiple;\n this.headerConfig = control.headerConfig;\n this.optionsType = control.optionsType;\n this.readOnly = control.readOnly;\n this.layoutOptions = control.layoutOptions;\n this.military = control.military;\n this.dateFormat = control.dateFormat;\n this.currencyFormat = control.currencyFormat;\n this.startDate = control.startDate;\n this.endDate = control.endDate;\n this.weekStart = control.weekStart;\n this.textMaskEnabled = control.textMaskEnabled;\n this.maskOptions = control.maskOptions;\n this.allowInvalidDate = control.allowInvalidDate;\n this.maxlength = control.maxlength;\n this.minlength = control.minlength;\n this.closeOnSelect = control.closeOnSelect;\n this.interactions = control.interactions;\n this.checkboxLabel = control.checkboxLabel;\n this.restrictFieldInteractions = control.restrictFieldInteractions;\n this.appendToBody = control.appendToBody;\n if (this.appendToBody) {\n notify(`'appendToBody' has been deprecated. Please remove this attribute.`);\n }\n this.parentScrollSelector = control.parentScrollSelector;\n this.description = control.description;\n this.options = control.options;\n this.tipWell = control.tipWell;\n this.customControlConfig = control.customControlConfig;\n this.warning = control.warning;\n this.disabledDateMessage = control.disabledDateMessage;\n\n // Reactive Form, need to enable/disable, can't bind to [disabled]\n if (this.readOnly) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n /**\n * @param clearValue - flag to reset the control's value\n */\n hide(clearValue: boolean = true): void {\n this.hidden = true;\n if (clearValue) {\n this.setValue(null);\n }\n }\n\n show(): void {\n this.hidden = false;\n }\n\n setRequired(isRequired: boolean): void {\n this.required = isRequired;\n // Update validators to have the required\n if (this.required && !this.hasRequiredValidator) {\n const validators: any = [...this.validators];\n validators.push(Validators.required);\n // TODO: duplicated below\n this.setValidators(validators);\n this.updateValueAndValidity({ emitEvent: false });\n this.hasRequiredValidator = this.required;\n } else if (!this.required && this.hasRequiredValidator) {\n let validators: any = [...this.validators];\n validators = validators.filter((val) => val !== Validators.required);\n // TODO: duplicated above\n this.setValidators(validators);\n this.updateValueAndValidity({ emitEvent: false });\n this.hasRequiredValidator = this.required;\n }\n }\n\n setValue(\n value: any,\n {\n onlySelf,\n emitEvent,\n emitModelToViewChange,\n emitViewToModelChange,\n }: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n emitModelToViewChange?: boolean;\n emitViewToModelChange?: boolean;\n } = {},\n ) {\n this.markAsDirty();\n this.markAsTouched();\n this.displayValueChanges.emit(value);\n super.setValue(value, { onlySelf, emitEvent, emitModelToViewChange, emitViewToModelChange });\n\n // History\n clearTimeout(this.historyTimeout);\n this.historyTimeout = setTimeout(() => {\n this.valueHistory.push(value);\n }, 300);\n }\n\n setReadOnly(isReadOnly: boolean): void {\n this.readOnly = isReadOnly;\n if (this.readOnly) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n /**\n * Disables the control. This means the control will be exempt from validation checks and\n * excluded from the aggregate value of any parent. Its status is `DISABLED`.\n *\n * If the control has children, all children will be disabled to maintain the model.\n */\n disable(opts: { onlySelf?: boolean; emitEvent?: boolean } = { emitEvent: false }): void {\n if (typeof opts.emitEvent === 'undefined') {\n opts.emitEvent = false;\n }\n super.disable(opts);\n }\n\n enable(opts: { onlySelf?: boolean; emitEvent?: boolean } = { emitEvent: false }): void {\n if (typeof opts.emitEvent === 'undefined') {\n opts.emitEvent = false;\n }\n super.enable(opts);\n }\n\n markAsInvalid(message: string): void {\n this.markAsDirty();\n this.markAsTouched();\n this.setErrors(Object.assign({}, this.errors, { custom: message }));\n }\n\n markAsValid(): void {\n this.setErrors(null);\n }\n}\n","// NG\nimport { EventEmitter } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n// App\nimport { IFieldInteractionEvent } from './FormInterfaces';\nimport { NovoFormControl } from './NovoFormControl';\n\nexport class NovoFormGroup extends UntypedFormGroup {\n public fieldInteractionEvents: EventEmitter<IFieldInteractionEvent> = new EventEmitter();\n public layout: string;\n public edit: boolean;\n public currentEntity: string;\n public currentEntityId: string;\n public associations: object;\n public fieldsets: any[];\n public _value: any;\n public controls: { [key: string]: any };\n public novoControls: any[];\n\n public enableAllControls(): void {\n for (const key in this.controls) {\n if ((this.controls[key] as NovoFormControl).readOnly) {\n (this.controls[key] as NovoFormControl).readOnly = false;\n this.controls[key].enable();\n }\n }\n }\n\n public disableAllControls(): void {\n for (const key in this.controls) {\n if (!(this.controls[key] as NovoFormControl).readOnly) {\n (this.controls[key] as NovoFormControl).readOnly = true;\n this.controls[key].disable();\n }\n }\n }\n}\n","// NG\nimport { Injectable } from '@angular/core';\n// Vendor\nimport { startOfToday } from 'date-fns';\n// App\nimport {\n AddressControl,\n BaseControl,\n CheckboxControl,\n CheckListControl,\n CustomControl,\n DateControl,\n DateTimeControl,\n EditorControl,\n FileControl,\n NovoControlConfig,\n PickerControl,\n RadioControl,\n SelectControl,\n SwitchControl,\n TextAreaControl,\n TextBoxControl,\n TilesControl,\n TimeControl,\n TimezoneControl,\n} from '../FormControls';\nimport type { FormField, NovoFieldset } from '../FormInterfaces';\nimport { NovoFormControl } from '../NovoFormControl';\nimport { NovoFormGroup } from '../NovoFormGroup';\nimport { EntityPickerResult, EntityPickerResults } from 'novo-elements/elements/picker';\nimport { NovoLabelService, OptionsService } from 'novo-elements/services';\nimport { DateUtil, Helpers } from 'novo-elements/utils';\n\n@Injectable()\nexport class FormUtils {\n ASSOCIATED_ENTITY_LIST: string[] = [\n 'Candidate',\n 'ClientContact',\n 'ClientCorporation',\n 'CorporationDepartment',\n 'Lead',\n 'Opportunity',\n 'JobOrder',\n 'CorporateUser',\n 'Person',\n 'Placement',\n 'JobShift',\n ];\n ENTITY_PICKER_LIST: string[] = [\n 'Candidate',\n 'CandidateText',\n 'Client',\n 'ClientText',\n 'ClientContact',\n 'ClientContactText',\n 'ClientCorporation',\n 'ClientCorporationText',\n 'Lead',\n 'LeadText',\n 'Opportunity',\n 'OpportunityText',\n 'JobOrder',\n 'JobOrderText',\n 'CorporateUser',\n 'CorporateUserText',\n 'Person',\n 'PersonText',\n 'Placement',\n 'JobShift',\n ];\n\n constructor(public labels: NovoLabelService, public optionsService: OptionsService) {}\n\n toFormGroup(controls: Array<any>): NovoFormGroup {\n const group: any = {};\n controls.forEach((control) => {\n const value = Helpers.isBlank(control.value) ? '' : control.value;\n group[control.key] = new NovoFormControl(value, control);\n });\n return new NovoFormGroup(group);\n }\n\n emptyFormGroup(): NovoFormGroup {\n return new NovoFormGroup({});\n }\n\n addControls(formGroup: NovoFormGroup, controls: Array<NovoControlConfig>): void {\n controls.forEach((control) => {\n const value = Helpers.isBlank(control.value) ? '' : control.value;\n const formControl = new NovoFormControl(value, control);\n formGroup.addControl(control.key, formControl);\n });\n }\n\n removeControls(formGroup: NovoFormGroup, controls: Array<NovoControlConfig>): void {\n controls.forEach((control) => {\n formGroup.removeControl(control.key);\n });\n }\n\n toFormGroupFromFieldset(fieldsets: Array<NovoFieldset>): NovoFormGroup {\n const controls: Array<NovoFormControl> = [];\n fieldsets.forEach((fieldset) => {\n controls.push(...fieldset.controls);\n });\n return this.toFormGroup(controls);\n }\n\n hasAssociatedEntity(field: FormField): boolean {\n return !!(field.associatedEntity && ~this.ASSOCIATED_ENTITY_LIST.indexOf(field.associatedEntity.entity));\n }\n\n determineInputType(field: FormField): string {\n let type: string;\n const dataSpecializationTypeMap = {\n DATETIME: 'datetime',\n TIME: 'time',\n MONEY: 'currency',\n PERCENTAGE: 'percentage',\n HTML: 'editor',\n 'HTML-MINIMAL': 'editor-minimal',\n YEAR: 'year',\n WORKFLOW_OPTIONS: 'select',\n SPECIALIZED_OPTIONS: 'select',\n ALL_WORKFLOW_OPTIONS: 'select',\n WorkflowOptionsLookup: 'select',\n SpecializedOptionsLookup: 'select',\n SimplifiedOptionsLookup: 'select',\n AllWorkflowOptionsLookup: 'select',\n };\n const dataTypeToTypeMap = {\n Timestamp: 'date',\n Date: 'date',\n Boolean: 'tiles',\n };\n const inputTypeToTypeMap = {\n CHECKBOX: 'radio',\n RADIO: 'radio',\n SELECT: 'select',\n TILES: 'tiles',\n };\n const inputTypeMultiToTypeMap = {\n CHECKBOX: 'checklist',\n RADIO: 'checklist',\n SELECT: 'chips',\n };\n const typeToTypeMap = {\n file: 'file',\n COMPOSITE: 'address',\n };\n const numberDataTypeToTypeMap = {\n Double: 'float',\n BigDecimal: 'float',\n Integer: 'number',\n };\n if (field.type === 'TO_MANY') {\n if (this.hasAssociatedEntity(field)) {\n if (field.multiValue === false) {\n type = 'entitypicker';\n } else {\n type = 'entitychips';\n }\n } else {\n if (field.multiValue === false) {\n type = 'picker';\n } else {\n type = 'chips';\n }\n }\n } else if (field.type === 'TO_ONE') {\n if (\n 'SYSTEM' === field.dataSpecialization &&\n ['WorkflowOptionsLookup', 'SpecializedOptionsLookup', 'AllWorkflowOptionsLookup'].includes(field.dataType)\n ) {\n type = dataSpecializationTypeMap[field.dataType];\n } else if (['WORKFLOW_OPTIONS', 'SPECIALIZED_OPTIONS', 'ALL_WORKFLOW_OPTIONS'].includes(field.dataSpecialization)) {\n type = dataSpecializationTypeMap[field.dataSpecialization];\n } else if (['SimplifiedOptionsLookup', 'SpecializedOptionsLookup'].includes(field.dataType)) {\n if (field.options && Object.keys(inputTypeToTypeMap).indexOf(field.inputType) > -1 && !field.multiValue) {\n type = inputTypeToTypeMap[field.inputType];\n } else if (field.options && Object.keys(inputTypeMultiToTypeMap).indexOf(field.inputType) > -1 && field.multiValue) {\n type = inputTypeMultiToTypeMap[field.inputType];\n } else {\n type = dataSpecializationTypeMap[field.dataType];\n }\n } else if (this.hasAssociatedEntity(field)) {\n type = 'entitypicker'; // TODO!\n } else {\n type = 'picker';\n }\n } else if (field.optionsUrl && field.inputType === 'SELECT') {\n if (field.optionsType && ~this.ENTITY_PICKER_LIST.indexOf(field.optionsType)) {\n type = 'entitypicker'; // TODO!\n } else {\n type = 'picker';\n }\n } else if (Object.keys(dataSpecializationTypeMap).indexOf(field.dataSpecialization) > -1) {\n type = dataSpecializationTypeMap[field.dataSpecialization];\n } else if (Object.keys(dataTypeToTypeMap).indexOf(field.dataType) > -1) {\n type = dataTypeToTypeMap[field.dataType];\n } else if (field.inputType === 'TEXTAREA') {\n type = 'textarea';\n } else if (field.options && Object.keys(inputTypeToTypeMap).indexOf(field.inputType) > -1 && !field.multiValue) {\n type = inputTypeToTypeMap[field.inputType];\n } else if (field.options && Object.keys(inputTypeMultiToTypeMap).indexOf(field.inputType) > -1 && field.multiValue) {\n type = inputTypeMultiToTypeMap[field.inputType];\n } else if (Object.keys(typeToTypeMap).indexOf(field.type) > -1) {\n type = typeToTypeMap[field.type];\n } else if (Object.keys(numberDataTypeToTypeMap).indexOf(field.dataType) > -1) {\n type = numberDataTypeToTypeMap[field.dataType];\n } /* else {\n throw new Error('FormUtils: This field type is unsupported.');\n }*/\n return type;\n }\n\n isFieldEncrypted(key: string): boolean {\n return key.indexOf('customEncrypted') > -1;\n }\n\n getControlForField(\n field: any,\n http,\n config: { token?: string; restUrl?: string; military?: boolean; weekStart?: number },\n overrides?: any,\n forTable: boolean = false,\n fieldData?: any,\n ) {\n // TODO: if field.type overrides `determineInputType` we should use it in that method or use this method\n // TODO: (cont.) as the setter of the field argument\n let type: string = this.determineInputType(field) || field.type;\n let control: any;\n const controlConfig: NovoControlConfig = {\n metaType: field.type,\n type,\n key: field.name,\n label: field.label,\n placeholder: field.hint || '',\n required: field.required || field.systemRequired,\n hidden: !field.required,\n encrypted: this.isFieldEncrypted(field.name ? field.name.toString() : ''),\n value: field.value || field.defaultValue,\n sortOrder: field.sortOrder,\n associatedEntity: field.associatedEntity,\n optionsType: field.optionsType,\n multiple: field.multiValue,\n readOnly: !!field.disabled || !!field.readOnly,\n disabled: field.disabled,\n maxlength: field.maxLength,\n interactions: field.interactions,\n dataSpecialization: field.dataSpecialization,\n dataType: field.dataType,\n description: field.description || '',\n tooltip: field.tooltip,\n tooltipPosition: field.tooltipPosition,\n customControl: field.customControl,\n template: field.template,\n customControlConfig: field.customControlConfig,\n restrictFieldInteractions: field.restrictFieldInteractions,\n validators: field.validators,\n warning: field.warning,\n config: field.config || {},\n closeOnSelect: field.closeOnSelect,\n layoutOptions: field.layoutOptions,\n };\n this.inferDateRange(controlConfig, field);\n // TODO: getControlOptions should always return the correct format\n const optionsConfig = this.getControlOptions(field, http, config, fieldData);\n if (Array.isArray(optionsConfig) && !(type === 'chips' || type === 'picker')) {\n controlConfig.options = optionsConfig;\n } else if (Array.isArray(optionsConfig) && (type === 'chips' || type === 'picker')) {\n controlConfig.config = {\n options: optionsConfig,\n };\n } else if (optionsConfig) {\n controlConfig.config = {\n ...optionsConfig,\n ...(controlConfig && controlConfig.config),\n };\n }\n\n if (type === 'year') {\n controlConfig.maxlength = 4;\n }\n // TODO: Overrides should be an iterable of all properties (potentially a private method)\n let overrideResultsTemplate;\n let overridePreviewTemplate;\n if (overrides && overrides[field.name]) {\n if (overrides[field.name].resultsTemplate) {\n overrideResultsTemplate = overrides[field.name].resultsTemplate;\n controlConfig.config.resultsTemplate = overrideResultsTemplate;\n delete overrides[field.name].resultsTemplate;\n }\n if (overrides[field.name].overridePreviewTemplate) {\n overrideResultsTemplate = overrides[field.name].overridePreviewTemplate;\n controlConfig.config.overridePreviewTemplate = overrideResultsTemplate;\n delete overrides[field.name].overridePreviewTemplate;\n }\n if (overrides[field.name].pickerCallback) {\n controlConfig.config.callback = overrides[field.name].pickerCallback;\n }\n if (overrides[field.name].type) {\n type = overrides[field.name].type;\n }\n if (overrides[field.name].columns) {\n controlConfig.config.columns = overrides[field.name].columns;\n controlConfig.closeOnSelect = true;\n delete controlConfig.label;\n }\n if (overrides[field.name].warning) {\n controlConfig.warning = overrides[field.name].warning;\n }\n Object.assign(controlConfig, overrides[field.name]);\n }\n\n switch (type) {\n case 'entitychips':\n // TODO: This doesn't belong in this codebase\n controlConfig.multiple = true;\n controlConfig.config.resultsTemplate = overrideResultsTemplate || EntityPickerResults;\n controlConfig.config.previewTemplate = overridePreviewTemplate || EntityPickerResult;\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'chips':\n controlConfig.multiple = true;\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'entitypicker':\n // TODO: This doesn't belong in this codebase\n controlConfig.config.resultsTemplate = overrideResultsTemplate || EntityPickerResults;\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'picker':\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'datetime':\n controlConfig.military = config ? !!config.military : false;\n controlConfig.weekStart = config && config.weekStart ? config.weekStart : 0;\n control = new DateTimeControl(controlConfig);\n break;\n case 'date':\n controlConfig.dateFormat = field.dateFormat;\n controlConfig.textMaskEnabled = field.textMaskEnabled;\n controlConfig.allowInvalidDate = field.allowInvalidDate;\n controlConfig.military = config ? !!config.military : false;\n controlConfig.weekStart = config && config.weekStart ? config.weekStart : 0;\n control = new DateControl(controlConfig);\n break;\n case 'time':\n controlConfig.military = config ? !!config.military : false;\n control = new TimeControl(controlConfig);\n break;\n case 'native-time':\n case 'native-date':\n case 'native-week':\n case 'native-year':\n case 'native-datetime-local':\n case 'native-tel':\n case 'native-email':\n case 'native-url':\n case 'native-number':\n control = new CustomControl({ ...controlConfig, template: 'native-input', type: type.replace('native-', ''), alwaysActive: true });\n break;\n case 'timezone':\n control = new TimezoneControl(controlConfig);\n break;\n case 'currency':\n case 'money':\n case 'email':\n case 'percentage':\n case 'float':\n case 'number':\n case 'year':\n // TODO: Only types from `determineInputType` should be used in this class\n if (type === 'money') {\n type = 'currency';\n }\n controlConfig.type = type;\n control = new TextBoxControl(controlConfig);\n break;\n case 'text':\n control = new TextBoxControl(controlConfig);\n break;\n case 'textarea':\n control = new TextAreaControl(controlConfig);\n break;\n case 'editor':\n control = new EditorControl(controlConfig);\n break;\n case 'editor-minimal':\n control = new EditorControl(controlConfig);\n control.minimal = true;\n break;\n case 'tiles':\n control = new TilesControl(controlConfig);\n break;\n case 'checkbox':\n controlConfig.checkboxLabel = field.checkboxLabel;\n control = new CheckboxControl(controlConfig);\n break;\n case 'switch':\n control = new SwitchControl(controlConfig);\n break;\n case 'checklist':\n control = new CheckListControl(controlConfig);\n break;\n case 'radio':\n control = new RadioControl(controlConfig);\n break;\n case 'select':\n control = new SelectControl(controlConfig);\n break;\n case 'address':\n controlConfig.required = field.required || false;\n if (Helpers.isBlank(controlConfig.config)) {\n controlConfig.config = {};\n }\n controlConfig.config.required = field.required;\n controlConfig.config.readOnly = controlConfig.readOnly;\n if (field.fields && field.fields.length) {\n for (const subfield of field.fields) {\n controlConfig.config[subfield.name] = {\n required: !!subfield.required,\n hidden: !!subfield.readOnly,\n };\n if (!Helpers.isEmpty(subfield.label)) {\n controlConfig.config[subfield.name].label = subfield.label;\n }\n if (!Helpers.isEmpty(subfield.maxLength)) {\n controlConfig.config[subfield.name].maxlength = subfield.maxLength;\n }\n controlConfig.required = controlConfig.required || subfield.required;\n if (subfield.defaultValue) {\n if (Helpers.isBlank(controlConfig.value)) {\n controlConfig.value = {};\n }\n controlConfig.value[subfield.name] = subfield.defaultValue;\n } else if (subfield.name === 'countryID') {\n if (Helpers.isBlank(controlConfig.value)) {\n controlConfig.value = {};\n }\n controlConfig.value[subfield.name] = 1;\n }\n if (subfield.name === 'state' || subfield.name === 'countryID') {\n if (subfield.name === 'countryID') {\n subfield.optionsType = 'Country';\n }\n if (!subfield.optionsUrl) {\n subfield.optionsUrl = `options/${subfield.optionsType}`;\n }\n controlConfig.config[subfield.name].pickerConfig = this.getControlOptions(subfield, http, config, fieldData);\n }\n }\n }\n controlConfig.isEmpty = this.isAddressEmpty;\n control = new AddressControl(controlConfig);\n break;\n case 'file':\n control = new FileControl(controlConfig);\n break;\n case 'custom':\n control = new CustomControl(controlConfig);\n break;\n default:\n control = new TextBoxControl(controlConfig);\n break;\n }\n return control;\n }\n\n private shouldCreateControl(field): boolean {\n if (field.systemRequired) {\n field.readOnly = false;\n }\n\n return (\n field.name !== 'id' &&\n (!['SYSTEM', 'SECTION_HEADER'].includes(field.dataSpecialization) ||\n ['address', 'billingAddress', 'secondaryAddress'].includes(field.name)) &&\n !field.readOnly\n );\n }\n\n toControls(\n meta,\n currencyFormat,\n http,\n config: { token?: string; restUrl?: string; military?: boolean; weekStart?: number },\n overrides?: any,\n forTable: boolean = false,\n ) {\n const controls = [];\n if (meta && meta.fields) {\n const fields = meta.fields;\n fields.forEach((field) => {\n if (this.shouldCreateControl(field)) {\n const control = this.getControlForField(field, http, config, overrides, forTable);\n // Set currency format\n if (control.subType === 'currency') {\n control.currencyFormat = currencyFormat;\n }\n // Add to controls\n controls.push(control);\n }\n });\n }\n return controls;\n }\n\n toTableControls(meta, currencyFormat, http, config: { token?: string; restUrl?: string; military?: boolean }, overrides?: any) {\n const controls = this.toControls(meta, currencyFormat, http, config, overrides, true);\n const ret = {};\n controls.forEach((control: BaseControl) => {\n ret[control.key] = {\n editorType: control.__type,\n editorConfig: control.__config,\n };\n });\n return ret;\n }\n\n toFieldSets(\n meta,\n currencyFormat,\n http,\n config: { token?: string; restUrl?: string; military?: boolean; weekStart?: number },\n overrides?,\n data?: { [key: string]: any },\n ) {\n const fieldsets: Array<NovoFieldset> = [];\n let formFields = [];\n\n if (meta && meta.fields) {\n formFields = this.getFormFields(meta);\n\n formFields.forEach((field) => {\n if (this.isHeader(field)) {\n if (field.enabled) {\n this.insertHeaderToFieldsets(fieldsets, field);\n }\n } else if (this.isEmbeddedField(field)) {\n this.insertHeaderToFieldsets(fieldsets, field);\n\n const embeddedFields = this.getEmbeddedFields(field);\n\n embeddedFields.forEach((embeddedField) => {\n if (this.shouldCreateControl(embeddedField)) {\n let control = this.createControl(embeddedField, data, http, config, overrides, currencyFormat);\n control = this.markControlAsEmbedded(control, field.dataSpecialization ? field.dataSpecialization.toLowerCase() : null);\n fieldsets[fieldsets.length - 1].controls.push(control);\n } else if (this.isHeader(embeddedField)) {\n this.insertHeaderToFieldsets(fieldsets, embeddedField);\n }\n });\n } else if (this.shouldCreateControl(field)) {\n let control = this.createControl(field, data, http, config, overrides, currencyFormat);\n if (field.inlineEmbeddedAssociatedEntityField) {\n control = this.markControlAsEmbedded(control, 'inline_embedded');\n }\n\n if (fieldsets.length === 0) {\n fieldsets.push({ controls: [] });\n }\n\n fieldsets[fieldsets.length - 1].controls.push(control);\n }\n });\n }\n if (fieldsets.length > 0) {\n return fieldsets;\n } else {\n return [\n {\n controls: this.toControls(meta, currencyFormat, http, config),\n },\n ];\n }\n }\n\n private isEmbeddedField(field) {\n return field.dataSpecialization && ['embedded'].includes(field.dataSpecialization.toLowerCase()) && !field.readOnly;\n }\n\n private createControl(field, data, http, config, overrides, currencyFormat) {\n const fieldData = this.isEmbeddedFieldData(field, data) ? this.getEmbeddedFieldData(field, data) : this.getFieldData(field, data);\n const control = this.getControlForField(field, http, config, overrides, undefined, fieldData);\n // Set currency format\n if (control.subType === 'currency') {\n control.currencyFormat = currencyFormat;\n }\n return control;\n }\n\n private isEmbeddedFieldData(field, data) {\n return data && field.name.includes('.');\n }\n\n private getFieldData(field, data) {\n return (data && data[field.name]) || null;\n }\n\n private getEmbeddedFieldData(field, data) {\n const [parentFieldName, fieldName] = field.name.split('.');\n return (data && data[parentFieldName] && data[parentFieldName][fieldName]) || null;\n }\n\n private getFormFields(meta) {\n const sectionHeaders = meta.sectionHeaders\n ? meta.sectionHeaders.map((element) => {\n element.isSectionHeader = true;\n return element;\n })\n : [];\n\n let fields = meta.fields.map((field) => {\n field.parentEntity = meta.entity;\n if (!field.hasOwnProperty('sortOrder')) {\n field.sortOrder = Number.MAX_SAFE_INTEGER - 1;\n }\n return field;\n });\n\n // build list of fields that should be displayed inline but belong to associated entities\n const inlineEmbeddedAssociatedEntityFields = this.getInlineEmbeddedFields(fields);\n\n // remove the inline embedded fields because the associated entity fields were extracted above\n // and will be added to the regular list of fields. This prevents the fields from being added multiple times.\n fields = fields.filter((f) => !f.dataSpecialization || f.dataSpecialization.toLowerCase() !== 'inline_embedded');\n\n // sort fields\n return [...sectionHeaders, ...fields, ...inlineEmbeddedAssociatedEntityFields].sort(Helpers.sortByField(['sortOrder', 'name']));\n }\n\n private getInlineEmbeddedFields(fields) {\n let inlineEmbeddedAssociatedEntityFields = [];\n fields\n .filter((f) => f.dataSpecialization && f.dataSpecialization.toLowerCase() === 'inline_embedded')\n .forEach((f) => {\n inlineEmbeddedAssociatedEntityFields = [...inlineEmbeddedAssociatedEntityFields, ...this.getAssociatedFieldsForInlineEmbedded(f)];\n });\n return inlineEmbeddedAssociatedEntityFields;\n }\n\n private getAssociatedFieldsForInlineEmbedded(field) {\n let associatedEntityFields = [];\n associatedEntityFields = this.getEmbeddedFields(field).map((aef) => {\n aef.inlineEmbeddedAssociatedEntityField = true;\n return aef;\n });\n return associatedEntityFields;\n }\n\n private getEmbeddedFields(subHeader) {\n return subHeader.associatedEntity.fields\n .filter((field) => field.name !== 'id')\n .map((field) => {\n if (!field.name.startsWith(`${subHeader.name}.`)) {\n field.name = `${subHeader.name}.${field.name}`;\n }\n return field;\n })\n .sort(Helpers.sortByField(['sortOrder', 'name']));\n }\n\n private isHeader(field): boolean {\n return (\n !Helpers.isBlank(field) &&\n ((field.hasOwnProperty('isSectionHeader') && field.isSectionHeader) ||\n (field.dataSpecialization && field.dataSpecialization.toLowerCase() === 'section_header'))\n );\n }\n\n private insertHeaderToFieldsets(fieldsets, field) {\n const constantProperties = {\n controls: [],\n isEmbedded: field.dataSpecialization && field.dataSpecialization.toLowerCase() === 'embedded',\n isInlineEmbedded: field.dataSpecialization && field.dataSpecialization.toLowerCase() === 'inline_embedded',\n key: field.name,\n };\n if (field.name && field.name.startsWith('customObject') && field.associatedEntity && field.associatedEntity.label) {\n fieldsets.push({\n title: field.associatedEntity.label || field.label,\n icon: field.icon || 'bhi-card-expand',\n ...constantProperties,\n });\n } else {\n fieldsets.push({\n title: field.label,\n icon: field.icon || 'bhi-section',\n ...constantProperties,\n });\n }\n }\n\n private markControlAsEmbedded(control, dataSpecialization?: 'embedded' | 'inline_embedded') {\n if (Helpers.isBlank(control.config)) {\n control.config = {};\n }\n control.config.embedded = true;\n control.isEmbedded = dataSpecialization === 'embedded';\n control.isInlineEmbedded = dataSpecialization === 'inline_embedded';\n return control;\n }\n\n getControlOptions(field: any, http: any, config: { token?: string; restUrl?: string; military?: boolean }, fieldData?: any): any {\n // TODO: The token property of config is the only property used; just pass in `token: string`\n if (field.dataType === 'Boolean' && !field.options) {\n // TODO: dataType should only be determined by `determineInputType` which doesn't ever return 'Boolean' it\n // TODO: (cont.) returns `tiles`\n return [\n { value: false, label: this.labels.no },\n { value: true, label: this.labels.yes },\n ];\n } else if (field.dataSpecialization === 'ALL_WORKFLOW_OPTIONS' && field.options) {\n return field.options;\n } else if (field.workflowOptions) {\n return this.getWorkflowOptions(field.workflowOptions, fieldData);\n } else if (\n field.dataSpecialization === 'SPECIALIZED_OPTIONS' ||\n (field.options && ['SpecializedOptionsLookup', 'SimplifiedOptionsLookup'].includes(field.dataType))\n ) {\n return field.options;\n } else if (field.optionsUrl) {\n return this.optionsService.getOptionsConfig(http, field, config);\n } else if (Array.isArray(field.options) && field.type === 'chips') {\n const options = field.options;\n return {\n field: 'value',\n format: '$label',\n options,\n };\n } else if (field.options) {\n return field.options;\n }\n return null;\n }\n\n private getWorkflowOptions(\n workflowOptions: { [key: string]: any },\n fieldData: { id?: number; value?: string | number; label?: string | number } | null,\n ): Array<{ id?: number; value?: string | number; label?: string | number }> {\n let currentValue: { id?: number; value?: string | number; label?: string | number } = null;\n let currentWorkflowOption: number | string = 'initial';\n if (fieldData?.id) {\n currentValue = { ...fieldData, value: fieldData.id, label: fieldData.label || fieldData.id };\n currentWorkflowOption = fieldData.id;\n }\n const updateWorkflowOptions: Array<{ id?: number; value?: string | number; label?: string | number }> =\n workflowOptions[currentWorkflowOption] || [];\n\n // Ensure that the current value is added to the beginning of the options list\n if (currentValue && !updateWorkflowOptions.find((option) => option.value === currentValue.value)) {\n updateWorkflowOptions.unshift(currentValue);\n }\n\n return updateWorkflowOptions;\n }\n\n setInitialValues(controls: Array<NovoControlConfig>, values: any, keepClean?: boolean, keyOverride?: string) {\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i];\n const key = keyOverride ? control.key.replace(keyOverride, '') : control.key;\n let value = values[key];\n\n if (Helpers.isBlank(value)) {\n continue;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n continue;\n }\n\n if (Array.isArray(value) && value.length > 0) {\n value = value.filter((val) => !(Object.keys(val).length === 0 && val.constructor === Object));\n if (value.length === 0) {\n continue;\n }\n }\n\n if (value.data && value.data.length === 0) {\n continue;\n }\n\n if (Object.keys(value).length === 0 && value.constructor === Object) {\n continue;\n }\n\n if (control.dataType === 'Date' && typeof value === 'string' && control.optionsType !== 'skipConversion') {\n value = DateUtil.startOfDay(value);\n }\n\n control.value = value;\n // TODO: keepClean is not required, but is always used. It should default (to true?)\n control.dirty = !keepClean;\n }\n }\n\n setInitialValuesFieldsets(fieldsets: Array<NovoFieldset>, values, keepClean?: boolean) {\n fieldsets.forEach((fieldset) => {\n this.setInitialValues(fieldset.controls, values, keepClean);\n });\n }\n\n forceShowAllControls(controls: Array<NovoControlConfig>) {\n controls.forEach((control) => {\n control.hidden = false;\n });\n }\n\n forceShowAllControlsInFieldsets(fieldsets: Array<NovoFieldset>) {\n fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n control.hidden = false;\n });\n });\n }\n\n forceValidation(form: NovoFormGroup): void {\n Object.keys(form.controls).forEach((key: string) => {\n const control: any = form.controls[key];\n if (control.required && Helpers.isBlank(form.getRawValue()[control.key])) {\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n }\n\n isAddressEmpty(control: any): boolean {\n const fieldList: string[] = ['address1', 'address2', 'city', 'state', 'zip', 'countryID'];\n let valid: boolean = true;\n if (control.value && control.config) {\n fieldList.forEach((subfield: string) => {\n if (\n ((subfield !== 'countryID' &&\n !Helpers.isEmpty(control.config[subfield]) &&\n control.config[subfield].required &&\n (Helpers.isBlank(control.value[subfield]) || Helpers.isEmpty(control.value[subfield]))) ||\n (subfield === 'countryID' &&\n !Helpers.isEmpty(control.config.countryID) &&\n control.config.countryID.required &&\n Helpers.isEmpty(control.value.countryName))) &&\n !(\n subfield === 'state' &&\n !Helpers.isBlank(control.value.countryName) &&\n control.config.state.pickerConfig &&\n control.config.state.pickerConfig.defaultOptions &&\n control.config.state.pickerConfig.defaultOptions.length === 0\n )\n ) {\n valid = false;\n }\n });\n }\n return valid;\n }\n\n private getStartDateFromRange(dateRange: { minDate: string; minOffset: number }): Date {\n if (dateRange.minDate) {\n return DateUtil.parse(dateRange.minDate);\n } else if (dateRange.minOffset) {\n return DateUtil.addDays(startOfToday(), dateRange.minOffset);\n }\n }\n\n private getEndDateFromRange(dateRange: { maxDate: string; minOffset: number }): Date {\n if (dateRange.maxDate) {\n return DateUtil.parse(dateRange.maxDate);\n } else if (dateRange.minOffset) {\n return DateUtil.addDays(startOfToday(), dateRange.minOffset);\n }\n }\n\n /**\n * Get the min start date and max end date of a Date base on field data.\n */\n\n private inferDateRange(controlConfig, field): void {\n if (field.dataType === 'Date' && field.allowedDateRange) {\n controlConfig.startDate = this.getStartDateFromRange(field.allowedDateRange);\n controlConfig.endDate = this.getEndDateFromRange(field.allowedDateRange);\n controlConfig.disabledDateMessage = field.allowedDateRange?.disabledDateMessage;\n }\n }\n\n inflateEmbeddedProperties(data: object): object {\n if (data) {\n Object.keys(data)\n .filter((fieldName) => fieldName.includes('.'))\n .forEach((field) => {\n const [parentFieldName, fieldName] = field.split('.');\n if (!data[parentFieldName]) {\n data[parentFieldName] = {};\n }\n data[parentFieldName][fieldName] = data[field];\n delete data[field];\n });\n }\n\n return data;\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n// APP\nimport { NovoModalParams, NovoModalRef } from 'novo-elements/elements/modal';\nimport { NovoLabelService } from 'novo-elements/services';\n\n@Component({\n selector: 'control-confirm-modal',\n template: `\n <novo-notification type=\"warning\" [attr.data-automation-id]=\"'field-interaction-modal-' + params['key']\">\n <h1>{{ labels.confirmChangesModalMessage }}</h1>\n <h2 *ngIf=\"!params['message']\">\n <label>{{ params['label'] }}:</label> {{ params['oldValue'] }} <i class=\"bhi-arrow-right\"></i> {{ params['newValue'] }}\n </h2>\n <h2 *ngIf=\"params['message']\">{{ params['message'] }}</h2>\n <novo-button theme=\"standard\" (click)=\"close(false)\" [attr.data-automation-id]=\"'field-interaction-modal-cancel' + params['key']\">\n {{ labels.cancel }}\n </novo-button>\n <novo-button\n theme=\"primary\"\n icon=\"check\"\n (click)=\"close(true)\"\n autofocus\n [attr.data-automation-id]=\"'field-interaction-modal-save-' + params['key']\"\n >\n {{ labels.save }}\n </novo-button>\n </novo-notification>\n `,\n standalone: false\n})\nexport class ControlConfirmModal {\n constructor(private modalRef: NovoModalRef, public params: NovoModalParams, public labels: NovoLabelService) {}\n\n public close(result: boolean): void {\n this.modalRef.close(result);\n }\n}\n\n@Component({\n selector: 'control-prompt-modal',\n template: `\n <novo-notification type=\"warning\" [attr.data-automation-id]=\"'field-interaction-modal-' + params['key']\">\n <h1>{{ labels.promptModalMessage }}</h1>\n <p *ngFor=\"let change of params['changes']\">{{ change }}</p>\n <novo-button theme=\"standard\" (click)=\"close(false)\" [attr.data-automation-id]=\"'field-interaction-modal-cancel' + params['key']\">\n {{ labels.cancel }}\n </novo-button>\n <novo-button\n theme=\"primary\"\n icon=\"check\"\n (click)=\"close(true)\"\n autofocus\n [attr.data-automation-id]=\"'field-interaction-modal-yes-' + params['key']\"\n >\n {{ labels.yes }}\n </novo-button>\n </novo-notification>\n `,\n standalone: false\n})\nexport class ControlPromptModal {\n constructor(private modalRef: NovoModalRef, public params: NovoModalParams, public labels: NovoLabelService) {}\n\n public close(result: boolean): void {\n this.modalRef.close(result);\n }\n}\n","// NG2\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { FormArray } from '@angular/forms';\n// Vendor\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n// APP\nimport { NovoModalService } from 'novo-elements/elements/modal';\nimport { EntityPickerResults } from 'novo-elements/elements/picker';\nimport { NovoToastService, ToastOptions } from 'novo-elements/elements/toast';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { AppBridge, Helpers } from 'novo-elements/utils';\nimport { FormUtils } from './utils/FormUtils';\nimport { CustomHttp, ModifyPickerConfigArgs, OptionsFunction } from './FieldInteractionApiTypes';\nimport { ControlConfirmModal, ControlPromptModal } from './FieldInteractionModals';\nimport { NovoControlConfig } from './FormControls';\nimport { IFieldInteractionEvent, NovoFieldset, ResultsTemplateType } from './FormInterfaces';\nimport { NovoFormControl } from './NovoFormControl';\nimport { NovoFormGroup } from './NovoFormGroup';\n\nclass CustomHttpImpl implements CustomHttp {\n url: string;\n options;\n mapFn = (x) => x;\n\n constructor(private http: HttpClient) {}\n\n get(url: string, options?): CustomHttp {\n this.url = url;\n this.options = options;\n return this;\n }\n\n map(mapFn): CustomHttp {\n this.mapFn = mapFn;\n return this;\n }\n\n subscribe(resolve, reject?): Subscription {\n return this.http.get(this.url, this.options).pipe(map(this.mapFn)).subscribe(resolve, reject);\n }\n}\n\n@Injectable()\nexport class FieldInteractionApi {\n private _globals;\n form: NovoFormGroup | any;\n private _currentKey: string;\n appBridge: AppBridge;\n private asyncBlockTimeout;\n private _isInvokedOnInit = false;\n\n static FIELD_POSITIONS = {\n ABOVE_FIELD: 'ABOVE_FIELD',\n BELOW_FIELD: 'BELOW_FIELD',\n TOP_OF_FORM: 'TOP_OF_FORM',\n BOTTOM_OF_FORM: 'BOTTOM_OF_FORM',\n };\n\n constructor(\n private toaster: NovoToastService,\n private modalService: NovoModalService,\n private formUtils: FormUtils,\n private http: HttpClient,\n private labels: NovoLabelService,\n ) {}\n\n get associations(): object {\n return this.form.hasOwnProperty('associations') ? this.form.associations : {};\n }\n\n get currentEntity(): string {\n return this.form.hasOwnProperty('currentEntity') ? this.form.currentEntity : undefined;\n }\n\n get currentEntityId(): string {\n return this.form.hasOwnProperty('currentEntityId') ? this.form.currentEntityId : undefined;\n }\n\n get isEdit(): boolean {\n return this.form.hasOwnProperty('edit') ? this.form.edit : false;\n }\n\n get isAdd(): boolean {\n return this.form.hasOwnProperty('edit') ? !this.form.edit : false;\n }\n\n set globals(globals) {\n this._globals = globals;\n }\n\n get globals() {\n return this._globals;\n }\n\n set currentKey(key: string) {\n this._currentKey = key;\n }\n\n get currentKey(): string {\n return this._currentKey;\n }\n\n set isInvokedOnInit(isOnInit: boolean) {\n this._isInvokedOnInit = isOnInit;\n }\n\n get isInvokedOnInit(): boolean {\n return this._isInvokedOnInit;\n }\n\n isActiveControlValid(): boolean {\n return !!this.getValue(this.currentKey);\n }\n\n getActiveControl(): NovoFormControl {\n return this.getControl(this.currentKey);\n }\n\n getActiveKey(): string {\n return this.currentKey;\n }\n\n getActiveValue() {\n return this.getValue(this.currentKey);\n }\n\n getActiveInitialValue() {\n return this.getInitialValue(this.currentKey);\n }\n\n getFieldSet(key: string, otherForm?: NovoFormGroup): NovoFieldset {\n if (!key) {\n console.error('[FieldInteractionAPI] - invalid or missing \"key\"');\n return null;\n }\n\n const form = otherForm || this.form;\n const fieldSet = form.fieldsets.find((fs: NovoFieldset) => fs.key && fs.key.toLowerCase() === key.toLowerCase());\n if (!fieldSet) {\n console.error('[FieldInteractionAPI] - could not find a fieldset in the form by the key --', key);\n return null;\n }\n\n return fieldSet as NovoFieldset;\n }\n\n getControl(key: string, otherForm?: NovoFormGroup) {\n if (!key) {\n console.error('[FieldInteractionAPI] - invalid or missing \"key\"');\n return null;\n }\n\n const form = otherForm || this.form;\n const control = form.controls[key] as NovoFormControl;\n if (!control) {\n console.error('[FieldInteractionAPI] - could not find a control in the form by the key --', key);\n return null;\n }\n\n return control;\n }\n\n getFormGroupArray(key: string, otherForm?: NovoFormGroup): NovoFormGroup[] {\n if (!key) {\n console.error('[FieldInteractionAPI] - invalid or missing \"key\"');\n return null;\n }\n\n const form = otherForm || this.form;\n const formArray = form.controls[key] as FormArray;\n if (!formArray || !formArray.controls) {\n console.error('[FieldInteractionAPI] - could not find a form array in the form by the key --', key);\n return null;\n }\n\n return formArray.controls as NovoFormGroup[] | any;\n }\n\n getValue(key: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control) {\n return control.value;\n }\n return null;\n }\n\n getRawValue(key: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control) {\n return control.rawValue;\n }\n return null;\n }\n\n getInitialValue(key: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control) {\n return control.initialValue;\n }\n return null;\n }\n\n setValue(\n key: string,\n value,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n emitModelToViewChange?: boolean;\n emitViewToModelChange?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setValue(value, options);\n this.triggerEvent({ controlKey: key, prop: 'value', value }, otherForm);\n }\n }\n\n patchValue(\n key: string,\n value,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n emitModelToViewChange?: boolean;\n emitViewToModelChange?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setValue(value, options);\n this.triggerEvent({ controlKey: key, prop: 'value', value }, otherForm);\n }\n }\n\n setReadOnly(key: string, isReadOnly: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setReadOnly(isReadOnly);\n this.triggerEvent({ controlKey: key, prop: 'readOnly', value: isReadOnly }, otherForm);\n }\n }\n\n setRequired(key: string, required: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setRequired(required);\n this.triggerEvent({ controlKey: key, prop: 'required', value: required }, otherForm);\n }\n }\n\n setDescription(key: string, description: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.description = description;\n this.triggerEvent({ controlKey: key, prop: 'description', value: description }, otherForm);\n }\n }\n\n highlight(key: string, isHighlighted: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.highlighted = isHighlighted;\n this.triggerEvent({ controlKey: key, prop: 'highlight', value: isHighlighted }, otherForm);\n }\n }\n\n hide(key: string, clearValue = true, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.hide(clearValue);\n this.disable(key, { emitEvent: false });\n this.triggerEvent({ controlKey: key, prop: 'hidden', value: true }, otherForm);\n }\n return control;\n }\n\n show(key: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.show();\n this.enable(key, { emitEvent: false });\n this.triggerEvent({ controlKey: key, prop: 'hidden', value: false }, otherForm);\n }\n }\n\n hideFieldSetHeader(key: string): void {\n const fieldSet = this.getFieldSet(key);\n if (fieldSet) {\n fieldSet.hidden = true;\n }\n }\n\n showFieldSetHeader(key: string): void {\n const fieldSet = this.getFieldSet(key);\n if (fieldSet) {\n fieldSet.hidden = false;\n }\n }\n\n disable(\n key: string,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.disable(options);\n this.triggerEvent({ controlKey: key, prop: 'readOnly', value: true }, otherForm);\n }\n }\n\n enable(\n key: string,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.enable(options);\n this.triggerEvent({ controlKey: key, prop: 'readOnly', value: false }, otherForm);\n }\n }\n\n markAsInvalid(key: string, validationMessage?: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control) {\n if (control && !control.restrictFieldInteractions) {\n control.markAsInvalid(validationMessage);\n this.triggerEvent({ controlKey: key, prop: 'errors', value: validationMessage }, otherForm);\n }\n }\n }\n\n markAsValid(key: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control) {\n if (control && !control.restrictFieldInteractions) {\n control.markAsValid();\n this.triggerEvent({ controlKey: key, prop: 'errors', value: null }, otherForm);\n }\n }\n }\n\n markAsDirty(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsDirty(options);\n }\n }\n\n markAsPending(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsPending(options);\n }\n }\n\n markAsPristine(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsPristine(options);\n }\n }\n\n markAsTouched(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsTouched(options);\n }\n }\n\n markAsUntouched(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsUntouched(options);\n }\n }\n\n updateValueAndValidity(\n key: string,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.updateValueAndValidity(options);\n }\n }\n\n displayToast(toastConfig: ToastOptions): void {\n if (this.toaster) {\n this.toaster.alert(toastConfig);\n }\n }\n\n displayTip(key: string, tip: string, icon?: string, allowDismiss?: boolean, sanitize?: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.tipWell = {\n tip,\n icon,\n button: allowDismiss,\n sanitize: sanitize !== false, // defaults to true when undefined\n };\n this.triggerEvent({ controlKey: key, prop: 'tipWell', value: tip }, otherForm);\n }\n }\n\n clearTip(key: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.tipWell = null;\n this.triggerEvent({ controlKey: key, prop: 'tipWell', value: null }, otherForm);\n }\n }\n\n setTooltip(key: string, tooltip: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.tooltip = tooltip;\n if (tooltip.length >= 40 && tooltip.length <= 400) {\n control.tooltipSize = 'large';\n control.tooltipPreline = true;\n } else if (tooltip.length > 400) {\n control.tooltipSize = 'extra-large';\n }\n this.triggerEvent({ controlKey: key, prop: 'tooltip', value: tooltip }, otherForm);\n }\n }\n\n setPopOver(key: string, popover: {\n title?: string,\n content?: string,\n htmlContent?: string,\n placement?: 'left' | 'right' | 'top' | 'bottom',\n onHover?: boolean,\n always?: boolean,\n disabled?: boolean,\n animation?: boolean,\n dismissTimeout?: number,\n }, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.popoverTitle = popover.title;\n control.popoverContent = popover.content;\n control.popoverHtmlContent = popover.htmlContent;\n control.popoverPlacement = popover.placement;\n control.popoverOnHover = popover.onHover;\n control.popoverAlways = popover.always;\n control.popoverDisabled = popover.disabled;\n control.popoverAnimation = popover.animation;\n control.popoverDismissTimeout = popover.dismissTimeout;\n this.triggerEvent({ controlKey: key, prop: 'popover', value: popover }, otherForm);\n }\n }\n\n confirmChanges(key: string, message?: string): Promise<boolean> {\n const history = this.getProperty(key, 'valueHistory');\n const oldValue = history[history.length - 2];\n const newValue = this.getValue(key);\n const label = this.getProperty(key, 'label');\n (document.activeElement as any).blur();\n return this.modalService.open(ControlConfirmModal, { oldValue, newValue, label, message, key }).onClosed.then((result) => {\n if (!result) {\n this.setValue(key, oldValue, { emitEvent: false });\n }\n return true;\n });\n }\n\n promptUser(key: string, changes: string[]): Promise<boolean> {\n (document.activeElement as any).blur();\n return this.modalService.open(ControlPromptModal, { changes, key }).onClosed;\n }\n\n setProperty(key: string, prop: string, value, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control[prop] = value;\n this.triggerEvent({ controlKey: key, prop, value }, otherForm);\n }\n }\n\n getProperty(key: string, prop: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n return control[prop];\n }\n return null;\n }\n\n isValueEmpty(key: string): boolean {\n const value = this.getValue(key);\n return Helpers.isEmpty(value);\n }\n\n isValueBlank(key: string): boolean {\n const value = this.getValue(key);\n return Helpers.isBlank(value);\n }\n\n hasField(key: string, otherForm?: NovoFormGroup): boolean {\n const form = otherForm || this.form;\n return !!form.controls[key];\n }\n\n addStaticOption(key: string, newOption: any, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n let optionToAdd = newOption;\n let isUnique = true;\n if (control && !control.restrictFieldInteractions) {\n let currentOptions = this.getProperty(key, 'options');\n if (!currentOptions || !currentOptions.length) {\n const config = this.getProperty(key, 'config');\n if (config) {\n currentOptions = config.options;\n if (currentOptions && Array.isArray(currentOptions)) {\n if (currentOptions[0].value && !optionToAdd.value) {\n optionToAdd = { value: newOption, label: newOption };\n }\n config.options = [...currentOptions, optionToAdd];\n this.setProperty(key, 'config', config);\n }\n }\n } else {\n if (currentOptions[0].value && !optionToAdd.value) {\n optionToAdd = { value: newOption, label: newOption };\n }\n // Ensure duplicate values are not added\n currentOptions.forEach((option) => {\n if ((option.value && option.value === optionToAdd.value) || option === optionToAdd) {\n isUnique = false;\n }\n });\n if (isUnique) {\n this.setProperty(key, 'options', [...currentOptions, optionToAdd]);\n }\n }\n if (isUnique) {\n this.triggerEvent({ controlKey: key, prop: 'options', value: [...currentOptions, optionToAdd] }, otherForm);\n }\n }\n }\n\n removeStaticOption(key: string, optionToRemove: any, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n let currentOptions = this.getProperty(key, 'options', otherForm);\n if (!currentOptions || !currentOptions.length) {\n const config = this.getProperty(key, 'config', otherForm);\n if (config) {\n currentOptions = config.options;\n if (currentOptions && Array.isArray(currentOptions)) {\n let index = -1;\n currentOptions.forEach((opt, i) => {\n if (opt.value || opt.label) {\n if (opt.value === optionToRemove || opt.label === optionToRemove) {\n index = i;\n }\n } else {\n if (opt === optionToRemove) {\n index = i;\n }\n }\n });\n if (index !== -1) {\n currentOptions.splice(index, 1);\n }\n config.options = [...currentOptions];\n this.setProperty(key, 'config', config, otherForm);\n }\n }\n } else {\n let index = -1;\n currentOptions.forEach((opt, i) => {\n if (opt.value || opt.label) {\n if (opt.value === optionToRemove || opt.label === optionToRemove) {\n index = i;\n }\n } else {\n if (opt === optionToRemove) {\n index = i;\n }\n }\n });\n if (index !== -1) {\n currentOptions.splice(index, 1);\n }\n this.setProperty(key, 'options', [...currentOptions], otherForm);\n }\n this.triggerEvent({ controlKey: key, prop: 'options', value: control.options }, otherForm);\n }\n }\n\n modifyPickerConfig(\n key: string,\n config: {\n format?: string;\n optionsUrl?: string;\n optionsUrlBuilder?: Function;\n optionsPromise?;\n options?: any[];\n resultsTemplateType?: ResultsTemplateType;\n },\n mapper?,\n ): void {\n // call another method to avoid a breaking change but still enable stricter types\n this.mutatePickerConfig(key, config as ModifyPickerConfigArgs, mapper);\n }\n\n mutatePickerConfig(key: string, args: ModifyPickerConfigArgs, mapper?: (item: unknown) => unknown, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n const { minSearchLength, enableInfiniteScroll, filteredOptionsCreator, format, getLabels, emptyPickerMessage } = control.config;\n const optionsConfig = this.getOptionsConfig(args, mapper, filteredOptionsCreator, format);\n\n const newConfig: NovoControlConfig['config'] = {\n ...(emptyPickerMessage && { emptyPickerMessage }),\n ...(Number.isInteger(minSearchLength) && { minSearchLength }),\n ...(enableInfiniteScroll && { enableInfiniteScroll }),\n ...(filteredOptionsCreator && { filteredOptionsCreator }),\n ...(getLabels && { getLabels }),\n ...(optionsConfig && optionsConfig),\n resultsTemplate:\n control.config.resultsTemplate || ('resultsTemplateType' in args && this.getAppropriateResultsTemplate(args.resultsTemplateType)),\n };\n\n this.setProperty(key, 'config', newConfig);\n this.triggerEvent({ controlKey: key, prop: 'pickerConfig', value: args }, otherForm);\n }\n }\n\n addPropertiesToPickerConfig(key: string, properties: { [key: string]: unknown }, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (!control || control.restrictFieldInteractions) {\n return;\n }\n\n const config = {\n ...control.config,\n ...properties,\n };\n\n this.setProperty(key, 'config', config);\n this.triggerEvent({ controlKey: key, prop: 'pickerConfig', value: properties }, otherForm);\n }\n getOptionsConfig = (\n args: ModifyPickerConfigArgs,\n mapper?: (item: unknown) => unknown,\n filteredOptionsCreator?: (where: string) => (query: string) => Promise<unknown[]>,\n pickerConfigFormat?: string,\n ): undefined | { options: unknown[] } | { options: OptionsFunction; format?: string } => {\n if (filteredOptionsCreator || 'optionsUrl' in args || 'optionsUrlBuilder' in args || 'optionsPromise' in args) {\n const format = ('format' in args && args.format) || pickerConfigFormat;\n return {\n options: this.createOptionsFunction(args, mapper, filteredOptionsCreator),\n ...('emptyPickerMessage' in args && { emptyPickerMessage: args.emptyPickerMessage }),\n ...(format && { format }),\n };\n } else if ('options' in args && Array.isArray(args.options)) {\n return {\n options: [...args.options],\n };\n } else {\n return undefined;\n }\n };\n\n private getAppropriateResultsTemplate(resultsTemplateType: ResultsTemplateType) {\n switch (resultsTemplateType) {\n case 'entity-picker':\n return EntityPickerResults;\n default:\n return undefined;\n }\n }\n\n createOptionsFunction =\n (\n config: ModifyPickerConfigArgs,\n mapper?: (item: unknown) => unknown,\n filteredOptionsCreator?: (where?: string) => (query: string, page?: number) => Promise<unknown[]>,\n ): ((query: string) => Promise<unknown[]>) =>\n (query: string, page?: number) => {\n if ('optionsPromise' in config && config.optionsPromise) {\n return config.optionsPromise(query, new CustomHttpImpl(this.http), page);\n } else if (('optionsUrlBuilder' in config && config.optionsUrlBuilder) || ('optionsUrl' in config && config.optionsUrl)) {\n return new Promise((resolve, reject) => {\n const url = 'optionsUrlBuilder' in config ? config.optionsUrlBuilder(query) : `${config.optionsUrl}?filter=${query || ''}`;\n this.http\n .get(url)\n .pipe(\n map((results: unknown[]) => {\n if (mapper) {\n return results.map(mapper);\n }\n return results;\n }),\n )\n .subscribe(resolve, reject);\n });\n } else if (filteredOptionsCreator) {\n if ('where' in config) {\n return filteredOptionsCreator(config.where)(query, page);\n } else {\n return filteredOptionsCreator()(query, page);\n }\n }\n };\n\n setLoading(key: string, loading: boolean, otherForm?: NovoFormGroup) {\n const form = otherForm || this.form;\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n if (loading) {\n form.controls[key].fieldInteractionloading = true;\n control.setErrors({ loading: true });\n // History\n clearTimeout(this.asyncBlockTimeout);\n this.asyncBlockTimeout = setTimeout(() => {\n this.setLoading(key, false);\n this.displayTip(key, this.labels.asyncFailure, 'info', false);\n this.setProperty(key, '_displayedAsyncFailure', true);\n }, 10000);\n } else {\n form.controls[key].fieldInteractionloading = false;\n clearTimeout(this.asyncBlockTimeout);\n control.setErrors({ loading: null });\n control.updateValueAndValidity({ emitEvent: false });\n if (this.getProperty(key, '_displayedAsyncFailure')) {\n this.setProperty(key, 'tipWell', null);\n }\n }\n this.triggerEvent({ controlKey: key, prop: 'loading', value: loading }, otherForm);\n }\n }\n\n addControl(\n key: string,\n metaForNewField: {\n key?: string;\n type?: string;\n name?: string;\n label?: string;\n interactions?: Array<{ event?: string; invokeOnInit?: boolean; script? }>;\n },\n position: string = FieldInteractionApi.FIELD_POSITIONS.ABOVE_FIELD,\n initialValue?,\n otherForm?: NovoFormGroup,\n ): void {\n if (!metaForNewField.key && !metaForNewField.name) {\n console.error('[FieldInteractionAPI] - missing \"key\" in meta for new field');\n return null;\n }\n\n if (!metaForNewField.key) {\n // If key is not explicitly declared, use name as key\n metaForNewField.key = metaForNewField.name;\n }\n\n const form = otherForm || this.form;\n if (form.controls[metaForNewField.key]) {\n // Field is already on the form\n return null;\n }\n\n const control = form.controls[key];\n let fieldsetIndex: number;\n let controlIndex: number;\n if (control) {\n fieldsetIndex = -1;\n controlIndex = -1;\n\n form.fieldsets.forEach((fieldset, fi) => {\n fieldset.controls.forEach((fieldsetControl, ci) => {\n if (fieldsetControl.key === key) {\n fieldsetIndex = fi;\n controlIndex = ci;\n }\n });\n });\n\n // Change the position of the newly added field\n switch (position) {\n case FieldInteractionApi.FIELD_POSITIONS.ABOVE_FIELD:\n // Adding field above active field\n // index can stay the same\n break;\n case FieldInteractionApi.FIELD_POSITIONS.BELOW_FIELD:\n // Adding field below active field\n controlIndex += 1;\n break;\n case FieldInteractionApi.FIELD_POSITIONS.TOP_OF_FORM:\n // Adding field to the top of the form\n controlIndex = 0;\n fieldsetIndex = 0;\n break;\n case FieldInteractionApi.FIELD_POSITIONS.BOTTOM_OF_FORM:\n // Adding field to the bottom of the form\n fieldsetIndex = form.fieldsets.length - 1;\n controlIndex = form.fieldsets[fieldsetIndex].controls.length;\n break;\n default:\n break;\n }\n\n if (fieldsetIndex !== -1 && controlIndex !== -1) {\n const novoControl = this.formUtils.getControlForField(metaForNewField, this.http, {});\n novoControl.hidden = false;\n const formControl = new NovoFormControl(initialValue, novoControl);\n form.addControl(novoControl.key, formControl);\n form.fieldsets[fieldsetIndex].controls.splice(controlIndex, 0, novoControl);\n this.triggerEvent({ controlKey: key, prop: 'addControl', value: formControl }, otherForm);\n }\n }\n }\n\n removeControl(key: string, otherForm?: NovoFormGroup): void {\n const form = otherForm || this.form;\n if (!form.controls[key]) {\n // Field is not on the form\n return null;\n }\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n let fieldsetIndex = -1;\n let controlIndex = -1;\n\n form.fieldsets.forEach((fieldset, fi) => {\n fieldset.controls.forEach((fieldsetControl, ci) => {\n if (fieldsetControl.key === key) {\n fieldsetIndex = fi;\n controlIndex = ci;\n }\n });\n });\n\n if (fieldsetIndex !== -1 && controlIndex !== -1) {\n form.removeControl(key);\n form.fieldsets[fieldsetIndex].controls.splice(controlIndex, 1);\n this.triggerEvent({ controlKey: key, prop: 'removeControl', value: key }, otherForm);\n }\n }\n }\n\n debounce(func: () => void, wait = 50) {\n let h;\n clearTimeout(h);\n h = setTimeout(() => func(), wait);\n }\n\n /**\n * Allows traversing nested forms by accessing the parent form.\n *\n * @param otherForm optional parameter for getting the parent of a different form.\n * If not provided will default to the parent of the current form.\n */\n getParent(otherForm?: NovoFormGroup) {\n const form = otherForm || this.form;\n return form.parent;\n }\n\n /**\n * The index is assigned as a property on the form's associations object when the form is part of a NovoControlGroup array.\n *\n * @param otherForm optional parameter for getting the index of a different form. If not provided will default to the current form.\n * @returns the index if it exists for the current or form, or null otherwise.\n */\n getIndex(otherForm?: NovoFormGroup) {\n const form = otherForm || this.form;\n return form.associations && form.associations.hasOwnProperty('index') ? form.associations.index : null;\n }\n\n private triggerEvent(event: IFieldInteractionEvent, otherForm?: NovoFormGroup): void {\n const form = otherForm || this.form;\n if (form && form.fieldInteractionEvents) {\n form.fieldInteractionEvents.emit(event);\n }\n }\n}\n","// NG2\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n// Vendor\nimport { DateFormatService, NovoLabelService, NovoTemplateService } from 'novo-elements/services';\nimport { Helpers, Key, OutsideClick } from 'novo-elements/utils';\nimport { Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n// APP\nimport { MaskedOptions } from 'imask';\nimport { FieldInteractionApi } from './FieldInteractionApi';\n\nexport interface IMaskOptions {\n mask: MaskedOptions['mask'];\n keepCharPositions: boolean;\n guide: boolean;\n}\n\n@Directive({\n selector: 'textarea[autosize]',\n standalone: false\n})\nexport class NovoAutoSize implements AfterContentInit {\n @HostListener('input', ['$event.target'])\n onInput(textArea: HTMLTextAreaElement): void {\n this.adjust();\n }\n\n constructor(public element: ElementRef) {}\n\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.adjust();\n });\n }\n\n adjust(): void {\n const nativeElement = this.element.nativeElement;\n nativeElement.style.height = nativeElement.style.minHeight;\n nativeElement.style.height = `${nativeElement.scrollHeight}px`;\n }\n}\n// undo all template context references!\n@Component({\n selector: 'novo-control',\n template: `\n <div\n class=\"novo-control-container\"\n [hidden]=\"\n form.controls[control.key].hidden ||\n form.controls[control.key].type === 'hidden' ||\n form.controls[control.key].controlType === 'hidden'\n \"\n >\n <!--Encrypted Field-->\n <span [tooltip]=\"labels.encryptedFieldTooltip\" [tooltipPosition]=\"'right'\"\n ><i [hidden]=\"!form.controls[control.key].encrypted\" class=\"bhi-lock\"></i\n ></span>\n <!--Label (for horizontal)-->\n <label\n [attr.for]=\"control.key\"\n *ngIf=\"form.layout !== 'vertical' && form.controls[control.key].label && !condensed\"\n [ngClass]=\"{ encrypted: form.controls[control.key].encrypted }\"\n >\n {{ form.controls[control.key].label }}\n </label>\n <div class=\"novo-control-outer-container\">\n <!--Label (for vertical)-->\n <label\n *ngIf=\"form.layout === 'vertical' && form.controls[control.key].label && !condensed\"\n class=\"novo-control-label\"\n [attr.for]=\"control.key\"\n [class.novo-control-empty]=\"!hasValue\"\n [class.novo-control-focused]=\"focused\"\n [class.novo-control-filled]=\"hasValue\"\n [class.novo-control-always-active]=\"alwaysActive || form.controls[control.key].placeholder\"\n [class.novo-control-extra-spacing]=\"requiresExtraSpacing\"\n >\n {{ form.controls[control.key].label }}\n </label>\n <div\n class=\"novo-control-inner-container\"\n [class.required]=\"form.controls[control.key].required && !form.controls[control.key].readOnly\"\n >\n <div class=\"novo-control-inner-input-container\" [class.novo-control-filled]=\"hasValue\" [class.novo-control-empty]=\"!hasValue\">\n <!--Required Indicator-->\n <i\n [hidden]=\"!form.controls[control.key].required || form.controls[control.key].readOnly\"\n class=\"required-indicator {{ form.controls[control.key].controlType }}\"\n [ngClass]=\"{ 'bhi-circle': !isValid, 'bhi-check': isValid }\"\n *ngIf=\"!condensed || form.controls[control.key].required\"\n >\n </i>\n <!--Form Controls-->\n <div\n class=\"novo-control-input {{ form.controls[control.key].controlType }}\"\n [attr.data-automation-id]=\"control.key\"\n [class.control-disabled]=\"form.controls[control.key].disabled\"\n [class.highlighted]=\"form.controls[control.key].highlighted\"\n >\n <!--TODO prefix/suffix on the control-->\n <ng-container *ngIf=\"templates\">\n <ng-container\n *ngTemplateOutlet=\"templates[form.controls[control.key].controlType]; context: templateContext\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!templates || loading\">\n <div class=\"novo-control-input-container novo-control-input-with-label\">\n <input type=\"text\" />\n </div>\n </ng-container>\n </div>\n </div>\n <!--Error Message-->\n <div\n class=\"field-message {{ form.controls[control.key].controlType }}\"\n *ngIf=\"!condensed\"\n [class.has-tip]=\"form.controls[control.key].tipWell\"\n [ngClass]=\"showErrorState || showMaxLengthMetMessage ? 'error-shown' : 'error-hidden'\"\n >\n <div class=\"messages\" [ngClass]=\"showMessages ? 'count-shown messages-shown' : 'count-hidden messages-hidden'\">\n <span class=\"error-text\" *ngIf=\"showFieldMessage\"></span>\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.required && form.controls[control.key].controlType !== 'address'\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.isRequired }}</span\n >\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.minlength\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.minLength }} {{ form.controls[control.key].minlength }}</span\n >\n <span\n class=\"error-text\"\n *ngIf=\"isDirty && maxLengthMet && focused && !errors?.maxlength && form.controls[control.key].controlType !== 'picker'\"\n >{{ labels.maxlengthMet(form.controls[control.key].maxlength) }}</span\n >\n <span class=\"error-text\" *ngIf=\"errors?.maxlength && focused && !errors?.maxlengthFields\">{{\n labels.invalidMaxlength(form.controls[control.key].maxlength)\n }}</span>\n <span class=\"error-text\" *ngIf=\"maxLengthMet && form.controls[control.key].controlType === 'picker'\">{{\n labels.maxRecordsReached\n }}</span>\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.invalidEmail\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.invalidEmail }}</span\n >\n <span class=\"error-text\" *ngIf=\"isDirty && (errors?.integerTooLarge || errors?.doubleTooLarge)\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.isTooLarge }}</span\n >\n <span *ngIf=\"isDirty && errors?.minYear\">{{ form.controls[control.key].label | uppercase }} {{ labels.notValidYear }}</span>\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.custom\">{{ errors.custom }}</span>\n <span class=\"error-text\" *ngIf=\"errors?.maxlength && errors?.maxlengthFields && maxlengthErrorField && focused\">\n {{\n labels.invalidMaxlengthWithField(\n control.config[maxlengthErrorField]?.label,\n control.config[maxlengthErrorField]?.maxlength\n )\n }}\n </span>\n <span\n class=\"error-text\"\n *ngIf=\"isDirty && maxlengthMetField && focused && !errors?.maxlengthFields?.includes(maxlengthMetField)\"\n >\n {{ labels.maxlengthMetWithField(control.config[maxlengthMetField]?.label, control.config[maxlengthMetField]?.maxlength) }}\n </span>\n <span *ngIf=\"isDirty && errors?.invalidAddress\">\n <span class=\"error-text\" *ngFor=\"let invalidAddressField of errors?.invalidAddressFields\"\n >{{ invalidAddressField | uppercase }} {{ labels.isRequired }}\n </span>\n </span>\n <!--Field Hint-->\n <div class=\"description\" *ngIf=\"form.controls[control.key].description\" [innerHTML]=\"form.controls[control.key].description\">\n </div>\n <span class=\"warning-text\" *ngIf=\"form.controls[control.key].warning\">{{ form.controls[control.key].warning }}</span>\n </div>\n <span\n class=\"character-count\"\n [class.error]=\"\n (errors?.maxlength && !errors?.maxlengthFields) ||\n (errors?.maxlength && errors?.maxlengthFields && errors.maxlengthFields.includes(focusedField))\n \"\n *ngIf=\"showCount && form.controls[control.key].controlType !== 'picker'\"\n >{{ itemCount }}/{{ maxLength || form.controls[control.key].maxlength }}</span\n >\n <span\n class=\"record-count\"\n [class.zero-count]=\"itemCount === 0\"\n [class.row-picker]=\"form.controls[this.control.key].config.columns\"\n *ngIf=\"showCount && form.controls[control.key].controlType === 'picker'\"\n >{{ itemCount }}/{{ maxLength || form.controls[control.key].maxlength }}</span\n >\n </div>\n <!--Tip Wel-->\n <novo-tip-well\n *ngIf=\"form.controls[control.key].tipWell\"\n [name]=\"control.key\"\n [tip]=\"form.controls[control.key]?.tipWell?.tip\"\n [icon]=\"form.controls[control.key]?.tipWell?.icon\"\n [button]=\"form.controls[control.key]?.tipWell?.button\"\n [sanitize]=\"form.controls[control.key]?.tipWell?.sanitize\"\n ></novo-tip-well>\n </div>\n <i *ngIf=\"form.controls[control.key].fieldInteractionloading\" class=\"loading\">\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns:a=\"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/\"\n x=\"0px\"\n y=\"0px\"\n width=\"18.2px\"\n height=\"18.5px\"\n viewBox=\"0 0 18.2 18.5\"\n style=\"enable-background:new 0 0 18.2 18.5;\"\n xml:space=\"preserve\"\n >\n <style type=\"text/css\">\n .spinner {\n fill: #ffffff;\n }\n </style>\n <path\n class=\"spinner\"\n d=\"M9.2,18.5C4.1,18.5,0,14.4,0,9.2S4.1,0,9.2,0c0.9,0,1.9,0.1,2.7,0.4c0.8,0.2,1.2,1.1,1,1.9\n c-0.2,0.8-1.1,1.2-1.9,1C10.5,3.1,9.9,3,9.2,3C5.8,3,3,5.8,3,9.2s2.8,6.2,6.2,6.2c2.8,0,5.3-1.9,6-4.7c0.2-0.8,1-1.3,1.8-1.1\n c0.8,0.2,1.3,1,1.1,1.8C17.1,15.7,13.4,18.5,9.2,18.5z\"\n />\n </svg>\n </i>\n </div>\n </div>\n `,\n host: {\n '[class]': 'form.controls[control.key].controlType',\n '[attr.data-control-type]': 'form.controls[control.key].controlType',\n '[class.disabled]': 'form.controls[control.key].readOnly',\n '[class.hidden]': 'form.controls[control.key].hidden',\n '[attr.data-control-key]': 'control.key',\n '[class.inline-embedded]': 'control.isInlineEmbedded',\n '[class.embedded]': 'control.isEmbedded',\n },\n standalone: false\n})\nexport class NovoControlElement extends OutsideClick implements OnInit, OnDestroy, AfterViewInit, AfterContentInit {\n @Input()\n control: any;\n @Input()\n form: any;\n @Input()\n condensed: boolean = false;\n @Input()\n autoFocus: boolean = false;\n @Output()\n change: EventEmitter<any> = new EventEmitter();\n @Output()\n edit: EventEmitter<any> = new EventEmitter();\n @Output()\n save: EventEmitter<any> = new EventEmitter();\n @Output()\n delete: EventEmitter<any> = new EventEmitter();\n @Output()\n upload: EventEmitter<any> = new EventEmitter();\n @Output('blur')\n get onBlur(): Observable<FocusEvent> {\n return this._blurEmitter.asObservable();\n }\n\n @Output('focus')\n get onFocus(): Observable<FocusEvent> {\n return this._focusEmitter.asObservable();\n }\n public maxLength: number;\n public focusedField: string;\n formattedValue: string = '';\n percentValue: number;\n maxLengthMet: boolean = false;\n itemCount: number = 0;\n maskOptions: IMaskOptions;\n\n private _blurEmitter: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n private _focusEmitter: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n private _focused: boolean = false;\n private _enteredText: string = '';\n private forceClearSubscription: any;\n private percentChangeSubscription: any;\n private valueChangeSubscription: any;\n private dateChangeSubscription: any;\n private _showCount: boolean = false;\n private characterCountField: string;\n private maxLengthMetErrorfields: string[] = [];\n private statusChangeSubscription: any;\n\n templates: any = {};\n templateContext: any;\n loading: boolean = false;\n\n constructor(\n element: ElementRef,\n public labels: NovoLabelService,\n private dateFormatService: DateFormatService,\n private fieldInteractionApi: FieldInteractionApi,\n private templateService: NovoTemplateService,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(LOCALE_ID) public locale: string = 'en-US',\n ) {\n super(element);\n }\n\n get maxlengthMetField(): string {\n if (this.maxLengthMetErrorfields && this.maxLengthMetErrorfields.length) {\n return this.maxLengthMetErrorfields.find((field: string) => field === this.focusedField) || '';\n } else {\n return '';\n }\n }\n\n get maxlengthErrorField(): string {\n if (this.errors && this.errors.maxlengthFields && this.errors.maxlengthFields.length) {\n return this.errors.maxlengthFields.find((field: string) => field === this.focusedField) || '';\n } else {\n return '';\n }\n }\n\n get showFieldMessage() {\n return !this.errors && !this.maxLengthMet && Helpers.isBlank(this.control.description);\n }\n\n get showMaxLengthMetMessage() {\n return (\n (this.isDirty && this.maxLengthMet && this.focused && (!this.errors || (this.errors && !this.errors.maxlength))) ||\n (this.isDirty &&\n this.maxlengthMetField &&\n this.focused &&\n (!this.errors || (this.errors && !this.errors.maxlengthFields.includes(this.maxlengthMetField))))\n );\n }\n\n get showErrorState() {\n return (\n (this.isDirty && this.errors) ||\n (this.focused && this.errors && this.errors.maxlength && this.errors.maxlengthFields) ||\n (this.focused && this.errors && this.errors.maxlength && this.errors.maxlengthFields && this.maxlengthErrorField)\n );\n }\n\n get showCount() {\n const MAX_LENGTH_CONTROL_TYPES: string[] = ['textbox', 'picker', 'text-area'];\n const charCount: boolean =\n this.focused &&\n !!this.form.controls[this.control.key].maxlength &&\n MAX_LENGTH_CONTROL_TYPES.includes(this.form.controls[this.control.key].controlType);\n return this._showCount || charCount;\n }\n\n set showCount(value) {\n this._showCount = value;\n }\n\n get showMessages(): boolean {\n return (\n this.showCount ||\n !Helpers.isEmpty(this.form.controls[this.control.key].warning) ||\n !Helpers.isEmpty(this.form.controls[this.control.key].description)\n );\n }\n\n get decimalSeparator(): string {\n return new Intl.NumberFormat(this.locale).format(1.2)[1];\n }\n\n ngAfterViewInit() {\n const DO_NOT_FOCUS_ME: string[] = ['picker', 'time', 'date', 'date-time'];\n if (this.autoFocus && !DO_NOT_FOCUS_ME.includes(this.control.controlType)) {\n setTimeout(() => {\n const input: HTMLElement = this.element.nativeElement.querySelector('input');\n if (input) {\n input.focus();\n }\n });\n }\n }\n\n ngAfterContentInit() {\n // Subscribe to control interactions\n if (this.control.interactions && !this.form.controls[this.control.key].restrictFieldInteractions) {\n for (const interaction of this.control.interactions) {\n switch (interaction.event) {\n case 'blur':\n this.valueChangeSubscription = this.onBlur.pipe(debounceTime(300)).subscribe(() => {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction);\n }\n });\n break;\n case 'focus':\n this.valueChangeSubscription = this.onFocus.pipe(debounceTime(300)).subscribe(() => {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction);\n }\n });\n break;\n case 'change':\n this.valueChangeSubscription = this.form.controls[this.control.key].valueChanges.pipe(debounceTime(300)).subscribe(() => {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction);\n }\n });\n break;\n case 'init':\n interaction.invokeOnInit = true;\n break;\n default:\n break;\n }\n if (interaction.invokeOnInit) {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction, true);\n }\n }\n }\n }\n setTimeout(() => {\n this.templates = this.templateService.getAll();\n this.loading = false;\n this.changeDetectorRef.markForCheck();\n });\n }\n\n ngOnInit() {\n this.loading = true;\n // Make sure to initially format the time controls\n if (this.control && this.form.controls[this.control.key].value) {\n if (\n this.form.controls[this.control.key].controlType === 'textbox' ||\n this.form.controls[this.control.key].controlType === 'text-area'\n ) {\n this.itemCount = this.form.controls[this.control.key].value.length;\n }\n }\n if (this.control) {\n // Listen to clear events\n this.forceClearSubscription = this.control.forceClear.subscribe(() => {\n this.clearValue();\n });\n // For Asynchronous validations\n this.statusChangeSubscription = this.form.controls[this.control.key].statusChanges.subscribe((validity) => {\n this.form.controls[this.control.key] = this.templateContext.$implicit;\n if (validity !== 'PENDING' && this.form.updateValueAndValidity) {\n this.form.updateValueAndValidity();\n }\n });\n }\n this.templateContext = {\n $implicit: this.form.controls[this.control.key],\n methods: {\n restrictKeys: this.restrictKeys.bind(this),\n emitChange: this.emitChange.bind(this),\n handleAccept: this.handleAccept.bind(this),\n handleFocus: this.handleFocus.bind(this),\n handlePercentChange: this.handlePercentChange.bind(this),\n handleBlur: this.handleBlur.bind(this),\n handleTextAreaInput: this.handleTextAreaInput.bind(this),\n handleEdit: this.handleEdit.bind(this),\n handleSave: this.handleSave.bind(this),\n handleDelete: this.handleDelete.bind(this),\n handleUpload: this.handleUpload.bind(this),\n modelChange: this.modelChange.bind(this),\n modelChangeWithRaw: this.modelChangeWithRaw.bind(this),\n handleAddressChange: this.handleAddressChange.bind(this),\n handleTyping: this.handleTyping.bind(this),\n updateValidity: this.updateValidity.bind(this),\n toggleActive: this.toggleActive.bind(this),\n validateIntegerInput: this.validateIntegerInput.bind(this),\n validateNumberOnBlur: this.validateNumberOnBlur.bind(this),\n },\n form: this.form,\n };\n this.templateContext.$implicit.tooltipPosition = this.tooltipPosition;\n this.templateContext.$implicit.tooltip = this.tooltip;\n this.templateContext.$implicit.tooltipSize = this.tooltipSize;\n this.templateContext.$implicit.tooltipPreline = this.tooltipPreline;\n this.templateContext.$implicit.removeTooltipArrow = this.removeTooltipArrow;\n this.templateContext.$implicit.startupFocus = this.form.controls[this.control.key].startupFocus;\n this.templateContext.$implicit.fileBrowserImageUploadUrl = this.form.controls[this.control.key].fileBrowserImageUploadUrl;\n this.templateContext.$implicit.minimal = this.form.controls[this.control.key].minimal;\n this.templateContext.$implicit.currencyFormat = this.form.controls[this.control.key].currencyFormat;\n this.templateContext.$implicit.percentValue = this.form.controls[this.control.key].percentValue;\n this.templateContext.$implicit.config = this.form.controls[this.control.key].config;\n\n if (this.form.controls[this.control.key] && this.form.controls[this.control.key].subType === 'percentage') {\n if (!Helpers.isEmpty(this.form.controls[this.control.key].value)) {\n this.templateContext.$implicit.percentValue = Number(\n (this.form.controls[this.control.key].value * 100).toFixed(6).replace(/\\.?0*$/, ''),\n );\n }\n this.percentChangeSubscription = this.form.controls[this.control.key].displayValueChanges.subscribe((value) => {\n if (!Helpers.isEmpty(value) && !isNaN(value)) {\n this.templateContext.$implicit.percentValue = Number((value * 100).toFixed(6).replace(/\\.?0*$/, ''));\n } else if (Helpers.isEmpty(value)) {\n this.templateContext.$implicit.percentValue = undefined;\n }\n });\n }\n }\n\n ngOnDestroy() {\n // Unsubscribe from control interactions\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n if (this.forceClearSubscription) {\n // Un-listen for clear events\n this.forceClearSubscription.unsubscribe();\n }\n if (this.percentChangeSubscription) {\n // Un-listen for clear events\n this.percentChangeSubscription.unsubscribe();\n }\n if (this.dateChangeSubscription) {\n this.dateChangeSubscription.unsubscribe();\n }\n if (this.statusChangeSubscription) {\n this.statusChangeSubscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n\n get errors() {\n return this.form.controls[this.control.key].errors;\n }\n\n get isValid() {\n return this.form.controls[this.control.key].valid;\n }\n\n get isDirty() {\n return this.form.controls[this.control.key].dirty || this.control.dirty;\n }\n\n get hasValue() {\n return !Helpers.isEmpty(this.form.getRawValue()[this.control.key]);\n }\n\n get focused() {\n return this._focused;\n }\n\n get tooltip() {\n return this.form.controls[this.control.key].tooltip;\n }\n\n get tooltipPosition() {\n if (Helpers.isBlank(this.form.controls[this.control.key].tooltipPosition)) {\n return 'right';\n }\n return this.form.controls[this.control.key].tooltipPosition;\n }\n\n get tooltipSize() {\n if (Helpers.isBlank(this.form.controls[this.control.key].tooltipSize)) {\n return '';\n }\n return this.form.controls[this.control.key].tooltipSize;\n }\n\n get tooltipPreline() {\n if (Helpers.isBlank(this.form.controls[this.control.key].tooltipPreline)) {\n return false;\n }\n return this.form.controls[this.control.key].tooltipPreline;\n }\n\n get removeTooltipArrow() {\n if (Helpers.isBlank(this.form.controls[this.control.key].removeTooltipArrow)) {\n return false;\n }\n return this.form.controls[this.control.key].removeTooltipArrow;\n }\n\n get alwaysActive() {\n // Controls that have the label active if there is any user entered text in the field\n if (this.form.controls[this.control.key].controlType === 'picker' && this._enteredText.length) {\n return true;\n }\n if (this.form.controls[this.control.key].alwaysActive) {\n return true;\n }\n // Controls that always have the label active\n return (\n [\n 'tiles',\n 'checklist',\n 'checkbox',\n 'date',\n 'time',\n 'date-time',\n 'address',\n 'file',\n 'editor',\n 'ace-editor',\n 'code-editor',\n 'radio',\n 'text-area',\n 'quick-note',\n 'date',\n 'custom',\n 'switch',\n 'native-select',\n 'native-input',\n ].indexOf(this.form.controls[this.control.key].controlType) !== -1\n );\n }\n\n get requiresExtraSpacing() {\n // Chips\n if (this.form.controls[this.control.key].controlType === 'picker' && this.form.controls[this.control.key].multiple && this.hasValue) {\n return true;\n }\n return false;\n }\n\n executeInteraction(interaction, isInvokedOnInit = false) {\n if (interaction.script && Helpers.isFunction(interaction.script)) {\n setTimeout(() => {\n this.fieldInteractionApi.form = this.form;\n this.fieldInteractionApi.currentKey = this.control.key;\n this.fieldInteractionApi.isInvokedOnInit = isInvokedOnInit;\n try {\n interaction.script(this.fieldInteractionApi, this.control.key);\n } catch (err) {\n console.info('Field Interaction Error!', this.control.key);\n console.error(err);\n }\n });\n }\n }\n\n handleTyping(event: any) {\n this._focused = event && event.length;\n this._enteredText = event;\n }\n\n // imask has accepted a change in value\n handleAccept(value: string) {\n this.emitChange(value);\n }\n\n handleFocus(event: FocusEvent, field?: any) {\n this._focused = true;\n this.focusedField = field;\n if (!Helpers.isBlank(this.characterCountField) && this.characterCountField === field) {\n this.showCount = true;\n } else if (\n this.form.controls[this.control.key].controlType === 'address' &&\n field &&\n !Helpers.isEmpty(this.form.getRawValue()[this.control.key]) &&\n !Helpers.isBlank(this.form.getRawValue()[this.control.key][field])\n ) {\n this.handleAddressChange({ value: this.form.getRawValue()[this.control.key][field], field });\n }\n this._focusEmitter.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this._focused = false;\n this.focusedField = '';\n this.showCount = false;\n this._blurEmitter.emit(event);\n }\n\n clearValue() {\n this.form.controls[this.control.key].setValue(null);\n this.formattedValue = null;\n }\n\n handleTextAreaInput(event: KeyboardEvent & { target: HTMLInputElement }) {\n this.emitChange(event);\n this.restrictKeys(event);\n }\n\n checkMaxLength(value: string) {\n if (this.control && this.form.controls[this.control.key].maxlength) {\n this.itemCount = value.length;\n this.maxLengthMet = value.length >= this.form.controls[this.control.key].maxlength;\n }\n }\n\n modelChangeWithRaw(event) {\n if (Helpers.isEmpty(event.value)) {\n this._focused = false;\n this._enteredText = '';\n }\n if (this.form.controls[this.control.key].controlType === 'picker' && this.form.controls[this.control.key].maxlength) {\n this.itemCount = event.value ? event.value.length : 0;\n this.maxLengthMet = this.itemCount >= this.form.controls[this.control.key].maxlength ? true : false;\n }\n this.form.controls[this.control.key].rawValue = event.rawValue;\n this.change.emit(event.value);\n }\n\n modelChange(value) {\n if (Helpers.isEmpty(value)) {\n this._focused = false;\n this._enteredText = '';\n }\n this.change.emit(value);\n }\n\n validateNumberOnBlur(event: FocusEvent) {\n this._focused = false;\n this.focusedField = '';\n this.showCount = false;\n if (this.form.controls[this.control.key].subType === 'number') {\n this.validateIntegerInput();\n }\n this._blurEmitter.emit(event);\n }\n\n validateIntegerInput() {\n const NUMBERS_ONLY = /^[\\d\\-]\\d*$/;\n if (this.form.controls[this.control.key].value && !NUMBERS_ONLY.test(this.form.controls[this.control.key].value)) {\n this.form.controls[this.control.key].markAsInvalid(\n `${this.labels.invalidIntegerInput} ${this.form.controls[this.control.key].label.toUpperCase()}`,\n );\n }\n }\n\n restrictKeys(event: KeyboardEvent) {\n const NUMBERS_ONLY = /[0-9\\-]/;\n const NUMBERS_WITH_DECIMAL_DOT = /[0-9\\.\\-]/;\n const NUMBERS_WITH_DECIMAL_DOT_AND_COMMA = /[0-9\\.\\,\\-]/;\n const UTILITY_KEYS = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'];\n const key = event.key;\n\n // Numbers or numbers and decimal characters only\n if (this.form.controls[this.control.key].subType === 'number' && !(NUMBERS_ONLY.test(key) || UTILITY_KEYS.includes(key))) {\n event.preventDefault();\n } else if (\n ['currency', 'float', 'percentage'].includes(this.form.controls[this.control.key].subType) &&\n !(\n (this.decimalSeparator === '.' && NUMBERS_WITH_DECIMAL_DOT.test(key)) ||\n (this.decimalSeparator === ',' && NUMBERS_WITH_DECIMAL_DOT_AND_COMMA.test(key)) ||\n UTILITY_KEYS.includes(key)\n )\n ) {\n event.preventDefault();\n }\n // Max Length\n if (this.form.controls[this.control.key].maxlength && (event.target as HTMLInputElement).value.length >= this.form.controls[this.control.key].maxlength) {\n event.preventDefault();\n }\n }\n\n handlePercentChange(event: KeyboardEvent) {\n const value = (event.target as HTMLInputElement).value || (event as any).data;\n const percent = Helpers.isEmpty(value) || isNaN(value) ? value : Number((Number(value) / 100).toFixed(6).replace(/\\.?0*$/, ''));\n if (!Helpers.isEmpty(percent)) {\n this.change.emit(percent);\n this.form.controls[this.control.key].setValue(percent);\n } else {\n this.change.emit(null);\n this.form.controls[this.control.key].setValue(null);\n }\n }\n\n handleTabForPickers(event: any): void {\n if (this.active && event && event.key) {\n if (event.key === Key.Escape || event.key === Key.Tab) {\n this.toggleActive(event, false);\n }\n }\n }\n\n emitChange(event: Date | (Event & { target: HTMLInputElement }) | string) {\n this.change.emit(event);\n const stringValue = (event != null && typeof event === 'object' && 'target' in event) ? event?.target?.value : event;\n if (typeof stringValue === 'string') {\n this.checkMaxLength(stringValue);\n }\n }\n\n handleEdit(value) {\n this.edit.emit(value);\n }\n\n handleSave(value) {\n this.save.emit(value);\n }\n\n handleDelete(value) {\n this.delete.emit(value);\n }\n\n handleUpload(value) {\n this.upload.emit(value);\n }\n\n handleAddressChange(data) {\n if (\n data &&\n !Helpers.isBlank(data.value) &&\n data.field &&\n this.control.config[data.field] &&\n !Helpers.isEmpty(this.control.config[data.field].maxlength)\n ) {\n this.itemCount = data.value.length;\n this.characterCountField = data.field;\n this.maxLength = this.control.config[data.field].maxlength;\n this.showCount = true;\n if (this.maxLength === this.itemCount) {\n this.maxLengthMetErrorfields.push(data.field);\n } else {\n this.maxLengthMetErrorfields = this.maxLengthMetErrorfields.filter((field: string) => field !== data.field);\n }\n }\n }\n\n updateValidity(shouldEventBeEmitted): void {\n const emitEvent: boolean = shouldEventBeEmitted ? true : false;\n this.form.controls[this.control.key].updateValueAndValidity({ emitEvent });\n }\n}\n","// NG\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormArray, FormBuilder } from '@angular/forms';\nimport { Helpers } from 'novo-elements/utils';\nimport { FormUtils } from './utils/FormUtils';\nimport { BaseControl } from './controls/BaseControl';\nimport { NovoFormGroup } from './NovoFormGroup';\n\nexport interface NovoControlGroupAddConfig {\n label: string;\n}\n\nexport enum EditState {\n EDITING = 'editing',\n NOT_EDITING = 'notediting',\n}\n\nexport interface NovoControlGroupRowConfig {\n edit: boolean;\n remove: boolean;\n state: EditState;\n}\n\n@Component({\n selector: 'novo-control-group',\n templateUrl: './ControlGroup.html',\n styleUrls: ['./ControlGroup.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.novo-control-group-appearance-card]': \"appearance=='card'\",\n '[class.novo-control-group-appearance-none]': \"appearance=='none'\",\n },\n standalone: false\n})\nexport class NovoControlGroup implements AfterContentInit, OnChanges, OnDestroy {\n @Input()\n set appearance(value: 'none' | 'card') {\n this._appearance = value;\n }\n get appearance() {\n return this._appearance;\n }\n private _appearance: 'none' | 'card' = 'none';\n\n // Sets the display of the group to either be row (default) or vertical via flex-box\n @Input()\n set vertical(v: boolean) {\n this._vertical = coerceBooleanProperty(v);\n }\n get vertical() {\n return this._vertical;\n }\n private _vertical = false;\n @Input()\n set stacked(v: boolean) {\n this._stacked = coerceBooleanProperty(v);\n }\n get stacked() {\n return this._stacked;\n }\n private _stacked = false;\n\n // Hides/shows the add button for adding a new control\n @Input() add: NovoControlGroupAddConfig;\n // Hide/shows the remove button for removing a control\n @Input()\n set remove(v: boolean) {\n this._remove = coerceBooleanProperty(v);\n }\n get remove() {\n return this._remove;\n }\n private _remove = false;\n // Hide/shows the edit button for editing a control\n @Input()\n set edit(v: boolean) {\n this._edit = coerceBooleanProperty(v);\n }\n get edit() {\n return this._edit;\n }\n private _edit = false;\n // Allows the control to collapse or not\n @Input()\n set collapsible(v: boolean) {\n this._collapsible = coerceBooleanProperty(v);\n }\n get collapsible() {\n return this._collapsible;\n }\n private _collapsible = false;\n // Main form group\n @Input() form: NovoFormGroup;\n // Controls for each item in the control group\n @Input() controls: BaseControl[];\n // Key of the control group (on the main form)\n @Input() key: string;\n // Label of the control group\n @Input() label: string;\n // Description of the control group (only use with position:bottom Add button!)\n @Input() description: string;\n // Message to display if there are no controls\n @Input() emptyMessage: string;\n // Icon of the control group (can have bhi prefix or not)\n @Input()\n set icon(v: string) {\n this._icon = v && v.indexOf('bhi') !== -1 ? v : `bhi-${v}`;\n }\n get icon() {\n return this._icon;\n }\n private _icon: string;\n // Edit icon at the end of each row (no bhi- prefix)\n @Input() editIcon = 'edit';\n // Remove icon at the end of each row (no bhi- prefix)\n @Input() removeIcon = 'delete-o';\n // The initial value object, will create the form rows off of\n @Input() initialValue: {}[];\n // Callback to determine if the user can edit\n @Input() canEdit: Function;\n // Callback to determine if the user can delete\n @Input() canRemove: Function;\n // Optional callback for whether or not to remove the given row\n @Input() shouldRemove: (number) => Promise<boolean>;\n // Template for custom row rendering\n @Input() rowTemplate: TemplateRef<any>;\n // Template for custom column label rendering\n @Input() columnLabelTemplate: TemplateRef<any>;\n\n @Output() onRemove = new EventEmitter<{ value; index }>();\n @Output() onEdit = new EventEmitter<{ value; index }>();\n @Output() onAdd = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n controlLabels: { value: string; width: number; required: boolean; hidden?: boolean; key: string }[] = [];\n toggled = false;\n disabledArray: NovoControlGroupRowConfig[] = [];\n editState: EditState = EditState.NOT_EDITING;\n currentIndex = 0;\n\n constructor(private formUtils: FormUtils, private fb: FormBuilder, private ref: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n if (!this.key) {\n throw new Error('novo-control-group must have the [key] attribute provided!');\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const initialValueChange: SimpleChange = changes.initialValue;\n\n // If initial value changes, clear the controls\n if (initialValueChange && initialValueChange.currentValue !== initialValueChange.previousValue && !initialValueChange.firstChange) {\n this.clearControls();\n }\n\n // Check for array, add a control for each value\n if (this.initialValue && Array.isArray(this.initialValue)) {\n if (this.initialValue.length !== 0) {\n this.currentIndex = 0;\n this.initialValue.forEach((value) => this.addNewControl(value));\n }\n } else if (this.initialValue) {\n // If value is an object, just add one control\n this.addNewControl(this.initialValue);\n }\n // If we are horizontal, grab the labels to help with layout\n if (!this.vertical) {\n this.controlLabels = (this.controls || []).map((control: BaseControl) => {\n return {\n value: control.label,\n width: control.width,\n required: control.required,\n key: control.key,\n hidden: control.hidden,\n };\n });\n this.ref.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this.clearControls();\n }\n\n onChange() {\n this.change.emit(this);\n }\n\n onClickAdd() {\n this.addNewControl();\n }\n onClickCancel() {\n this.editState = EditState.NOT_EDITING;\n }\n onClickSave() {\n this.disabledArray[this.currentIndex - 1].state = EditState.NOT_EDITING;\n this.editState = EditState.NOT_EDITING;\n const control: FormArray = this.form.controls[this.key] as FormArray;\n if (control) {\n const fg: NovoFormGroup = control.at(this.currentIndex - 1) as NovoFormGroup;\n fg.disableAllControls();\n }\n }\n\n resetAddRemove() {\n this.disabledArray.forEach((item: NovoControlGroupRowConfig, idx: number) => {\n item.edit = this.checkCanEdit(idx);\n item.remove = this.checkCanRemove(idx);\n if (!item.edit) {\n item.state = EditState.NOT_EDITING;\n }\n });\n this.ref.markForCheck();\n }\n\n addNewControl(value?: {}) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n const nestedFormGroup: NovoFormGroup = this.buildNestedFormGroup(value);\n if (controlsArray) {\n controlsArray.push(nestedFormGroup);\n } else {\n this.form.addControl(this.key, this.fb.array([nestedFormGroup]));\n }\n this.disabledArray.push({\n state: EditState.EDITING,\n edit: true,\n remove: true,\n });\n this.resetAddRemove();\n if (!value) {\n this.onAdd.emit(nestedFormGroup);\n }\n this.currentIndex++;\n this.assignIndexes();\n // Ensure that field interaction changes for nested forms originating from outside the form will be reflected in the nested elements\n nestedFormGroup.fieldInteractionEvents.subscribe(this.onFieldInteractionEvent.bind(this));\n this.ref.markForCheck();\n }\n\n /**\n * Will remove the control, and optionally, if the event is to be publicized (emitEvent = true) and there is a\n * shouldRemove callback, then call the shouldRemove() callback to determine if the doRemoveControl should be called.\n */\n removeControl(index: number, emitEvent = true) {\n if (emitEvent && Helpers.isFunction(this.shouldRemove)) {\n this.shouldRemove(index).then((shouldRemove: boolean) => {\n if (shouldRemove) {\n this.doRemoveControl(index, emitEvent);\n }\n });\n } else {\n this.doRemoveControl(index, emitEvent);\n }\n }\n\n private doRemoveControl(index: number, emitEvent: boolean) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n const nestedFormGroup = controlsArray.at(index) as NovoFormGroup;\n nestedFormGroup.fieldInteractionEvents.unsubscribe();\n if (emitEvent) {\n this.onRemove.emit({ value: nestedFormGroup.getRawValue(), index });\n }\n controlsArray.removeAt(index);\n this.disabledArray = this.disabledArray.filter((value: NovoControlGroupRowConfig, idx: number) => idx !== index);\n this.resetAddRemove();\n this.currentIndex--;\n this.assignIndexes();\n this.ref.markForCheck();\n }\n\n editControl(index: number) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n const fg = controlsArray.at(index) as NovoFormGroup;\n fg.enableAllControls();\n this.onEdit.emit({ value: controlsArray.at(index).value, index });\n }\n\n toggle(event: MouseEvent) {\n Helpers.swallowEvent(event);\n if (this.collapsible) {\n this.toggled = !this.toggled;\n this.ref.markForCheck();\n }\n }\n\n private buildNestedFormGroup(value?: {}): NovoFormGroup {\n const newControls = this.getNewControls();\n if (value) {\n this.formUtils.setInitialValues(newControls, value);\n }\n return this.formUtils.toFormGroup(newControls);\n }\n\n private clearControls() {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n if (controlsArray) {\n for (let i: number = controlsArray.length - 1; i >= 0; i--) {\n this.removeControl(i, false);\n }\n this.currentIndex = 0;\n }\n }\n\n private checkCanEdit(index: number): boolean {\n if (this.canEdit) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n return this.canEdit(controlsArray.at(index).value, index);\n }\n return true;\n }\n\n private checkCanRemove(index: number): boolean {\n if (this.canRemove) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n if (controlsArray.at(index)) {\n return this.canRemove(controlsArray.at(index).value, index);\n }\n return true;\n }\n return true;\n }\n\n private getNewControls() {\n const ret: BaseControl[] = [];\n (this.controls || []).forEach((control: BaseControl) => {\n ret.push(new BaseControl(control.__type, control));\n });\n return ret;\n }\n\n private assignIndexes() {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n if (controlsArray) {\n for (let i: number = 0; i < controlsArray.length; i++) {\n const form = controlsArray.at(i) as NovoFormGroup;\n form.associations = { ...form.associations, index: i };\n }\n }\n }\n\n private onFieldInteractionEvent() {\n this.ref.markForCheck();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_stacked: BooleanInput;\n static ngAcceptInputType_vertical: BooleanInput;\n}\n","<h6 class=\"novo-section-header\" *ngIf=\"label\">\n <span (click)=\"toggle($event)\" [class.clickable]=\"collapsible\">\n <i *ngIf=\"icon && !collapsible\" [ngClass]=\"icon\" [attr.data-automation-id]=\"'novo-control-group-icon-' + key\"></i>\n <i *ngIf=\"collapsible\" class=\"bhi-next\" [class.toggled]=\"toggled\"\n [attr.data-automation-id]=\"'novo-control-group-collapse-' + key\"></i>\n <span [attr.data-automation-id]=\"'novo-control-group-label-' + key\">{{ label }}</span>\n </span>\n <label class=\"novo-control-group-description\" *ngIf=\"description\"\n [attr.data-automation-id]=\"'novo-control-group-description-' + key\">{{ description }}</label>\n</h6>\n<div class=\"novo-control-group-controls\" [class.vertical]=\"vertical\" [class.horizontal]=\"!vertical\"\n [class.hidden]=\"collapsible && !toggled\">\n\n <ng-template #defaultTemplate let-index=\"index\" let-form=\"form\" let-key=\"key\">\n <div class=\"novo-control-group-control\">\n <div *ngFor=\"let c of controls\" class=\"novo-control-container {{c.key}}\"\n [class.is-label]=\"c.controlType === 'read-only'\" [style.max-width.px]=\"c.width\">\n <novo-control (change)=\"onChange()\" [form]=\"(form?.controls)[key]['controls'][index]\" [control]=\"c\"\n [condensed]=\"!vertical || c.controlType === 'read-only'\"></novo-control>\n </div>\n <div class=\"novo-control-container edit last\" *ngIf=\"edit && !vertical\">\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].edit\" type=\"button\"\n *ngIf=\"edit && !vertical\" theme=\"icon\" [icon]=\"editIcon\"\n (click)=\"editControl(index)\" [attr.data-automation-id]=\"'novo-control-group-edit-' + key\" index=\"-1\">\n </novo-button>\n </div>\n <div class=\"novo-control-container remove last\" *ngIf=\"remove && !vertical\">\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].remove\" type=\"button\"\n *ngIf=\"remove && !vertical\" theme=\"icon\"\n [icon]=\"removeIcon\" (click)=\"removeControl(index)\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"\n index=\"-1\">\n </novo-button>\n </div>\n </div>\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].edit\" type=\"button\"\n *ngIf=\"edit && vertical\"\n theme=\"icon\" [icon]=\"editIcon\"\n (click)=\"editControl(index)\" [attr.data-automation-id]=\"'novo-control-group-edit-' + key\" index=\"-1\">\n </novo-button>\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].remove\" type=\"button\"\n *ngIf=\"remove && vertical\" theme=\"icon\"\n [icon]=\"removeIcon\" (click)=\"removeControl(index)\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"\n index=\"-1\">\n </novo-button>\n </ng-template>\n\n <ng-template #defaultColumnLabelTemplate let-form=\"form\" let-key=\"key\">\n <div *ngFor=\"let label of controlLabels\"\n class=\"novo-control-group-control-label {{ label.key }}\"\n [class.novo-control-group-control-hidden]=\"label.hidden\"\n [style.max-width.px]=\"label.width\" [class.column-required]=\"label.required\">\n <span [attr.data-automation-id]=\"'novo-control-group-label-' + label.value\">{{ label.value }}</span>\n </div>\n <div class=\"novo-control-group-control-label edit last\" *ngIf=\"edit\"\n [attr.data-automation-id]=\"'novo-control-group-edit-' + key\"></div>\n <div class=\"novo-control-group-control-label remove last\" *ngIf=\"remove\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"></div>\n </ng-template>\n\n <ng-container *ngIf=\"!vertical && (form?.controls)[key] && (form?.controls)[key]['controls'].length !== 0\">\n <div class=\"novo-control-group-labels\"\n *ngIf=\"!vertical && (form?.controls)[key] && (form?.controls)[key]['controls'].length !== 0\">\n <ng-template [ngTemplateOutlet]=\"columnLabelTemplate || defaultColumnLabelTemplate\"\n [ngTemplateOutletContext]=\"{ form: form, key: key, controlLabels: controlLabels }\">\n </ng-template>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(form?.controls)[key]\">\n <div class=\"novo-control-group-row\"\n *ngFor=\"let control of (form?.controls)[key]['controls']; let index = index\">\n <ng-template [ngTemplateOutlet]=\"rowTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ form: form, formGroup: control, index: index, key: key, controls: controls }\">\n </ng-template>\n </div>\n </ng-container>\n\n <div class=\"novo-control-group-empty\"\n *ngIf=\"(form?.controls)[key] && (form?.controls)[key]['controls'].length === 0\"\n [attr.data-automation-id]=\"'novo-control-group-empty-' + key\">\n {{ emptyMessage }}\n </div>\n\n <div *ngIf=\"add\" class=\"novo-control-group-footer\">\n <novo-button type=\"button\" theme=\"dialogue\" icon=\"add-thin\" side=\"left\" (click)=\"onClickAdd()\"\n [attr.data-automation-id]=\"'novo-control-group-bottom-add-' + key\" index=\"-1\">\n {{ add?.label }}\n </novo-button>\n </div>\n</div>\n","// NG2\nimport { Component, DoCheck, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { COUNTRIES, findByCountryId, getStates, Helpers } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst ADDRESS_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoAddressElement),\n multi: true,\n};\n\nexport interface NovoAddressSubfieldConfig {\n label: string;\n required: boolean;\n maxlength: number;\n pickerConfig?: any;\n hidden: boolean;\n updated?: boolean;\n readOnly?: boolean;\n}\n\nexport interface NovoAddressConfig {\n required?: boolean;\n readOnly?: boolean;\n address1?: NovoAddressSubfieldConfig;\n address2?: NovoAddressSubfieldConfig;\n city?: NovoAddressSubfieldConfig;\n state?: NovoAddressSubfieldConfig;\n zip?: NovoAddressSubfieldConfig;\n countryID?: NovoAddressSubfieldConfig;\n}\n\n@Component({\n selector: 'novo-address',\n providers: [ADDRESS_VALUE_ACCESSOR],\n template: `\n <span\n *ngIf=\"!config?.address1?.hidden\"\n class=\"street-address\"\n [class.invalid]=\"invalid.address1\"\n [class.focus]=\"focused.address1\"\n [class.disabled]=\"disabled.address1\"\n >\n <i\n *ngIf=\"config.address1.required\"\n class=\"required-indicator address1\"\n [ngClass]=\"{ 'bhi-circle': !valid.address1, 'bhi-check': valid.address1 }\"\n >\n </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.address1\"\n type=\"text\"\n id=\"address1\"\n name=\"address1\"\n [placeholder]=\"config.address1.label\"\n [maxlength]=\"config?.address1?.maxlength\"\n autocomplete=\"shipping street-address address-line-1\"\n [(ngModel)]=\"model.address1\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'address1')\"\n (blur)=\"isBlurred($event, 'address1')\"\n (input)=\"onInput($event, 'address1')\"\n [disabled]=\"disabled.address1\"\n />\n </span>\n <span\n *ngIf=\"!config?.address2?.hidden\"\n class=\"apt suite\"\n [class.invalid]=\"invalid.address2\"\n [class.focus]=\"focused.address2\"\n [class.disabled]=\"disabled.address2\"\n >\n <i\n *ngIf=\"config.address2.required\"\n class=\"required-indicator address2\"\n [ngClass]=\"{ 'bhi-circle': !valid.address2, 'bhi-check': valid.address2 }\"\n >\n </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.address2\"\n type=\"text\"\n id=\"address2\"\n name=\"address2\"\n [placeholder]=\"config.address2.label\"\n [maxlength]=\"config?.address2?.maxlength\"\n autocomplete=\"shipping address-line-2\"\n [(ngModel)]=\"model.address2\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'address2')\"\n (blur)=\"isBlurred($event, 'address2')\"\n (input)=\"onInput($event, 'address2')\"\n [disabled]=\"disabled.address2\"\n />\n </span>\n <span\n *ngIf=\"!config?.city?.hidden\"\n class=\"city locality\"\n [class.invalid]=\"invalid.city\"\n [class.focus]=\"focused.city\"\n [class.disabled]=\"disabled.city\"\n >\n <i *ngIf=\"config.city.required\" class=\"required-indicator\" [ngClass]=\"{ 'bhi-circle': !valid.city, 'bhi-check': valid.city }\"> </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.city\"\n type=\"text\"\n id=\"city\"\n name=\"city\"\n [placeholder]=\"config.city.label\"\n autocomplete=\"shipping city locality\"\n [maxlength]=\"config?.city?.maxlength\"\n [(ngModel)]=\"model.city\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'city')\"\n (blur)=\"isBlurred($event, 'city')\"\n (input)=\"onInput($event, 'city')\"\n [disabled]=\"disabled.city\"\n />\n </span>\n <span\n *ngIf=\"!config?.state?.hidden\"\n class=\"state region\"\n [class.invalid]=\"invalid.state\"\n [class.focus]=\"focused.state\"\n [class.disabled]=\"disabled.state\"\n [tooltip]=\"tooltip.state\"\n >\n <i *ngIf=\"config.state.required\" class=\"required-indicator\" [ngClass]=\"{ 'bhi-circle': !valid.state, 'bhi-check': valid.state }\"> </i>\n <novo-picker\n [config]=\"config?.state?.pickerConfig\"\n [placeholder]=\"config?.state?.label\"\n (changed)=\"onStateChange($event)\"\n autocomplete=\"shipping region\"\n [(ngModel)]=\"model.state\"\n [disablePickerInput]=\"disabled.state\"\n ></novo-picker>\n </span>\n <span\n *ngIf=\"!config?.zip?.hidden\"\n class=\"zip postal-code\"\n [class.invalid]=\"invalid.zip\"\n [class.focus]=\"focused.zip\"\n [class.disabled]=\"disabled.zip\"\n >\n <i *ngIf=\"config.zip.required\" class=\"required-indicator\" [ngClass]=\"{ 'bhi-circle': !valid.zip, 'bhi-check': valid.zip }\"> </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.zip\"\n type=\"text\"\n id=\"zip\"\n name=\"zip\"\n [placeholder]=\"config.zip.label\"\n autocomplete=\"shipping postal-code\"\n [maxlength]=\"config?.zip?.maxlength\"\n [(ngModel)]=\"model.zip\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'zip')\"\n (blur)=\"isBlurred($event, 'zip')\"\n (input)=\"onInput($event, 'zip')\"\n [disabled]=\"disabled.zip\"\n />\n </span>\n <span\n *ngIf=\"!config?.countryID?.hidden\"\n class=\"country-name\"\n [class.invalid]=\"invalid.countryID\"\n [class.focus]=\"focused.countryID\"\n [class.disabled]=\"disabled.countryID\"\n >\n <i\n *ngIf=\"config.countryID.required\"\n class=\"required-indicator\"\n [ngClass]=\"{ 'bhi-circle': !valid.countryID, 'bhi-check': valid.countryID }\"\n >\n </i>\n <novo-picker\n [config]=\"config?.countryID?.pickerConfig\"\n [placeholder]=\"config.countryID.label\"\n (changed)=\"onCountryChange($event)\"\n autocomplete=\"shipping country\"\n [(ngModel)]=\"model.countryID\"\n [disablePickerInput]=\"disabled.countryID\"\n ></novo-picker>\n </span>\n `,\n styleUrls: ['./Address.scss'],\n standalone: false\n})\nexport class NovoAddressElement implements ControlValueAccessor, OnInit, DoCheck {\n @Input()\n config: NovoAddressConfig;\n private _readOnly = false;\n @Input()\n set readOnly(readOnly: boolean) {\n this._readOnly = readOnly;\n this.fieldList.forEach((field: string) => {\n this.disabled[field] = this._readOnly;\n });\n if (this.model) {\n this.updateStates();\n }\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n private previousRequiredState: Record<string, boolean> = {};\n states: Array<any> = [];\n fieldList: Array<string> = ['address1', 'address2', 'city', 'state', 'zip', 'countryID'];\n model: any;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n focused: any = {};\n invalid: any = {};\n disabled: any = {};\n invalidMaxlength: any = {};\n valid: any = {};\n stateOptions: any;\n tooltip: any = {};\n initComplete = false;\n @Output()\n change: EventEmitter<any> = new EventEmitter();\n @Output()\n focus: EventEmitter<any> = new EventEmitter();\n @Output()\n blur: EventEmitter<any> = new EventEmitter();\n @Output()\n validityChange: EventEmitter<any> = new EventEmitter();\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n if (!this.config) {\n this.config = {};\n }\n this.initConfig();\n if (this.model) {\n this.writeValue(this.model);\n this.updateControl();\n } else if (!this.model) {\n this.model = {};\n }\n if (Helpers.isBlank(this.model.countryID)) {\n this.updateStates();\n }\n }\n\n initConfig(): void {\n this.fieldList.forEach((field: string) => {\n if (!this.config.hasOwnProperty(field)) {\n this.config[field] = {\n hidden: true,\n };\n }\n if (!this.config[field].hasOwnProperty('label')) {\n this.config[field].label = this.labels[field];\n }\n if (this.config.required) {\n this.config[field].required = true;\n }\n if (this.config[field].readOnly || this.config.readOnly) {\n this.config[field].readOnly = true;\n this.disabled[field] = true;\n }\n if (field === 'countryID') {\n if (!this.config[field].pickerConfig) {\n this.config.countryID.pickerConfig = this.getDefaultCountryConfig();\n }\n this.config[field].pickerConfig.defaultOptions = this.config.countryID.pickerConfig.options;\n }\n if (field === 'state') {\n if (!this.config[field].pickerConfig) {\n this.config.state.pickerConfig = this.getDefaultStateConfig();\n this.config[field].pickerConfig.defaultOptions = this.config[field].pickerConfig.options;\n }\n this.stateOptions = this.config[field].pickerConfig.options;\n this.config[field].pickerConfig.options = (query = '') => {\n return this.stateOptions(query, this.model.countryID);\n };\n this.config[field].pickerConfig.defaultOptions = this.stateOptions;\n }\n });\n\n this.fieldList.forEach((field: string) => {\n this.previousRequiredState[field] = this.config?.[field]?.required;\n });\n\n this.initComplete = true;\n }\n\n ngDoCheck(): void {\n if (this.initComplete && this.config) {\n this.fieldList.forEach((field: string) => {\n const prevRequired = this.previousRequiredState[field];\n const currRequired = this.config?.[field]?.required;\n\n if (prevRequired !== currRequired) {\n this.isValid(field);\n this.isInvalid(field);\n this.previousRequiredState[field] = currRequired;\n }\n });\n }\n }\n\n isValid(field: string): void {\n let valid = true;\n if (\n ((this.config[field].required && (Helpers.isBlank(this.model[field]) || Helpers.isEmpty(this.model[field]))) ||\n !this.config[field].required) &&\n !(field === 'countryID' && this.config[field].required && !Helpers.isBlank(this.model.countryID)) &&\n !(\n field === 'state' &&\n this.config[field].required &&\n (!Helpers.isEmpty(this.model.state) ||\n ((Helpers.isBlank(this.model.state) || Helpers.isEmpty(this.model.state)) &&\n !Helpers.isBlank(this.model.countryName) &&\n this.config.state.pickerConfig &&\n this.config.state.pickerConfig.defaultOptions &&\n this.config.state.pickerConfig.defaultOptions.length === 0))\n )\n ) {\n valid = false;\n } else if (\n !Helpers.isEmpty(this.model[field]) &&\n !Helpers.isBlank(this.config[field].maxlength) &&\n this.config[field].maxlength < this.model[field].length\n ) {\n valid = false;\n }\n this.valid[field] = valid;\n }\n\n isInvalid(field: string): void {\n let invalid = false;\n let invalidMaxlength = false;\n if (\n (field !== 'countryID' &&\n field !== 'state' &&\n this.config[field]?.required &&\n Helpers.isEmpty(this.model[field]) &&\n !Helpers.isBlank(this.model[field])) ||\n (field === 'countryID' && this.config[field]?.required && Helpers.isBlank(this.model.countryName) && this.config[field]?.updated) ||\n (field === 'state' &&\n this.config[field]?.required &&\n (Helpers.isBlank(this.model.state) || Helpers.isEmpty(this.model.state)) &&\n !Helpers.isBlank(this.model.countryID) &&\n this.config[field]?.updated &&\n this.config.state.pickerConfig &&\n this.config.state.pickerConfig.defaultOptions &&\n this.config.state.pickerConfig.defaultOptions.length > 0)\n ) {\n invalid = true;\n } else if (\n !Helpers.isEmpty(this.model[field]) &&\n !Helpers.isBlank(this.config[field]?.maxlength) &&\n this.config[field]?.maxlength < this.model[field].length\n ) {\n invalid = true;\n invalidMaxlength = true;\n }\n this.invalid[field] = invalid;\n this.invalidMaxlength[field] = invalidMaxlength;\n }\n\n onInput(event: Event, field: string): void {\n this.isInvalid(field);\n this.isValid(field);\n if (event) {\n this.change.emit({ value: this.model[field], field });\n }\n }\n\n isFocused(event: Event, field: string): void {\n this.focused[field] = true;\n this.focus.emit({ event, field });\n }\n\n isBlurred(event: Event, field: string): void {\n this.focused[field] = false;\n this.blur.emit({ event, field });\n }\n\n onCountryChange(evt) {\n const country: any = evt && evt.rawValue ? evt.rawValue : null;\n let field: any;\n let statesUpdatable = false;\n this.config.countryID.updated = true;\n if (this.config.countryID.pickerConfig) {\n field = this.config.countryID.pickerConfig.field;\n }\n if (country && field && !Helpers.isBlank(country[field]) && this.model.countryID !== country[field]) {\n this.model.countryID = country[field];\n this.model.countryName = Helpers.interpolate(this.config.countryID.pickerConfig.format, country);\n this.disabled.state = false;\n this.tooltip.state = undefined;\n statesUpdatable = true;\n } else if (Helpers.isBlank(country) || Helpers.isBlank(country[field])) {\n this.model.countryID = undefined;\n this.model.countryName = undefined;\n this.disabled.state = true;\n this.tooltip.state = this.labels.selectCountryFirst;\n this.invalid.state = false;\n statesUpdatable = true;\n }\n\n // Update state\n if (statesUpdatable) {\n this.model.state = undefined;\n this.updateStates();\n }\n this.updateControl();\n this.onInput(null, 'countryID');\n this.onInput(null, 'state');\n }\n\n onStateChange(evt) {\n const state: any = evt && evt.value ? evt.value : null;\n this.config.state.updated = true;\n this.model.state = state;\n this.updateControl();\n this.onInput(null, 'state');\n }\n\n setStateLabel(model: any) {\n const state: string = model.state;\n if (!Helpers.isBlank(state)) {\n if (this.config.state.required) {\n this.valid.state = true;\n }\n this.model.state = state;\n } else {\n this.model.state = undefined;\n if (this.config.state.required) {\n this.valid.state = false;\n }\n }\n }\n\n updateStates() {\n if (this.config.state.pickerConfig.options && !Helpers.isBlank(this.model.countryID)) {\n this.config.state.pickerConfig.options = (query = '') => {\n return this.stateOptions(query, this.model.countryID);\n };\n this.stateOptions('', this.model.countryID).then((results) => {\n this.config.state.pickerConfig.defaultOptions = results;\n if (results.length) {\n this.tooltip.state = undefined;\n this.disabled.state = this._readOnly;\n this.setStateLabel(this.model);\n } else {\n this.disabled.state = true;\n this.tooltip.state = this.labels.noStatesForCountry;\n if (this.config.state.required) {\n this.valid.state = true;\n }\n }\n this.validityChange.emit();\n this.onInput(null, 'state');\n });\n } else {\n this.config.state.pickerConfig.defaultOptions = [];\n this.disabled.state = true;\n this.tooltip.state = this.labels.selectCountryFirst;\n if (this.config.state.required) {\n this.valid.state = false;\n }\n }\n }\n\n getStateOptions(filter = '', countryID: number) {\n if (countryID) {\n const country = findByCountryId(countryID);\n const states = getStates(country.name);\n if (filter) {\n return states.filter((name) => new RegExp(`${filter}`, 'gi').test(name));\n }\n return states;\n } else {\n return [];\n }\n }\n\n updateControl() {\n this.onModelChange(this.model);\n this.onInput(null, 'countryID');\n this.onInput(null, 'state');\n }\n\n writeValue(model) {\n let loadingCountries = false;\n if (model) {\n let countryName;\n if (model.countryName && model.countryID) {\n countryName = model.countryName;\n } else if (model.countryID) {\n if (this.config.countryID.pickerConfig && this.config.countryID.pickerConfig.getLabels) {\n if (Helpers.isFunction(this.config.countryID.pickerConfig.getLabels)) {\n const promise = this.config.countryID.pickerConfig.getLabels(model.countryID);\n loadingCountries = true;\n if (promise.then) {\n promise.then((result) => {\n loadingCountries = false;\n countryName = Helpers.interpolateWithFallback(this.config.countryID.pickerConfig.format, result);\n this.model = Object.assign(model, { countryName });\n this.updateStates();\n });\n }\n }\n }\n }\n if (countryName) {\n countryName = countryName.trim();\n model.state = model.state || '';\n this.model = Object.assign(model, { countryName });\n } else {\n this.model = model;\n }\n if (!loadingCountries && !Helpers.isBlank(this.model.countryID)) {\n this.updateStates();\n }\n }\n this.fieldList.forEach((field: string) => {\n this.onInput(null, field);\n });\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n private getDefaultStateConfig() {\n return {\n field: 'value',\n format: '$label',\n options: (query = '', countryID) => {\n return Promise.resolve(this.getStateOptions(query, countryID));\n },\n getLabels: (state: string) => {\n return Promise.resolve(state);\n },\n };\n }\n\n private getDefaultCountryConfig() {\n return {\n field: 'value',\n format: '$label',\n options: (query = '') => {\n return new Promise((resolve) => {\n let countries = COUNTRIES;\n if (query) {\n countries = countries.filter((country) => new RegExp(`${query}`, 'gi').test(country.name));\n }\n return resolve(countries.map((country) => ({ value: country.id, label: country.name })));\n });\n },\n getLabels: (countryID) => {\n return new Promise((resolve: any) => {\n const country: any = findByCountryId(countryID);\n if (country) {\n resolve({ value: country.id, label: country.name });\n } else {\n resolve('');\n }\n });\n },\n };\n }\n}\n","export class NovoFile {\n name: string = '';\n file: any;\n type: any;\n contentType: string = '';\n lastModified: number = 0;\n size: number = 0;\n loaded: boolean = false;\n fileContents: string;\n dataURL: string;\n reader: FileReader = new FileReader();\n readPromise: Function;\n\n constructor(file) {\n this.name = `${encodeURIComponent(file.name || '')}`;\n this.contentType = file.type;\n this.lastModified = file.lastModified;\n this.size = file.size;\n this.file = file;\n this.reader.onload = (event: any) => {\n this.fileContents = event.target.result.split(',')[1];\n this.dataURL = event.target.result;\n this.loaded = true;\n if (this.readPromise) {\n this.readPromise(this);\n }\n };\n }\n\n read() {\n return new Promise((resolve) => {\n this.readPromise = resolve;\n // when the file is read it triggers the onload event above.\n this.reader.readAsDataURL(this.file);\n });\n }\n\n toJSON() {\n return {\n name: this.name,\n contentType: this.type,\n lastModified: this.lastModified,\n size: this.size,\n fileContents: this.fileContents,\n };\n }\n}\n","// NG2\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { CanUpdateErrorStateCtor, ErrorStateMatcher, mixinErrorState } from 'novo-elements/elements/common';\nimport { NovoFieldControl } from 'novo-elements/elements/field';\nimport { GlobalRef, NovoLabelService } from 'novo-elements/services';\nimport { NovoFile } from './extras/file/File';\n\nconst LAYOUT_DEFAULTS = { order: 'default', download: true, removable: true, labelStyle: 'default', draggable: false };\n// make file-input ids unique\nlet nextId = 0;\n\nclass NovoFileInputBase {\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl,\n ) {}\n}\nconst NovoFileInputMixins: CanUpdateErrorStateCtor & typeof NovoFileInputBase = mixinErrorState(NovoFileInputBase);\n\n@Component({\n selector: 'novo-file-input',\n providers: [{ provide: NovoFieldControl, useExisting: NovoFileInputElement }],\n templateUrl: './FileInput.html',\n styleUrls: ['./FileInput.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class NovoFileInputElement extends NovoFileInputMixins implements NovoFieldControl<any>, ControlValueAccessor, OnInit {\n private _uniqueId: string = `novo-file-input-${++nextId}`;\n /** The aria-describedby attribute on the chip list for improved a11y. */\n _ariaDescribedby: string;\n /** Tab index for the chip list. */\n _tabIndex = 0;\n /** User defined tab index. */\n _userTabIndex: number | null = null;\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<NovoFileInputElement>;\n\n readonly controlType: string = 'file-input';\n /** @docs-private Implemented as part of NovoFieldControl. */\n lastKeyValue: string = null;\n /** @docs-private Implemented as part of NovoFieldControl.*/\n lastCaretPosition: number | null;\n\n @Input() id: string = this._uniqueId;\n @Input() tabindex: number = 0;\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n // ----------\n @ViewChild('fileInput', { static: true })\n fileInput: TemplateRef<any>;\n @ViewChild('fileOutput', { static: true })\n fileOutput: TemplateRef<any>;\n @ViewChild('container', { read: ViewContainerRef, static: true })\n container: ViewContainerRef;\n @ViewChild('inputElement') inputElement: ElementRef<HTMLInputElement>;\n\n @Input()\n multiple: boolean = false;\n\n @Input()\n layoutOptions: {\n order?: string;\n download?: boolean;\n edit?: boolean;\n labelStyle?: string;\n draggable?: boolean;\n customActions?: boolean;\n removable?: boolean;\n customValidation?: { action: string; fn: Function }[];\n removableWhenNew?: boolean;\n };\n @Input()\n value: Array<any> = [];\n @Input()\n dataFeatureId: string;\n\n @Output()\n edit: EventEmitter<any> = new EventEmitter();\n @Output()\n save: EventEmitter<any> = new EventEmitter();\n @Output()\n delete: EventEmitter<any> = new EventEmitter();\n @Output()\n upload: EventEmitter<any> = new EventEmitter();\n\n files: NovoFile[] = [];\n model: any;\n active: boolean = false;\n commands: any;\n visible: boolean;\n target: any;\n fileOutputBag: string;\n\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n\n @Input()\n get name(): string {\n return this._name;\n }\n\n set name(value: string) {\n this._name = value;\n }\n\n @HostBinding('class.disabled')\n @Input()\n get disabled(): boolean {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n /**\n * Implemented as part of NovoFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n /** Implemented as part of NovoFieldControl. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n protected _name: string = this._uniqueId;\n protected _value: boolean = false;\n protected _required: boolean = false;\n protected _disabled: boolean = false;\n protected _placeholder: string;\n\n constructor(\n public labels: NovoLabelService,\n private globalRef: GlobalRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Optional() @Self() _ngControl: NgControl,\n ) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, _ngControl);\n if (_ngControl) {\n _ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.updateLayout();\n this.setInitialFileList();\n this.dataFeatureId = this.dataFeatureId ? this.dataFeatureId : this.name;\n }\n\n updateLayout() {\n this.layoutOptions = Object.assign({}, LAYOUT_DEFAULTS, this.layoutOptions);\n this.insertTemplatesBasedOnLayout();\n }\n\n insertTemplatesBasedOnLayout() {\n let order;\n switch (this.layoutOptions.order) {\n case 'displayFilesBelow':\n order = ['fileInput', 'fileOutput'];\n break;\n default:\n order = ['fileOutput', 'fileInput'];\n }\n order.forEach((template) => {\n this.container.createEmbeddedView(this[template], 0);\n });\n return order;\n }\n\n get outputFileDraggingDisabled(): boolean {\n const draggable = this.layoutOptions?.draggable;\n return draggable != null && !draggable;\n }\n\n private setInitialFileList() {\n if (this.value) {\n this.files = this.value;\n }\n }\n\n @HostListener('dragenter', ['$event'])\n dragEnterHandler(event) {\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n this.target = event.target;\n this.active = true;\n }\n\n @HostListener('dragleave', ['$event'])\n dragLeaveHandler(event) {\n event.preventDefault();\n if (this.target === event.target) {\n this.active = false;\n }\n }\n\n @HostListener('dragover', ['$event'])\n dragOverHandler(event) {\n event.preventDefault();\n // no-op\n }\n\n @HostListener('drop', ['$event'])\n dropHandler(event) {\n event.preventDefault();\n this.visible = false;\n if (event.dataTransfer.types[0] !== 'Files') {\n return;\n }\n const options: any = this.layoutOptions;\n const filelist = Array.from(event.dataTransfer.files);\n if (options.customActions) {\n this.upload.emit(this.multiple ? filelist : [filelist[0]]);\n } else {\n this.process(this.multiple ? filelist : [filelist[0]]);\n }\n this.active = false;\n }\n\n dropOutputItem(event: CdkDragDrop<NovoFile[]>) {\n moveItemInArray(this.files, event.previousIndex, event.currentIndex);\n }\n\n writeValue(model: any): void {\n this.model = model;\n // If model is cleared programmatically (E.g. form.patchValue({file: undefined})), empty file list.\n this.files = !model ? [] : this.files;\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n check(event) {\n this.process(Array.from(event.target.files));\n // After processing file upload, clear input element value. Allows for delete and upload of same file.\n event.target.value = '';\n }\n\n validate(files): boolean {\n let passedValidation = true;\n if (this.layoutOptions.customValidation) {\n this.layoutOptions.customValidation\n .filter((validation) => validation.action === 'upload')\n .forEach((uploadValidation) => {\n passedValidation = uploadValidation.fn(files) && passedValidation;\n });\n }\n return passedValidation;\n }\n\n private process(filelist) {\n if (this.validate(filelist)) {\n Promise.all(filelist.map((file) => this.readFile(file))).then((files) => {\n if (this.multiple) {\n this.files.push(...files);\n } else {\n this.files = files;\n }\n this.model = this.files;\n this.onModelChange(this.model);\n });\n }\n }\n\n download(file) {\n // Using an injected instance of window to make sure that unit tests do not open a new window, even accidentally\n this.globalRef.nativeWindow.open(file.dataURL, '_blank');\n }\n\n remove(file) {\n this.files.splice(\n this.files.findIndex((f) => f.name === file.name && f.size === file.size),\n 1,\n );\n this.model = this.files;\n this.onModelChange(this.model);\n }\n\n private readFile(file) {\n return new NovoFile(file).read();\n }\n\n customEdit(file) {\n this.edit.emit(file);\n }\n\n customSave(file) {\n this.save.emit(file);\n }\n\n customDelete(file) {\n this.delete.emit(file);\n }\n\n customCheck(event) {\n this.upload.emit(event);\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n /** Whether any radio buttons has focus. */\n get focused(): boolean {\n // todo: implement this.\n return false;\n }\n\n /** Implemented as part of NovoFieldControl. */\n get empty(): boolean {\n return this.value === null;\n }\n\n /** Implemented as part of NovoFieldControl. */\n get shouldLabelFloat(): boolean {\n return !this.empty || this.focused;\n }\n\n /** Implemented as part of NovoFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of NovoFieldControl. */\n onContainerClick(event: MouseEvent) {\n this.focus();\n }\n\n /**\n * Focuses the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled) {\n return;\n }\n // TODO\n }\n}\n","<div #container></div>\n<ng-template #fileInput>\n <div class=\"file-input-group\" [class.disabled]=\"disabled\" [class.active]=\"active\">\n <input\n #inputElement\n *ngIf=\"!layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"check($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <input\n #inputElement\n *ngIf=\"layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"customCheck($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <section [ngSwitch]=\"layoutOptions.labelStyle\">\n <label *ngSwitchCase=\"'no-box'\" [attr.for]=\"name\" class=\"no-box\">\n <div>\n <i class=\"bhi-dropzone\"></i>{{ placeholder || labels.chooseAFile }} {{ labels.or }}\n <strong class=\"link\">{{ labels.clickToBrowse }}</strong>\n </div>\n </label>\n <label *ngSwitchDefault [attr.for]=\"name\" class=\"boxed\">\n <span>{{ placeholder || labels.chooseAFile }}</span>\n <small\n >{{ labels.or }} <strong class=\"link\">{{ labels.clickToBrowse }}</strong></small\n >\n </label>\n </section>\n </div>\n</ng-template>\n<ng-template #fileOutput>\n <div class=\"file-output-group\" cdkDropList [cdkDropListDisabled]=\"outputFileDraggingDisabled\" (cdkDropListDropped)=\"dropOutputItem($event)\">\n <div class=\"file-item\" cdkDrag *ngFor=\"let file of files\" [class.disabled]=\"disabled\">\n <i *ngIf=\"layoutOptions.draggable\" class=\"bhi-move\"></i>\n <label *ngIf=\"file.link\"\n ><span\n ><a href=\"{{ file.link }}\" target=\"_blank\">{{ file.name | decodeURI }}</a></span\n ><span *ngIf=\"file.description\">||</span><span>{{ file.description }}</span></label\n >\n <label *ngIf=\"!file.link\">{{ file.name | decodeURI }}</label>\n <div class=\"actions\" [attr.data-automation-id]=\"'file-actions'\" *ngIf=\"file.loaded\">\n <div *ngIf=\"!layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"download(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled && (layoutOptions.removable || (!layoutOptions.removable && layoutOptions.removableWhenNew && !file.link))\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"remove(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n <div *ngIf=\"layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.edit && !disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"edit\"\n (click)=\"customEdit(file)\"\n [attr.data-automation-id]=\"'file-edit'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"customSave(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"customDelete(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n </div>\n <novo-loading *ngIf=\"!file.loaded\"></novo-loading>\n </div>\n </div>\n</ng-template>","import { AfterViewInit, Component, QueryList, ViewChildren } from '@angular/core';\nimport { NovoTemplate } from 'novo-elements/elements/common';\nimport { NovoTemplateService } from 'novo-elements/services';\n@Component({\n selector: 'novo-control-templates',\n template: `\n <!---Readonly--->\n <ng-template novoTemplate=\"read-only\" let-form=\"form\" let-control>\n <div>{{ form.getRawValue()[control.key] }}</div>\n </ng-template>\n <!--Textbox--->\n <ng-template novoTemplate=\"textbox\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container novo-control-input-with-label\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <input\n *ngIf=\"control?.type !== 'number' && control?.textMaskEnabled\"\n [imask]=\"control.maskOptions\"\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (accept)=\"methods.handleAccept($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n autocomplete\n />\n <input\n *ngIf=\"control?.type !== 'number' && !control?.textMaskEnabled\"\n [class.maxlength-error]=\"errors?.maxlength\"\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (input)=\"methods.emitChange($event)\"\n [maxlength]=\"control?.maxlength\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n autocomplete\n />\n <input\n *ngIf=\"control?.type === 'number' && control?.subType !== 'percentage'\"\n [class.maxlength-error]=\"errors?.maxlength\"\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (keydown)=\"methods.restrictKeys($event)\"\n (input)=\"methods.emitChange($event)\"\n [maxlength]=\"control?.maxlength\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n step=\"any\"\n (mousewheel)=\"numberInput.blur()\"\n #numberInput\n />\n <!-- the percentage input does not use formControlName like a normal reactive input because instead of\n setting the floating point value directly, it is multiplied by 100 into a percentage value -->\n <input\n *ngIf=\"control?.type === 'number' && control?.subType === 'percentage'\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (keydown)=\"methods.restrictKeys($event)\"\n [value]=\"control?.percentValue\"\n [disabled]=\"control?.readOnly\"\n (input)=\"methods.handlePercentChange($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n step=\"any\"\n (mousewheel)=\"percentInput.blur()\"\n #percentInput\n />\n <label class=\"input-label\" *ngIf=\"control?.subType === 'currency'\">{{ control.currencyFormat }}</label>\n <label class=\"input-label\" *ngIf=\"control?.subType === 'percentage'\">%</label>\n </div>\n </ng-template>\n\n <!--Textarea--->\n <ng-template novoTemplate=\"text-area\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n class=\"textarea-container\"\n [formGroup]=\"form\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <textarea\n [class.maxlength-error]=\"errors?.maxlength\"\n [name]=\"control.key\"\n [attr.id]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [formControlName]=\"control.key\"\n autosize\n (input)=\"methods.handleTextAreaInput($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [maxlength]=\"control?.maxlength\"\n ></textarea>\n </div>\n </ng-template>\n\n <!--Editor-->\n <ng-template novoTemplate=\"editor\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-editor\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [startupFocus]=\"control.startupFocus\"\n [minimal]=\"control.minimal\"\n [fileBrowserImageUploadUrl]=\"control.fileBrowserImageUploadUrl\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [config]=\"control.config\"\n ></novo-editor>\n </div>\n </ng-template>\n\n <!--AceEditor-->\n <ng-template novoTemplate=\"ace-editor\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-ace-editor\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n ></novo-ace-editor>\n </div>\n </ng-template>\n\n <!--CodeEditor-->\n <ng-template novoTemplate=\"code-editor\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-code-editor\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n ></novo-code-editor>\n </div>\n </ng-template>\n\n <!--HTML5 Select-->\n <ng-template novoTemplate=\"native-select\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <select\n [id]=\"control.key\"\n [formControlName]=\"control.key\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <option *ngIf=\"control.placeholder\" value=\"\" disabled selected hidden>{{ control.placeholder }}</option>\n <option *ngFor=\"let opt of control.options\" [value]=\"opt.key\">{{ opt.value }}</option>\n </select>\n </div>\n </ng-template>\n\n <!--File-->\n <ng-template novoTemplate=\"file\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-file-input\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [name]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [value]=\"control.value\"\n [multiple]=\"control.multiple\"\n [layoutOptions]=\"control.layoutOptions\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (edit)=\"methods.handleEdit($event)\"\n (save)=\"methods.handleSave($event)\"\n (delete)=\"methods.handleDelete($event)\"\n (upload)=\"methods.handleUpload($event)\"\n ></novo-file-input>\n </div>\n </ng-template>\n\n <!--Tiles-->\n <ng-template novoTemplate=\"tiles\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-tiles\n [options]=\"control.options\"\n [formControlName]=\"control.key\"\n (onChange)=\"methods.modelChange($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n [controlDisabled]=\"control.disabled\"\n ></novo-tiles>\n </div>\n </ng-template>\n\n <!--Picker-->\n <ng-template novoTemplate=\"picker\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\" class=\"novo-control-input-container\">\n <novo-picker\n [config]=\"control.config\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [parentScrollSelector]=\"control.parentScrollSelector\"\n [allowCustomValues]=\"control.config.allowCustomValues\"\n *ngIf=\"!control.multiple\"\n (select)=\"methods.modelChange($event)\"\n (changed)=\"methods.modelChangeWithRaw($event)\"\n (typing)=\"methods.handleTyping($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-picker>\n <novo-chips\n [source]=\"control.config\"\n [type]=\"control.config.type\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [maxlength]=\"control?.maxlength\"\n [allowCustomValues]=\"control.config.allowCustomValues\"\n *ngIf=\"control.multiple && !control.config.columns\"\n [closeOnSelect]=\"control.closeOnSelect\"\n (changed)=\"methods.modelChangeWithRaw($event)\"\n (typing)=\"methods.handleTyping($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-chips>\n <novo-row-chips\n [source]=\"control.config\"\n [type]=\"control.config.type\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [maxlength]=\"control?.maxlength\"\n *ngIf=\"control.multiple && control.config.columns\"\n [closeOnSelect]=\"control.closeOnSelect\"\n (changed)=\"methods.modelChangeWithRaw($event)\"\n (typing)=\"methods.handleTyping($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-row-chips>\n </div>\n </ng-template>\n\n <!--Novo Select-->\n <ng-template novoTemplate=\"select\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-select\n [options]=\"control.options\"\n [headerConfig]=\"control.headerConfig\"\n [placeholder]=\"control.placeholder\"\n [formControlName]=\"control.key\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (onSelect)=\"methods.modelChange($event)\"\n ></novo-select>\n </div>\n </ng-template>\n\n <!--Timezone -->\n <ng-template novoTemplate=\"timezone\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-select\n [options]=\"control.options\"\n [headerConfig]=\"control.headerConfig\"\n [placeholder]=\"control.placeholder\"\n [formControlName]=\"control.key\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n position=\"bottom\"\n (onSelect)=\"methods.modelChange($event)\"\n ></novo-select>\n </div>\n </ng-template>\n\n <!--Radio-->\n <ng-template novoTemplate=\"radio\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\" class=\"novo-control-input-container\">\n <novo-radio-group [name]=\"control.key\" [formControlName]=\"control.key\" [disabled]=\"control.disabled\">\n <novo-radio\n *ngFor=\"let option of control.options\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [checked]=\"\n option.value === form.getRawValue()[control.key] ||\n (form.getRawValue()[control.key] && option.value === form.getRawValue()[control.key].id)\n \"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n [button]=\"!!option.icon\"\n [icon]=\"option.icon\"\n [color]=\"option.color\"\n [theme]=\"!!option.icon && !option.label ? 'icon' : 'secondary'\"\n [attr.data-automation-id]=\"control.key + '-' + (option?.label || option?.value)\"\n ></novo-radio>\n </novo-radio-group>\n </div>\n </ng-template>\n\n <!--Time-->\n <ng-template novoTemplate=\"time\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <novo-time-picker-input\n [attr.id]=\"control.key\"\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [military]=\"control.military\"\n ></novo-time-picker-input>\n </div>\n </ng-template>\n\n <!--Native Input--->\n <ng-template novoTemplate=\"native-input\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container novo-control-input-with-label\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <input\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control.type\"\n [placeholder]=\"control?.placeholder\"\n (input)=\"methods.emitChange($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n />\n </div>\n </ng-template>\n\n <!--Date-->\n <ng-template novoTemplate=\"date\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <novo-date-picker-input\n [attr.id]=\"control.key\"\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [start]=\"control.startDate\"\n [end]=\"control.endDate\"\n [format]=\"control.dateFormat\"\n [allowInvalidDate]=\"control.allowInvalidDate\"\n [textMaskEnabled]=\"control.textMaskEnabled\"\n [placeholder]=\"control.placeholder\"\n [weekStart]=\"control.weekStart\"\n [disabledDateMessage]=\"control.disabledDateMessage\"\n (focusEvent)=\"methods.handleFocus($event)\"\n (blurEvent)=\"methods.handleBlur($event)\"\n (changeEvent)=\"methods.emitChange($event)\"\n ></novo-date-picker-input>\n </div>\n </ng-template>\n\n <!--Date and Time-->\n <ng-template novoTemplate=\"date-time\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <novo-date-time-picker-input\n [attr.id]=\"control.key\"\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [start]=\"control.startDate\"\n [end]=\"control.endDate\"\n [placeholder]=\"control.placeholder\"\n [military]=\"control.military\"\n [weekStart]=\"control.weekStart\"\n (focusEvent)=\"methods.handleFocus($event)\"\n (blurEvent)=\"methods.handleBlur($event)\"\n (changeEvent)=\"methods.emitChange($event)\"\n ></novo-date-time-picker-input>\n </div>\n </ng-template>\n\n <!--Address-->\n <ng-template novoTemplate=\"address\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-address\n [formControlName]=\"control.key\"\n [config]=\"control?.config\"\n [readOnly]=\"control?.readOnly\"\n (change)=\"methods.handleAddressChange($event)\"\n (focus)=\"methods.handleFocus($event.event, $event.field)\"\n (blur)=\"methods.handleBlur($event.event, $event.field)\"\n (validityChange)=\"methods.updateValidity()\"\n ></novo-address>\n </div>\n </ng-template>\n\n <!--Checkbox-->\n <ng-template novoTemplate=\"checkbox\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-checkbox\n [formControlName]=\"control?.key\"\n [name]=\"control?.key\"\n [label]=\"control?.checkboxLabel\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n [layoutOptions]=\"control?.layoutOptions\"\n ></novo-checkbox>\n </div>\n </ng-template>\n\n <!--Switch-->\n <ng-template novoTemplate=\"switch\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-switch\n [formControlName]=\"control?.key\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (onChange)=\"methods.modelChange($event)\"\n ></novo-switch>\n </div>\n </ng-template>\n\n <!--Checklist-->\n <ng-template novoTemplate=\"checklist\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-check-list\n [formControlName]=\"control.key\"\n [name]=\"control.key\"\n [options]=\"control?.options\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (onSelect)=\"methods.modelChange($event)\"\n ></novo-check-list>\n </div>\n </ng-template>\n\n <!--QuickNote-->\n <ng-template novoTemplate=\"quick-note\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-quick-note\n [formControlName]=\"control.key\"\n [startupFocus]=\"control?.startupFocus\"\n [placeholder]=\"control?.placeholder\"\n [config]=\"control?.config\"\n (change)=\"methods.modelChange($event)\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-quick-note>\n </div>\n </ng-template>\n `,\n standalone: false\n})\nexport class NovoControlTemplates implements AfterViewInit {\n @ViewChildren(NovoTemplate)\n defaultTemplates: QueryList<NovoTemplate>;\n constructor(private templates: NovoTemplateService) {}\n\n ngAfterViewInit(): void {\n if (this.defaultTemplates && this.defaultTemplates.length) {\n this.defaultTemplates.forEach((template: any) => {\n this.templates.addDefault(template.name, template.template);\n });\n }\n }\n}\n","// NG\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NovoTemplateService } from 'novo-elements/services';\nimport { NovoTemplate } from 'novo-elements/elements/common';\n// App\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoFieldset } from './FormInterfaces';\nimport { NovoFormGroup } from './NovoFormGroup';\n\n@Component({\n selector: 'novo-fieldset-header',\n template: `\n <novo-title smaller>\n <novo-icon>{{ icon?.replace('bhi-', '') }}</novo-icon\n >{{ title }}\n </novo-title>\n `,\n styleUrls: ['./fieldset-header.scss'],\n host: {\n class: 'novo-fieldset-header',\n },\n standalone: false\n})\nexport class NovoFieldsetHeaderElement {\n @Input()\n title: string;\n @Input()\n icon: string = 'section';\n}\n\n@Component({\n selector: 'novo-fieldset',\n template: `\n <div class=\"novo-fieldset-container\">\n <novo-fieldset-header\n [icon]=\"icon\"\n [title]=\"title\"\n *ngIf=\"title\"\n [class.embedded]=\"isEmbedded\"\n [class.inline-embedded]=\"isInlineEmbedded\"\n [class.hidden]=\"hidden\"\n ></novo-fieldset-header>\n <ng-container *ngFor=\"let control of controls; let controlIndex = index\">\n <div class=\"novo-form-row\" [class.disabled]=\"control.disabled\" *ngIf=\"control.__type !== 'GroupedControl'\">\n <novo-control [autoFocus]=\"autoFocus && index === 0 && controlIndex === 0\" [control]=\"control\" [form]=\"form\"></novo-control>\n </div>\n <div *ngIf=\"control.__type === 'GroupedControl'\">TODO - GroupedControl</div>\n </ng-container>\n </div>\n `,\n standalone: false\n})\nexport class NovoFieldsetElement {\n @Input()\n controls: Array<any> = [];\n @Input()\n form: any;\n @Input()\n title: string;\n @Input()\n icon: string;\n @Input()\n index: number;\n @Input()\n autoFocus: boolean;\n @Input()\n isEmbedded = false;\n @Input()\n isInlineEmbedded = false;\n @Input()\n hidden = false;\n}\n\n@Component({\n selector: 'novo-dynamic-form',\n template: `\n <novo-control-templates></novo-control-templates>\n <div class=\"novo-form-container\">\n <header>\n <ng-content select=\"form-title\"></ng-content>\n <ng-content select=\"form-subtitle\"></ng-content>\n </header>\n <form class=\"novo-form\" [formGroup]=\"form\">\n <ng-container *ngFor=\"let fieldset of form.fieldsets; let i = index\">\n <novo-fieldset\n *ngIf=\"fieldset.controls.length\"\n [index]=\"i\"\n [autoFocus]=\"autoFocusFirstField\"\n [icon]=\"fieldset.icon\"\n [controls]=\"fieldset.controls\"\n [title]=\"fieldset.title\"\n [form]=\"form\"\n [isEmbedded]=\"fieldset.isEmbedded\"\n [isInlineEmbedded]=\"fieldset.isInlineEmbedded\"\n [hidden]=\"fieldset.hidden\"\n ></novo-fieldset>\n </ng-container>\n </form>\n </div>\n `,\n styleUrls: ['./Form.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NovoTemplateService],\n standalone: false\n})\nexport class NovoDynamicFormElement implements OnChanges, OnInit, AfterContentInit {\n @Input()\n controls: Array<any> = [];\n @Input()\n fieldsets: Array<NovoFieldset> = [];\n @Input()\n form: NovoFormGroup;\n @Input()\n layout: string;\n @Input()\n hideNonRequiredFields: boolean = true;\n @Input()\n autoFocusFirstField: boolean = false;\n @ContentChildren(NovoTemplate)\n customTemplates: QueryList<NovoTemplate>;\n private fieldsAlreadyHidden: string[];\n\n allFieldsRequired = false;\n allFieldsNotRequired = false;\n showingAllFields = false;\n showingRequiredFields = true;\n numControls = 0;\n\n constructor(private element: ElementRef, private templates: NovoTemplateService) {}\n\n public ngOnInit(): void {\n this.ngOnChanges();\n }\n\n public ngOnChanges(changes?: SimpleChanges): void {\n this.form.layout = this.layout;\n\n if (!(this.fieldsets && this.fieldsets.length) && this.controls && this.controls.length) {\n this.fieldsets = [\n {\n controls: this.controls,\n },\n ];\n this.numControls = this.controls.length;\n } else if (this.fieldsets) {\n this.fieldsets.forEach((fieldset) => {\n this.numControls = this.numControls + fieldset.controls.length;\n });\n }\n\n const requiredFields: Array<any> = [];\n const nonRequiredFields: Array<any> = [];\n this.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n if (control.required) {\n requiredFields.push(control);\n } else {\n nonRequiredFields.push(control);\n }\n });\n });\n this.allFieldsRequired = requiredFields.length === this.numControls;\n this.allFieldsNotRequired = nonRequiredFields.length === this.numControls;\n if (this.allFieldsNotRequired && this.hideNonRequiredFields) {\n this.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n this.form.controls[control.key].hidden = false;\n });\n });\n }\n this.form.fieldsets = [...this.fieldsets];\n }\n\n ngAfterContentInit() {\n if (this.customTemplates && this.customTemplates.length) {\n this.customTemplates.forEach((template: any) => {\n this.templates.addCustom(template.name, template.template);\n });\n }\n }\n\n public showAllFields(): void {\n this.form.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n const ctl = this.form.controls[control.key];\n if (!this.fieldsAlreadyHidden?.includes(control.key)) {\n ctl.hidden = false;\n }\n });\n });\n this.showingAllFields = true;\n this.showingRequiredFields = false;\n }\n\n public showOnlyRequired(hideRequiredWithValue): void {\n this.fieldsAlreadyHidden = [];\n this.form.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n const ctl = this.form.controls[control.key];\n\n if (ctl.hidden) {\n this.fieldsAlreadyHidden.push(control.key);\n }\n\n // Hide any non-required fields\n if (!control.required) {\n ctl.hidden = true;\n }\n\n // Hide required fields that have been successfully filled out\n if (\n hideRequiredWithValue &&\n !Helpers.isBlank(this.form.getRawValue()[control.key]) &&\n (!control.isEmpty || (control.isEmpty && control.isEmpty(ctl)))\n ) {\n ctl.hidden = true;\n }\n\n // Don't hide fields with errors\n if (ctl.errors) {\n ctl.hidden = false;\n }\n });\n });\n this.showingAllFields = false;\n this.showingRequiredFields = true;\n this.forceValidation();\n }\n\n get values() {\n return this.form ? this.form.getRawValue() : null;\n }\n\n get isValid() {\n return this.form ? this.form.valid : false;\n }\n\n public updatedValues(): any {\n let ret = null;\n this.form.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n if (this.form.controls[control.key].dirty || control.dirty) {\n if (!ret) {\n ret = {};\n }\n ret[control.key] = this.form.getRawValue()[control.key];\n }\n });\n });\n return ret;\n }\n\n public forceValidation(): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n const control: any = this.form.controls[key];\n if (control.required && Helpers.isBlank(this.form.getRawValue()[control.key])) {\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n }\n}\n","import { Component, forwardRef, OnDestroy, OnInit } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'novo-number-range',\n template: `\n <form [formGroup]=\"rangeForm\">\n <novo-flex justify='space-between' align='end' gap=\"1rem\">\n <novo-field mr=\"sm\">\n <input formControlName=\"min\" novoInput type='number' [placeholder]=\"labels.minimumPlaceholder\"/>\n </novo-field>\n <novo-field ml=\"sm\">\n <input formControlName=\"max\" novoInput type='number' [placeholder]=\"labels.maximumPlaceholder\"/>\n </novo-field>\n </novo-flex>\n <novo-error *ngIf=\"rangeForm.hasError('minGreaterThanMax')\" style=\"position: absolute\">\n {{ labels.minGreaterThanMax }}\n </novo-error>\n </form>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n }\n ],\n standalone: false\n})\nexport class NumberRangeComponent implements OnInit, OnDestroy, ControlValueAccessor {\n rangeForm: FormGroup;\n _onChange: (value: any) => void = () => { };\n _onTouched = () => { };\n private _destroyed = new Subject<void>();\n\n constructor(public labels: NovoLabelService, private formBuilder: FormBuilder) { }\n\n ngOnInit() {\n this.rangeForm = this.formBuilder.group({ min: null, max: null }, { validators: this.minLessThanMaxValidator });\n\n // Notify parent form when the value changes (and it's valid)\n this.rangeForm.valueChanges.pipe(\n takeUntil(this._destroyed),\n filter(() => this.rangeForm.valid)\n ).subscribe(value => this._onChange(value));\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n minLessThanMaxValidator(group: FormGroup): { [key: string]: boolean } | null {\n const min = group.get('min').value;\n const max = group.get('max').value;\n const hasError = !Helpers.isBlank(min) && !Helpers.isBlank(max) && min > max;\n const error = hasError ? { minGreaterThanMax: true } : null;\n group.get('min').setErrors(error); // sets error styling\n group.get('max').setErrors(error);\n return error;\n }\n\n writeValue(value: { min: number, max: number }): void {\n if (value) {\n this.rangeForm.setValue(value, { emitEvent: false });\n }\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n isDisabled ? this.rangeForm.disable() : this.rangeForm.enable();\n }\n}\n","// NG2\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoPickerModule } from 'novo-elements/elements/picker';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoAddressElement } from './address/Address';\nimport { NovoFileInputElement } from './file/FileInput';\nimport { NumberRangeComponent } from './number-range/number-range.component';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoPipesModule,\n NovoButtonModule,\n NovoSelectModule,\n NovoPickerModule,\n NovoLoadingModule,\n NovoTooltipModule,\n NovoCheckboxModule,\n DragDropModule,\n NovoFlexModule,\n NovoFieldModule,\n ReactiveFormsModule\n ],\n declarations: [NovoAddressElement, NovoFileInputElement, NumberRangeComponent],\n exports: [NovoAddressElement, NovoFileInputElement, NumberRangeComponent],\n})\nexport class NovoFormExtrasModule {}\n\n","// NG\nimport { AfterContentInit, Component, ContentChildren, Input, OnInit, QueryList, ViewEncapsulation } from '@angular/core';\n// App\nimport { NovoTemplateService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoTemplate } from 'novo-elements/elements/common';\nimport { NovoFormGroup } from './NovoFormGroup';\n\n@Component({\n selector: 'novo-form',\n template: `\n <novo-control-templates></novo-control-templates>\n <div class=\"novo-form-container\">\n <header *ngIf=\"!hideHeader\">\n <ng-content select=\"form-title\"></ng-content>\n <ng-content select=\"form-subtitle\"></ng-content>\n </header>\n <form class=\"novo-form\" [formGroup]=\"form\">\n <ng-content></ng-content>\n </form>\n </div>\n `,\n styleUrls: ['./Form.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NovoTemplateService],\n standalone: false\n})\nexport class NovoFormElement implements AfterContentInit, OnInit {\n @Input()\n form: NovoFormGroup;\n @Input()\n layout: string;\n @Input()\n hideHeader: boolean = false;\n\n @ContentChildren(NovoTemplate)\n customTemplates: QueryList<NovoTemplate>;\n\n public showingAllFields: boolean = false;\n public showingRequiredFields: boolean = true;\n\n constructor(private templates: NovoTemplateService) {}\n\n get value() {\n return this.form.getRawValue();\n }\n\n get isValid() {\n return this.form.valid;\n }\n\n ngOnInit() {\n this.form.layout = this.layout;\n }\n\n ngAfterContentInit() {\n if (this.customTemplates && this.customTemplates.length) {\n this.customTemplates.forEach((template: any) => {\n this.templates.addCustom(template.name, template.template);\n });\n }\n }\n\n public showAllFields(): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n this.form.controls[key].hidden = false;\n });\n this.showingAllFields = true;\n this.showingRequiredFields = false;\n }\n\n public showOnlyRequired(hideRequiredWithValue): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n // Hide any non-required fields\n if (!this.form.controls[key].required) {\n this.form.controls[key].hidden = true;\n }\n\n // Hide required fields that have been successfully filled out\n if (hideRequiredWithValue && !Helpers.isBlank(this.form.getRawValue()[key])) {\n this.form.controls[key].hidden = true;\n }\n\n // Don't hide fields with errors\n if (this.form.controls[key].errors) {\n this.form.controls[key].hidden = false;\n }\n });\n this.showingAllFields = false;\n this.showingRequiredFields = true;\n this.forceValidation();\n }\n\n public forceValidation(): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n const control: any = this.form.controls[key];\n if (control.required && Helpers.isBlank(this.form.getRawValue()[control.key])) {\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n }\n}\n","// NG2\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IMaskModule } from 'angular-imask';\n// APP\nimport { NovoAceEditorModule } from 'novo-elements/addons/ace-editor';\nimport { NovoNovoCKEditorModule } from 'novo-elements/addons/ckeditor';\nimport { NovoCodeEditorModule } from 'novo-elements/addons/code-editor';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoCommonModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDateTimePickerModule } from 'novo-elements/elements/date-time-picker';\nimport { NovoHeaderModule } from 'novo-elements/elements/header';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoModalModule } from 'novo-elements/elements/modal';\nimport { NovoPickerModule } from 'novo-elements/elements/picker';\nimport { NovoPopOverModule } from 'novo-elements/elements/popover';\nimport { NovoQuickNoteModule } from 'novo-elements/elements/quick-note';\nimport { NovoRadioModule } from 'novo-elements/elements/radio';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { NovoTilesModule } from 'novo-elements/elements/tiles';\nimport { NovoTimePickerModule } from 'novo-elements/elements/time-picker';\nimport { NovoTipWellModule } from 'novo-elements/elements/tip-well';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoTemplateService } from 'novo-elements/services';\nimport { NovoAutoSize, NovoControlElement } from './Control';\nimport { NovoControlGroup } from './ControlGroup';\nimport { NovoControlTemplates } from './ControlTemplates';\nimport { NovoDynamicFormElement, NovoFieldsetElement, NovoFieldsetHeaderElement } from './DynamicForm';\nimport { ControlConfirmModal, ControlPromptModal } from './FieldInteractionModals';\nimport { NovoFormElement } from './Form';\nimport { NovoFormExtrasModule } from './extras';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n ReactiveFormsModule,\n NovoRadioModule,\n NovoTilesModule,\n NovoSelectModule,\n NovoPickerModule,\n NovoChipsModule,\n NovoDatePickerModule,\n NovoTimePickerModule,\n NovoDateTimePickerModule,\n NovoNovoCKEditorModule,\n NovoFormExtrasModule,\n NovoQuickNoteModule,\n NovoDateTimePickerModule,\n NovoHeaderModule,\n NovoTooltipModule,\n NovoPopOverModule,\n IMaskModule,\n NovoTipWellModule,\n NovoModalModule,\n NovoButtonModule,\n NovoAceEditorModule,\n NovoCodeEditorModule,\n NovoCommonModule,\n NovoCheckboxModule,\n NovoIconModule,\n NovoRadioModule,\n NovoSwitchModule,\n ],\n declarations: [\n NovoAutoSize,\n NovoControlElement,\n NovoDynamicFormElement,\n NovoFormElement,\n NovoFieldsetElement,\n NovoFieldsetHeaderElement,\n ControlConfirmModal,\n ControlPromptModal,\n NovoControlGroup,\n NovoControlTemplates,\n ],\n exports: [\n NovoAutoSize,\n NovoDynamicFormElement,\n NovoControlElement,\n NovoFormElement,\n NovoFieldsetHeaderElement,\n NovoControlGroup,\n NovoControlTemplates,\n ],\n providers: [NovoTemplateService],\n})\nexport class NovoFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.FormUtils","i4","i5","i1.FormUtils","i6.NovoControlElement","i3","i6","i7","i8","i13.NovoAddressElement","i14.NovoFileInputElement","i16","i21","i24.NovoAutoSize","i4.NovoControlElement","i7.NovoControlTemplates","i4.NovoControlTemplates"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-form.mjs","sources":["../../../projects/novo-elements/src/elements/form/controls/BaseControl.ts","../../../projects/novo-elements/src/elements/form/controls/ace-editor/AceEditorControl.ts","../../../projects/novo-elements/src/elements/form/FormValidators.ts","../../../projects/novo-elements/src/elements/form/controls/address/AddressControl.ts","../../../projects/novo-elements/src/elements/form/controls/check-list/CheckListControl.ts","../../../projects/novo-elements/src/elements/form/controls/checkbox/CheckboxControl.ts","../../../projects/novo-elements/src/elements/form/controls/code-editor/CodeEditorControl.ts","../../../projects/novo-elements/src/elements/form/controls/custom/CustomControl.ts","../../../projects/novo-elements/src/elements/form/controls/date/DateControl.ts","../../../projects/novo-elements/src/elements/form/controls/date-time/DateTimeControl.ts","../../../projects/novo-elements/src/elements/form/controls/editor/EditorControl.ts","../../../projects/novo-elements/src/elements/form/controls/file/FileControl.ts","../../../projects/novo-elements/src/elements/form/controls/grouped/GroupedControl.ts","../../../projects/novo-elements/src/elements/form/controls/native-select/NativeSelectControl.ts","../../../projects/novo-elements/src/elements/form/controls/picker/PickerControl.ts","../../../projects/novo-elements/src/elements/form/controls/quick-note/QuickNoteControl.ts","../../../projects/novo-elements/src/elements/form/controls/radio/RadioControl.ts","../../../projects/novo-elements/src/elements/form/controls/read-only/ReadOnlyControl.ts","../../../projects/novo-elements/src/elements/form/controls/select/SelectControl.ts","../../../projects/novo-elements/src/elements/form/controls/switch/SwitchControl.ts","../../../projects/novo-elements/src/elements/form/controls/text-area/TextAreaControl.ts","../../../projects/novo-elements/src/elements/form/controls/textbox/TextBoxControl.ts","../../../projects/novo-elements/src/elements/form/controls/tiles/TilesControl.ts","../../../projects/novo-elements/src/elements/form/controls/time/TimeControl.ts","../../../projects/novo-elements/src/elements/form/controls/timezone/TimezoneControl.ts","../../../projects/novo-elements/src/elements/form/controls/ControlFactory.ts","../../../projects/novo-elements/src/elements/form/NovoFormControl.ts","../../../projects/novo-elements/src/elements/form/NovoFormGroup.ts","../../../projects/novo-elements/src/elements/form/utils/FormUtils.ts","../../../projects/novo-elements/src/elements/form/FieldInteractionModals.ts","../../../projects/novo-elements/src/elements/form/FieldInteractionApi.ts","../../../projects/novo-elements/src/elements/form/Control.ts","../../../projects/novo-elements/src/elements/form/ControlGroup.ts","../../../projects/novo-elements/src/elements/form/ControlGroup.html","../../../projects/novo-elements/src/elements/form/extras/address/Address.ts","../../../projects/novo-elements/src/elements/form/extras/file/extras/file/File.ts","../../../projects/novo-elements/src/elements/form/extras/file/FileInput.ts","../../../projects/novo-elements/src/elements/form/extras/file/FileInput.html","../../../projects/novo-elements/src/elements/form/ControlTemplates.ts","../../../projects/novo-elements/src/elements/form/DynamicForm.ts","../../../projects/novo-elements/src/elements/form/extras/number-range/number-range.component.ts","../../../projects/novo-elements/src/elements/form/extras/FormExtras.module.ts","../../../projects/novo-elements/src/elements/form/Form.ts","../../../projects/novo-elements/src/elements/form/Form.module.ts","../../../projects/novo-elements/src/elements/form/novo-elements-elements-form.ts"],"sourcesContent":["// NG2\nimport { EventEmitter } from '@angular/core';\nimport { Validators } from '@angular/forms';\n// APP\nimport { Helpers, notify } from 'novo-elements/utils';\nimport type { IMaskOptions } from '../Control';\nimport type { NovoControlGroupAddConfig } from '../ControlGroup';\n\nexport interface NovoGroupedControlConfig {\n label?: string;\n icon?: string;\n add?: NovoControlGroupAddConfig;\n remove?: boolean;\n key: string;\n initialValue?: {}[];\n}\n\nclass ControlConfig {\n alwaysActive?: Boolean;\n allowInvalidDate?: boolean;\n appendToBody: boolean; // Deprecated;\n associatedEntity: string;\n asyncValidators?: Array<any>;\n checkboxLabel: string;\n closeOnSelect: boolean;\n config: any;\n controlType: string;\n currencyFormat: string;\n customControl?: any;\n customControlConfig?: any;\n dataSpecialization: string;\n dataType: string;\n dateFormat?: string;\n description?: string;\n dirty: boolean;\n disabled: boolean;\n enabled: boolean;\n encrypted: boolean;\n endDate?: Date | Number;\n fileBrowserImageUploadUrl?: string;\n forceClear: EventEmitter<any>;\n headerConfig: any;\n hidden: boolean;\n interactions: Array<{ event?: 'change' | 'focus' | string; invokeOnInit?: boolean; script? }>;\n isEmpty?: Function;\n key: string;\n label: string;\n maskOptions?: IMaskOptions;\n maxlength: number;\n metaType: string;\n military?: boolean;\n minimal?: boolean;\n minlength: number;\n multiple: boolean;\n name: string;\n options: Array<any>;\n optionsType: string;\n parentScrollSelector: string;\n placeholder: string;\n popoverAlways?: boolean;\n popoverAnimation?: boolean;\n popoverContent?: string;\n popoverDisabled?: boolean;\n popoverDismissTimeout?: number;\n popoverHtmlContent?: string;\n popoverOnHover?: boolean;\n popoverPlacement?: 'left' | 'right' | 'top' | 'bottom';\n popoverTitle?: string;\n readOnly: boolean; // \"disabled\", so it appears in the model still;\n removeTooltipArrow?: boolean;\n required: boolean;\n restrictFieldInteractions?: boolean;\n sortOrder: number;\n startDate?: Date | Number;\n startupFocus?: boolean;\n subType?: string;\n template?: any;\n textMaskEnabled?: boolean;\n tooltip?: string;\n tooltipAutoPosition?: boolean;\n tooltipPosition?: string;\n tooltipPreline?: boolean;\n tooltipSize?: string;\n type: string;\n validators: Array<any>;\n value: any;\n warning?: string;\n width: number;\n layoutOptions?: {\n customActions?: boolean;\n download?: boolean;\n draggable?: boolean;\n edit?: boolean;\n iconStyle?: string;\n labelStyle?: string;\n order?: string;\n removable?: boolean;\n customValidation?: { action: string; fn: Function }[];\n removableWhenNew?: boolean;\n };\n tipWell?: {\n button?: boolean;\n icon?: string;\n tip: string;\n };\n isEmbedded = false;\n isInlineEmbedded = false;\n weekStart?: number;\n highlighted = false;\n disabledDateMessage?: string;\n}\n\nexport type NovoControlConfig = Partial<ControlConfig>;\n\nexport class BaseControl extends ControlConfig {\n __type: string = 'BaseControl';\n __config: NovoControlConfig;\n\n constructor(type: string = 'BaseControl', config: NovoControlConfig = {}) {\n super();\n this.__type = type;\n this.__config = config;\n this.alwaysActive = config.alwaysActive;\n this.validators = config.validators || [];\n this.asyncValidators = config.asyncValidators || [];\n this.value = config.value;\n this.key = config.key || '';\n this.label = config.label || '';\n this.checkboxLabel = config.checkboxLabel;\n this.name = config.name || '';\n this.required = !!config.required;\n this.hidden = !!config.hidden;\n this.encrypted = !!config.encrypted;\n this.sortOrder = config.sortOrder === undefined ? 1 : config.sortOrder;\n this.controlType = config.controlType || '';\n this.type = config.type;\n this.subType = config.subType;\n this.metaType = config.metaType;\n this.placeholder = config.placeholder || '';\n this.config = config.config || null;\n this.dirty = !!(config.value !== undefined && config.value !== null);\n this.multiple = !!config.multiple;\n this.headerConfig = config.headerConfig || null;\n this.currencyFormat = config.currencyFormat || null;\n this.associatedEntity = config.associatedEntity || null;\n this.optionsType = config.optionsType || null;\n this.options = config.options || [];\n this.forceClear = new EventEmitter();\n this.readOnly = !!config.readOnly || !!config.disabled;\n this.disabled = !!config.disabled;\n this.enabled = true;\n this.layoutOptions = config.layoutOptions || {};\n this.military = !!config.military;\n this.dateFormat = config.dateFormat;\n this.textMaskEnabled = config.textMaskEnabled;\n this.maskOptions = config.maskOptions;\n this.allowInvalidDate = config.allowInvalidDate;\n this.startDate = config.startDate;\n this.endDate = config.endDate;\n this.restrictFieldInteractions = !!config.restrictFieldInteractions;\n this.highlighted = !!config.highlighted;\n if (!Helpers.isEmpty(config.warning)) {\n this.warning = config.warning;\n }\n\n if (this.required) {\n this.validators.push(Validators.required);\n }\n if (!Helpers.isBlank(config.maxlength)) {\n this.maxlength = config.maxlength;\n this.validators.push(Validators.maxLength(this.maxlength));\n }\n if (!Helpers.isBlank(config.minlength)) {\n this.minlength = config.minlength;\n this.validators.push(Validators.minLength(this.minlength));\n }\n this.closeOnSelect = !!config.closeOnSelect;\n this.interactions = config.interactions;\n this.dataSpecialization = config.dataSpecialization;\n this.dataType = config.dataType;\n this.appendToBody = !!config.appendToBody;\n if (this.appendToBody) {\n notify('\\'appendToBody\\' has been deprecated. Please remove this attribute.');\n }\n this.parentScrollSelector = config.parentScrollSelector;\n this.description = config.description;\n if (config.tooltip) {\n this.tooltip = config.tooltip;\n this.tooltipPosition = config.tooltipPosition;\n this.tooltipSize = config.tooltipSize;\n this.tooltipPreline = config.tooltipPreline;\n this.removeTooltipArrow = config.removeTooltipArrow;\n this.tooltipAutoPosition = config.tooltipAutoPosition;\n }\n this.popoverAlways = config.popoverAlways;\n this.popoverAnimation = config.popoverAnimation;\n this.popoverContent = config.popoverContent;\n this.popoverDisabled = config.popoverDisabled;\n this.popoverDismissTimeout = config.popoverDismissTimeout;\n this.popoverHtmlContent = config.popoverHtmlContent;\n this.popoverOnHover = config.popoverOnHover;\n this.popoverPlacement = config.popoverPlacement;\n this.popoverTitle = config.popoverTitle;\n this.template = config.template;\n this.customControlConfig = config.customControlConfig;\n this.tipWell = config.tipWell;\n this.width = config.width;\n this.startupFocus = !!config.startupFocus;\n if (config.fileBrowserImageUploadUrl) {\n this.fileBrowserImageUploadUrl = config.fileBrowserImageUploadUrl;\n }\n if (config.isEmpty) {\n this.isEmpty = config.isEmpty;\n }\n this.weekStart = config.weekStart || 0;\n this.disabledDateMessage = config.disabledDateMessage;\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class AceEditorControl extends BaseControl {\n controlType = 'ace-editor';\n\n constructor(config: NovoControlConfig) {\n super('AceEditorControl', config);\n }\n}\n","import { Helpers } from 'novo-elements/utils';\n\nconst MAX_INTEGER = 2147483647;\nconst MIN_YEAR = 1753;\n\nexport class FormValidators {\n private showStateRequiredFlag(subfield, control): boolean {\n return (\n subfield === 'state' &&\n !Helpers.isEmpty(control.config.state) &&\n control.config.state.required &&\n Helpers.isBlank(control.value.state) &&\n control.config.state.updated &&\n !Helpers.isBlank(control.value.countryName) &&\n control.config.state.pickerConfig &&\n control.config.state.pickerConfig.defaultOptions &&\n control.config.state.pickerConfig.defaultOptions.length > 0\n );\n }\n\n // Makes sure the control value does not exceed the max integer value\n static maxInteger(control) {\n return control.value < MAX_INTEGER ? null : { integerTooLarge: true };\n }\n\n // Makes sure the control value is above the minimum year\n static minYear(control) {\n if (!control.value) {\n return null;\n }\n return control.value >= MIN_YEAR ? null : { minYear: true };\n }\n\n // Makes sure the control value does not exceed the max number value\n static maxDouble(control) {\n return control.value < Number.MAX_SAFE_INTEGER ? null : { doubleTooLarge: true };\n }\n\n // Make sure the control value is an email\n static isEmail(control) {\n const EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;\n return !control.value || EMAIL_REGEXP.test(control.value) ? null : { invalidEmail: true };\n }\n // Makes sure the control value is a valid address\n static isValidAddress(control) {\n const fieldList: string[] = ['address1', 'address2', 'city', 'state', 'zip', 'countryID'];\n const invalidAddressFields: string[] = [];\n const maxlengthFields: string[] = [];\n let returnVal: {\n invalidAddress?: boolean;\n invalidAddressFields?: string[];\n invalidAddressForForm?: boolean;\n maxlength?: boolean;\n maxlengthFields?: string[];\n } = null;\n let maxlengthError: boolean = false;\n const showCountryRequiredFlag = (subfield, ctrl) => {\n return (\n subfield === 'countryID' &&\n !Helpers.isEmpty(ctrl.config.countryID) &&\n ctrl.config.countryID.required &&\n Helpers.isBlank(ctrl.value.countryName) &&\n ctrl.config.countryID.updated\n );\n };\n\n const showStateRequiredFlag = (subfield, ctrl): boolean => {\n return (\n subfield === 'state' &&\n !Helpers.isEmpty(ctrl.config.state) &&\n ctrl.config.state.required &&\n Helpers.isBlank(ctrl.value.state) &&\n ctrl.config.state.updated &&\n !Helpers.isBlank(ctrl.value.countryName) &&\n ctrl.config.state.pickerConfig &&\n ctrl.config.state.pickerConfig.defaultOptions &&\n ctrl.config.state.pickerConfig.defaultOptions.length > 0\n );\n };\n\n if (control.value && control.config) {\n let valid = true;\n let formValidity = true;\n fieldList.forEach((subfield: string) => {\n if (!Helpers.isEmpty(control.config[subfield])) {\n if (\n (['countryID', 'state'].indexOf(subfield) === -1 &&\n control.config[subfield].required &&\n !Helpers.isBlank(control.value[subfield]) &&\n Helpers.isEmpty(control.value[subfield])) ||\n showCountryRequiredFlag(subfield, control) ||\n showStateRequiredFlag(subfield, control)\n ) {\n valid = false;\n invalidAddressFields.push(control.config[subfield].label);\n }\n if (\n ((subfield !== 'countryID' && control.config[subfield].required && Helpers.isEmpty(control.value[subfield])) ||\n (subfield === 'countryID' &&\n !Helpers.isEmpty(control.config.countryID) &&\n control.config.countryID.required &&\n Helpers.isEmpty(control.value.countryName))) &&\n !(\n subfield === 'state' &&\n !Helpers.isBlank(control.value.countryName) &&\n control.config.state.pickerConfig &&\n control.config.state.pickerConfig.defaultOptions &&\n control.config.state.pickerConfig.defaultOptions.length === 0\n )\n ) {\n formValidity = false;\n }\n if (\n !Helpers.isEmpty(control.config[subfield].maxlength) &&\n !Helpers.isEmpty(control.value[subfield]) &&\n control.value[subfield].length > control.config[subfield].maxlength\n ) {\n maxlengthError = true;\n maxlengthFields.push(subfield);\n formValidity = false;\n }\n }\n });\n if (!valid || !formValidity || maxlengthError) {\n returnVal = {};\n }\n if (!valid) {\n returnVal.invalidAddress = true;\n returnVal.invalidAddressFields = invalidAddressFields;\n }\n if (!formValidity) {\n returnVal.invalidAddressForForm = true;\n }\n if (maxlengthError) {\n returnVal.maxlength = true;\n returnVal.maxlengthFields = maxlengthFields;\n }\n return returnVal;\n }\n return null;\n }\n}\n","// APP\nimport { FormValidators } from '../../FormValidators';\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class AddressControl extends BaseControl {\n controlType = 'address';\n\n constructor(config: NovoControlConfig) {\n super('AddressControl', config);\n this.validators.push(FormValidators.isValidAddress);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class CheckListControl extends BaseControl {\n controlType = 'checklist';\n\n constructor(config: NovoControlConfig) {\n super('CheckListControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class CheckboxControl extends BaseControl {\n controlType = 'checkbox';\n\n constructor(config: NovoControlConfig) {\n super('CheckboxControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class CodeEditorControl extends BaseControl {\n controlType = 'code-editor';\n\n constructor(config: NovoControlConfig) {\n super('CodeEditorControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class CustomControl extends BaseControl {\n controlType = 'custom';\n\n constructor(config: NovoControlConfig) {\n super(config.template, config);\n this.controlType = config.template;\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class DateControl extends BaseControl {\n controlType = 'date';\n\n constructor(config: NovoControlConfig) {\n super('DateControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class DateTimeControl extends BaseControl {\n controlType = 'date-time';\n\n constructor(config: NovoControlConfig) {\n super('DateTimeControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class EditorControl extends BaseControl {\n controlType = 'editor';\n minimal: boolean = false;\n\n constructor(config: NovoControlConfig) {\n super('EditorControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class FileControl extends BaseControl {\n controlType = 'file';\n\n constructor(config: NovoControlConfig) {\n super('FileControl', config);\n // TODO - translate\n this.placeholder = config.placeholder;\n this.multiple = config.multiple;\n }\n}\n","// APP\nimport { NovoGroupedControlConfig } from './../BaseControl';\n\nexport class GroupedControl implements NovoGroupedControlConfig {\n public __type: string;\n key: string;\n\n constructor(config: NovoGroupedControlConfig) {\n this.__type = 'GroupedControl';\n Object.keys(config).forEach((key) => (this[key] = config[key]));\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class NativeSelectControl extends BaseControl {\n controlType = 'native-select';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('NativeSelectControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class PickerControl extends BaseControl {\n controlType = 'picker';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('PickerControl', config);\n this.options = config.options || [];\n }\n}\n\nexport class TablePickerControl extends PickerControl {\n constructor(config: NovoControlConfig) {\n super(Object.assign(config, { parentScrollSelector: '.table-container' }));\n this.__type = 'TablePickerControl';\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class QuickNoteControl extends BaseControl {\n controlType = 'quick-note';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('QuickNoteControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class RadioControl extends BaseControl {\n controlType = 'radio';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('RadioControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class ReadOnlyControl extends BaseControl {\n controlType = 'read-only';\n\n constructor(config: NovoControlConfig) {\n super('ReadOnlyControl', config);\n config.readOnly = true;\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class SelectControl extends BaseControl {\n controlType = 'select';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('SelectControl', config);\n this.options = config.options || [];\n this.placeholder = config.placeholder || '';\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class SwitchControl extends BaseControl {\n controlType = 'switch';\n\n constructor(config: NovoControlConfig) {\n super('SwitchControl', config);\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TextAreaControl extends BaseControl {\n controlType = 'text-area';\n\n constructor(config: NovoControlConfig) {\n super('TextAreaControl', config);\n }\n}\n","// APP\nimport { FormValidators } from './../../FormValidators';\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TextBoxControl extends BaseControl {\n controlType: string = 'textbox';\n type: string;\n subType: string;\n\n constructor(config: NovoControlConfig) {\n super('TextBoxControl', config);\n this.type = this.getTextboxType(config.type) || '';\n this.subType = config.type || '';\n this.setValidators(this.subType);\n }\n\n setValidators(type) {\n switch (type) {\n case 'email':\n this.validators.push(FormValidators.isEmail);\n break;\n case 'number':\n case 'currency':\n this.validators.push(FormValidators.maxInteger);\n break;\n case 'float':\n case 'percentage':\n this.validators.push(FormValidators.maxDouble);\n break;\n case 'year':\n this.validators.push(FormValidators.minYear);\n break;\n default:\n break;\n }\n }\n\n getTextboxType(type) {\n switch (type) {\n case 'percentage':\n case 'currency':\n case 'float':\n case 'year':\n return 'number';\n default:\n return type;\n }\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TilesControl extends BaseControl {\n controlType = 'tiles';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('TilesControl', config);\n this.options = config.options || [];\n }\n}\n","// APP\nimport { BaseControl, NovoControlConfig } from './../BaseControl';\n\nexport class TimeControl extends BaseControl {\n controlType = 'time';\n\n constructor(config: NovoControlConfig) {\n super('TimeControl', config);\n }\n}\n","// APP\nimport { findTimeZone, getZonedTime, listTimeZones } from 'timezone-support';\nimport { formatZonedTime } from 'novo-elements/utils';\nimport { BaseControl, NovoControlConfig } from '../BaseControl';\n\nexport class TimezoneControl extends BaseControl {\n controlType = 'timezone';\n options = [];\n\n constructor(config: NovoControlConfig) {\n super('TimezoneControl', config);\n this.options = this.buildTimezones(new Date());\n this.placeholder = config.placeholder || '';\n // current timezone\n const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n this.value = tz;\n }\n\n private buildTimezones = (compareDate: Date) => {\n const timezones = listTimeZones()\n .map((zone) => {\n const timezone = findTimeZone(zone);\n const zonedTime = getZonedTime(compareDate, timezone);\n const formatted = formatZonedTime(zonedTime, `z - [${zone}] ([GMT] Z)`).replace('_', ' ');\n\n const option = {\n value: zone,\n label: formatted,\n offset: zonedTime.zone.offset,\n };\n return option;\n })\n // Formats 'noisy' timezones without a letter acronym.\n .map((option) => {\n const rgx = /(^(\\+|-)\\d+\\s- )/;\n const matches = option.label.match(rgx);\n if (matches) {\n const prefix = matches[0];\n option.label = option.label.split(prefix)[1];\n }\n return option;\n })\n // Sorts W -> E, prioritizes america. could be more nuanced based on system tz but simple for now\n .sort((a, b) => {\n const offsetDelta = b.offset - a.offset;\n if (offsetDelta !== 0) {\n return offsetDelta;\n }\n if (a.label < b.label) {\n return -1;\n }\n if (a.label > b.label) {\n return 1;\n }\n return 0;\n });\n return timezones;\n };\n}\n","import { BaseControl } from './BaseControl';\nimport {\n AddressControl,\n CheckboxControl,\n CheckListControl,\n DateTimeControl,\n EditorControl,\n FileControl,\n NativeSelectControl,\n PickerControl,\n QuickNoteControl,\n RadioControl,\n ReadOnlyControl,\n SelectControl,\n SwitchControl,\n TablePickerControl,\n TextAreaControl,\n TextBoxControl,\n TilesControl,\n TimeControl,\n} from './index';\n\nexport class ControlFactory {\n static create(type: string, config: BaseControl): BaseControl {\n switch (type) {\n case 'AddressControl':\n return new AddressControl(config);\n case 'CheckboxControl':\n return new CheckboxControl(config);\n case 'CheckListControl':\n return new CheckListControl(config);\n case 'DateTimeControl':\n return new DateTimeControl(config);\n case 'EditorControl':\n return new EditorControl(config);\n case 'FileControl':\n return new FileControl(config);\n case 'NativeSelectControl':\n return new NativeSelectControl(config);\n case 'PickerControl':\n return new PickerControl(config);\n case 'TablePickerControl':\n return new TablePickerControl(config);\n case 'QuickNoteControl':\n return new QuickNoteControl(config);\n case 'RadioControl':\n return new RadioControl(config);\n case 'ReadOnlyControl':\n return new ReadOnlyControl(config);\n case 'TextAreaControl':\n return new TextAreaControl(config);\n case 'TextBoxControl':\n return new TextBoxControl(config);\n case 'SelectControl':\n return new SelectControl(config);\n case 'SwitchControl':\n return new SwitchControl(config);\n case 'TilesControl':\n return new TilesControl(config);\n case 'TimeControl':\n return new TimeControl(config);\n default:\n console.warn(\n '[ControlFactory] - unable to find control for type. Make sure to set \"editorType\" and \"editorConfig\" on your column',\n type,\n );\n return null;\n }\n }\n}\n","// NG2\nimport { EventEmitter } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { notify } from 'novo-elements/utils';\nimport type { IMaskOptions } from './Control';\n// APP\nimport { NovoControlConfig } from './FormControls';\n\nexport class NovoFormControl extends FormControl {\n displayValueChanges: EventEmitter<any> = new EventEmitter<any>();\n hidden: boolean;\n encrypted: boolean;\n key: string;\n required: boolean;\n readOnly: boolean;\n hasRequiredValidator: boolean;\n label: string;\n tooltip: string;\n tooltipPosition: string;\n tooltipSize?: string;\n tooltipPreline?: boolean;\n tooltipIsHTML?: boolean;\n popoverContent?: string;\n popoverHtmlContent?: string;\n popoverTitle?: string;\n popoverPlacement?: 'left' | 'right' | 'top' | 'bottom';\n popoverOnHover?: boolean;\n popoverAlways?: boolean;\n popoverDisabled?: boolean;\n popoverAnimation?: boolean;\n popoverDismissTimeout?: number;\n removeTooltipArrow?: boolean;\n tooltipAutoPosition?: boolean;\n initialValue: any;\n valueHistory = [];\n validators: any;\n config: any;\n sortOrder: number;\n controlType: string;\n placeholder: string;\n minimal: boolean;\n multiple: boolean;\n headerConfig: any;\n optionsType: string;\n maxlength: number;\n minlength: number;\n options: Array<any>;\n type: string;\n subType: string;\n name: string;\n closeOnSelect: boolean;\n interactions: Array<Object>;\n appendToBody: boolean; // Deprecated\n parentScrollSelector: string;\n description?: string;\n layoutOptions?: { order?: string; download?: boolean; labelStyle?: string; draggable?: boolean; iconStyle?: string };\n military?: boolean;\n dateFormat?: string;\n currencyFormat?: string;\n startDate?: Date | Number;\n endDate?: Date | Number;\n weekStart?: number;\n textMaskEnabled?: boolean;\n maskOptions: IMaskOptions;\n allowInvalidDate?: boolean;\n tipWell?: {\n tip: string;\n icon?: string;\n button?: boolean;\n sanitize?: boolean;\n };\n rawValue?: any;\n customControlConfig?: any;\n checkboxLabel?: string;\n restrictFieldInteractions?: boolean;\n warning?: string;\n highlighted?: boolean;\n disabledDateMessage?: string;\n private historyTimeout: any;\n\n constructor(value: any, control: NovoControlConfig) {\n super(value, control.validators, control.asyncValidators);\n this.validators = control.validators;\n this.initialValue = value;\n this.valueHistory.push(value);\n this.key = control.key;\n this.label = control.label;\n this.readOnly = control.readOnly;\n this.hidden = control.hidden;\n this.encrypted = control.encrypted;\n this.config = control.config;\n this.type = control.type;\n this.subType = control.subType;\n this.required = control.required;\n this.hasRequiredValidator = this.required;\n this.tooltip = control.tooltip;\n this.tooltipPosition = control.tooltipPosition;\n this.tooltipSize = control.tooltipSize;\n this.tooltipPreline = control.tooltipPreline;\n this.removeTooltipArrow = control.removeTooltipArrow;\n this.tooltipAutoPosition = control.tooltipAutoPosition;\n this.label = control.label;\n this.name = control.name;\n this.required = control.required;\n this.sortOrder = control.sortOrder;\n this.controlType = control.controlType;\n this.placeholder = control.placeholder;\n this.minimal = control.minimal;\n this.multiple = control.multiple;\n this.headerConfig = control.headerConfig;\n this.optionsType = control.optionsType;\n this.readOnly = control.readOnly;\n this.layoutOptions = control.layoutOptions;\n this.military = control.military;\n this.dateFormat = control.dateFormat;\n this.currencyFormat = control.currencyFormat;\n this.startDate = control.startDate;\n this.endDate = control.endDate;\n this.weekStart = control.weekStart;\n this.textMaskEnabled = control.textMaskEnabled;\n this.maskOptions = control.maskOptions;\n this.allowInvalidDate = control.allowInvalidDate;\n this.maxlength = control.maxlength;\n this.minlength = control.minlength;\n this.closeOnSelect = control.closeOnSelect;\n this.interactions = control.interactions;\n this.checkboxLabel = control.checkboxLabel;\n this.restrictFieldInteractions = control.restrictFieldInteractions;\n this.appendToBody = control.appendToBody;\n if (this.appendToBody) {\n notify('\\'appendToBody\\' has been deprecated. Please remove this attribute.');\n }\n this.parentScrollSelector = control.parentScrollSelector;\n this.description = control.description;\n this.options = control.options;\n this.tipWell = control.tipWell;\n this.customControlConfig = control.customControlConfig;\n this.warning = control.warning;\n this.disabledDateMessage = control.disabledDateMessage;\n\n // Reactive Form, need to enable/disable, can't bind to [disabled]\n if (this.readOnly) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n /**\n * @param clearValue - flag to reset the control's value\n */\n hide(clearValue: boolean = true): void {\n this.hidden = true;\n if (clearValue) {\n this.setValue(null);\n }\n }\n\n show(): void {\n this.hidden = false;\n }\n\n setRequired(isRequired: boolean): void {\n this.required = isRequired;\n // Update validators to have the required\n if (this.required && !this.hasRequiredValidator) {\n const validators: any = [...this.validators];\n validators.push(Validators.required);\n // TODO: duplicated below\n this.setValidators(validators);\n this.updateValueAndValidity({ emitEvent: false });\n this.hasRequiredValidator = this.required;\n } else if (!this.required && this.hasRequiredValidator) {\n let validators: any = [...this.validators];\n validators = validators.filter((val) => val !== Validators.required);\n // TODO: duplicated above\n this.setValidators(validators);\n this.updateValueAndValidity({ emitEvent: false });\n this.hasRequiredValidator = this.required;\n }\n }\n\n setValue(\n value: any,\n {\n onlySelf,\n emitEvent,\n emitModelToViewChange,\n emitViewToModelChange,\n }: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n emitModelToViewChange?: boolean;\n emitViewToModelChange?: boolean;\n } = {},\n ) {\n this.markAsDirty();\n this.markAsTouched();\n this.displayValueChanges.emit(value);\n super.setValue(value, { onlySelf, emitEvent, emitModelToViewChange, emitViewToModelChange });\n\n // History\n clearTimeout(this.historyTimeout);\n this.historyTimeout = setTimeout(() => {\n this.valueHistory.push(value);\n }, 300);\n }\n\n setReadOnly(isReadOnly: boolean): void {\n this.readOnly = isReadOnly;\n if (this.readOnly) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n /**\n * Disables the control. This means the control will be exempt from validation checks and\n * excluded from the aggregate value of any parent. Its status is `DISABLED`.\n *\n * If the control has children, all children will be disabled to maintain the model.\n */\n disable(opts: { onlySelf?: boolean; emitEvent?: boolean } = { emitEvent: false }): void {\n if (typeof opts.emitEvent === 'undefined') {\n opts.emitEvent = false;\n }\n super.disable(opts);\n }\n\n enable(opts: { onlySelf?: boolean; emitEvent?: boolean } = { emitEvent: false }): void {\n if (typeof opts.emitEvent === 'undefined') {\n opts.emitEvent = false;\n }\n super.enable(opts);\n }\n\n markAsInvalid(message: string): void {\n this.markAsDirty();\n this.markAsTouched();\n this.setErrors(Object.assign({}, this.errors, { custom: message }));\n }\n\n markAsValid(): void {\n this.setErrors(null);\n }\n}\n","// NG\nimport { EventEmitter } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n// App\nimport { IFieldInteractionEvent } from './FormInterfaces';\nimport { NovoFormControl } from './NovoFormControl';\n\nexport class NovoFormGroup extends UntypedFormGroup {\n public fieldInteractionEvents: EventEmitter<IFieldInteractionEvent> = new EventEmitter();\n public layout: string;\n public edit: boolean;\n public currentEntity: string;\n public currentEntityId: string;\n public associations: object;\n public fieldsets: any[];\n public _value: any;\n public controls: { [key: string]: any };\n public novoControls: any[];\n\n public enableAllControls(): void {\n for (const key in this.controls) {\n if ((this.controls[key] as NovoFormControl).readOnly) {\n (this.controls[key] as NovoFormControl).readOnly = false;\n this.controls[key].enable();\n }\n }\n }\n\n public disableAllControls(): void {\n for (const key in this.controls) {\n if (!(this.controls[key] as NovoFormControl).readOnly) {\n (this.controls[key] as NovoFormControl).readOnly = true;\n this.controls[key].disable();\n }\n }\n }\n}\n","// NG\nimport { Injectable } from '@angular/core';\n// Vendor\nimport { startOfToday } from 'date-fns';\n// App\nimport {\n AddressControl,\n BaseControl,\n CheckboxControl,\n CheckListControl,\n CustomControl,\n DateControl,\n DateTimeControl,\n EditorControl,\n FileControl,\n NovoControlConfig,\n PickerControl,\n RadioControl,\n SelectControl,\n SwitchControl,\n TextAreaControl,\n TextBoxControl,\n TilesControl,\n TimeControl,\n TimezoneControl,\n} from '../FormControls';\nimport type { FormField, NovoFieldset } from '../FormInterfaces';\nimport { NovoFormControl } from '../NovoFormControl';\nimport { NovoFormGroup } from '../NovoFormGroup';\nimport { EntityPickerResult, EntityPickerResults } from 'novo-elements/elements/picker';\nimport { NovoLabelService, OptionsService } from 'novo-elements/services';\nimport { DateUtil, Helpers } from 'novo-elements/utils';\n\n@Injectable()\nexport class FormUtils {\n ASSOCIATED_ENTITY_LIST: string[] = [\n 'Candidate',\n 'ClientContact',\n 'ClientCorporation',\n 'CorporationDepartment',\n 'Lead',\n 'Opportunity',\n 'JobOrder',\n 'CorporateUser',\n 'Person',\n 'Placement',\n 'JobShift',\n ];\n ENTITY_PICKER_LIST: string[] = [\n 'Candidate',\n 'CandidateText',\n 'Client',\n 'ClientText',\n 'ClientContact',\n 'ClientContactText',\n 'ClientCorporation',\n 'ClientCorporationText',\n 'Lead',\n 'LeadText',\n 'Opportunity',\n 'OpportunityText',\n 'JobOrder',\n 'JobOrderText',\n 'CorporateUser',\n 'CorporateUserText',\n 'Person',\n 'PersonText',\n 'Placement',\n 'JobShift',\n ];\n\n constructor(public labels: NovoLabelService, public optionsService: OptionsService) {}\n\n toFormGroup(controls: Array<any>): NovoFormGroup {\n const group: any = {};\n controls.forEach((control) => {\n const value = Helpers.isBlank(control.value) ? '' : control.value;\n group[control.key] = new NovoFormControl(value, control);\n });\n return new NovoFormGroup(group);\n }\n\n emptyFormGroup(): NovoFormGroup {\n return new NovoFormGroup({});\n }\n\n addControls(formGroup: NovoFormGroup, controls: Array<NovoControlConfig>): void {\n controls.forEach((control) => {\n const value = Helpers.isBlank(control.value) ? '' : control.value;\n const formControl = new NovoFormControl(value, control);\n formGroup.addControl(control.key, formControl);\n });\n }\n\n removeControls(formGroup: NovoFormGroup, controls: Array<NovoControlConfig>): void {\n controls.forEach((control) => {\n formGroup.removeControl(control.key);\n });\n }\n\n toFormGroupFromFieldset(fieldsets: Array<NovoFieldset>): NovoFormGroup {\n const controls: Array<NovoFormControl> = [];\n fieldsets.forEach((fieldset) => {\n controls.push(...fieldset.controls);\n });\n return this.toFormGroup(controls);\n }\n\n hasAssociatedEntity(field: FormField): boolean {\n return !!(field.associatedEntity && ~this.ASSOCIATED_ENTITY_LIST.indexOf(field.associatedEntity.entity));\n }\n\n determineInputType(field: FormField): string {\n let type: string;\n const dataSpecializationTypeMap = {\n DATETIME: 'datetime',\n TIME: 'time',\n MONEY: 'currency',\n PERCENTAGE: 'percentage',\n HTML: 'editor',\n 'HTML-MINIMAL': 'editor-minimal',\n YEAR: 'year',\n WORKFLOW_OPTIONS: 'select',\n SPECIALIZED_OPTIONS: 'select',\n ALL_WORKFLOW_OPTIONS: 'select',\n WorkflowOptionsLookup: 'select',\n SpecializedOptionsLookup: 'select',\n SimplifiedOptionsLookup: 'select',\n AllWorkflowOptionsLookup: 'select',\n };\n const dataTypeToTypeMap = {\n Timestamp: 'date',\n Date: 'date',\n Boolean: 'tiles', // eslint-disable-line\n };\n const inputTypeToTypeMap = {\n CHECKBOX: 'radio',\n RADIO: 'radio',\n SELECT: 'select',\n TILES: 'tiles',\n };\n const inputTypeMultiToTypeMap = {\n CHECKBOX: 'checklist',\n RADIO: 'checklist',\n SELECT: 'chips',\n };\n const typeToTypeMap = {\n file: 'file',\n COMPOSITE: 'address',\n };\n const numberDataTypeToTypeMap = {\n Double: 'float',\n BigDecimal: 'float',\n Integer: 'number',\n };\n if (field.type === 'TO_MANY') {\n if (this.hasAssociatedEntity(field)) {\n if (field.multiValue === false) {\n type = 'entitypicker';\n } else {\n type = 'entitychips';\n }\n } else {\n if (field.multiValue === false) {\n type = 'picker';\n } else {\n type = 'chips';\n }\n }\n } else if (field.type === 'TO_ONE') {\n if (\n 'SYSTEM' === field.dataSpecialization &&\n ['WorkflowOptionsLookup', 'SpecializedOptionsLookup', 'AllWorkflowOptionsLookup'].includes(field.dataType)\n ) {\n type = dataSpecializationTypeMap[field.dataType];\n } else if (['WORKFLOW_OPTIONS', 'SPECIALIZED_OPTIONS', 'ALL_WORKFLOW_OPTIONS'].includes(field.dataSpecialization)) {\n type = dataSpecializationTypeMap[field.dataSpecialization];\n } else if (['SimplifiedOptionsLookup', 'SpecializedOptionsLookup'].includes(field.dataType)) {\n if (field.options && Object.keys(inputTypeToTypeMap).indexOf(field.inputType) > -1 && !field.multiValue) {\n type = inputTypeToTypeMap[field.inputType];\n } else if (field.options && Object.keys(inputTypeMultiToTypeMap).indexOf(field.inputType) > -1 && field.multiValue) {\n type = inputTypeMultiToTypeMap[field.inputType];\n } else {\n type = dataSpecializationTypeMap[field.dataType];\n }\n } else if (this.hasAssociatedEntity(field)) {\n type = 'entitypicker'; // TODO!\n } else {\n type = 'picker';\n }\n } else if (field.optionsUrl && field.inputType === 'SELECT') {\n if (field.optionsType && ~this.ENTITY_PICKER_LIST.indexOf(field.optionsType)) {\n type = 'entitypicker'; // TODO!\n } else {\n type = 'picker';\n }\n } else if (Object.keys(dataSpecializationTypeMap).indexOf(field.dataSpecialization) > -1) {\n type = dataSpecializationTypeMap[field.dataSpecialization];\n } else if (Object.keys(dataTypeToTypeMap).indexOf(field.dataType) > -1) {\n type = dataTypeToTypeMap[field.dataType];\n } else if (field.inputType === 'TEXTAREA') {\n type = 'textarea';\n } else if (field.options && Object.keys(inputTypeToTypeMap).indexOf(field.inputType) > -1 && !field.multiValue) {\n type = inputTypeToTypeMap[field.inputType];\n } else if (field.options && Object.keys(inputTypeMultiToTypeMap).indexOf(field.inputType) > -1 && field.multiValue) {\n type = inputTypeMultiToTypeMap[field.inputType];\n } else if (Object.keys(typeToTypeMap).indexOf(field.type) > -1) {\n type = typeToTypeMap[field.type];\n } else if (Object.keys(numberDataTypeToTypeMap).indexOf(field.dataType) > -1) {\n type = numberDataTypeToTypeMap[field.dataType];\n } /* else {\n throw new Error('FormUtils: This field type is unsupported.');\n }*/\n return type;\n }\n\n isFieldEncrypted(key: string): boolean {\n return key.indexOf('customEncrypted') > -1;\n }\n\n getControlForField(\n field: any,\n http,\n config: { token?: string; restUrl?: string; military?: boolean; weekStart?: number },\n overrides?: any,\n forTable: boolean = false,\n fieldData?: any,\n ) {\n // TODO: if field.type overrides `determineInputType` we should use it in that method or use this method\n // TODO: (cont.) as the setter of the field argument\n let type: string = this.determineInputType(field) || field.type;\n let control: any;\n const controlConfig: NovoControlConfig = {\n metaType: field.type,\n type,\n key: field.name,\n label: field.label,\n placeholder: field.hint || '',\n required: field.required || field.systemRequired,\n hidden: !field.required,\n encrypted: this.isFieldEncrypted(field.name ? field.name.toString() : ''),\n value: field.value || field.defaultValue,\n sortOrder: field.sortOrder,\n associatedEntity: field.associatedEntity,\n optionsType: field.optionsType,\n multiple: field.multiValue,\n readOnly: !!field.disabled || !!field.readOnly,\n disabled: field.disabled,\n maxlength: field.maxLength,\n interactions: field.interactions,\n dataSpecialization: field.dataSpecialization,\n dataType: field.dataType,\n description: field.description || '',\n tooltip: field.tooltip,\n tooltipPosition: field.tooltipPosition,\n customControl: field.customControl,\n template: field.template,\n customControlConfig: field.customControlConfig,\n restrictFieldInteractions: field.restrictFieldInteractions,\n validators: field.validators,\n warning: field.warning,\n config: field.config || {},\n closeOnSelect: field.closeOnSelect,\n layoutOptions: field.layoutOptions,\n };\n this.inferDateRange(controlConfig, field);\n // TODO: getControlOptions should always return the correct format\n const optionsConfig = this.getControlOptions(field, http, config, fieldData);\n if (Array.isArray(optionsConfig) && !(type === 'chips' || type === 'picker')) {\n controlConfig.options = optionsConfig;\n } else if (Array.isArray(optionsConfig) && (type === 'chips' || type === 'picker')) {\n controlConfig.config = {\n options: optionsConfig,\n };\n } else if (optionsConfig) {\n controlConfig.config = {\n ...optionsConfig,\n ...(controlConfig && controlConfig.config),\n };\n }\n\n if (type === 'year') {\n controlConfig.maxlength = 4;\n }\n // TODO: Overrides should be an iterable of all properties (potentially a private method)\n let overrideResultsTemplate;\n let overridePreviewTemplate;\n if (overrides && overrides[field.name]) {\n if (overrides[field.name].resultsTemplate) {\n overrideResultsTemplate = overrides[field.name].resultsTemplate;\n controlConfig.config.resultsTemplate = overrideResultsTemplate;\n delete overrides[field.name].resultsTemplate;\n }\n if (overrides[field.name].overridePreviewTemplate) {\n overrideResultsTemplate = overrides[field.name].overridePreviewTemplate;\n controlConfig.config.overridePreviewTemplate = overrideResultsTemplate;\n delete overrides[field.name].overridePreviewTemplate;\n }\n if (overrides[field.name].pickerCallback) {\n controlConfig.config.callback = overrides[field.name].pickerCallback;\n }\n if (overrides[field.name].type) {\n type = overrides[field.name].type;\n }\n if (overrides[field.name].columns) {\n controlConfig.config.columns = overrides[field.name].columns;\n controlConfig.closeOnSelect = true;\n delete controlConfig.label;\n }\n if (overrides[field.name].warning) {\n controlConfig.warning = overrides[field.name].warning;\n }\n Object.assign(controlConfig, overrides[field.name]);\n }\n\n switch (type) {\n case 'entitychips':\n // TODO: This doesn't belong in this codebase\n controlConfig.multiple = true;\n controlConfig.config.resultsTemplate = overrideResultsTemplate || EntityPickerResults;\n controlConfig.config.previewTemplate = overridePreviewTemplate || EntityPickerResult;\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'chips':\n controlConfig.multiple = true;\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'entitypicker':\n // TODO: This doesn't belong in this codebase\n controlConfig.config.resultsTemplate = overrideResultsTemplate || EntityPickerResults;\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'picker':\n // TODO: When appendToBody picker works better in table/form\n control = new PickerControl(controlConfig);\n break;\n case 'datetime':\n controlConfig.military = config ? !!config.military : false;\n controlConfig.weekStart = config && config.weekStart ? config.weekStart : 0;\n control = new DateTimeControl(controlConfig);\n break;\n case 'date':\n controlConfig.dateFormat = field.dateFormat;\n controlConfig.textMaskEnabled = field.textMaskEnabled;\n controlConfig.allowInvalidDate = field.allowInvalidDate;\n controlConfig.military = config ? !!config.military : false;\n controlConfig.weekStart = config && config.weekStart ? config.weekStart : 0;\n control = new DateControl(controlConfig);\n break;\n case 'time':\n controlConfig.military = config ? !!config.military : false;\n control = new TimeControl(controlConfig);\n break;\n case 'native-time':\n case 'native-date':\n case 'native-week':\n case 'native-year':\n case 'native-datetime-local':\n case 'native-tel':\n case 'native-email':\n case 'native-url':\n case 'native-number':\n control = new CustomControl({ ...controlConfig, template: 'native-input', type: type.replace('native-', ''), alwaysActive: true });\n break;\n case 'timezone':\n control = new TimezoneControl(controlConfig);\n break;\n case 'currency':\n case 'money':\n case 'email':\n case 'percentage':\n case 'float':\n case 'number':\n case 'year':\n // TODO: Only types from `determineInputType` should be used in this class\n if (type === 'money') {\n type = 'currency';\n }\n controlConfig.type = type;\n control = new TextBoxControl(controlConfig);\n break;\n case 'text':\n control = new TextBoxControl(controlConfig);\n break;\n case 'textarea':\n control = new TextAreaControl(controlConfig);\n break;\n case 'editor':\n control = new EditorControl(controlConfig);\n break;\n case 'editor-minimal':\n control = new EditorControl(controlConfig);\n control.minimal = true;\n break;\n case 'tiles':\n control = new TilesControl(controlConfig);\n break;\n case 'checkbox':\n controlConfig.checkboxLabel = field.checkboxLabel;\n control = new CheckboxControl(controlConfig);\n break;\n case 'switch':\n control = new SwitchControl(controlConfig);\n break;\n case 'checklist':\n control = new CheckListControl(controlConfig);\n break;\n case 'radio':\n control = new RadioControl(controlConfig);\n break;\n case 'select':\n control = new SelectControl(controlConfig);\n break;\n case 'address':\n controlConfig.required = field.required || false;\n if (Helpers.isBlank(controlConfig.config)) {\n controlConfig.config = {};\n }\n controlConfig.config.required = field.required;\n controlConfig.config.readOnly = controlConfig.readOnly;\n if (field.fields && field.fields.length) {\n for (const subfield of field.fields) {\n controlConfig.config[subfield.name] = {\n required: !!subfield.required,\n hidden: !!subfield.readOnly,\n };\n if (!Helpers.isEmpty(subfield.label)) {\n controlConfig.config[subfield.name].label = subfield.label;\n }\n if (!Helpers.isEmpty(subfield.maxLength)) {\n controlConfig.config[subfield.name].maxlength = subfield.maxLength;\n }\n controlConfig.required = controlConfig.required || subfield.required;\n if (subfield.defaultValue) {\n if (Helpers.isBlank(controlConfig.value)) {\n controlConfig.value = {};\n }\n controlConfig.value[subfield.name] = subfield.defaultValue;\n } else if (subfield.name === 'countryID') {\n if (Helpers.isBlank(controlConfig.value)) {\n controlConfig.value = {};\n }\n controlConfig.value[subfield.name] = 1;\n }\n if (subfield.name === 'state' || subfield.name === 'countryID') {\n if (subfield.name === 'countryID') {\n subfield.optionsType = 'Country';\n }\n if (!subfield.optionsUrl) {\n subfield.optionsUrl = `options/${subfield.optionsType}`;\n }\n controlConfig.config[subfield.name].pickerConfig = this.getControlOptions(subfield, http, config, fieldData);\n }\n }\n }\n controlConfig.isEmpty = this.isAddressEmpty;\n control = new AddressControl(controlConfig);\n break;\n case 'file':\n control = new FileControl(controlConfig);\n break;\n case 'custom':\n control = new CustomControl(controlConfig);\n break;\n default:\n control = new TextBoxControl(controlConfig);\n break;\n }\n return control;\n }\n\n private shouldCreateControl(field): boolean {\n if (field.systemRequired) {\n field.readOnly = false;\n }\n\n return (\n field.name !== 'id' &&\n (!['SYSTEM', 'SECTION_HEADER'].includes(field.dataSpecialization) ||\n ['address', 'billingAddress', 'secondaryAddress'].includes(field.name)) &&\n !field.readOnly\n );\n }\n\n toControls(\n meta,\n currencyFormat,\n http,\n config: { token?: string; restUrl?: string; military?: boolean; weekStart?: number },\n overrides?: any,\n forTable: boolean = false,\n ) {\n const controls = [];\n if (meta && meta.fields) {\n const fields = meta.fields;\n fields.forEach((field) => {\n if (this.shouldCreateControl(field)) {\n const control = this.getControlForField(field, http, config, overrides, forTable);\n // Set currency format\n if (control.subType === 'currency') {\n control.currencyFormat = currencyFormat;\n }\n // Add to controls\n controls.push(control);\n }\n });\n }\n return controls;\n }\n\n toTableControls(meta, currencyFormat, http, config: { token?: string; restUrl?: string; military?: boolean }, overrides?: any) {\n const controls = this.toControls(meta, currencyFormat, http, config, overrides, true);\n const ret = {};\n controls.forEach((control: BaseControl) => {\n ret[control.key] = {\n editorType: control.__type,\n editorConfig: control.__config,\n };\n });\n return ret;\n }\n\n toFieldSets(\n meta,\n currencyFormat,\n http,\n config: { token?: string; restUrl?: string; military?: boolean; weekStart?: number },\n overrides?,\n data?: { [key: string]: any },\n ) {\n const fieldsets: Array<NovoFieldset> = [];\n let formFields = [];\n\n if (meta && meta.fields) {\n formFields = this.getFormFields(meta);\n\n formFields.forEach((field) => {\n if (this.isHeader(field)) {\n if (field.enabled) {\n this.insertHeaderToFieldsets(fieldsets, field);\n }\n } else if (this.isEmbeddedField(field)) {\n this.insertHeaderToFieldsets(fieldsets, field);\n\n const embeddedFields = this.getEmbeddedFields(field);\n\n embeddedFields.forEach((embeddedField) => {\n if (this.shouldCreateControl(embeddedField)) {\n let control = this.createControl(embeddedField, data, http, config, overrides, currencyFormat);\n control = this.markControlAsEmbedded(control, field.dataSpecialization ? field.dataSpecialization.toLowerCase() : null);\n fieldsets[fieldsets.length - 1].controls.push(control);\n } else if (this.isHeader(embeddedField)) {\n this.insertHeaderToFieldsets(fieldsets, embeddedField);\n }\n });\n } else if (this.shouldCreateControl(field)) {\n let control = this.createControl(field, data, http, config, overrides, currencyFormat);\n if (field.inlineEmbeddedAssociatedEntityField) {\n control = this.markControlAsEmbedded(control, 'inline_embedded');\n }\n\n if (fieldsets.length === 0) {\n fieldsets.push({ controls: [] });\n }\n\n fieldsets[fieldsets.length - 1].controls.push(control);\n }\n });\n }\n if (fieldsets.length > 0) {\n return fieldsets;\n } else {\n return [\n {\n controls: this.toControls(meta, currencyFormat, http, config),\n },\n ];\n }\n }\n\n private isEmbeddedField(field) {\n return field.dataSpecialization && ['embedded'].includes(field.dataSpecialization.toLowerCase()) && !field.readOnly;\n }\n\n private createControl(field, data, http, config, overrides, currencyFormat) {\n const fieldData = this.isEmbeddedFieldData(field, data) ? this.getEmbeddedFieldData(field, data) : this.getFieldData(field, data);\n const control = this.getControlForField(field, http, config, overrides, undefined, fieldData);\n // Set currency format\n if (control.subType === 'currency') {\n control.currencyFormat = currencyFormat;\n }\n return control;\n }\n\n private isEmbeddedFieldData(field, data) {\n return data && field.name.includes('.');\n }\n\n private getFieldData(field, data) {\n return (data && data[field.name]) || null;\n }\n\n private getEmbeddedFieldData(field, data) {\n const [parentFieldName, fieldName] = field.name.split('.');\n return (data && data[parentFieldName] && data[parentFieldName][fieldName]) || null;\n }\n\n private getFormFields(meta) {\n const sectionHeaders = meta.sectionHeaders\n ? meta.sectionHeaders.map((element) => {\n element.isSectionHeader = true;\n return element;\n })\n : [];\n\n let fields = meta.fields.map((field) => {\n field.parentEntity = meta.entity;\n if (!field.hasOwnProperty('sortOrder')) {\n field.sortOrder = Number.MAX_SAFE_INTEGER - 1;\n }\n return field;\n });\n\n // build list of fields that should be displayed inline but belong to associated entities\n const inlineEmbeddedAssociatedEntityFields = this.getInlineEmbeddedFields(fields);\n\n // remove the inline embedded fields because the associated entity fields were extracted above\n // and will be added to the regular list of fields. This prevents the fields from being added multiple times.\n fields = fields.filter((f) => !f.dataSpecialization || f.dataSpecialization.toLowerCase() !== 'inline_embedded');\n\n // sort fields\n return [...sectionHeaders, ...fields, ...inlineEmbeddedAssociatedEntityFields].sort(Helpers.sortByField(['sortOrder', 'name']));\n }\n\n private getInlineEmbeddedFields(fields) {\n let inlineEmbeddedAssociatedEntityFields = [];\n fields\n .filter((f) => f.dataSpecialization && f.dataSpecialization.toLowerCase() === 'inline_embedded')\n .forEach((f) => {\n inlineEmbeddedAssociatedEntityFields = [...inlineEmbeddedAssociatedEntityFields, ...this.getAssociatedFieldsForInlineEmbedded(f)];\n });\n return inlineEmbeddedAssociatedEntityFields;\n }\n\n private getAssociatedFieldsForInlineEmbedded(field) {\n let associatedEntityFields = [];\n associatedEntityFields = this.getEmbeddedFields(field).map((aef) => {\n aef.inlineEmbeddedAssociatedEntityField = true;\n return aef;\n });\n return associatedEntityFields;\n }\n\n private getEmbeddedFields(subHeader) {\n return subHeader.associatedEntity.fields\n .filter((field) => field.name !== 'id')\n .map((field) => {\n if (!field.name.startsWith(`${subHeader.name}.`)) {\n field.name = `${subHeader.name}.${field.name}`;\n }\n return field;\n })\n .sort(Helpers.sortByField(['sortOrder', 'name']));\n }\n\n private isHeader(field): boolean {\n return (\n !Helpers.isBlank(field) &&\n ((field.hasOwnProperty('isSectionHeader') && field.isSectionHeader) ||\n (field.dataSpecialization && field.dataSpecialization.toLowerCase() === 'section_header'))\n );\n }\n\n private insertHeaderToFieldsets(fieldsets, field) {\n const constantProperties = {\n controls: [],\n isEmbedded: field.dataSpecialization && field.dataSpecialization.toLowerCase() === 'embedded',\n isInlineEmbedded: field.dataSpecialization && field.dataSpecialization.toLowerCase() === 'inline_embedded',\n key: field.name,\n };\n if (field.name && field.name.startsWith('customObject') && field.associatedEntity && field.associatedEntity.label) {\n fieldsets.push({\n title: field.associatedEntity.label || field.label,\n icon: field.icon || 'bhi-card-expand',\n ...constantProperties,\n });\n } else {\n fieldsets.push({\n title: field.label,\n icon: field.icon || 'bhi-section',\n ...constantProperties,\n });\n }\n }\n\n private markControlAsEmbedded(control, dataSpecialization?: 'embedded' | 'inline_embedded') {\n if (Helpers.isBlank(control.config)) {\n control.config = {};\n }\n control.config.embedded = true;\n control.isEmbedded = dataSpecialization === 'embedded';\n control.isInlineEmbedded = dataSpecialization === 'inline_embedded';\n return control;\n }\n\n getControlOptions(field: any, http: any, config: { token?: string; restUrl?: string; military?: boolean }, fieldData?: any): any {\n // TODO: The token property of config is the only property used; just pass in `token: string`\n if (field.dataType === 'Boolean' && !field.options) {\n // TODO: dataType should only be determined by `determineInputType` which doesn't ever return 'Boolean' it\n // TODO: (cont.) returns `tiles`\n return [\n { value: false, label: this.labels.no },\n { value: true, label: this.labels.yes },\n ];\n } else if (field.dataSpecialization === 'ALL_WORKFLOW_OPTIONS' && field.options) {\n return field.options;\n } else if (field.workflowOptions) {\n return this.getWorkflowOptions(field.workflowOptions, fieldData);\n } else if (\n field.dataSpecialization === 'SPECIALIZED_OPTIONS' ||\n (field.options && ['SpecializedOptionsLookup', 'SimplifiedOptionsLookup'].includes(field.dataType))\n ) {\n return field.options;\n } else if (field.optionsUrl) {\n return this.optionsService.getOptionsConfig(http, field, config);\n } else if (Array.isArray(field.options) && field.type === 'chips') {\n const options = field.options;\n return {\n field: 'value',\n format: '$label',\n options,\n };\n } else if (field.options) {\n return field.options;\n }\n return null;\n }\n\n private getWorkflowOptions(\n workflowOptions: { [key: string]: any },\n fieldData: { id?: number; value?: string | number; label?: string | number } | null,\n ): Array<{ id?: number; value?: string | number; label?: string | number }> {\n let currentValue: { id?: number; value?: string | number; label?: string | number } = null;\n let currentWorkflowOption: number | string = 'initial';\n if (fieldData?.id) {\n currentValue = { ...fieldData, value: fieldData.id, label: fieldData.label || fieldData.id };\n currentWorkflowOption = fieldData.id;\n }\n const updateWorkflowOptions: Array<{ id?: number; value?: string | number; label?: string | number }> =\n workflowOptions[currentWorkflowOption] || [];\n\n // Ensure that the current value is added to the beginning of the options list\n if (currentValue && !updateWorkflowOptions.find((option) => option.value === currentValue.value)) {\n updateWorkflowOptions.unshift(currentValue);\n }\n\n return updateWorkflowOptions;\n }\n\n setInitialValues(controls: Array<NovoControlConfig>, values: any, keepClean?: boolean, keyOverride?: string) {\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i];\n const key = keyOverride ? control.key.replace(keyOverride, '') : control.key;\n let value = values[key];\n\n if (Helpers.isBlank(value)) {\n continue;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n continue;\n }\n\n if (Array.isArray(value) && value.length > 0) {\n value = value.filter((val) => !(Object.keys(val).length === 0 && val.constructor === Object));\n if (value.length === 0) {\n continue;\n }\n }\n\n if (value.data && value.data.length === 0) {\n continue;\n }\n\n if (Object.keys(value).length === 0 && value.constructor === Object) {\n continue;\n }\n\n if (control.dataType === 'Date' && typeof value === 'string' && control.optionsType !== 'skipConversion') {\n value = DateUtil.startOfDay(value);\n }\n\n control.value = value;\n // TODO: keepClean is not required, but is always used. It should default (to true?)\n control.dirty = !keepClean;\n }\n }\n\n setInitialValuesFieldsets(fieldsets: Array<NovoFieldset>, values, keepClean?: boolean) {\n fieldsets.forEach((fieldset) => {\n this.setInitialValues(fieldset.controls, values, keepClean);\n });\n }\n\n forceShowAllControls(controls: Array<NovoControlConfig>) {\n controls.forEach((control) => {\n control.hidden = false;\n });\n }\n\n forceShowAllControlsInFieldsets(fieldsets: Array<NovoFieldset>) {\n fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n control.hidden = false;\n });\n });\n }\n\n forceValidation(form: NovoFormGroup): void {\n Object.keys(form.controls).forEach((key: string) => {\n const control: any = form.controls[key];\n if (control.required && Helpers.isBlank(form.getRawValue()[control.key])) {\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n }\n\n isAddressEmpty(control: any): boolean {\n const fieldList: string[] = ['address1', 'address2', 'city', 'state', 'zip', 'countryID'];\n let valid: boolean = true;\n if (control.value && control.config) {\n fieldList.forEach((subfield: string) => {\n if (\n ((subfield !== 'countryID' &&\n !Helpers.isEmpty(control.config[subfield]) &&\n control.config[subfield].required &&\n (Helpers.isBlank(control.value[subfield]) || Helpers.isEmpty(control.value[subfield]))) ||\n (subfield === 'countryID' &&\n !Helpers.isEmpty(control.config.countryID) &&\n control.config.countryID.required &&\n Helpers.isEmpty(control.value.countryName))) &&\n !(\n subfield === 'state' &&\n !Helpers.isBlank(control.value.countryName) &&\n control.config.state.pickerConfig &&\n control.config.state.pickerConfig.defaultOptions &&\n control.config.state.pickerConfig.defaultOptions.length === 0\n )\n ) {\n valid = false;\n }\n });\n }\n return valid;\n }\n\n private getStartDateFromRange(dateRange: { minDate: string; minOffset: number }): Date {\n if (dateRange.minDate) {\n return DateUtil.parse(dateRange.minDate);\n } else if (dateRange.minOffset) {\n return DateUtil.addDays(startOfToday(), dateRange.minOffset);\n }\n }\n\n private getEndDateFromRange(dateRange: { maxDate: string; minOffset: number }): Date {\n if (dateRange.maxDate) {\n return DateUtil.parse(dateRange.maxDate);\n } else if (dateRange.minOffset) {\n return DateUtil.addDays(startOfToday(), dateRange.minOffset);\n }\n }\n\n /**\n * Get the min start date and max end date of a Date base on field data.\n */\n\n private inferDateRange(controlConfig, field): void {\n if (field.dataType === 'Date' && field.allowedDateRange) {\n controlConfig.startDate = this.getStartDateFromRange(field.allowedDateRange);\n controlConfig.endDate = this.getEndDateFromRange(field.allowedDateRange);\n controlConfig.disabledDateMessage = field.allowedDateRange?.disabledDateMessage;\n }\n }\n\n inflateEmbeddedProperties(data: object): object {\n if (data) {\n Object.keys(data)\n .filter((fieldName) => fieldName.includes('.'))\n .forEach((field) => {\n const [parentFieldName, fieldName] = field.split('.');\n if (!data[parentFieldName]) {\n data[parentFieldName] = {};\n }\n data[parentFieldName][fieldName] = data[field];\n delete data[field];\n });\n }\n\n return data;\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n// APP\nimport { NovoModalParams, NovoModalRef } from 'novo-elements/elements/modal';\nimport { NovoLabelService } from 'novo-elements/services';\n\n@Component({\n selector: 'control-confirm-modal',\n template: `\n <novo-notification type=\"warning\" [attr.data-automation-id]=\"'field-interaction-modal-' + params['key']\">\n <h1>{{ labels.confirmChangesModalMessage }}</h1>\n <h2 *ngIf=\"!params['message']\">\n <label>{{ params['label'] }}:</label> {{ params['oldValue'] }} <i class=\"bhi-arrow-right\"></i> {{ params['newValue'] }}\n </h2>\n <h2 *ngIf=\"params['message']\">{{ params['message'] }}</h2>\n <novo-button theme=\"standard\" (click)=\"close(false)\" [attr.data-automation-id]=\"'field-interaction-modal-cancel' + params['key']\">\n {{ labels.cancel }}\n </novo-button>\n <novo-button\n theme=\"primary\"\n icon=\"check\"\n (click)=\"close(true)\"\n autofocus\n [attr.data-automation-id]=\"'field-interaction-modal-save-' + params['key']\"\n >\n {{ labels.save }}\n </novo-button>\n </novo-notification>\n `,\n standalone: false,\n})\nexport class ControlConfirmModal {\n constructor(private modalRef: NovoModalRef, public params: NovoModalParams, public labels: NovoLabelService) {}\n\n public close(result: boolean): void {\n this.modalRef.close(result);\n }\n}\n\n@Component({\n selector: 'control-prompt-modal',\n template: `\n <novo-notification type=\"warning\" [attr.data-automation-id]=\"'field-interaction-modal-' + params['key']\">\n <h1>{{ labels.promptModalMessage }}</h1>\n <p *ngFor=\"let change of params['changes']\">{{ change }}</p>\n <novo-button theme=\"standard\" (click)=\"close(false)\" [attr.data-automation-id]=\"'field-interaction-modal-cancel' + params['key']\">\n {{ labels.cancel }}\n </novo-button>\n <novo-button\n theme=\"primary\"\n icon=\"check\"\n (click)=\"close(true)\"\n autofocus\n [attr.data-automation-id]=\"'field-interaction-modal-yes-' + params['key']\"\n >\n {{ labels.yes }}\n </novo-button>\n </novo-notification>\n `,\n standalone: false,\n})\nexport class ControlPromptModal {\n constructor(private modalRef: NovoModalRef, public params: NovoModalParams, public labels: NovoLabelService) {}\n\n public close(result: boolean): void {\n this.modalRef.close(result);\n }\n}\n","// NG2\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { FormArray } from '@angular/forms';\n// Vendor\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n// APP\nimport { NovoModalService } from 'novo-elements/elements/modal';\nimport { EntityPickerResults } from 'novo-elements/elements/picker';\nimport { NovoToastService, ToastOptions } from 'novo-elements/elements/toast';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { AppBridge, Helpers } from 'novo-elements/utils';\nimport { FormUtils } from './utils/FormUtils';\nimport { CustomHttp, ModifyPickerConfigArgs, OptionsFunction } from './FieldInteractionApiTypes';\nimport { ControlConfirmModal, ControlPromptModal } from './FieldInteractionModals';\nimport { NovoControlConfig } from './FormControls';\nimport { IFieldInteractionEvent, NovoFieldset, ResultsTemplateType } from './FormInterfaces';\nimport { NovoFormControl } from './NovoFormControl';\nimport { NovoFormGroup } from './NovoFormGroup';\n\nclass CustomHttpImpl implements CustomHttp {\n url: string;\n options;\n mapFn = (x) => x;\n\n constructor(private http: HttpClient) {}\n\n get(url: string, options?): CustomHttp {\n this.url = url;\n this.options = options;\n return this;\n }\n\n map(mapFn): CustomHttp {\n this.mapFn = mapFn;\n return this;\n }\n\n subscribe(resolve, reject?): Subscription {\n return this.http.get(this.url, this.options).pipe(map(this.mapFn)).subscribe(resolve, reject);\n }\n}\n\n@Injectable()\nexport class FieldInteractionApi {\n private _globals;\n form: NovoFormGroup | any;\n private _currentKey: string;\n appBridge: AppBridge;\n private asyncBlockTimeout;\n private _isInvokedOnInit = false;\n\n static FIELD_POSITIONS = {\n ABOVE_FIELD: 'ABOVE_FIELD',\n BELOW_FIELD: 'BELOW_FIELD',\n TOP_OF_FORM: 'TOP_OF_FORM',\n BOTTOM_OF_FORM: 'BOTTOM_OF_FORM',\n };\n\n constructor(\n private toaster: NovoToastService,\n private modalService: NovoModalService,\n private formUtils: FormUtils,\n private http: HttpClient,\n private labels: NovoLabelService,\n ) {}\n\n get associations(): object {\n return this.form.hasOwnProperty('associations') ? this.form.associations : {};\n }\n\n get currentEntity(): string {\n return this.form.hasOwnProperty('currentEntity') ? this.form.currentEntity : undefined;\n }\n\n get currentEntityId(): string {\n return this.form.hasOwnProperty('currentEntityId') ? this.form.currentEntityId : undefined;\n }\n\n get isEdit(): boolean {\n return this.form.hasOwnProperty('edit') ? this.form.edit : false;\n }\n\n get isAdd(): boolean {\n return this.form.hasOwnProperty('edit') ? !this.form.edit : false;\n }\n\n set globals(globals) {\n this._globals = globals;\n }\n\n get globals() {\n return this._globals;\n }\n\n set currentKey(key: string) {\n this._currentKey = key;\n }\n\n get currentKey(): string {\n return this._currentKey;\n }\n\n set isInvokedOnInit(isOnInit: boolean) {\n this._isInvokedOnInit = isOnInit;\n }\n\n get isInvokedOnInit(): boolean {\n return this._isInvokedOnInit;\n }\n\n isActiveControlValid(): boolean {\n return !!this.getValue(this.currentKey);\n }\n\n getActiveControl(): NovoFormControl {\n return this.getControl(this.currentKey);\n }\n\n getActiveKey(): string {\n return this.currentKey;\n }\n\n getActiveValue() {\n return this.getValue(this.currentKey);\n }\n\n getActiveInitialValue() {\n return this.getInitialValue(this.currentKey);\n }\n\n getFieldSet(key: string, otherForm?: NovoFormGroup): NovoFieldset {\n if (!key) {\n console.error('[FieldInteractionAPI] - invalid or missing \"key\"');\n return null;\n }\n\n const form = otherForm || this.form;\n const fieldSet = form.fieldsets.find((fs: NovoFieldset) => fs.key && fs.key.toLowerCase() === key.toLowerCase());\n if (!fieldSet) {\n console.error('[FieldInteractionAPI] - could not find a fieldset in the form by the key --', key);\n return null;\n }\n\n return fieldSet as NovoFieldset;\n }\n\n getControl(key: string, otherForm?: NovoFormGroup) {\n if (!key) {\n console.error('[FieldInteractionAPI] - invalid or missing \"key\"');\n return null;\n }\n\n const form = otherForm || this.form;\n const control = form.controls[key] as NovoFormControl;\n if (!control) {\n console.error('[FieldInteractionAPI] - could not find a control in the form by the key --', key);\n return null;\n }\n\n return control;\n }\n\n getFormGroupArray(key: string, otherForm?: NovoFormGroup): NovoFormGroup[] {\n if (!key) {\n console.error('[FieldInteractionAPI] - invalid or missing \"key\"');\n return null;\n }\n\n const form = otherForm || this.form;\n const formArray = form.controls[key] as FormArray;\n if (!formArray || !formArray.controls) {\n console.error('[FieldInteractionAPI] - could not find a form array in the form by the key --', key);\n return null;\n }\n\n return formArray.controls as NovoFormGroup[] | any;\n }\n\n getValue(key: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control) {\n return control.value;\n }\n return null;\n }\n\n getRawValue(key: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control) {\n return control.rawValue;\n }\n return null;\n }\n\n getInitialValue(key: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control) {\n return control.initialValue;\n }\n return null;\n }\n\n setValue(\n key: string,\n value,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n emitModelToViewChange?: boolean;\n emitViewToModelChange?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setValue(value, options);\n this.triggerEvent({ controlKey: key, prop: 'value', value }, otherForm);\n }\n }\n\n patchValue(\n key: string,\n value,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n emitModelToViewChange?: boolean;\n emitViewToModelChange?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setValue(value, options);\n this.triggerEvent({ controlKey: key, prop: 'value', value }, otherForm);\n }\n }\n\n setReadOnly(key: string, isReadOnly: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setReadOnly(isReadOnly);\n this.triggerEvent({ controlKey: key, prop: 'readOnly', value: isReadOnly }, otherForm);\n }\n }\n\n setRequired(key: string, required: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.setRequired(required);\n this.triggerEvent({ controlKey: key, prop: 'required', value: required }, otherForm);\n }\n }\n\n setDescription(key: string, description: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.description = description;\n this.triggerEvent({ controlKey: key, prop: 'description', value: description }, otherForm);\n }\n }\n\n highlight(key: string, isHighlighted: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.highlighted = isHighlighted;\n this.triggerEvent({ controlKey: key, prop: 'highlight', value: isHighlighted }, otherForm);\n }\n }\n\n hide(key: string, clearValue = true, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.hide(clearValue);\n this.disable(key, { emitEvent: false });\n this.triggerEvent({ controlKey: key, prop: 'hidden', value: true }, otherForm);\n }\n return control;\n }\n\n show(key: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.show();\n this.enable(key, { emitEvent: false });\n this.triggerEvent({ controlKey: key, prop: 'hidden', value: false }, otherForm);\n }\n }\n\n hideFieldSetHeader(key: string): void {\n const fieldSet = this.getFieldSet(key);\n if (fieldSet) {\n fieldSet.hidden = true;\n }\n }\n\n showFieldSetHeader(key: string): void {\n const fieldSet = this.getFieldSet(key);\n if (fieldSet) {\n fieldSet.hidden = false;\n }\n }\n\n disable(\n key: string,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.disable(options);\n this.triggerEvent({ controlKey: key, prop: 'readOnly', value: true }, otherForm);\n }\n }\n\n enable(\n key: string,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.enable(options);\n this.triggerEvent({ controlKey: key, prop: 'readOnly', value: false }, otherForm);\n }\n }\n\n markAsInvalid(key: string, validationMessage?: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control) {\n if (control && !control.restrictFieldInteractions) {\n control.markAsInvalid(validationMessage);\n this.triggerEvent({ controlKey: key, prop: 'errors', value: validationMessage }, otherForm);\n }\n }\n }\n\n markAsValid(key: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control) {\n if (control && !control.restrictFieldInteractions) {\n control.markAsValid();\n this.triggerEvent({ controlKey: key, prop: 'errors', value: null }, otherForm);\n }\n }\n }\n\n markAsDirty(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsDirty(options);\n }\n }\n\n markAsPending(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsPending(options);\n }\n }\n\n markAsPristine(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsPristine(options);\n }\n }\n\n markAsTouched(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsTouched(options);\n }\n }\n\n markAsUntouched(\n key: string,\n options?: {\n onlySelf?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.markAsUntouched(options);\n }\n }\n\n updateValueAndValidity(\n key: string,\n options?: {\n onlySelf?: boolean;\n emitEvent?: boolean;\n },\n otherForm?: NovoFormGroup,\n ): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.updateValueAndValidity(options);\n }\n }\n\n displayToast(toastConfig: ToastOptions): void {\n if (this.toaster) {\n this.toaster.alert(toastConfig);\n }\n }\n\n displayTip(key: string, tip: string, icon?: string, allowDismiss?: boolean, sanitize?: boolean, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.tipWell = {\n tip,\n icon,\n button: allowDismiss,\n sanitize: sanitize !== false, // defaults to true when undefined\n };\n this.triggerEvent({ controlKey: key, prop: 'tipWell', value: tip }, otherForm);\n }\n }\n\n clearTip(key: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.tipWell = null;\n this.triggerEvent({ controlKey: key, prop: 'tipWell', value: null }, otherForm);\n }\n }\n\n setTooltip(key: string, tooltip: string, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.tooltip = tooltip;\n if (tooltip.length >= 40 && tooltip.length <= 400) {\n control.tooltipSize = 'large';\n control.tooltipPreline = true;\n } else if (tooltip.length > 400) {\n control.tooltipSize = 'extra-large';\n }\n this.triggerEvent({ controlKey: key, prop: 'tooltip', value: tooltip }, otherForm);\n }\n }\n\n setPopOver(key: string, popover: {\n title?: string,\n content?: string,\n htmlContent?: string,\n placement?: 'left' | 'right' | 'top' | 'bottom',\n onHover?: boolean,\n always?: boolean,\n disabled?: boolean,\n animation?: boolean,\n dismissTimeout?: number,\n }, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control.popoverTitle = popover.title;\n control.popoverContent = popover.content;\n control.popoverHtmlContent = popover.htmlContent;\n control.popoverPlacement = popover.placement;\n control.popoverOnHover = popover.onHover;\n control.popoverAlways = popover.always;\n control.popoverDisabled = popover.disabled;\n control.popoverAnimation = popover.animation;\n control.popoverDismissTimeout = popover.dismissTimeout;\n this.triggerEvent({ controlKey: key, prop: 'popover', value: popover }, otherForm);\n }\n }\n\n confirmChanges(key: string, message?: string): Promise<boolean> {\n const history = this.getProperty(key, 'valueHistory');\n const oldValue = history[history.length - 2];\n const newValue = this.getValue(key);\n const label = this.getProperty(key, 'label');\n (document.activeElement as any).blur();\n return this.modalService.open(ControlConfirmModal, { oldValue, newValue, label, message, key }).onClosed.then((result) => {\n if (!result) {\n this.setValue(key, oldValue, { emitEvent: false });\n }\n return true;\n });\n }\n\n promptUser(key: string, changes: string[]): Promise<boolean> {\n (document.activeElement as any).blur();\n return this.modalService.open(ControlPromptModal, { changes, key }).onClosed;\n }\n\n setProperty(key: string, prop: string, value, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n control[prop] = value;\n this.triggerEvent({ controlKey: key, prop, value }, otherForm);\n }\n }\n\n getProperty(key: string, prop: string, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n return control[prop];\n }\n return null;\n }\n\n isValueEmpty(key: string): boolean {\n const value = this.getValue(key);\n return Helpers.isEmpty(value);\n }\n\n isValueBlank(key: string): boolean {\n const value = this.getValue(key);\n return Helpers.isBlank(value);\n }\n\n hasField(key: string, otherForm?: NovoFormGroup): boolean {\n const form = otherForm || this.form;\n return !!form.controls[key];\n }\n\n addStaticOption(key: string, newOption: any, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n let optionToAdd = newOption;\n let isUnique = true;\n if (control && !control.restrictFieldInteractions) {\n let currentOptions = this.getProperty(key, 'options');\n if (!currentOptions || !currentOptions.length) {\n const config = this.getProperty(key, 'config');\n if (config) {\n currentOptions = config.options;\n if (currentOptions && Array.isArray(currentOptions)) {\n if (currentOptions[0].value && !optionToAdd.value) {\n optionToAdd = { value: newOption, label: newOption };\n }\n config.options = [...currentOptions, optionToAdd];\n this.setProperty(key, 'config', config);\n }\n }\n } else {\n if (currentOptions[0].value && !optionToAdd.value) {\n optionToAdd = { value: newOption, label: newOption };\n }\n // Ensure duplicate values are not added\n currentOptions.forEach((option) => {\n if ((option.value && option.value === optionToAdd.value) || option === optionToAdd) {\n isUnique = false;\n }\n });\n if (isUnique) {\n this.setProperty(key, 'options', [...currentOptions, optionToAdd]);\n }\n }\n if (isUnique) {\n this.triggerEvent({ controlKey: key, prop: 'options', value: [...currentOptions, optionToAdd] }, otherForm);\n }\n }\n }\n\n removeStaticOption(key: string, optionToRemove: any, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n let currentOptions = this.getProperty(key, 'options', otherForm);\n if (!currentOptions || !currentOptions.length) {\n const config = this.getProperty(key, 'config', otherForm);\n if (config) {\n currentOptions = config.options;\n if (currentOptions && Array.isArray(currentOptions)) {\n let index = -1;\n currentOptions.forEach((opt, i) => {\n if (opt.value || opt.label) {\n if (opt.value === optionToRemove || opt.label === optionToRemove) {\n index = i;\n }\n } else {\n if (opt === optionToRemove) {\n index = i;\n }\n }\n });\n if (index !== -1) {\n currentOptions.splice(index, 1);\n }\n config.options = [...currentOptions];\n this.setProperty(key, 'config', config, otherForm);\n }\n }\n } else {\n let index = -1;\n currentOptions.forEach((opt, i) => {\n if (opt.value || opt.label) {\n if (opt.value === optionToRemove || opt.label === optionToRemove) {\n index = i;\n }\n } else {\n if (opt === optionToRemove) {\n index = i;\n }\n }\n });\n if (index !== -1) {\n currentOptions.splice(index, 1);\n }\n this.setProperty(key, 'options', [...currentOptions], otherForm);\n }\n this.triggerEvent({ controlKey: key, prop: 'options', value: control.options }, otherForm);\n }\n }\n\n modifyPickerConfig(\n key: string,\n config: {\n format?: string;\n optionsUrl?: string;\n optionsUrlBuilder?: Function;\n optionsPromise?;\n options?: any[];\n resultsTemplateType?: ResultsTemplateType;\n },\n mapper?,\n ): void {\n // call another method to avoid a breaking change but still enable stricter types\n this.mutatePickerConfig(key, config as ModifyPickerConfigArgs, mapper);\n }\n\n mutatePickerConfig(key: string, args: ModifyPickerConfigArgs, mapper?: (item: unknown) => unknown, otherForm?: NovoFormGroup): void {\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n const { minSearchLength, enableInfiniteScroll, filteredOptionsCreator, format, getLabels, emptyPickerMessage } = control.config;\n const optionsConfig = this.getOptionsConfig(args, mapper, filteredOptionsCreator, format);\n\n const newConfig: NovoControlConfig['config'] = {\n ...(emptyPickerMessage && { emptyPickerMessage }),\n ...(Number.isInteger(minSearchLength) && { minSearchLength }),\n ...(enableInfiniteScroll && { enableInfiniteScroll }),\n ...(filteredOptionsCreator && { filteredOptionsCreator }),\n ...(getLabels && { getLabels }),\n ...(optionsConfig && optionsConfig),\n resultsTemplate:\n control.config.resultsTemplate || ('resultsTemplateType' in args && this.getAppropriateResultsTemplate(args.resultsTemplateType)),\n };\n\n this.setProperty(key, 'config', newConfig);\n this.triggerEvent({ controlKey: key, prop: 'pickerConfig', value: args }, otherForm);\n }\n }\n\n addPropertiesToPickerConfig(key: string, properties: { [key: string]: unknown }, otherForm?: NovoFormGroup) {\n const control = this.getControl(key, otherForm);\n if (!control || control.restrictFieldInteractions) {\n return;\n }\n\n const config = {\n ...control.config,\n ...properties,\n };\n\n this.setProperty(key, 'config', config);\n this.triggerEvent({ controlKey: key, prop: 'pickerConfig', value: properties }, otherForm);\n }\n getOptionsConfig = (\n args: ModifyPickerConfigArgs,\n mapper?: (item: unknown) => unknown,\n filteredOptionsCreator?: (where: string) => (query: string) => Promise<unknown[]>,\n pickerConfigFormat?: string,\n ): undefined | { options: unknown[] } | { options: OptionsFunction; format?: string } => {\n if (filteredOptionsCreator || 'optionsUrl' in args || 'optionsUrlBuilder' in args || 'optionsPromise' in args) {\n const format = ('format' in args && args.format) || pickerConfigFormat;\n return {\n options: this.createOptionsFunction(args, mapper, filteredOptionsCreator),\n ...('emptyPickerMessage' in args && { emptyPickerMessage: args.emptyPickerMessage }),\n ...(format && { format }),\n };\n } else if ('options' in args && Array.isArray(args.options)) {\n return {\n options: [...args.options],\n };\n } else {\n return undefined;\n }\n };\n\n private getAppropriateResultsTemplate(resultsTemplateType: ResultsTemplateType) {\n switch (resultsTemplateType) {\n case 'entity-picker':\n return EntityPickerResults;\n default:\n return undefined;\n }\n }\n\n createOptionsFunction =\n (\n config: ModifyPickerConfigArgs,\n mapper?: (item: unknown) => unknown,\n filteredOptionsCreator?: (where?: string) => (query: string, page?: number) => Promise<unknown[]>,\n ): ((query: string) => Promise<unknown[]>) =>\n (query: string, page?: number) => {\n if ('optionsPromise' in config && config.optionsPromise) {\n return config.optionsPromise(query, new CustomHttpImpl(this.http), page);\n } else if (('optionsUrlBuilder' in config && config.optionsUrlBuilder) || ('optionsUrl' in config && config.optionsUrl)) {\n return new Promise((resolve, reject) => {\n const url = 'optionsUrlBuilder' in config ? config.optionsUrlBuilder(query) : `${config.optionsUrl}?filter=${query || ''}`;\n this.http\n .get(url)\n .pipe(\n map((results: unknown[]) => {\n if (mapper) {\n return results.map(mapper);\n }\n return results;\n }),\n )\n .subscribe(resolve, reject);\n });\n } else if (filteredOptionsCreator) {\n if ('where' in config) {\n return filteredOptionsCreator(config.where)(query, page);\n } else {\n return filteredOptionsCreator()(query, page);\n }\n }\n };\n\n setLoading(key: string, loading: boolean, otherForm?: NovoFormGroup) {\n const form = otherForm || this.form;\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n if (loading) {\n form.controls[key].fieldInteractionloading = true;\n control.setErrors({ loading: true });\n // History\n clearTimeout(this.asyncBlockTimeout);\n this.asyncBlockTimeout = setTimeout(() => {\n this.setLoading(key, false);\n this.displayTip(key, this.labels.asyncFailure, 'info', false);\n this.setProperty(key, '_displayedAsyncFailure', true);\n }, 10000);\n } else {\n form.controls[key].fieldInteractionloading = false;\n clearTimeout(this.asyncBlockTimeout);\n control.setErrors({ loading: null });\n control.updateValueAndValidity({ emitEvent: false });\n if (this.getProperty(key, '_displayedAsyncFailure')) {\n this.setProperty(key, 'tipWell', null);\n }\n }\n this.triggerEvent({ controlKey: key, prop: 'loading', value: loading }, otherForm);\n }\n }\n\n addControl(\n key: string,\n metaForNewField: {\n key?: string;\n type?: string;\n name?: string;\n label?: string;\n interactions?: Array<{ event?: string; invokeOnInit?: boolean; script? }>;\n },\n position: string = FieldInteractionApi.FIELD_POSITIONS.ABOVE_FIELD,\n initialValue?,\n otherForm?: NovoFormGroup,\n ): void {\n if (!metaForNewField.key && !metaForNewField.name) {\n console.error('[FieldInteractionAPI] - missing \"key\" in meta for new field');\n return null;\n }\n\n if (!metaForNewField.key) {\n // If key is not explicitly declared, use name as key\n metaForNewField.key = metaForNewField.name;\n }\n\n const form = otherForm || this.form;\n if (form.controls[metaForNewField.key]) {\n // Field is already on the form\n return null;\n }\n\n const control = form.controls[key];\n let fieldsetIndex: number;\n let controlIndex: number;\n if (control) {\n fieldsetIndex = -1;\n controlIndex = -1;\n\n form.fieldsets.forEach((fieldset, fi) => {\n fieldset.controls.forEach((fieldsetControl, ci) => {\n if (fieldsetControl.key === key) {\n fieldsetIndex = fi;\n controlIndex = ci;\n }\n });\n });\n\n // Change the position of the newly added field\n switch (position) {\n case FieldInteractionApi.FIELD_POSITIONS.ABOVE_FIELD:\n // Adding field above active field\n // index can stay the same\n break;\n case FieldInteractionApi.FIELD_POSITIONS.BELOW_FIELD:\n // Adding field below active field\n controlIndex += 1;\n break;\n case FieldInteractionApi.FIELD_POSITIONS.TOP_OF_FORM:\n // Adding field to the top of the form\n controlIndex = 0;\n fieldsetIndex = 0;\n break;\n case FieldInteractionApi.FIELD_POSITIONS.BOTTOM_OF_FORM:\n // Adding field to the bottom of the form\n fieldsetIndex = form.fieldsets.length - 1;\n controlIndex = form.fieldsets[fieldsetIndex].controls.length;\n break;\n default:\n break;\n }\n\n if (fieldsetIndex !== -1 && controlIndex !== -1) {\n const novoControl = this.formUtils.getControlForField(metaForNewField, this.http, {});\n novoControl.hidden = false;\n const formControl = new NovoFormControl(initialValue, novoControl);\n form.addControl(novoControl.key, formControl);\n form.fieldsets[fieldsetIndex].controls.splice(controlIndex, 0, novoControl);\n this.triggerEvent({ controlKey: key, prop: 'addControl', value: formControl }, otherForm);\n }\n }\n }\n\n removeControl(key: string, otherForm?: NovoFormGroup): void {\n const form = otherForm || this.form;\n if (!form.controls[key]) {\n // Field is not on the form\n return null;\n }\n const control = this.getControl(key, otherForm);\n if (control && !control.restrictFieldInteractions) {\n let fieldsetIndex = -1;\n let controlIndex = -1;\n\n form.fieldsets.forEach((fieldset, fi) => {\n fieldset.controls.forEach((fieldsetControl, ci) => {\n if (fieldsetControl.key === key) {\n fieldsetIndex = fi;\n controlIndex = ci;\n }\n });\n });\n\n if (fieldsetIndex !== -1 && controlIndex !== -1) {\n form.removeControl(key);\n form.fieldsets[fieldsetIndex].controls.splice(controlIndex, 1);\n this.triggerEvent({ controlKey: key, prop: 'removeControl', value: key }, otherForm);\n }\n }\n }\n\n debounce(func: () => void, wait = 50) {\n // eslint-disable-next-line prefer-const\n let h;\n clearTimeout(h);\n h = setTimeout(() => func(), wait);\n }\n\n /**\n * Allows traversing nested forms by accessing the parent form.\n *\n * @param otherForm optional parameter for getting the parent of a different form.\n * If not provided will default to the parent of the current form.\n */\n getParent(otherForm?: NovoFormGroup) {\n const form = otherForm || this.form;\n return form.parent;\n }\n\n /**\n * The index is assigned as a property on the form's associations object when the form is part of a NovoControlGroup array.\n *\n * @param otherForm optional parameter for getting the index of a different form. If not provided will default to the current form.\n * @returns the index if it exists for the current or form, or null otherwise.\n */\n getIndex(otherForm?: NovoFormGroup) {\n const form = otherForm || this.form;\n return form.associations && form.associations.hasOwnProperty('index') ? form.associations.index : null;\n }\n\n private triggerEvent(event: IFieldInteractionEvent, otherForm?: NovoFormGroup): void {\n const form = otherForm || this.form;\n if (form && form.fieldInteractionEvents) {\n form.fieldInteractionEvents.emit(event);\n }\n }\n}\n","// NG2\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n// Vendor\nimport { DateFormatService, NovoLabelService, NovoTemplateService } from 'novo-elements/services';\nimport { Helpers, Key, OutsideClick } from 'novo-elements/utils';\nimport { Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n// APP\nimport { MaskedOptions } from 'imask';\nimport { FieldInteractionApi } from './FieldInteractionApi';\n\nexport interface IMaskOptions {\n mask: MaskedOptions['mask'];\n keepCharPositions: boolean;\n guide: boolean;\n}\n\n@Directive({\n selector: 'textarea[autosize]',\n standalone: false,\n})\nexport class NovoAutoSize implements AfterContentInit {\n @HostListener('input', ['$event.target'])\n onInput(textArea: HTMLTextAreaElement): void {\n this.adjust();\n }\n\n constructor(public element: ElementRef) {}\n\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.adjust();\n });\n }\n\n adjust(): void {\n const nativeElement = this.element.nativeElement;\n nativeElement.style.height = nativeElement.style.minHeight;\n nativeElement.style.height = `${nativeElement.scrollHeight}px`;\n }\n}\n// undo all template context references!\n@Component({\n selector: 'novo-control',\n template: `\n <div\n class=\"novo-control-container\"\n [hidden]=\"\n form.controls[control.key].hidden ||\n form.controls[control.key].type === 'hidden' ||\n form.controls[control.key].controlType === 'hidden'\n \"\n >\n <!--Encrypted Field-->\n <span [tooltip]=\"labels.encryptedFieldTooltip\" [tooltipPosition]=\"'right'\"\n ><i [hidden]=\"!form.controls[control.key].encrypted\" class=\"bhi-lock\"></i\n ></span>\n <!--Label (for horizontal)-->\n <label\n [attr.for]=\"control.key\"\n *ngIf=\"form.layout !== 'vertical' && form.controls[control.key].label && !condensed\"\n [ngClass]=\"{ encrypted: form.controls[control.key].encrypted }\"\n >\n {{ form.controls[control.key].label }}\n </label>\n <div class=\"novo-control-outer-container\">\n <!--Label (for vertical)-->\n <label\n *ngIf=\"form.layout === 'vertical' && form.controls[control.key].label && !condensed\"\n class=\"novo-control-label\"\n [attr.for]=\"control.key\"\n [class.novo-control-empty]=\"!hasValue\"\n [class.novo-control-focused]=\"focused\"\n [class.novo-control-filled]=\"hasValue\"\n [class.novo-control-always-active]=\"alwaysActive || form.controls[control.key].placeholder\"\n [class.novo-control-extra-spacing]=\"requiresExtraSpacing\"\n >\n {{ form.controls[control.key].label }}\n </label>\n <div\n class=\"novo-control-inner-container\"\n [class.required]=\"form.controls[control.key].required && !form.controls[control.key].readOnly\"\n >\n <div class=\"novo-control-inner-input-container\" [class.novo-control-filled]=\"hasValue\" [class.novo-control-empty]=\"!hasValue\">\n <!--Required Indicator-->\n <i\n [hidden]=\"!form.controls[control.key].required || form.controls[control.key].readOnly\"\n class=\"required-indicator {{ form.controls[control.key].controlType }}\"\n [ngClass]=\"{ 'bhi-circle': !isValid, 'bhi-check': isValid }\"\n *ngIf=\"!condensed || form.controls[control.key].required\"\n >\n </i>\n <!--Form Controls-->\n <div\n class=\"novo-control-input {{ form.controls[control.key].controlType }}\"\n [attr.data-automation-id]=\"control.key\"\n [class.control-disabled]=\"form.controls[control.key].disabled\"\n [class.highlighted]=\"form.controls[control.key].highlighted\"\n >\n <!--TODO prefix/suffix on the control-->\n <ng-container *ngIf=\"templates\">\n <ng-container\n *ngTemplateOutlet=\"templates[form.controls[control.key].controlType]; context: templateContext\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!templates || loading\">\n <div class=\"novo-control-input-container novo-control-input-with-label\">\n <input type=\"text\" />\n </div>\n </ng-container>\n </div>\n </div>\n <!--Error Message-->\n <div\n class=\"field-message {{ form.controls[control.key].controlType }}\"\n *ngIf=\"!condensed\"\n [class.has-tip]=\"form.controls[control.key].tipWell\"\n [ngClass]=\"showErrorState || showMaxLengthMetMessage ? 'error-shown' : 'error-hidden'\"\n >\n <div class=\"messages\" [ngClass]=\"showMessages ? 'count-shown messages-shown' : 'count-hidden messages-hidden'\">\n <span class=\"error-text\" *ngIf=\"showFieldMessage\"></span>\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.required && form.controls[control.key].controlType !== 'address'\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.isRequired }}</span\n >\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.minlength\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.minLength }} {{ form.controls[control.key].minlength }}</span\n >\n <span\n class=\"error-text\"\n *ngIf=\"isDirty && maxLengthMet && focused && !errors?.maxlength && form.controls[control.key].controlType !== 'picker'\"\n >{{ labels.maxlengthMet(form.controls[control.key].maxlength) }}</span\n >\n <span class=\"error-text\" *ngIf=\"errors?.maxlength && focused && !errors?.maxlengthFields\">{{\n labels.invalidMaxlength(form.controls[control.key].maxlength)\n }}</span>\n <span class=\"error-text\" *ngIf=\"maxLengthMet && form.controls[control.key].controlType === 'picker'\">{{\n labels.maxRecordsReached\n }}</span>\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.invalidEmail\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.invalidEmail }}</span\n >\n <span class=\"error-text\" *ngIf=\"isDirty && (errors?.integerTooLarge || errors?.doubleTooLarge)\"\n >{{ form.controls[control.key].label | uppercase }} {{ labels.isTooLarge }}</span\n >\n <span *ngIf=\"isDirty && errors?.minYear\">{{ form.controls[control.key].label | uppercase }} {{ labels.notValidYear }}</span>\n <span class=\"error-text\" *ngIf=\"isDirty && errors?.custom\">{{ errors.custom }}</span>\n <span class=\"error-text\" *ngIf=\"errors?.maxlength && errors?.maxlengthFields && maxlengthErrorField && focused\">\n {{\n labels.invalidMaxlengthWithField(\n control.config[maxlengthErrorField]?.label,\n control.config[maxlengthErrorField]?.maxlength\n )\n }}\n </span>\n <span\n class=\"error-text\"\n *ngIf=\"isDirty && maxlengthMetField && focused && !errors?.maxlengthFields?.includes(maxlengthMetField)\"\n >\n {{ labels.maxlengthMetWithField(control.config[maxlengthMetField]?.label, control.config[maxlengthMetField]?.maxlength) }}\n </span>\n <span *ngIf=\"isDirty && errors?.invalidAddress\">\n <span class=\"error-text\" *ngFor=\"let invalidAddressField of errors?.invalidAddressFields\"\n >{{ invalidAddressField | uppercase }} {{ labels.isRequired }}\n </span>\n </span>\n <!--Field Hint-->\n <div class=\"description\" *ngIf=\"form.controls[control.key].description\" [innerHTML]=\"form.controls[control.key].description\">\n </div>\n <span class=\"warning-text\" *ngIf=\"form.controls[control.key].warning\">{{ form.controls[control.key].warning }}</span>\n </div>\n <span\n class=\"character-count\"\n [class.error]=\"\n (errors?.maxlength && !errors?.maxlengthFields) ||\n (errors?.maxlength && errors?.maxlengthFields && errors.maxlengthFields.includes(focusedField))\n \"\n *ngIf=\"showCount && form.controls[control.key].controlType !== 'picker'\"\n >{{ itemCount }}/{{ maxLength || form.controls[control.key].maxlength }}</span\n >\n <span\n class=\"record-count\"\n [class.zero-count]=\"itemCount === 0\"\n [class.row-picker]=\"form.controls[this.control.key].config.columns\"\n *ngIf=\"showCount && form.controls[control.key].controlType === 'picker'\"\n >{{ itemCount }}/{{ maxLength || form.controls[control.key].maxlength }}</span\n >\n </div>\n <!--Tip Wel-->\n <novo-tip-well\n *ngIf=\"form.controls[control.key].tipWell\"\n [name]=\"control.key\"\n [tip]=\"form.controls[control.key]?.tipWell?.tip\"\n [icon]=\"form.controls[control.key]?.tipWell?.icon\"\n [button]=\"form.controls[control.key]?.tipWell?.button\"\n [sanitize]=\"form.controls[control.key]?.tipWell?.sanitize\"\n ></novo-tip-well>\n </div>\n <i *ngIf=\"form.controls[control.key].fieldInteractionloading\" class=\"loading\">\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns:a=\"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/\"\n x=\"0px\"\n y=\"0px\"\n width=\"18.2px\"\n height=\"18.5px\"\n viewBox=\"0 0 18.2 18.5\"\n style=\"enable-background:new 0 0 18.2 18.5;\"\n xml:space=\"preserve\"\n >\n <style type=\"text/css\">\n .spinner {\n fill: #ffffff;\n }\n </style>\n <path\n class=\"spinner\"\n d=\"M9.2,18.5C4.1,18.5,0,14.4,0,9.2S4.1,0,9.2,0c0.9,0,1.9,0.1,2.7,0.4c0.8,0.2,1.2,1.1,1,1.9\n c-0.2,0.8-1.1,1.2-1.9,1C10.5,3.1,9.9,3,9.2,3C5.8,3,3,5.8,3,9.2s2.8,6.2,6.2,6.2c2.8,0,5.3-1.9,6-4.7c0.2-0.8,1-1.3,1.8-1.1\n c0.8,0.2,1.3,1,1.1,1.8C17.1,15.7,13.4,18.5,9.2,18.5z\"\n />\n </svg>\n </i>\n </div>\n </div>\n `,\n host: {\n '[class]': 'form.controls[control.key].controlType',\n '[attr.data-control-type]': 'form.controls[control.key].controlType',\n '[class.disabled]': 'form.controls[control.key].readOnly',\n '[class.hidden]': 'form.controls[control.key].hidden',\n '[attr.data-control-key]': 'control.key',\n '[class.inline-embedded]': 'control.isInlineEmbedded',\n '[class.embedded]': 'control.isEmbedded',\n },\n standalone: false,\n})\nexport class NovoControlElement extends OutsideClick implements OnInit, OnDestroy, AfterViewInit, AfterContentInit {\n @Input()\n control: any;\n @Input()\n form: any;\n @Input()\n condensed: boolean = false;\n @Input()\n autoFocus: boolean = false;\n @Output()\n change: EventEmitter<any> = new EventEmitter();\n @Output()\n edit: EventEmitter<any> = new EventEmitter();\n @Output()\n save: EventEmitter<any> = new EventEmitter();\n @Output()\n delete: EventEmitter<any> = new EventEmitter();\n @Output()\n upload: EventEmitter<any> = new EventEmitter();\n @Output('blur')\n get onBlur(): Observable<FocusEvent> {\n return this._blurEmitter.asObservable();\n }\n\n @Output('focus')\n get onFocus(): Observable<FocusEvent> {\n return this._focusEmitter.asObservable();\n }\n public maxLength: number;\n public focusedField: string;\n formattedValue: string = '';\n percentValue: number;\n maxLengthMet: boolean = false;\n itemCount: number = 0;\n maskOptions: IMaskOptions;\n\n private _blurEmitter: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n private _focusEmitter: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n private _focused: boolean = false;\n private _enteredText: string = '';\n private forceClearSubscription: any;\n private percentChangeSubscription: any;\n private valueChangeSubscription: any;\n private dateChangeSubscription: any;\n private _showCount: boolean = false;\n private characterCountField: string;\n private maxLengthMetErrorfields: string[] = [];\n private statusChangeSubscription: any;\n\n templates: any = {};\n templateContext: any;\n loading: boolean = false;\n\n constructor(\n element: ElementRef,\n public labels: NovoLabelService,\n private dateFormatService: DateFormatService,\n private fieldInteractionApi: FieldInteractionApi,\n private templateService: NovoTemplateService,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(LOCALE_ID) public locale: string = 'en-US',\n ) {\n super(element);\n }\n\n get maxlengthMetField(): string {\n if (this.maxLengthMetErrorfields && this.maxLengthMetErrorfields.length) {\n return this.maxLengthMetErrorfields.find((field: string) => field === this.focusedField) || '';\n } else {\n return '';\n }\n }\n\n get maxlengthErrorField(): string {\n if (this.errors && this.errors.maxlengthFields && this.errors.maxlengthFields.length) {\n return this.errors.maxlengthFields.find((field: string) => field === this.focusedField) || '';\n } else {\n return '';\n }\n }\n\n get showFieldMessage() {\n return !this.errors && !this.maxLengthMet && Helpers.isBlank(this.control.description);\n }\n\n get showMaxLengthMetMessage() {\n return (\n (this.isDirty && this.maxLengthMet && this.focused && (!this.errors || (this.errors && !this.errors.maxlength))) ||\n (this.isDirty &&\n this.maxlengthMetField &&\n this.focused &&\n (!this.errors || (this.errors && !this.errors.maxlengthFields.includes(this.maxlengthMetField))))\n );\n }\n\n get showErrorState() {\n return (\n (this.isDirty && this.errors) ||\n (this.focused && this.errors && this.errors.maxlength && this.errors.maxlengthFields) ||\n (this.focused && this.errors && this.errors.maxlength && this.errors.maxlengthFields && this.maxlengthErrorField)\n );\n }\n\n get showCount() {\n const MAX_LENGTH_CONTROL_TYPES: string[] = ['textbox', 'picker', 'text-area'];\n const charCount: boolean =\n this.focused &&\n !!this.form.controls[this.control.key].maxlength &&\n MAX_LENGTH_CONTROL_TYPES.includes(this.form.controls[this.control.key].controlType);\n return this._showCount || charCount;\n }\n\n set showCount(value) {\n this._showCount = value;\n }\n\n get showMessages(): boolean {\n return (\n this.showCount ||\n !Helpers.isEmpty(this.form.controls[this.control.key].warning) ||\n !Helpers.isEmpty(this.form.controls[this.control.key].description)\n );\n }\n\n get decimalSeparator(): string {\n return new Intl.NumberFormat(this.locale).format(1.2)[1];\n }\n\n ngAfterViewInit() {\n const DO_NOT_FOCUS_ME: string[] = ['picker', 'time', 'date', 'date-time'];\n if (this.autoFocus && !DO_NOT_FOCUS_ME.includes(this.control.controlType)) {\n setTimeout(() => {\n const input: HTMLElement = this.element.nativeElement.querySelector('input');\n if (input) {\n input.focus();\n }\n });\n }\n }\n\n ngAfterContentInit() {\n // Subscribe to control interactions\n if (this.control.interactions && !this.form.controls[this.control.key].restrictFieldInteractions) {\n for (const interaction of this.control.interactions) {\n switch (interaction.event) {\n case 'blur':\n this.valueChangeSubscription = this.onBlur.pipe(debounceTime(300)).subscribe(() => {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction);\n }\n });\n break;\n case 'focus':\n this.valueChangeSubscription = this.onFocus.pipe(debounceTime(300)).subscribe(() => {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction);\n }\n });\n break;\n case 'change':\n this.valueChangeSubscription = this.form.controls[this.control.key].valueChanges.pipe(debounceTime(300)).subscribe(() => {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction);\n }\n });\n break;\n case 'init':\n interaction.invokeOnInit = true;\n break;\n default:\n break;\n }\n if (interaction.invokeOnInit) {\n if (!this.form.controls[this.control.key].restrictFieldInteractions) {\n this.executeInteraction(interaction, true);\n }\n }\n }\n }\n setTimeout(() => {\n this.templates = this.templateService.getAll();\n this.loading = false;\n this.changeDetectorRef.markForCheck();\n });\n }\n\n ngOnInit() {\n this.loading = true;\n // Make sure to initially format the time controls\n if (this.control && this.form.controls[this.control.key].value) {\n if (\n this.form.controls[this.control.key].controlType === 'textbox' ||\n this.form.controls[this.control.key].controlType === 'text-area'\n ) {\n this.itemCount = this.form.controls[this.control.key].value.length;\n }\n }\n if (this.control) {\n // Listen to clear events\n this.forceClearSubscription = this.control.forceClear.subscribe(() => {\n this.clearValue();\n });\n // For Asynchronous validations\n this.statusChangeSubscription = this.form.controls[this.control.key].statusChanges.subscribe((validity) => {\n this.form.controls[this.control.key] = this.templateContext.$implicit;\n if (validity !== 'PENDING' && this.form.updateValueAndValidity) {\n this.form.updateValueAndValidity();\n }\n });\n }\n this.templateContext = {\n $implicit: this.form.controls[this.control.key],\n methods: {\n restrictKeys: this.restrictKeys.bind(this),\n emitChange: this.emitChange.bind(this),\n handleAccept: this.handleAccept.bind(this),\n handleFocus: this.handleFocus.bind(this),\n handlePercentChange: this.handlePercentChange.bind(this),\n handleBlur: this.handleBlur.bind(this),\n handleTextAreaInput: this.handleTextAreaInput.bind(this),\n handleEdit: this.handleEdit.bind(this),\n handleSave: this.handleSave.bind(this),\n handleDelete: this.handleDelete.bind(this),\n handleUpload: this.handleUpload.bind(this),\n modelChange: this.modelChange.bind(this),\n modelChangeWithRaw: this.modelChangeWithRaw.bind(this),\n handleAddressChange: this.handleAddressChange.bind(this),\n handleTyping: this.handleTyping.bind(this),\n updateValidity: this.updateValidity.bind(this),\n toggleActive: this.toggleActive.bind(this),\n validateIntegerInput: this.validateIntegerInput.bind(this),\n validateNumberOnBlur: this.validateNumberOnBlur.bind(this),\n },\n form: this.form,\n };\n this.templateContext.$implicit.tooltipPosition = this.tooltipPosition;\n this.templateContext.$implicit.tooltip = this.tooltip;\n this.templateContext.$implicit.tooltipSize = this.tooltipSize;\n this.templateContext.$implicit.tooltipPreline = this.tooltipPreline;\n this.templateContext.$implicit.removeTooltipArrow = this.removeTooltipArrow;\n this.templateContext.$implicit.startupFocus = this.form.controls[this.control.key].startupFocus;\n this.templateContext.$implicit.fileBrowserImageUploadUrl = this.form.controls[this.control.key].fileBrowserImageUploadUrl;\n this.templateContext.$implicit.minimal = this.form.controls[this.control.key].minimal;\n this.templateContext.$implicit.currencyFormat = this.form.controls[this.control.key].currencyFormat;\n this.templateContext.$implicit.percentValue = this.form.controls[this.control.key].percentValue;\n this.templateContext.$implicit.config = this.form.controls[this.control.key].config;\n\n if (this.form.controls[this.control.key] && this.form.controls[this.control.key].subType === 'percentage') {\n if (!Helpers.isEmpty(this.form.controls[this.control.key].value)) {\n this.templateContext.$implicit.percentValue = Number(\n (this.form.controls[this.control.key].value * 100).toFixed(6).replace(/\\.?0*$/, ''),\n );\n }\n this.percentChangeSubscription = this.form.controls[this.control.key].displayValueChanges.subscribe((value) => {\n if (!Helpers.isEmpty(value) && !isNaN(value)) {\n this.templateContext.$implicit.percentValue = Number((value * 100).toFixed(6).replace(/\\.?0*$/, ''));\n } else if (Helpers.isEmpty(value)) {\n this.templateContext.$implicit.percentValue = undefined;\n }\n });\n }\n }\n\n ngOnDestroy() {\n // Unsubscribe from control interactions\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n if (this.forceClearSubscription) {\n // Un-listen for clear events\n this.forceClearSubscription.unsubscribe();\n }\n if (this.percentChangeSubscription) {\n // Un-listen for clear events\n this.percentChangeSubscription.unsubscribe();\n }\n if (this.dateChangeSubscription) {\n this.dateChangeSubscription.unsubscribe();\n }\n if (this.statusChangeSubscription) {\n this.statusChangeSubscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n\n get errors() {\n return this.form.controls[this.control.key].errors;\n }\n\n get isValid() {\n return this.form.controls[this.control.key].valid;\n }\n\n get isDirty() {\n return this.form.controls[this.control.key].dirty || this.control.dirty;\n }\n\n get hasValue() {\n return !Helpers.isEmpty(this.form.getRawValue()[this.control.key]);\n }\n\n get focused() {\n return this._focused;\n }\n\n get tooltip() {\n return this.form.controls[this.control.key].tooltip;\n }\n\n get tooltipPosition() {\n if (Helpers.isBlank(this.form.controls[this.control.key].tooltipPosition)) {\n return 'right';\n }\n return this.form.controls[this.control.key].tooltipPosition;\n }\n\n get tooltipSize() {\n if (Helpers.isBlank(this.form.controls[this.control.key].tooltipSize)) {\n return '';\n }\n return this.form.controls[this.control.key].tooltipSize;\n }\n\n get tooltipPreline() {\n if (Helpers.isBlank(this.form.controls[this.control.key].tooltipPreline)) {\n return false;\n }\n return this.form.controls[this.control.key].tooltipPreline;\n }\n\n get removeTooltipArrow() {\n if (Helpers.isBlank(this.form.controls[this.control.key].removeTooltipArrow)) {\n return false;\n }\n return this.form.controls[this.control.key].removeTooltipArrow;\n }\n\n get alwaysActive() {\n // Controls that have the label active if there is any user entered text in the field\n if (this.form.controls[this.control.key].controlType === 'picker' && this._enteredText.length) {\n return true;\n }\n if (this.form.controls[this.control.key].alwaysActive) {\n return true;\n }\n // Controls that always have the label active\n return (\n [\n 'tiles',\n 'checklist',\n 'checkbox',\n 'date',\n 'time',\n 'date-time',\n 'address',\n 'file',\n 'editor',\n 'ace-editor',\n 'code-editor',\n 'radio',\n 'text-area',\n 'quick-note',\n 'date',\n 'custom',\n 'switch',\n 'native-select',\n 'native-input',\n ].indexOf(this.form.controls[this.control.key].controlType) !== -1\n );\n }\n\n get requiresExtraSpacing() {\n // Chips\n if (this.form.controls[this.control.key].controlType === 'picker' && this.form.controls[this.control.key].multiple && this.hasValue) {\n return true;\n }\n return false;\n }\n\n executeInteraction(interaction, isInvokedOnInit = false) {\n if (interaction.script && Helpers.isFunction(interaction.script)) {\n setTimeout(() => {\n this.fieldInteractionApi.form = this.form;\n this.fieldInteractionApi.currentKey = this.control.key;\n this.fieldInteractionApi.isInvokedOnInit = isInvokedOnInit;\n try {\n interaction.script(this.fieldInteractionApi, this.control.key);\n } catch (err) {\n console.info('Field Interaction Error!', this.control.key);\n console.error(err);\n }\n });\n }\n }\n\n handleTyping(event: any) {\n this._focused = event && event.length;\n this._enteredText = event;\n }\n\n // imask has accepted a change in value\n handleAccept(value: string) {\n this.emitChange(value);\n }\n\n handleFocus(event: FocusEvent, field?: any) {\n this._focused = true;\n this.focusedField = field;\n if (!Helpers.isBlank(this.characterCountField) && this.characterCountField === field) {\n this.showCount = true;\n } else if (\n this.form.controls[this.control.key].controlType === 'address' &&\n field &&\n !Helpers.isEmpty(this.form.getRawValue()[this.control.key]) &&\n !Helpers.isBlank(this.form.getRawValue()[this.control.key][field])\n ) {\n this.handleAddressChange({ value: this.form.getRawValue()[this.control.key][field], field });\n }\n this._focusEmitter.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this._focused = false;\n this.focusedField = '';\n this.showCount = false;\n this._blurEmitter.emit(event);\n }\n\n clearValue() {\n this.form.controls[this.control.key].setValue(null);\n this.formattedValue = null;\n }\n\n handleTextAreaInput(event: KeyboardEvent & { target: HTMLInputElement }) {\n this.emitChange(event);\n this.restrictKeys(event);\n }\n\n checkMaxLength(value: string) {\n if (this.control && this.form.controls[this.control.key].maxlength) {\n this.itemCount = value.length;\n this.maxLengthMet = value.length >= this.form.controls[this.control.key].maxlength;\n }\n }\n\n modelChangeWithRaw(event) {\n if (Helpers.isEmpty(event.value)) {\n this._focused = false;\n this._enteredText = '';\n }\n if (this.form.controls[this.control.key].controlType === 'picker' && this.form.controls[this.control.key].maxlength) {\n this.itemCount = event.value ? event.value.length : 0;\n this.maxLengthMet = this.itemCount >= this.form.controls[this.control.key].maxlength ? true : false;\n }\n this.form.controls[this.control.key].rawValue = event.rawValue;\n this.change.emit(event.value);\n }\n\n modelChange(value) {\n if (Helpers.isEmpty(value)) {\n this._focused = false;\n this._enteredText = '';\n }\n this.change.emit(value);\n }\n\n validateNumberOnBlur(event: FocusEvent) {\n this._focused = false;\n this.focusedField = '';\n this.showCount = false;\n if (this.form.controls[this.control.key].subType === 'number') {\n this.validateIntegerInput();\n }\n this._blurEmitter.emit(event);\n }\n\n validateIntegerInput() {\n const NUMBERS_ONLY = /^[\\d\\-]\\d*$/;\n if (this.form.controls[this.control.key].value && !NUMBERS_ONLY.test(this.form.controls[this.control.key].value)) {\n this.form.controls[this.control.key].markAsInvalid(\n `${this.labels.invalidIntegerInput} ${this.form.controls[this.control.key].label.toUpperCase()}`,\n );\n }\n }\n\n restrictKeys(event: KeyboardEvent) {\n const NUMBERS_ONLY = /[0-9\\-]/;\n const NUMBERS_WITH_DECIMAL_DOT = /[0-9\\.\\-]/;\n const NUMBERS_WITH_DECIMAL_DOT_AND_COMMA = /[0-9\\.\\,\\-]/;\n const UTILITY_KEYS = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'];\n const key = event.key;\n\n // Numbers or numbers and decimal characters only\n if (this.form.controls[this.control.key].subType === 'number' && !(NUMBERS_ONLY.test(key) || UTILITY_KEYS.includes(key))) {\n event.preventDefault();\n } else if (\n ['currency', 'float', 'percentage'].includes(this.form.controls[this.control.key].subType) &&\n !(\n (this.decimalSeparator === '.' && NUMBERS_WITH_DECIMAL_DOT.test(key)) ||\n (this.decimalSeparator === ',' && NUMBERS_WITH_DECIMAL_DOT_AND_COMMA.test(key)) ||\n UTILITY_KEYS.includes(key)\n )\n ) {\n event.preventDefault();\n }\n // Max Length\n if (this.form.controls[this.control.key].maxlength && (event.target as HTMLInputElement).value.length >= this.form.controls[this.control.key].maxlength) {\n event.preventDefault();\n }\n }\n\n handlePercentChange(event: KeyboardEvent) {\n const value = (event.target as HTMLInputElement).value || (event as any).data;\n const percent = Helpers.isEmpty(value) || isNaN(value) ? value : Number((Number(value) / 100).toFixed(6).replace(/\\.?0*$/, ''));\n if (!Helpers.isEmpty(percent)) {\n this.change.emit(percent);\n this.form.controls[this.control.key].setValue(percent);\n } else {\n this.change.emit(null);\n this.form.controls[this.control.key].setValue(null);\n }\n }\n\n handleTabForPickers(event: any): void {\n if (this.active && event && event.key) {\n if (event.key === Key.Escape || event.key === Key.Tab) {\n this.toggleActive(event, false);\n }\n }\n }\n\n emitChange(event: Date | (Event & { target: HTMLInputElement }) | string) {\n this.change.emit(event);\n const stringValue = (event != null && typeof event === 'object' && 'target' in event) ? event?.target?.value : event;\n if (typeof stringValue === 'string') {\n this.checkMaxLength(stringValue);\n }\n }\n\n handleEdit(value) {\n this.edit.emit(value);\n }\n\n handleSave(value) {\n this.save.emit(value);\n }\n\n handleDelete(value) {\n this.delete.emit(value);\n }\n\n handleUpload(value) {\n this.upload.emit(value);\n }\n\n handleAddressChange(data) {\n if (\n data &&\n !Helpers.isBlank(data.value) &&\n data.field &&\n this.control.config[data.field] &&\n !Helpers.isEmpty(this.control.config[data.field].maxlength)\n ) {\n this.itemCount = data.value.length;\n this.characterCountField = data.field;\n this.maxLength = this.control.config[data.field].maxlength;\n this.showCount = true;\n if (this.maxLength === this.itemCount) {\n this.maxLengthMetErrorfields.push(data.field);\n } else {\n this.maxLengthMetErrorfields = this.maxLengthMetErrorfields.filter((field: string) => field !== data.field);\n }\n }\n }\n\n updateValidity(shouldEventBeEmitted): void {\n const emitEvent: boolean = shouldEventBeEmitted ? true : false;\n this.form.controls[this.control.key].updateValueAndValidity({ emitEvent });\n }\n}\n","// NG\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormArray, FormBuilder } from '@angular/forms';\nimport { Helpers } from 'novo-elements/utils';\nimport { FormUtils } from './utils/FormUtils';\nimport { BaseControl } from './controls/BaseControl';\nimport { NovoFormGroup } from './NovoFormGroup';\n\nexport interface NovoControlGroupAddConfig {\n label: string;\n}\n\nexport enum EditState {\n EDITING = 'editing',\n NOT_EDITING = 'notediting',\n}\n\nexport interface NovoControlGroupRowConfig {\n edit: boolean;\n remove: boolean;\n state: EditState;\n}\n\n@Component({\n selector: 'novo-control-group',\n templateUrl: './ControlGroup.html',\n styleUrls: ['./ControlGroup.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.novo-control-group-appearance-card]': \"appearance=='card'\",\n '[class.novo-control-group-appearance-none]': \"appearance=='none'\",\n },\n standalone: false,\n})\nexport class NovoControlGroup implements AfterContentInit, OnChanges, OnDestroy {\n @Input()\n set appearance(value: 'none' | 'card') {\n this._appearance = value;\n }\n get appearance() {\n return this._appearance;\n }\n private _appearance: 'none' | 'card' = 'none';\n\n // Sets the display of the group to either be row (default) or vertical via flex-box\n @Input()\n set vertical(v: boolean) {\n this._vertical = coerceBooleanProperty(v);\n }\n get vertical() {\n return this._vertical;\n }\n private _vertical = false;\n @Input()\n set stacked(v: boolean) {\n this._stacked = coerceBooleanProperty(v);\n }\n get stacked() {\n return this._stacked;\n }\n private _stacked = false;\n\n // Hides/shows the add button for adding a new control\n @Input() add: NovoControlGroupAddConfig;\n // Hide/shows the remove button for removing a control\n @Input()\n set remove(v: boolean) {\n this._remove = coerceBooleanProperty(v);\n }\n get remove() {\n return this._remove;\n }\n private _remove = false;\n // Hide/shows the edit button for editing a control\n @Input()\n set edit(v: boolean) {\n this._edit = coerceBooleanProperty(v);\n }\n get edit() {\n return this._edit;\n }\n private _edit = false;\n // Allows the control to collapse or not\n @Input()\n set collapsible(v: boolean) {\n this._collapsible = coerceBooleanProperty(v);\n }\n get collapsible() {\n return this._collapsible;\n }\n private _collapsible = false;\n // Main form group\n @Input() form: NovoFormGroup;\n // Controls for each item in the control group\n @Input() controls: BaseControl[];\n // Key of the control group (on the main form)\n @Input() key: string;\n // Label of the control group\n @Input() label: string;\n // Description of the control group (only use with position:bottom Add button!)\n @Input() description: string;\n // Message to display if there are no controls\n @Input() emptyMessage: string;\n // Icon of the control group (can have bhi prefix or not)\n @Input()\n set icon(v: string) {\n this._icon = v && v.indexOf('bhi') !== -1 ? v : `bhi-${v}`;\n }\n get icon() {\n return this._icon;\n }\n private _icon: string;\n // Edit icon at the end of each row (no bhi- prefix)\n @Input() editIcon = 'edit';\n // Remove icon at the end of each row (no bhi- prefix)\n @Input() removeIcon = 'delete-o';\n // The initial value object, will create the form rows off of\n @Input() initialValue: {}[];\n // Callback to determine if the user can edit\n @Input() canEdit: Function;\n // Callback to determine if the user can delete\n @Input() canRemove: Function;\n // Optional callback for whether or not to remove the given row\n @Input() shouldRemove: (number) => Promise<boolean>;\n // Template for custom row rendering\n @Input() rowTemplate: TemplateRef<any>;\n // Template for custom column label rendering\n @Input() columnLabelTemplate: TemplateRef<any>;\n\n @Output() onRemove = new EventEmitter<{ value; index }>();\n @Output() onEdit = new EventEmitter<{ value; index }>();\n @Output() onAdd = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n controlLabels: { value: string; width: number; required: boolean; hidden?: boolean; key: string }[] = [];\n toggled = false;\n disabledArray: NovoControlGroupRowConfig[] = [];\n editState: EditState = EditState.NOT_EDITING;\n currentIndex = 0;\n\n constructor(private formUtils: FormUtils, private fb: FormBuilder, private ref: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n if (!this.key) {\n throw new Error('novo-control-group must have the [key] attribute provided!');\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const initialValueChange: SimpleChange = changes.initialValue;\n\n // If initial value changes, clear the controls\n if (initialValueChange && initialValueChange.currentValue !== initialValueChange.previousValue && !initialValueChange.firstChange) {\n this.clearControls();\n }\n\n // Check for array, add a control for each value\n if (this.initialValue && Array.isArray(this.initialValue)) {\n if (this.initialValue.length !== 0) {\n this.currentIndex = 0;\n this.initialValue.forEach((value) => this.addNewControl(value));\n }\n } else if (this.initialValue) {\n // If value is an object, just add one control\n this.addNewControl(this.initialValue);\n }\n // If we are horizontal, grab the labels to help with layout\n if (!this.vertical) {\n this.controlLabels = (this.controls || []).map((control: BaseControl) => {\n return {\n value: control.label,\n width: control.width,\n required: control.required,\n key: control.key,\n hidden: control.hidden,\n };\n });\n this.ref.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this.clearControls();\n }\n\n onChange() {\n this.change.emit(this);\n }\n\n onClickAdd() {\n this.addNewControl();\n }\n onClickCancel() {\n this.editState = EditState.NOT_EDITING;\n }\n onClickSave() {\n this.disabledArray[this.currentIndex - 1].state = EditState.NOT_EDITING;\n this.editState = EditState.NOT_EDITING;\n const control: FormArray = this.form.controls[this.key] as FormArray;\n if (control) {\n const fg: NovoFormGroup = control.at(this.currentIndex - 1) as NovoFormGroup;\n fg.disableAllControls();\n }\n }\n\n resetAddRemove() {\n this.disabledArray.forEach((item: NovoControlGroupRowConfig, idx: number) => {\n item.edit = this.checkCanEdit(idx);\n item.remove = this.checkCanRemove(idx);\n if (!item.edit) {\n item.state = EditState.NOT_EDITING;\n }\n });\n this.ref.markForCheck();\n }\n\n addNewControl(value?: {}) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n const nestedFormGroup: NovoFormGroup = this.buildNestedFormGroup(value);\n if (controlsArray) {\n controlsArray.push(nestedFormGroup);\n } else {\n this.form.addControl(this.key, this.fb.array([nestedFormGroup]));\n }\n this.disabledArray.push({\n state: EditState.EDITING,\n edit: true,\n remove: true,\n });\n this.resetAddRemove();\n if (!value) {\n this.onAdd.emit(nestedFormGroup);\n }\n this.currentIndex++;\n this.assignIndexes();\n // Ensure that field interaction changes for nested forms originating from outside the form will be reflected in the nested elements\n nestedFormGroup.fieldInteractionEvents.subscribe(this.onFieldInteractionEvent.bind(this));\n this.ref.markForCheck();\n }\n\n /**\n * Will remove the control, and optionally, if the event is to be publicized (emitEvent = true) and there is a\n * shouldRemove callback, then call the shouldRemove() callback to determine if the doRemoveControl should be called.\n */\n removeControl(index: number, emitEvent = true) {\n if (emitEvent && Helpers.isFunction(this.shouldRemove)) {\n this.shouldRemove(index).then((shouldRemove: boolean) => {\n if (shouldRemove) {\n this.doRemoveControl(index, emitEvent);\n }\n });\n } else {\n this.doRemoveControl(index, emitEvent);\n }\n }\n\n private doRemoveControl(index: number, emitEvent: boolean) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n const nestedFormGroup = controlsArray.at(index) as NovoFormGroup;\n nestedFormGroup.fieldInteractionEvents.unsubscribe();\n if (emitEvent) {\n this.onRemove.emit({ value: nestedFormGroup.getRawValue(), index });\n }\n controlsArray.removeAt(index);\n this.disabledArray = this.disabledArray.filter((value: NovoControlGroupRowConfig, idx: number) => idx !== index);\n this.resetAddRemove();\n this.currentIndex--;\n this.assignIndexes();\n this.ref.markForCheck();\n }\n\n editControl(index: number) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n const fg = controlsArray.at(index) as NovoFormGroup;\n fg.enableAllControls();\n this.onEdit.emit({ value: controlsArray.at(index).value, index });\n }\n\n toggle(event: MouseEvent) {\n Helpers.swallowEvent(event);\n if (this.collapsible) {\n this.toggled = !this.toggled;\n this.ref.markForCheck();\n }\n }\n\n private buildNestedFormGroup(value?: {}): NovoFormGroup {\n const newControls = this.getNewControls();\n if (value) {\n this.formUtils.setInitialValues(newControls, value);\n }\n return this.formUtils.toFormGroup(newControls);\n }\n\n private clearControls() {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n if (controlsArray) {\n for (let i: number = controlsArray.length - 1; i >= 0; i--) {\n this.removeControl(i, false);\n }\n this.currentIndex = 0;\n }\n }\n\n private checkCanEdit(index: number): boolean {\n if (this.canEdit) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n return this.canEdit(controlsArray.at(index).value, index);\n }\n return true;\n }\n\n private checkCanRemove(index: number): boolean {\n if (this.canRemove) {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n if (controlsArray.at(index)) {\n return this.canRemove(controlsArray.at(index).value, index);\n }\n return true;\n }\n return true;\n }\n\n private getNewControls() {\n const ret: BaseControl[] = [];\n (this.controls || []).forEach((control: BaseControl) => {\n ret.push(new BaseControl(control.__type, control));\n });\n return ret;\n }\n\n private assignIndexes() {\n const controlsArray: FormArray = this.form.controls[this.key] as FormArray;\n if (controlsArray) {\n for (let i: number = 0; i < controlsArray.length; i++) {\n const form = controlsArray.at(i) as NovoFormGroup;\n form.associations = { ...form.associations, index: i };\n }\n }\n }\n\n private onFieldInteractionEvent() {\n this.ref.markForCheck();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_stacked: BooleanInput;\n static ngAcceptInputType_vertical: BooleanInput;\n}\n","<h6 class=\"novo-section-header\" *ngIf=\"label\">\n <span (click)=\"toggle($event)\" [class.clickable]=\"collapsible\">\n <i *ngIf=\"icon && !collapsible\" [ngClass]=\"icon\" [attr.data-automation-id]=\"'novo-control-group-icon-' + key\"></i>\n <i *ngIf=\"collapsible\" class=\"bhi-next\" [class.toggled]=\"toggled\"\n [attr.data-automation-id]=\"'novo-control-group-collapse-' + key\"></i>\n <span [attr.data-automation-id]=\"'novo-control-group-label-' + key\">{{ label }}</span>\n </span>\n <label class=\"novo-control-group-description\" *ngIf=\"description\"\n [attr.data-automation-id]=\"'novo-control-group-description-' + key\">{{ description }}</label>\n</h6>\n<div class=\"novo-control-group-controls\" [class.vertical]=\"vertical\" [class.horizontal]=\"!vertical\"\n [class.hidden]=\"collapsible && !toggled\">\n\n <ng-template #defaultTemplate let-index=\"index\" let-form=\"form\" let-key=\"key\">\n <div class=\"novo-control-group-control\">\n <div *ngFor=\"let c of controls\" class=\"novo-control-container {{c.key}}\"\n [class.is-label]=\"c.controlType === 'read-only'\" [style.max-width.px]=\"c.width\">\n <novo-control (change)=\"onChange()\" [form]=\"(form?.controls)[key]['controls'][index]\" [control]=\"c\"\n [condensed]=\"!vertical || c.controlType === 'read-only'\"></novo-control>\n </div>\n <div class=\"novo-control-container edit last\" *ngIf=\"edit && !vertical\">\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].edit\" type=\"button\"\n *ngIf=\"edit && !vertical\" theme=\"icon\" [icon]=\"editIcon\"\n (click)=\"editControl(index)\" [attr.data-automation-id]=\"'novo-control-group-edit-' + key\" index=\"-1\">\n </novo-button>\n </div>\n <div class=\"novo-control-container remove last\" *ngIf=\"remove && !vertical\">\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].remove\" type=\"button\"\n *ngIf=\"remove && !vertical\" theme=\"icon\"\n [icon]=\"removeIcon\" (click)=\"removeControl(index)\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"\n index=\"-1\">\n </novo-button>\n </div>\n </div>\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].edit\" type=\"button\"\n *ngIf=\"edit && vertical\"\n theme=\"icon\" [icon]=\"editIcon\"\n (click)=\"editControl(index)\" [attr.data-automation-id]=\"'novo-control-group-edit-' + key\" index=\"-1\">\n </novo-button>\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].remove\" type=\"button\"\n *ngIf=\"remove && vertical\" theme=\"icon\"\n [icon]=\"removeIcon\" (click)=\"removeControl(index)\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"\n index=\"-1\">\n </novo-button>\n </ng-template>\n\n <ng-template #defaultColumnLabelTemplate let-form=\"form\" let-key=\"key\">\n <div *ngFor=\"let label of controlLabels\"\n class=\"novo-control-group-control-label {{ label.key }}\"\n [class.novo-control-group-control-hidden]=\"label.hidden\"\n [style.max-width.px]=\"label.width\" [class.column-required]=\"label.required\">\n <span [attr.data-automation-id]=\"'novo-control-group-label-' + label.value\">{{ label.value }}</span>\n </div>\n <div class=\"novo-control-group-control-label edit last\" *ngIf=\"edit\"\n [attr.data-automation-id]=\"'novo-control-group-edit-' + key\"></div>\n <div class=\"novo-control-group-control-label remove last\" *ngIf=\"remove\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"></div>\n </ng-template>\n\n <ng-container *ngIf=\"!vertical && (form?.controls)[key] && (form?.controls)[key]['controls'].length !== 0\">\n <div class=\"novo-control-group-labels\"\n *ngIf=\"!vertical && (form?.controls)[key] && (form?.controls)[key]['controls'].length !== 0\">\n <ng-template [ngTemplateOutlet]=\"columnLabelTemplate || defaultColumnLabelTemplate\"\n [ngTemplateOutletContext]=\"{ form: form, key: key, controlLabels: controlLabels }\">\n </ng-template>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(form?.controls)[key]\">\n <div class=\"novo-control-group-row\"\n *ngFor=\"let control of (form?.controls)[key]['controls']; let index = index\">\n <ng-template [ngTemplateOutlet]=\"rowTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ form: form, formGroup: control, index: index, key: key, controls: controls }\">\n </ng-template>\n </div>\n </ng-container>\n\n <div class=\"novo-control-group-empty\"\n *ngIf=\"(form?.controls)[key] && (form?.controls)[key]['controls'].length === 0\"\n [attr.data-automation-id]=\"'novo-control-group-empty-' + key\">\n {{ emptyMessage }}\n </div>\n\n <div *ngIf=\"add\" class=\"novo-control-group-footer\">\n <novo-button type=\"button\" theme=\"dialogue\" icon=\"add-thin\" side=\"left\" (click)=\"onClickAdd()\"\n [attr.data-automation-id]=\"'novo-control-group-bottom-add-' + key\" index=\"-1\">\n {{ add?.label }}\n </novo-button>\n </div>\n</div>\n","// NG2\nimport { Component, DoCheck, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { COUNTRIES, findByCountryId, getStates, Helpers } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst ADDRESS_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoAddressElement),\n multi: true,\n};\n\nexport interface NovoAddressSubfieldConfig {\n label: string;\n required: boolean;\n maxlength: number;\n pickerConfig?: any;\n hidden: boolean;\n updated?: boolean;\n readOnly?: boolean;\n}\n\nexport interface NovoAddressConfig {\n required?: boolean;\n readOnly?: boolean;\n address1?: NovoAddressSubfieldConfig;\n address2?: NovoAddressSubfieldConfig;\n city?: NovoAddressSubfieldConfig;\n state?: NovoAddressSubfieldConfig;\n zip?: NovoAddressSubfieldConfig;\n countryID?: NovoAddressSubfieldConfig;\n}\n\n@Component({\n selector: 'novo-address',\n providers: [ADDRESS_VALUE_ACCESSOR],\n template: `\n <span\n *ngIf=\"!config?.address1?.hidden\"\n class=\"street-address\"\n [class.invalid]=\"invalid.address1\"\n [class.focus]=\"focused.address1\"\n [class.disabled]=\"disabled.address1\"\n >\n <i\n *ngIf=\"config.address1.required\"\n class=\"required-indicator address1\"\n [ngClass]=\"{ 'bhi-circle': !valid.address1, 'bhi-check': valid.address1 }\"\n >\n </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.address1\"\n type=\"text\"\n id=\"address1\"\n name=\"address1\"\n [placeholder]=\"config.address1.label\"\n [maxlength]=\"config?.address1?.maxlength\"\n autocomplete=\"shipping street-address address-line-1\"\n [(ngModel)]=\"model.address1\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'address1')\"\n (blur)=\"isBlurred($event, 'address1')\"\n (input)=\"onInput($event, 'address1')\"\n [disabled]=\"disabled.address1\"\n />\n </span>\n <span\n *ngIf=\"!config?.address2?.hidden\"\n class=\"apt suite\"\n [class.invalid]=\"invalid.address2\"\n [class.focus]=\"focused.address2\"\n [class.disabled]=\"disabled.address2\"\n >\n <i\n *ngIf=\"config.address2.required\"\n class=\"required-indicator address2\"\n [ngClass]=\"{ 'bhi-circle': !valid.address2, 'bhi-check': valid.address2 }\"\n >\n </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.address2\"\n type=\"text\"\n id=\"address2\"\n name=\"address2\"\n [placeholder]=\"config.address2.label\"\n [maxlength]=\"config?.address2?.maxlength\"\n autocomplete=\"shipping address-line-2\"\n [(ngModel)]=\"model.address2\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'address2')\"\n (blur)=\"isBlurred($event, 'address2')\"\n (input)=\"onInput($event, 'address2')\"\n [disabled]=\"disabled.address2\"\n />\n </span>\n <span\n *ngIf=\"!config?.city?.hidden\"\n class=\"city locality\"\n [class.invalid]=\"invalid.city\"\n [class.focus]=\"focused.city\"\n [class.disabled]=\"disabled.city\"\n >\n <i *ngIf=\"config.city.required\" class=\"required-indicator\" [ngClass]=\"{ 'bhi-circle': !valid.city, 'bhi-check': valid.city }\"> </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.city\"\n type=\"text\"\n id=\"city\"\n name=\"city\"\n [placeholder]=\"config.city.label\"\n autocomplete=\"shipping city locality\"\n [maxlength]=\"config?.city?.maxlength\"\n [(ngModel)]=\"model.city\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'city')\"\n (blur)=\"isBlurred($event, 'city')\"\n (input)=\"onInput($event, 'city')\"\n [disabled]=\"disabled.city\"\n />\n </span>\n <span\n *ngIf=\"!config?.state?.hidden\"\n class=\"state region\"\n [class.invalid]=\"invalid.state\"\n [class.focus]=\"focused.state\"\n [class.disabled]=\"disabled.state\"\n [tooltip]=\"tooltip.state\"\n >\n <i *ngIf=\"config.state.required\" class=\"required-indicator\" [ngClass]=\"{ 'bhi-circle': !valid.state, 'bhi-check': valid.state }\"> </i>\n <novo-picker\n [config]=\"config?.state?.pickerConfig\"\n [placeholder]=\"config?.state?.label\"\n (changed)=\"onStateChange($event)\"\n autocomplete=\"shipping region\"\n [(ngModel)]=\"model.state\"\n [disablePickerInput]=\"disabled.state\"\n ></novo-picker>\n </span>\n <span\n *ngIf=\"!config?.zip?.hidden\"\n class=\"zip postal-code\"\n [class.invalid]=\"invalid.zip\"\n [class.focus]=\"focused.zip\"\n [class.disabled]=\"disabled.zip\"\n >\n <i *ngIf=\"config.zip.required\" class=\"required-indicator\" [ngClass]=\"{ 'bhi-circle': !valid.zip, 'bhi-check': valid.zip }\"> </i>\n <input\n [class.maxlength-error]=\"invalidMaxlength.zip\"\n type=\"text\"\n id=\"zip\"\n name=\"zip\"\n [placeholder]=\"config.zip.label\"\n autocomplete=\"shipping postal-code\"\n [maxlength]=\"config?.zip?.maxlength\"\n [(ngModel)]=\"model.zip\"\n (ngModelChange)=\"updateControl()\"\n (focus)=\"isFocused($event, 'zip')\"\n (blur)=\"isBlurred($event, 'zip')\"\n (input)=\"onInput($event, 'zip')\"\n [disabled]=\"disabled.zip\"\n />\n </span>\n <span\n *ngIf=\"!config?.countryID?.hidden\"\n class=\"country-name\"\n [class.invalid]=\"invalid.countryID\"\n [class.focus]=\"focused.countryID\"\n [class.disabled]=\"disabled.countryID\"\n >\n <i\n *ngIf=\"config.countryID.required\"\n class=\"required-indicator\"\n [ngClass]=\"{ 'bhi-circle': !valid.countryID, 'bhi-check': valid.countryID }\"\n >\n </i>\n <novo-picker\n [config]=\"config?.countryID?.pickerConfig\"\n [placeholder]=\"config.countryID.label\"\n (changed)=\"onCountryChange($event)\"\n autocomplete=\"shipping country\"\n [(ngModel)]=\"model.countryID\"\n [disablePickerInput]=\"disabled.countryID\"\n ></novo-picker>\n </span>\n `,\n styleUrls: ['./Address.scss'],\n standalone: false,\n})\nexport class NovoAddressElement implements ControlValueAccessor, OnInit, DoCheck {\n @Input()\n config: NovoAddressConfig;\n private _readOnly = false;\n @Input()\n set readOnly(readOnly: boolean) {\n this._readOnly = readOnly;\n this.fieldList.forEach((field: string) => {\n this.disabled[field] = this._readOnly;\n });\n if (this.model) {\n this.updateStates();\n }\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n private previousRequiredState: Record<string, boolean> = {};\n states: Array<any> = [];\n fieldList: Array<string> = ['address1', 'address2', 'city', 'state', 'zip', 'countryID'];\n model: any;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n focused: any = {};\n invalid: any = {};\n disabled: any = {};\n invalidMaxlength: any = {};\n valid: any = {};\n stateOptions: any;\n tooltip: any = {};\n initComplete = false;\n @Output()\n change: EventEmitter<any> = new EventEmitter();\n @Output()\n focus: EventEmitter<any> = new EventEmitter();\n @Output()\n blur: EventEmitter<any> = new EventEmitter();\n @Output()\n validityChange: EventEmitter<any> = new EventEmitter();\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n if (!this.config) {\n this.config = {};\n }\n this.initConfig();\n if (this.model) {\n this.writeValue(this.model);\n this.updateControl();\n } else if (!this.model) {\n this.model = {};\n }\n if (Helpers.isBlank(this.model.countryID)) {\n this.updateStates();\n }\n }\n\n initConfig(): void {\n this.fieldList.forEach((field: string) => {\n if (!this.config.hasOwnProperty(field)) {\n this.config[field] = {\n hidden: true,\n };\n }\n if (!this.config[field].hasOwnProperty('label')) {\n this.config[field].label = this.labels[field];\n }\n if (this.config.required) {\n this.config[field].required = true;\n }\n if (this.config[field].readOnly || this.config.readOnly) {\n this.config[field].readOnly = true;\n this.disabled[field] = true;\n }\n if (field === 'countryID') {\n if (!this.config[field].pickerConfig) {\n this.config.countryID.pickerConfig = this.getDefaultCountryConfig();\n }\n this.config[field].pickerConfig.defaultOptions = this.config.countryID.pickerConfig.options;\n }\n if (field === 'state') {\n if (!this.config[field].pickerConfig) {\n this.config.state.pickerConfig = this.getDefaultStateConfig();\n this.config[field].pickerConfig.defaultOptions = this.config[field].pickerConfig.options;\n }\n this.stateOptions = this.config[field].pickerConfig.options;\n this.config[field].pickerConfig.options = (query = '') => {\n return this.stateOptions(query, this.model.countryID);\n };\n this.config[field].pickerConfig.defaultOptions = this.stateOptions;\n }\n });\n\n this.fieldList.forEach((field: string) => {\n this.previousRequiredState[field] = this.config?.[field]?.required;\n });\n\n this.initComplete = true;\n }\n\n ngDoCheck(): void {\n if (this.initComplete && this.config) {\n this.fieldList.forEach((field: string) => {\n const prevRequired = this.previousRequiredState[field];\n const currRequired = this.config?.[field]?.required;\n\n if (prevRequired !== currRequired) {\n this.isValid(field);\n this.isInvalid(field);\n this.previousRequiredState[field] = currRequired;\n }\n });\n }\n }\n\n isValid(field: string): void {\n let valid = true;\n if (\n ((this.config[field].required && (Helpers.isBlank(this.model[field]) || Helpers.isEmpty(this.model[field]))) ||\n !this.config[field].required) &&\n !(field === 'countryID' && this.config[field].required && !Helpers.isBlank(this.model.countryID)) &&\n !(\n field === 'state' &&\n this.config[field].required &&\n (!Helpers.isEmpty(this.model.state) ||\n ((Helpers.isBlank(this.model.state) || Helpers.isEmpty(this.model.state)) &&\n !Helpers.isBlank(this.model.countryName) &&\n this.config.state.pickerConfig &&\n this.config.state.pickerConfig.defaultOptions &&\n this.config.state.pickerConfig.defaultOptions.length === 0))\n )\n ) {\n valid = false;\n } else if (\n !Helpers.isEmpty(this.model[field]) &&\n !Helpers.isBlank(this.config[field].maxlength) &&\n this.config[field].maxlength < this.model[field].length\n ) {\n valid = false;\n }\n this.valid[field] = valid;\n }\n\n isInvalid(field: string): void {\n let invalid = false;\n let invalidMaxlength = false;\n if (\n (field !== 'countryID' &&\n field !== 'state' &&\n this.config[field]?.required &&\n Helpers.isEmpty(this.model[field]) &&\n !Helpers.isBlank(this.model[field])) ||\n (field === 'countryID' && this.config[field]?.required && Helpers.isBlank(this.model.countryName) && this.config[field]?.updated) ||\n (field === 'state' &&\n this.config[field]?.required &&\n (Helpers.isBlank(this.model.state) || Helpers.isEmpty(this.model.state)) &&\n !Helpers.isBlank(this.model.countryID) &&\n this.config[field]?.updated &&\n this.config.state.pickerConfig &&\n this.config.state.pickerConfig.defaultOptions &&\n this.config.state.pickerConfig.defaultOptions.length > 0)\n ) {\n invalid = true;\n } else if (\n !Helpers.isEmpty(this.model[field]) &&\n !Helpers.isBlank(this.config[field]?.maxlength) &&\n this.config[field]?.maxlength < this.model[field].length\n ) {\n invalid = true;\n invalidMaxlength = true;\n }\n this.invalid[field] = invalid;\n this.invalidMaxlength[field] = invalidMaxlength;\n }\n\n onInput(event: Event, field: string): void {\n this.isInvalid(field);\n this.isValid(field);\n if (event) {\n this.change.emit({ value: this.model[field], field });\n }\n }\n\n isFocused(event: Event, field: string): void {\n this.focused[field] = true;\n this.focus.emit({ event, field });\n }\n\n isBlurred(event: Event, field: string): void {\n this.focused[field] = false;\n this.blur.emit({ event, field });\n }\n\n onCountryChange(evt) {\n const country: any = evt && evt.rawValue ? evt.rawValue : null;\n let field: any;\n let statesUpdatable = false;\n this.config.countryID.updated = true;\n if (this.config.countryID.pickerConfig) {\n field = this.config.countryID.pickerConfig.field;\n }\n if (country && field && !Helpers.isBlank(country[field]) && this.model.countryID !== country[field]) {\n this.model.countryID = country[field];\n this.model.countryName = Helpers.interpolate(this.config.countryID.pickerConfig.format, country);\n this.disabled.state = false;\n this.tooltip.state = undefined;\n statesUpdatable = true;\n } else if (Helpers.isBlank(country) || Helpers.isBlank(country[field])) {\n this.model.countryID = undefined;\n this.model.countryName = undefined;\n this.disabled.state = true;\n this.tooltip.state = this.labels.selectCountryFirst;\n this.invalid.state = false;\n statesUpdatable = true;\n }\n\n // Update state\n if (statesUpdatable) {\n this.model.state = undefined;\n this.updateStates();\n }\n this.updateControl();\n this.onInput(null, 'countryID');\n this.onInput(null, 'state');\n }\n\n onStateChange(evt) {\n const state: any = evt && evt.value ? evt.value : null;\n this.config.state.updated = true;\n this.model.state = state;\n this.updateControl();\n this.onInput(null, 'state');\n }\n\n setStateLabel(model: any) {\n const state: string = model.state;\n if (!Helpers.isBlank(state)) {\n if (this.config.state.required) {\n this.valid.state = true;\n }\n this.model.state = state;\n } else {\n this.model.state = undefined;\n if (this.config.state.required) {\n this.valid.state = false;\n }\n }\n }\n\n updateStates() {\n if (this.config.state.pickerConfig.options && !Helpers.isBlank(this.model.countryID)) {\n this.config.state.pickerConfig.options = (query = '') => {\n return this.stateOptions(query, this.model.countryID);\n };\n this.stateOptions('', this.model.countryID).then((results) => {\n this.config.state.pickerConfig.defaultOptions = results;\n if (results.length) {\n this.tooltip.state = undefined;\n this.disabled.state = this._readOnly;\n this.setStateLabel(this.model);\n } else {\n this.disabled.state = true;\n this.tooltip.state = this.labels.noStatesForCountry;\n if (this.config.state.required) {\n this.valid.state = true;\n }\n }\n this.validityChange.emit();\n this.onInput(null, 'state');\n });\n } else {\n this.config.state.pickerConfig.defaultOptions = [];\n this.disabled.state = true;\n this.tooltip.state = this.labels.selectCountryFirst;\n if (this.config.state.required) {\n this.valid.state = false;\n }\n }\n }\n\n getStateOptions(filter = '', countryID: number) {\n if (countryID) {\n const country = findByCountryId(countryID);\n const states = getStates(country.name);\n if (filter) {\n return states.filter((name) => new RegExp(`${filter}`, 'gi').test(name));\n }\n return states;\n } else {\n return [];\n }\n }\n\n updateControl() {\n this.onModelChange(this.model);\n this.onInput(null, 'countryID');\n this.onInput(null, 'state');\n }\n\n writeValue(model) {\n let loadingCountries = false;\n if (model) {\n let countryName;\n if (model.countryName && model.countryID) {\n countryName = model.countryName;\n } else if (model.countryID) {\n if (this.config.countryID.pickerConfig && this.config.countryID.pickerConfig.getLabels) {\n if (Helpers.isFunction(this.config.countryID.pickerConfig.getLabels)) {\n const promise = this.config.countryID.pickerConfig.getLabels(model.countryID);\n loadingCountries = true;\n if (promise.then) {\n promise.then((result) => {\n loadingCountries = false;\n countryName = Helpers.interpolateWithFallback(this.config.countryID.pickerConfig.format, result);\n this.model = Object.assign(model, { countryName });\n this.updateStates();\n });\n }\n }\n }\n }\n if (countryName) {\n countryName = countryName.trim();\n model.state = model.state || '';\n this.model = Object.assign(model, { countryName });\n } else {\n this.model = model;\n }\n if (!loadingCountries && !Helpers.isBlank(this.model.countryID)) {\n this.updateStates();\n }\n }\n this.fieldList.forEach((field: string) => {\n this.onInput(null, field);\n });\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n private getDefaultStateConfig() {\n return {\n field: 'value',\n format: '$label',\n options: (query = '', countryID) => {\n return Promise.resolve(this.getStateOptions(query, countryID));\n },\n getLabels: (state: string) => {\n return Promise.resolve(state);\n },\n };\n }\n\n private getDefaultCountryConfig() {\n return {\n field: 'value',\n format: '$label',\n options: (query = '') => {\n return new Promise((resolve) => {\n let countries = COUNTRIES;\n if (query) {\n countries = countries.filter((country) => new RegExp(`${query}`, 'gi').test(country.name));\n }\n return resolve(countries.map((country) => ({ value: country.id, label: country.name })));\n });\n },\n getLabels: (countryID) => {\n return new Promise((resolve: any) => {\n const country: any = findByCountryId(countryID);\n if (country) {\n resolve({ value: country.id, label: country.name });\n } else {\n resolve('');\n }\n });\n },\n };\n }\n}\n","export class NovoFile {\n name: string = '';\n file: any;\n type: any;\n contentType: string = '';\n lastModified: number = 0;\n size: number = 0;\n loaded: boolean = false;\n fileContents: string;\n dataURL: string;\n reader: FileReader = new FileReader();\n readPromise: Function;\n\n constructor(file) {\n this.name = `${encodeURIComponent(file.name || '')}`;\n this.contentType = file.type;\n this.lastModified = file.lastModified;\n this.size = file.size;\n this.file = file;\n this.reader.onload = (event: any) => {\n this.fileContents = event.target.result.split(',')[1];\n this.dataURL = event.target.result;\n this.loaded = true;\n if (this.readPromise) {\n this.readPromise(this);\n }\n };\n }\n\n read() {\n return new Promise((resolve) => {\n this.readPromise = resolve;\n // when the file is read it triggers the onload event above.\n this.reader.readAsDataURL(this.file);\n });\n }\n\n toJSON() {\n return {\n name: this.name,\n contentType: this.type,\n lastModified: this.lastModified,\n size: this.size,\n fileContents: this.fileContents,\n };\n }\n}\n","// NG2\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { CanUpdateErrorStateCtor, ErrorStateMatcher, mixinErrorState } from 'novo-elements/elements/common';\nimport { NovoFieldControl } from 'novo-elements/elements/field';\nimport { GlobalRef, NovoLabelService } from 'novo-elements/services';\nimport { NovoFile } from './extras/file/File';\n\nconst LAYOUT_DEFAULTS = { order: 'default', download: true, removable: true, labelStyle: 'default', draggable: false };\n// make file-input ids unique\nlet nextId = 0;\n\nclass NovoFileInputBase {\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl,\n ) {}\n}\nconst NovoFileInputMixins: CanUpdateErrorStateCtor & typeof NovoFileInputBase = mixinErrorState(NovoFileInputBase);\n\n@Component({\n selector: 'novo-file-input',\n providers: [{ provide: NovoFieldControl, useExisting: NovoFileInputElement }],\n templateUrl: './FileInput.html',\n styleUrls: ['./FileInput.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class NovoFileInputElement extends NovoFileInputMixins implements NovoFieldControl<any>, ControlValueAccessor, OnInit {\n private _uniqueId: string = `novo-file-input-${++nextId}`;\n /** The aria-describedby attribute on the chip list for improved a11y. */\n _ariaDescribedby: string;\n /** Tab index for the chip list. */\n _tabIndex = 0;\n /** User defined tab index. */\n _userTabIndex: number | null = null;\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<NovoFileInputElement>;\n\n readonly controlType: string = 'file-input';\n /** @docs-private Implemented as part of NovoFieldControl. */\n lastKeyValue: string = null;\n /** @docs-private Implemented as part of NovoFieldControl.*/\n lastCaretPosition: number | null;\n\n @Input() id: string = this._uniqueId;\n @Input() tabindex: number = 0;\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n // ----------\n @ViewChild('fileInput', { static: true })\n fileInput: TemplateRef<any>;\n @ViewChild('fileOutput', { static: true })\n fileOutput: TemplateRef<any>;\n @ViewChild('container', { read: ViewContainerRef, static: true })\n container: ViewContainerRef;\n @ViewChild('inputElement') inputElement: ElementRef<HTMLInputElement>;\n\n @Input()\n multiple: boolean = false;\n\n @Input()\n layoutOptions: {\n order?: string;\n download?: boolean;\n edit?: boolean;\n labelStyle?: string;\n draggable?: boolean;\n customActions?: boolean;\n removable?: boolean;\n customValidation?: { action: string; fn: Function }[];\n removableWhenNew?: boolean;\n };\n @Input()\n value: Array<any> = [];\n @Input()\n dataFeatureId: string;\n\n @Output()\n edit: EventEmitter<any> = new EventEmitter();\n @Output()\n save: EventEmitter<any> = new EventEmitter();\n @Output()\n delete: EventEmitter<any> = new EventEmitter();\n @Output()\n upload: EventEmitter<any> = new EventEmitter();\n\n files: NovoFile[] = [];\n model: any;\n active: boolean = false;\n commands: any;\n visible: boolean;\n target: any;\n fileOutputBag: string;\n\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n\n @Input()\n get name(): string {\n return this._name;\n }\n\n set name(value: string) {\n this._name = value;\n }\n\n @HostBinding('class.disabled')\n @Input()\n get disabled(): boolean {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n /**\n * Implemented as part of NovoFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n /** Implemented as part of NovoFieldControl. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n protected _name: string = this._uniqueId;\n protected _value: boolean = false;\n protected _required: boolean = false;\n protected _disabled: boolean = false;\n protected _placeholder: string;\n\n constructor(\n public labels: NovoLabelService,\n private globalRef: GlobalRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Optional() @Self() _ngControl: NgControl,\n ) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, _ngControl);\n if (_ngControl) {\n _ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.updateLayout();\n this.setInitialFileList();\n this.dataFeatureId = this.dataFeatureId ? this.dataFeatureId : this.name;\n }\n\n updateLayout() {\n this.layoutOptions = Object.assign({}, LAYOUT_DEFAULTS, this.layoutOptions);\n this.insertTemplatesBasedOnLayout();\n }\n\n insertTemplatesBasedOnLayout() {\n let order;\n switch (this.layoutOptions.order) {\n case 'displayFilesBelow':\n order = ['fileInput', 'fileOutput'];\n break;\n default:\n order = ['fileOutput', 'fileInput'];\n }\n order.forEach((template) => {\n this.container.createEmbeddedView(this[template], 0);\n });\n return order;\n }\n\n get outputFileDraggingDisabled(): boolean {\n const draggable = this.layoutOptions?.draggable;\n return draggable != null && !draggable;\n }\n\n private setInitialFileList() {\n if (this.value) {\n this.files = this.value;\n }\n }\n\n @HostListener('dragenter', ['$event'])\n dragEnterHandler(event) {\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n this.target = event.target;\n this.active = true;\n }\n\n @HostListener('dragleave', ['$event'])\n dragLeaveHandler(event) {\n event.preventDefault();\n if (this.target === event.target) {\n this.active = false;\n }\n }\n\n @HostListener('dragover', ['$event'])\n dragOverHandler(event) {\n event.preventDefault();\n // no-op\n }\n\n @HostListener('drop', ['$event'])\n dropHandler(event) {\n event.preventDefault();\n this.visible = false;\n if (event.dataTransfer.types[0] !== 'Files') {\n return;\n }\n const options: any = this.layoutOptions;\n const filelist = Array.from(event.dataTransfer.files);\n if (options.customActions) {\n this.upload.emit(this.multiple ? filelist : [filelist[0]]);\n } else {\n this.process(this.multiple ? filelist : [filelist[0]]);\n }\n this.active = false;\n }\n\n dropOutputItem(event: CdkDragDrop<NovoFile[]>) {\n moveItemInArray(this.files, event.previousIndex, event.currentIndex);\n }\n\n writeValue(model: any): void {\n this.model = model;\n // If model is cleared programmatically (E.g. form.patchValue({file: undefined})), empty file list.\n this.files = !model ? [] : this.files;\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n check(event) {\n this.process(Array.from(event.target.files));\n // After processing file upload, clear input element value. Allows for delete and upload of same file.\n event.target.value = '';\n }\n\n validate(files): boolean {\n let passedValidation = true;\n if (this.layoutOptions.customValidation) {\n this.layoutOptions.customValidation\n .filter((validation) => validation.action === 'upload')\n .forEach((uploadValidation) => {\n passedValidation = uploadValidation.fn(files) && passedValidation;\n });\n }\n return passedValidation;\n }\n\n private process(filelist) {\n if (this.validate(filelist)) {\n Promise.all(filelist.map((file) => this.readFile(file))).then((files) => {\n if (this.multiple) {\n this.files.push(...files);\n } else {\n this.files = files;\n }\n this.model = this.files;\n this.onModelChange(this.model);\n });\n }\n }\n\n download(file) {\n // Using an injected instance of window to make sure that unit tests do not open a new window, even accidentally\n this.globalRef.nativeWindow.open(file.dataURL, '_blank');\n }\n\n remove(file) {\n this.files.splice(\n this.files.findIndex((f) => f.name === file.name && f.size === file.size),\n 1,\n );\n this.model = this.files;\n this.onModelChange(this.model);\n }\n\n private readFile(file) {\n return new NovoFile(file).read();\n }\n\n customEdit(file) {\n this.edit.emit(file);\n }\n\n customSave(file) {\n this.save.emit(file);\n }\n\n customDelete(file) {\n this.delete.emit(file);\n }\n\n customCheck(event) {\n this.upload.emit(event);\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n /** Whether any radio buttons has focus. */\n get focused(): boolean {\n // todo: implement this.\n return false;\n }\n\n /** Implemented as part of NovoFieldControl. */\n get empty(): boolean {\n return this.value === null;\n }\n\n /** Implemented as part of NovoFieldControl. */\n get shouldLabelFloat(): boolean {\n return !this.empty || this.focused;\n }\n\n /** Implemented as part of NovoFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of NovoFieldControl. */\n onContainerClick(event: MouseEvent) {\n this.focus();\n }\n\n /**\n * Focuses the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled) {\n return;\n }\n // TODO\n }\n}\n","<div #container></div>\n<ng-template #fileInput>\n <div class=\"file-input-group\" [class.disabled]=\"disabled\" [class.active]=\"active\">\n <input\n #inputElement\n *ngIf=\"!layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"check($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <input\n #inputElement\n *ngIf=\"layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"customCheck($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <section [ngSwitch]=\"layoutOptions.labelStyle\">\n <label *ngSwitchCase=\"'no-box'\" [attr.for]=\"name\" class=\"no-box\">\n <div>\n <i class=\"bhi-dropzone\"></i>{{ placeholder || labels.chooseAFile }} {{ labels.or }}\n <strong class=\"link\">{{ labels.clickToBrowse }}</strong>\n </div>\n </label>\n <label *ngSwitchDefault [attr.for]=\"name\" class=\"boxed\">\n <span>{{ placeholder || labels.chooseAFile }}</span>\n <small\n >{{ labels.or }} <strong class=\"link\">{{ labels.clickToBrowse }}</strong></small\n >\n </label>\n </section>\n </div>\n</ng-template>\n<ng-template #fileOutput>\n <div class=\"file-output-group\" cdkDropList [cdkDropListDisabled]=\"outputFileDraggingDisabled\" (cdkDropListDropped)=\"dropOutputItem($event)\">\n <div class=\"file-item\" cdkDrag *ngFor=\"let file of files\" [class.disabled]=\"disabled\">\n <i *ngIf=\"layoutOptions.draggable\" class=\"bhi-move\"></i>\n <label *ngIf=\"file.link\"\n ><span\n ><a href=\"{{ file.link }}\" target=\"_blank\">{{ file.name | decodeURI }}</a></span\n ><span *ngIf=\"file.description\">||</span><span>{{ file.description }}</span></label\n >\n <label *ngIf=\"!file.link\">{{ file.name | decodeURI }}</label>\n <div class=\"actions\" [attr.data-automation-id]=\"'file-actions'\" *ngIf=\"file.loaded\">\n <div *ngIf=\"!layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"download(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled && (layoutOptions.removable || (!layoutOptions.removable && layoutOptions.removableWhenNew && !file.link))\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"remove(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n <div *ngIf=\"layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.edit && !disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"edit\"\n (click)=\"customEdit(file)\"\n [attr.data-automation-id]=\"'file-edit'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"customSave(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"customDelete(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n </div>\n <novo-loading *ngIf=\"!file.loaded\"></novo-loading>\n </div>\n </div>\n</ng-template>","import { AfterViewInit, Component, QueryList, ViewChildren } from '@angular/core';\nimport { NovoTemplate } from 'novo-elements/elements/common';\nimport { NovoTemplateService } from 'novo-elements/services';\n@Component({\n selector: 'novo-control-templates',\n template: `\n <!---Readonly--->\n <ng-template novoTemplate=\"read-only\" let-form=\"form\" let-control>\n <div>{{ form.getRawValue()[control.key] }}</div>\n </ng-template>\n <!--Textbox--->\n <ng-template novoTemplate=\"textbox\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container novo-control-input-with-label\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <input\n *ngIf=\"control?.type !== 'number' && control?.textMaskEnabled\"\n [imask]=\"control.maskOptions\"\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (accept)=\"methods.handleAccept($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n autocomplete\n />\n <input\n *ngIf=\"control?.type !== 'number' && !control?.textMaskEnabled\"\n [class.maxlength-error]=\"errors?.maxlength\"\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (input)=\"methods.emitChange($event)\"\n [maxlength]=\"control?.maxlength\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n autocomplete\n />\n <input\n *ngIf=\"control?.type === 'number' && control?.subType !== 'percentage'\"\n [class.maxlength-error]=\"errors?.maxlength\"\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (keydown)=\"methods.restrictKeys($event)\"\n (input)=\"methods.emitChange($event)\"\n [maxlength]=\"control?.maxlength\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n step=\"any\"\n (mousewheel)=\"numberInput.blur()\"\n #numberInput\n />\n <!-- the percentage input does not use formControlName like a normal reactive input because instead of\n setting the floating point value directly, it is multiplied by 100 into a percentage value -->\n <input\n *ngIf=\"control?.type === 'number' && control?.subType === 'percentage'\"\n [id]=\"control.key\"\n [type]=\"control?.type\"\n [placeholder]=\"control?.placeholder\"\n (keydown)=\"methods.restrictKeys($event)\"\n [value]=\"control?.percentValue\"\n [disabled]=\"control?.readOnly\"\n (input)=\"methods.handlePercentChange($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n step=\"any\"\n (mousewheel)=\"percentInput.blur()\"\n #percentInput\n />\n <label class=\"input-label\" *ngIf=\"control?.subType === 'currency'\">{{ control.currencyFormat }}</label>\n <label class=\"input-label\" *ngIf=\"control?.subType === 'percentage'\">%</label>\n </div>\n </ng-template>\n\n <!--Textarea--->\n <ng-template novoTemplate=\"text-area\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n class=\"textarea-container\"\n [formGroup]=\"form\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <textarea\n [class.maxlength-error]=\"errors?.maxlength\"\n [name]=\"control.key\"\n [attr.id]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [formControlName]=\"control.key\"\n autosize\n (input)=\"methods.handleTextAreaInput($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [maxlength]=\"control?.maxlength\"\n ></textarea>\n </div>\n </ng-template>\n\n <!--Editor-->\n <ng-template novoTemplate=\"editor\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-editor\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [startupFocus]=\"control.startupFocus\"\n [minimal]=\"control.minimal\"\n [fileBrowserImageUploadUrl]=\"control.fileBrowserImageUploadUrl\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [config]=\"control.config\"\n ></novo-editor>\n </div>\n </ng-template>\n\n <!--AceEditor-->\n <ng-template novoTemplate=\"ace-editor\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-ace-editor\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n ></novo-ace-editor>\n </div>\n </ng-template>\n\n <!--CodeEditor-->\n <ng-template novoTemplate=\"code-editor\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-code-editor\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n ></novo-code-editor>\n </div>\n </ng-template>\n\n <!--HTML5 Select-->\n <ng-template novoTemplate=\"native-select\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <select\n [id]=\"control.key\"\n [formControlName]=\"control.key\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <option *ngIf=\"control.placeholder\" value=\"\" disabled selected hidden>{{ control.placeholder }}</option>\n <option *ngFor=\"let opt of control.options\" [value]=\"opt.key\">{{ opt.value }}</option>\n </select>\n </div>\n </ng-template>\n\n <!--File-->\n <ng-template novoTemplate=\"file\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-file-input\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [name]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [value]=\"control.value\"\n [multiple]=\"control.multiple\"\n [layoutOptions]=\"control.layoutOptions\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (edit)=\"methods.handleEdit($event)\"\n (save)=\"methods.handleSave($event)\"\n (delete)=\"methods.handleDelete($event)\"\n (upload)=\"methods.handleUpload($event)\"\n ></novo-file-input>\n </div>\n </ng-template>\n\n <!--Tiles-->\n <ng-template novoTemplate=\"tiles\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-tiles\n [options]=\"control.options\"\n [formControlName]=\"control.key\"\n (onChange)=\"methods.modelChange($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n [controlDisabled]=\"control.disabled\"\n ></novo-tiles>\n </div>\n </ng-template>\n\n <!--Picker-->\n <ng-template novoTemplate=\"picker\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\" class=\"novo-control-input-container\">\n <novo-picker\n [config]=\"control.config\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [parentScrollSelector]=\"control.parentScrollSelector\"\n [allowCustomValues]=\"control.config.allowCustomValues\"\n *ngIf=\"!control.multiple\"\n (select)=\"methods.modelChange($event)\"\n (changed)=\"methods.modelChangeWithRaw($event)\"\n (typing)=\"methods.handleTyping($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-picker>\n <novo-chips\n [source]=\"control.config\"\n [type]=\"control.config.type\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [maxlength]=\"control?.maxlength\"\n [allowCustomValues]=\"control.config.allowCustomValues\"\n *ngIf=\"control.multiple && !control.config.columns\"\n [closeOnSelect]=\"control.closeOnSelect\"\n (changed)=\"methods.modelChangeWithRaw($event)\"\n (typing)=\"methods.handleTyping($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-chips>\n <novo-row-chips\n [source]=\"control.config\"\n [type]=\"control.config.type\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [maxlength]=\"control?.maxlength\"\n *ngIf=\"control.multiple && control.config.columns\"\n [closeOnSelect]=\"control.closeOnSelect\"\n (changed)=\"methods.modelChangeWithRaw($event)\"\n (typing)=\"methods.handleTyping($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-row-chips>\n </div>\n </ng-template>\n\n <!--Novo Select-->\n <ng-template novoTemplate=\"select\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-select\n [options]=\"control.options\"\n [headerConfig]=\"control.headerConfig\"\n [placeholder]=\"control.placeholder\"\n [formControlName]=\"control.key\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (onSelect)=\"methods.modelChange($event)\"\n ></novo-select>\n </div>\n </ng-template>\n\n <!--Timezone -->\n <ng-template novoTemplate=\"timezone\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-select\n [options]=\"control.options\"\n [headerConfig]=\"control.headerConfig\"\n [placeholder]=\"control.placeholder\"\n [formControlName]=\"control.key\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n position=\"bottom\"\n (onSelect)=\"methods.modelChange($event)\"\n ></novo-select>\n </div>\n </ng-template>\n\n <!--Radio-->\n <ng-template novoTemplate=\"radio\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\" class=\"novo-control-input-container\">\n <novo-radio-group [name]=\"control.key\" [formControlName]=\"control.key\" [disabled]=\"control.disabled\">\n <novo-radio\n *ngFor=\"let option of control.options\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [checked]=\"\n option.value === form.getRawValue()[control.key] ||\n (form.getRawValue()[control.key] && option.value === form.getRawValue()[control.key].id)\n \"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n [button]=\"!!option.icon\"\n [icon]=\"option.icon\"\n [color]=\"option.color\"\n [theme]=\"!!option.icon && !option.label ? 'icon' : 'secondary'\"\n [attr.data-automation-id]=\"control.key + '-' + (option?.label || option?.value)\"\n ></novo-radio>\n </novo-radio-group>\n </div>\n </ng-template>\n\n <!--Time-->\n <ng-template novoTemplate=\"time\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <novo-time-picker-input\n [attr.id]=\"control.key\"\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [placeholder]=\"control.placeholder\"\n [military]=\"control.military\"\n ></novo-time-picker-input>\n </div>\n </ng-template>\n\n <!--Native Input--->\n <ng-template novoTemplate=\"native-input\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container novo-control-input-with-label\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <input\n [formControlName]=\"control.key\"\n [id]=\"control.key\"\n [type]=\"control.type\"\n [placeholder]=\"control?.placeholder\"\n (input)=\"methods.emitChange($event)\"\n (focus)=\"methods.handleFocus($event)\"\n (blur)=\"methods.handleBlur($event)\"\n />\n </div>\n </ng-template>\n\n <!--Date-->\n <ng-template novoTemplate=\"date\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <novo-date-picker-input\n [attr.id]=\"control.key\"\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [start]=\"control.startDate\"\n [end]=\"control.endDate\"\n [format]=\"control.dateFormat\"\n [allowInvalidDate]=\"control.allowInvalidDate\"\n [textMaskEnabled]=\"control.textMaskEnabled\"\n [placeholder]=\"control.placeholder\"\n [weekStart]=\"control.weekStart\"\n [disabledDateMessage]=\"control.disabledDateMessage\"\n (focusEvent)=\"methods.handleFocus($event)\"\n (blurEvent)=\"methods.handleBlur($event)\"\n (changeEvent)=\"methods.emitChange($event)\"\n ></novo-date-picker-input>\n </div>\n </ng-template>\n\n <!--Date and Time-->\n <ng-template novoTemplate=\"date-time\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div\n [formGroup]=\"form\"\n class=\"novo-control-input-container\"\n [tooltip]=\"control.tooltip\"\n [tooltipPosition]=\"control.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n >\n <novo-date-time-picker-input\n [attr.id]=\"control.key\"\n [name]=\"control.key\"\n [formControlName]=\"control.key\"\n [start]=\"control.startDate\"\n [end]=\"control.endDate\"\n [placeholder]=\"control.placeholder\"\n [military]=\"control.military\"\n [weekStart]=\"control.weekStart\"\n (focusEvent)=\"methods.handleFocus($event)\"\n (blurEvent)=\"methods.handleBlur($event)\"\n (changeEvent)=\"methods.emitChange($event)\"\n ></novo-date-time-picker-input>\n </div>\n </ng-template>\n\n <!--Address-->\n <ng-template novoTemplate=\"address\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-address\n [formControlName]=\"control.key\"\n [config]=\"control?.config\"\n [readOnly]=\"control?.readOnly\"\n (change)=\"methods.handleAddressChange($event)\"\n (focus)=\"methods.handleFocus($event.event, $event.field)\"\n (blur)=\"methods.handleBlur($event.event, $event.field)\"\n (validityChange)=\"methods.updateValidity()\"\n ></novo-address>\n </div>\n </ng-template>\n\n <!--Checkbox-->\n <ng-template novoTemplate=\"checkbox\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-checkbox\n [formControlName]=\"control?.key\"\n [name]=\"control?.key\"\n [label]=\"control?.checkboxLabel\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n [layoutOptions]=\"control?.layoutOptions\"\n ></novo-checkbox>\n </div>\n </ng-template>\n\n <!--Switch-->\n <ng-template novoTemplate=\"switch\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-switch\n [formControlName]=\"control?.key\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (onChange)=\"methods.modelChange($event)\"\n ></novo-switch>\n </div>\n </ng-template>\n\n <!--Checklist-->\n <ng-template novoTemplate=\"checklist\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-check-list\n [formControlName]=\"control.key\"\n [name]=\"control.key\"\n [options]=\"control?.options\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n (onSelect)=\"methods.modelChange($event)\"\n ></novo-check-list>\n </div>\n </ng-template>\n\n <!--QuickNote-->\n <ng-template novoTemplate=\"quick-note\" let-control let-form=\"form\" let-errors=\"errors\" let-methods=\"methods\">\n <div [formGroup]=\"form\">\n <novo-quick-note\n [formControlName]=\"control.key\"\n [startupFocus]=\"control?.startupFocus\"\n [placeholder]=\"control?.placeholder\"\n [config]=\"control?.config\"\n (change)=\"methods.modelChange($event)\"\n [tooltip]=\"control?.tooltip\"\n [tooltipPosition]=\"control?.tooltipPosition\"\n [tooltipSize]=\"control?.tooltipSize\"\n [tooltipPreline]=\"control?.tooltipPreline\"\n [removeTooltipArrow]=\"control?.removeTooltipArrow\"\n [tooltipAutoPosition]=\"control?.tooltipAutoPosition\"\n [novoPopover]=\"control.popoverContent\"\n [popoverHtmlContent]=\"control.popoverHtmlContent\"\n [popoverTitle]=\"control.popoverTitle\"\n [popoverPlacement]=\"control.popoverPlacement\"\n [popoverOnHover]=\"control.popoverOnHover\"\n [popoverAlways]=\"control.popoverAlways\"\n [popoverDisabled]=\"control.popoverDisabled\"\n [popoverAnimation]=\"control.popoverAnimation\"\n [popoverDismissTimeout]=\"control.popoverDismissTimeout\"\n ></novo-quick-note>\n </div>\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoControlTemplates implements AfterViewInit {\n @ViewChildren(NovoTemplate)\n defaultTemplates: QueryList<NovoTemplate>;\n constructor(private templates: NovoTemplateService) {}\n\n ngAfterViewInit(): void {\n if (this.defaultTemplates && this.defaultTemplates.length) {\n this.defaultTemplates.forEach((template: any) => {\n this.templates.addDefault(template.name, template.template);\n });\n }\n }\n}\n","// NG\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NovoTemplateService } from 'novo-elements/services';\nimport { NovoTemplate } from 'novo-elements/elements/common';\n// App\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoFieldset } from './FormInterfaces';\nimport { NovoFormGroup } from './NovoFormGroup';\n\n@Component({\n selector: 'novo-fieldset-header',\n template: `\n <novo-title smaller>\n <novo-icon>{{ icon?.replace('bhi-', '') }}</novo-icon\n >{{ title }}\n </novo-title>\n `,\n styleUrls: ['./fieldset-header.scss'],\n host: {\n class: 'novo-fieldset-header',\n },\n standalone: false,\n})\nexport class NovoFieldsetHeaderElement {\n @Input()\n title: string;\n @Input()\n icon: string = 'section';\n}\n\n@Component({\n selector: 'novo-fieldset',\n template: `\n <div class=\"novo-fieldset-container\">\n <novo-fieldset-header\n [icon]=\"icon\"\n [title]=\"title\"\n *ngIf=\"title\"\n [class.embedded]=\"isEmbedded\"\n [class.inline-embedded]=\"isInlineEmbedded\"\n [class.hidden]=\"hidden\"\n ></novo-fieldset-header>\n <ng-container *ngFor=\"let control of controls; let controlIndex = index\">\n <div class=\"novo-form-row\" [class.disabled]=\"control.disabled\" *ngIf=\"control.__type !== 'GroupedControl'\">\n <novo-control [autoFocus]=\"autoFocus && index === 0 && controlIndex === 0\" [control]=\"control\" [form]=\"form\"></novo-control>\n </div>\n <div *ngIf=\"control.__type === 'GroupedControl'\">TODO - GroupedControl</div>\n </ng-container>\n </div>\n `,\n standalone: false,\n})\nexport class NovoFieldsetElement {\n @Input()\n controls: Array<any> = [];\n @Input()\n form: any;\n @Input()\n title: string;\n @Input()\n icon: string;\n @Input()\n index: number;\n @Input()\n autoFocus: boolean;\n @Input()\n isEmbedded = false;\n @Input()\n isInlineEmbedded = false;\n @Input()\n hidden = false;\n}\n\n@Component({\n selector: 'novo-dynamic-form',\n template: `\n <novo-control-templates></novo-control-templates>\n <div class=\"novo-form-container\">\n <header>\n <ng-content select=\"form-title\"></ng-content>\n <ng-content select=\"form-subtitle\"></ng-content>\n </header>\n <form class=\"novo-form\" [formGroup]=\"form\">\n <ng-container *ngFor=\"let fieldset of form.fieldsets; let i = index\">\n <novo-fieldset\n *ngIf=\"fieldset.controls.length\"\n [index]=\"i\"\n [autoFocus]=\"autoFocusFirstField\"\n [icon]=\"fieldset.icon\"\n [controls]=\"fieldset.controls\"\n [title]=\"fieldset.title\"\n [form]=\"form\"\n [isEmbedded]=\"fieldset.isEmbedded\"\n [isInlineEmbedded]=\"fieldset.isInlineEmbedded\"\n [hidden]=\"fieldset.hidden\"\n ></novo-fieldset>\n </ng-container>\n </form>\n </div>\n `,\n styleUrls: ['./Form.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NovoTemplateService],\n standalone: false,\n})\nexport class NovoDynamicFormElement implements OnChanges, OnInit, AfterContentInit {\n @Input()\n controls: Array<any> = [];\n @Input()\n fieldsets: Array<NovoFieldset> = [];\n @Input()\n form: NovoFormGroup;\n @Input()\n layout: string;\n @Input()\n hideNonRequiredFields: boolean = true;\n @Input()\n autoFocusFirstField: boolean = false;\n @ContentChildren(NovoTemplate)\n customTemplates: QueryList<NovoTemplate>;\n private fieldsAlreadyHidden: string[];\n\n allFieldsRequired = false;\n allFieldsNotRequired = false;\n showingAllFields = false;\n showingRequiredFields = true;\n numControls = 0;\n\n constructor(private element: ElementRef, private templates: NovoTemplateService) {}\n\n public ngOnInit(): void {\n this.ngOnChanges();\n }\n\n public ngOnChanges(changes?: SimpleChanges): void {\n this.form.layout = this.layout;\n\n if (!(this.fieldsets && this.fieldsets.length) && this.controls && this.controls.length) {\n this.fieldsets = [\n {\n controls: this.controls,\n },\n ];\n this.numControls = this.controls.length;\n } else if (this.fieldsets) {\n this.fieldsets.forEach((fieldset) => {\n this.numControls = this.numControls + fieldset.controls.length;\n });\n }\n\n const requiredFields: Array<any> = [];\n const nonRequiredFields: Array<any> = [];\n this.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n if (control.required) {\n requiredFields.push(control);\n } else {\n nonRequiredFields.push(control);\n }\n });\n });\n this.allFieldsRequired = requiredFields.length === this.numControls;\n this.allFieldsNotRequired = nonRequiredFields.length === this.numControls;\n if (this.allFieldsNotRequired && this.hideNonRequiredFields) {\n this.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n this.form.controls[control.key].hidden = false;\n });\n });\n }\n this.form.fieldsets = [...this.fieldsets];\n }\n\n ngAfterContentInit() {\n if (this.customTemplates && this.customTemplates.length) {\n this.customTemplates.forEach((template: any) => {\n this.templates.addCustom(template.name, template.template);\n });\n }\n }\n\n public showAllFields(): void {\n this.form.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n const ctl = this.form.controls[control.key];\n if (!this.fieldsAlreadyHidden?.includes(control.key)) {\n ctl.hidden = false;\n }\n });\n });\n this.showingAllFields = true;\n this.showingRequiredFields = false;\n }\n\n public showOnlyRequired(hideRequiredWithValue): void {\n this.fieldsAlreadyHidden = [];\n this.form.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n const ctl = this.form.controls[control.key];\n\n if (ctl.hidden) {\n this.fieldsAlreadyHidden.push(control.key);\n }\n\n // Hide any non-required fields\n if (!control.required) {\n ctl.hidden = true;\n }\n\n // Hide required fields that have been successfully filled out\n if (\n hideRequiredWithValue &&\n !Helpers.isBlank(this.form.getRawValue()[control.key]) &&\n (!control.isEmpty || (control.isEmpty && control.isEmpty(ctl)))\n ) {\n ctl.hidden = true;\n }\n\n // Don't hide fields with errors\n if (ctl.errors) {\n ctl.hidden = false;\n }\n });\n });\n this.showingAllFields = false;\n this.showingRequiredFields = true;\n this.forceValidation();\n }\n\n get values() {\n return this.form ? this.form.getRawValue() : null;\n }\n\n get isValid() {\n return this.form ? this.form.valid : false;\n }\n\n public updatedValues(): any {\n let ret = null;\n this.form.fieldsets.forEach((fieldset) => {\n fieldset.controls.forEach((control) => {\n if (this.form.controls[control.key].dirty || control.dirty) {\n if (!ret) {\n ret = {};\n }\n ret[control.key] = this.form.getRawValue()[control.key];\n }\n });\n });\n return ret;\n }\n\n public forceValidation(): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n const control: any = this.form.controls[key];\n if (control.required && Helpers.isBlank(this.form.getRawValue()[control.key])) {\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n }\n}\n","import { Component, forwardRef, OnDestroy, OnInit } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'novo-number-range',\n template: `\n <form [formGroup]=\"rangeForm\">\n <novo-flex justify='space-between' align='end' gap=\"1rem\">\n <novo-field mr=\"sm\">\n <input formControlName=\"min\" novoInput type='number' [placeholder]=\"labels.minimumPlaceholder\"/>\n </novo-field>\n <novo-field ml=\"sm\">\n <input formControlName=\"max\" novoInput type='number' [placeholder]=\"labels.maximumPlaceholder\"/>\n </novo-field>\n </novo-flex>\n <novo-error *ngIf=\"rangeForm.hasError('minGreaterThanMax')\" style=\"position: absolute\">\n {{ labels.minGreaterThanMax }}\n </novo-error>\n </form>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true,\n },\n ],\n standalone: false,\n})\nexport class NumberRangeComponent implements OnInit, OnDestroy, ControlValueAccessor {\n rangeForm: FormGroup;\n _onChange: (value: any) => void = () => { };\n _onTouched = () => { };\n private _destroyed = new Subject<void>();\n\n constructor(public labels: NovoLabelService, private formBuilder: FormBuilder) { }\n\n ngOnInit() {\n this.rangeForm = this.formBuilder.group({ min: null, max: null }, { validators: this.minLessThanMaxValidator });\n\n // Notify parent form when the value changes (and it's valid)\n this.rangeForm.valueChanges.pipe(\n takeUntil(this._destroyed),\n filter(() => this.rangeForm.valid),\n ).subscribe(value => this._onChange(value));\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n minLessThanMaxValidator(group: FormGroup): { [key: string]: boolean } | null {\n const min = group.get('min').value;\n const max = group.get('max').value;\n const hasError = !Helpers.isBlank(min) && !Helpers.isBlank(max) && min > max;\n const error = hasError ? { minGreaterThanMax: true } : null;\n group.get('min').setErrors(error); // sets error styling\n group.get('max').setErrors(error);\n return error;\n }\n\n writeValue(value: { min: number, max: number }): void {\n if (value) {\n this.rangeForm.setValue(value, { emitEvent: false });\n }\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n isDisabled ? this.rangeForm.disable() : this.rangeForm.enable();\n }\n}\n","// NG2\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoPickerModule } from 'novo-elements/elements/picker';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoAddressElement } from './address/Address';\nimport { NovoFileInputElement } from './file/FileInput';\nimport { NumberRangeComponent } from './number-range/number-range.component';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoPipesModule,\n NovoButtonModule,\n NovoSelectModule,\n NovoPickerModule,\n NovoLoadingModule,\n NovoTooltipModule,\n NovoCheckboxModule,\n DragDropModule,\n NovoFlexModule,\n NovoFieldModule,\n ReactiveFormsModule,\n ],\n declarations: [NovoAddressElement, NovoFileInputElement, NumberRangeComponent],\n exports: [NovoAddressElement, NovoFileInputElement, NumberRangeComponent],\n})\nexport class NovoFormExtrasModule {}\n\n","// NG\nimport { AfterContentInit, Component, ContentChildren, Input, OnInit, QueryList, ViewEncapsulation } from '@angular/core';\n// App\nimport { NovoTemplateService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoTemplate } from 'novo-elements/elements/common';\nimport { NovoFormGroup } from './NovoFormGroup';\n\n@Component({\n selector: 'novo-form',\n template: `\n <novo-control-templates></novo-control-templates>\n <div class=\"novo-form-container\">\n <header *ngIf=\"!hideHeader\">\n <ng-content select=\"form-title\"></ng-content>\n <ng-content select=\"form-subtitle\"></ng-content>\n </header>\n <form class=\"novo-form\" [formGroup]=\"form\">\n <ng-content></ng-content>\n </form>\n </div>\n `,\n styleUrls: ['./Form.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NovoTemplateService],\n standalone: false,\n})\nexport class NovoFormElement implements AfterContentInit, OnInit {\n @Input()\n form: NovoFormGroup;\n @Input()\n layout: string;\n @Input()\n hideHeader: boolean = false;\n\n @ContentChildren(NovoTemplate)\n customTemplates: QueryList<NovoTemplate>;\n\n public showingAllFields: boolean = false;\n public showingRequiredFields: boolean = true;\n\n constructor(private templates: NovoTemplateService) {}\n\n get value() {\n return this.form.getRawValue();\n }\n\n get isValid() {\n return this.form.valid;\n }\n\n ngOnInit() {\n this.form.layout = this.layout;\n }\n\n ngAfterContentInit() {\n if (this.customTemplates && this.customTemplates.length) {\n this.customTemplates.forEach((template: any) => {\n this.templates.addCustom(template.name, template.template);\n });\n }\n }\n\n public showAllFields(): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n this.form.controls[key].hidden = false;\n });\n this.showingAllFields = true;\n this.showingRequiredFields = false;\n }\n\n public showOnlyRequired(hideRequiredWithValue): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n // Hide any non-required fields\n if (!this.form.controls[key].required) {\n this.form.controls[key].hidden = true;\n }\n\n // Hide required fields that have been successfully filled out\n if (hideRequiredWithValue && !Helpers.isBlank(this.form.getRawValue()[key])) {\n this.form.controls[key].hidden = true;\n }\n\n // Don't hide fields with errors\n if (this.form.controls[key].errors) {\n this.form.controls[key].hidden = false;\n }\n });\n this.showingAllFields = false;\n this.showingRequiredFields = true;\n this.forceValidation();\n }\n\n public forceValidation(): void {\n Object.keys(this.form.controls).forEach((key: string) => {\n const control: any = this.form.controls[key];\n if (control.required && Helpers.isBlank(this.form.getRawValue()[control.key])) {\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n }\n}\n","// NG2\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IMaskModule } from 'angular-imask';\n// APP\nimport { NovoAceEditorModule } from 'novo-elements/addons/ace-editor';\nimport { NovoNovoCKEditorModule } from 'novo-elements/addons/ckeditor';\nimport { NovoCodeEditorModule } from 'novo-elements/addons/code-editor';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoCommonModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDateTimePickerModule } from 'novo-elements/elements/date-time-picker';\nimport { NovoHeaderModule } from 'novo-elements/elements/header';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoModalModule } from 'novo-elements/elements/modal';\nimport { NovoPickerModule } from 'novo-elements/elements/picker';\nimport { NovoPopOverModule } from 'novo-elements/elements/popover';\nimport { NovoQuickNoteModule } from 'novo-elements/elements/quick-note';\nimport { NovoRadioModule } from 'novo-elements/elements/radio';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { NovoTilesModule } from 'novo-elements/elements/tiles';\nimport { NovoTimePickerModule } from 'novo-elements/elements/time-picker';\nimport { NovoTipWellModule } from 'novo-elements/elements/tip-well';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoTemplateService } from 'novo-elements/services';\nimport { NovoAutoSize, NovoControlElement } from './Control';\nimport { NovoControlGroup } from './ControlGroup';\nimport { NovoControlTemplates } from './ControlTemplates';\nimport { NovoDynamicFormElement, NovoFieldsetElement, NovoFieldsetHeaderElement } from './DynamicForm';\nimport { ControlConfirmModal, ControlPromptModal } from './FieldInteractionModals';\nimport { NovoFormElement } from './Form';\nimport { NovoFormExtrasModule } from './extras';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n ReactiveFormsModule,\n NovoRadioModule,\n NovoTilesModule,\n NovoSelectModule,\n NovoPickerModule,\n NovoChipsModule,\n NovoDatePickerModule,\n NovoTimePickerModule,\n NovoDateTimePickerModule,\n NovoNovoCKEditorModule,\n NovoFormExtrasModule,\n NovoQuickNoteModule,\n NovoDateTimePickerModule,\n NovoHeaderModule,\n NovoTooltipModule,\n NovoPopOverModule,\n IMaskModule,\n NovoTipWellModule,\n NovoModalModule,\n NovoButtonModule,\n NovoAceEditorModule,\n NovoCodeEditorModule,\n NovoCommonModule,\n NovoCheckboxModule,\n NovoIconModule,\n NovoRadioModule,\n NovoSwitchModule,\n ],\n declarations: [\n NovoAutoSize,\n NovoControlElement,\n NovoDynamicFormElement,\n NovoFormElement,\n NovoFieldsetElement,\n NovoFieldsetHeaderElement,\n ControlConfirmModal,\n ControlPromptModal,\n NovoControlGroup,\n NovoControlTemplates,\n ],\n exports: [\n NovoAutoSize,\n NovoDynamicFormElement,\n NovoControlElement,\n NovoFormElement,\n NovoFieldsetHeaderElement,\n NovoControlGroup,\n NovoControlTemplates,\n ],\n providers: [NovoTemplateService],\n})\nexport class NovoFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.FormUtils","i4","i5","i1.FormUtils","i6.NovoControlElement","i3","i6","i7","i8","i13.NovoAddressElement","i14.NovoFileInputElement","i16","i21","i24.NovoAutoSize","i4.NovoControlElement","i7.NovoControlTemplates","i4.NovoControlTemplates"],"mappings":"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"}
|