@fundamental-ngx/platform 0.43.21 → 0.43.23

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.
Files changed (36) hide show
  1. package/esm2020/button/button.component.mjs +3 -3
  2. package/esm2020/form/combobox/combobox/combobox.component.mjs +12 -3
  3. package/esm2020/value-help-dialog/components/select-tab/select-tab.component.mjs +25 -5
  4. package/esm2020/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +7 -3
  5. package/esm2020/value-help-dialog/directives/value-help-column-def.directive.mjs +24 -0
  6. package/esm2020/value-help-dialog/directives/value-help-filter-def.directive.mjs +22 -0
  7. package/esm2020/value-help-dialog/index.mjs +3 -1
  8. package/esm2020/value-help-dialog/models/vhd-component.model.mjs +3 -0
  9. package/esm2020/value-help-dialog/models/vhd-filter.model.mjs +1 -1
  10. package/esm2020/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +27 -6
  11. package/esm2020/value-help-dialog/value-help-dialog.module.mjs +15 -5
  12. package/fesm2015/fundamental-ngx-platform-button.mjs +2 -2
  13. package/fesm2015/fundamental-ngx-platform-button.mjs.map +1 -1
  14. package/fesm2015/fundamental-ngx-platform-form.mjs +11 -2
  15. package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
  16. package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +150 -56
  17. package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  18. package/fesm2020/fundamental-ngx-platform-button.mjs +2 -2
  19. package/fesm2020/fundamental-ngx-platform-button.mjs.map +1 -1
  20. package/fesm2020/fundamental-ngx-platform-form.mjs +11 -2
  21. package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
  22. package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +148 -56
  23. package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  24. package/fundamental-ngx-platform-v0.43.23.tgz +0 -0
  25. package/package.json +4 -4
  26. package/schematics/ng-add/index.js +1 -1
  27. package/value-help-dialog/components/select-tab/select-tab.component.d.ts +14 -4
  28. package/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.d.ts +5 -1
  29. package/value-help-dialog/directives/value-help-column-def.directive.d.ts +17 -0
  30. package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +15 -0
  31. package/value-help-dialog/index.d.ts +2 -0
  32. package/value-help-dialog/models/vhd-component.model.d.ts +5 -0
  33. package/value-help-dialog/models/vhd-filter.model.d.ts +3 -0
  34. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +8 -2
  35. package/value-help-dialog/value-help-dialog.module.d.ts +3 -1
  36. package/fundamental-ngx-platform-v0.43.21.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-form.mjs","sources":["../../../../libs/platform/src/lib/form/helpers.ts","../../../../libs/platform/src/lib/form/form-group/constants.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/tokens.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/form-field-error.directive.ts","../../../../libs/platform/src/lib/form/form-group/helpers.ts","../../../../libs/platform/src/lib/form/form-group/form-field-extras/form-field-extras.component.ts","../../../../libs/platform/src/lib/form/input-message-group-with-template/input-message-group-with-template.component.ts","../../../../libs/platform/src/lib/form/input-message-group-with-template/input-message-group-with-template.component.html","../../../../libs/platform/src/lib/form/form-group/config/default-form-field-hint-options.ts","../../../../libs/platform/src/lib/form/form-group/fdp-form.tokens.ts","../../../../libs/platform/src/lib/form/form-group/services/form-field-layout.service.ts","../../../../libs/platform/src/lib/form/form-group/form-field/form-field.component.ts","../../../../libs/platform/src/lib/form/form-group/form-field/form-field.component.html","../../../../libs/platform/src/lib/form/form-group/form-field-group/form-field-group.component.ts","../../../../libs/platform/src/lib/form/form-generator/dynamic-form-control.ts","../../../../libs/platform/src/lib/form/form-generator/providers/providers.ts","../../../../libs/platform/src/lib/form/form-generator/base-dynamic-form-generator-control.ts","../../../../libs/platform/src/lib/form/input/input.component.ts","../../../../libs/platform/src/lib/form/input/input.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.html","../../../../libs/platform/src/lib/form/checkbox/checkbox.component.ts","../../../../libs/platform/src/lib/form/checkbox/checkbox.component.html","../../../../libs/platform/src/lib/form/checkbox-group/checkbox-group.component.ts","../../../../libs/platform/src/lib/form/checkbox-group/checkbox-group.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.html","../../../../libs/platform/src/lib/form/radio-group/radio/radio.component.ts","../../../../libs/platform/src/lib/form/radio-group/radio/radio.component.html","../../../../libs/platform/src/lib/form/radio-group/radio-group.component.ts","../../../../libs/platform/src/lib/form/radio-group/radio-group.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.html","../../../../libs/platform/src/lib/form/text-area/text-area.config.ts","../../../../libs/platform/src/lib/form/text-area/text-area.component.ts","../../../../libs/platform/src/lib/form/text-area/text-area.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.html","../../../../libs/platform/src/lib/form/select/select.config.ts","../../../../libs/platform/src/lib/form/select/commons/base-select.ts","../../../../libs/platform/src/lib/form/select/select/select.component.ts","../../../../libs/platform/src/lib/form/select/select/select.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.html","../../../../libs/platform/src/lib/form/date-picker/date-picker.component.ts","../../../../libs/platform/src/lib/form/date-picker/date-picker.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.html","../../../../libs/platform/src/lib/form/switch/switch/switch.config.ts","../../../../libs/platform/src/lib/form/switch/switch/switch.component.ts","../../../../libs/platform/src/lib/form/switch/switch/switch.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.html","../../../../libs/platform/src/lib/form/multi-input/multi-input.config.ts","../../../../libs/platform/src/lib/form/multi-input/base-multi-input.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.interface.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input-mobile/multi-input-mobile.component.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input-mobile/multi-input-mobile.component.html","../../../../libs/platform/src/lib/form/multi-input/multi-input-mobile/multi-input-mobile.module.ts","../../../../libs/platform/src/lib/form/auto-complete/auto-complete.directive.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.component.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.html","../../../../libs/platform/src/lib/form/form-generator/config/default-components-list.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator-components-accessor.service.ts","../../../../libs/platform/src/lib/form/form-generator/config/default-validation-errors.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator.service.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/form-field-error-heading.directive.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/form-field-error-description.directive.ts","../../../../libs/platform/src/lib/form/form-generator/dynamic-form-control.directive.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator-field/form-generator-field.component.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator-field/form-generator-field.component.html","../../../../libs/platform/src/lib/form/form-helpers.ts","../../../../libs/platform/src/lib/form/auto-complete/auto-complete.module.ts","../../../../libs/platform/src/lib/form/checkbox/checkbox.module.ts","../../../../libs/platform/src/lib/form/checkbox-group/checkbox-group.module.ts","../../../../libs/platform/src/lib/form/combobox/combobox.config.ts","../../../../libs/platform/src/lib/form/combobox/combobox.interface.ts","../../../../libs/platform/src/lib/form/combobox/combobox-mobile/combobox/combobox-mobile.component.ts","../../../../libs/platform/src/lib/form/combobox/combobox-mobile/combobox/combobox-mobile.component.html","../../../../libs/platform/src/lib/form/combobox/combobox-mobile/combobox-mobile.module.ts","../../../../libs/platform/src/lib/form/combobox/commons/base-combobox.ts","../../../../libs/platform/src/lib/form/combobox/combobox/combobox.component.ts","../../../../libs/platform/src/lib/form/combobox/combobox/combobox.component.html","../../../../libs/platform/src/lib/form/combobox/combobox.module.ts","../../../../libs/platform/src/lib/form/date-picker/date-picker.module.ts","../../../../libs/platform/src/lib/form/datetime-picker/errors.ts","../../../../libs/platform/src/lib/form/datetime-picker/datetime-picker.component.ts","../../../../libs/platform/src/lib/form/datetime-picker/datetime-picker.component.html","../../../../libs/platform/src/lib/form/datetime-picker/datetime-picker.module.ts","../../../../libs/platform/src/lib/form/form-generator/dynamic-form-control-field.directive.ts","../../../../libs/platform/src/lib/form/form-generator/config/default-form-generator-hint-options.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator.tokens.ts","../../../../libs/platform/src/lib/form/form-group/form-group-header/form-group-header.component.ts","../../../../libs/platform/src/lib/form/form-group/form-group-header/form-group-header.component.html","../../../../libs/platform/src/lib/form/form-group/pipes/field-group-row-value.pipe.ts","../../../../libs/platform/src/lib/form/form-group/form-group.component.ts","../../../../libs/platform/src/lib/form/form-group/form-group.component.html","../../../../libs/platform/src/lib/form/form-generator/pipes/get-ordered-form-controls.pipe.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator/form-generator.component.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator/form-generator.component.html","../../../../libs/platform/src/lib/form/input/fdp-input.module.ts","../../../../libs/platform/src/lib/form/form-group/deprecated-form-group-compact.directive.ts","../../../../libs/platform/src/lib/form/form-group/fdp-form.module.ts","../../../../libs/platform/src/lib/form/select/option/option.component.ts","../../../../libs/platform/src/lib/form/select/select.module.ts","../../../../libs/platform/src/lib/form/radio-group/radio-group.module.ts","../../../../libs/platform/src/lib/form/text-area/text-area.module.ts","../../../../libs/platform/src/lib/form/switch/switch.module.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox.config.ts","../../../../libs/platform/src/lib/form/multi-combobox/commons/base-multi-combobox.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox.interface.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.html","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox/multi-combobox.component.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox/multi-combobox.component.html","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox.module.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.module.ts","../../../../libs/platform/src/lib/form/form-generator/fdp-form-generator.module.ts","../../../../libs/platform/src/lib/form/input-group/constants.ts","../../../../libs/platform/src/lib/form/input-group/addon.component.ts","../../../../libs/platform/src/lib/form/input-group/addon-body.component.ts","../../../../libs/platform/src/lib/form/input-group/input.component.ts","../../../../libs/platform/src/lib/form/input-group/input-group.config.ts","../../../../libs/platform/src/lib/form/input-group/input-group.component.ts","../../../../libs/platform/src/lib/form/input-group/input-group.component.html","../../../../libs/platform/src/lib/form/input-group/input-group.module.ts","../../../../libs/platform/src/lib/form/platform-file-uploader/platform-file-uploader.component.ts","../../../../libs/platform/src/lib/form/platform-file-uploader/platform-file-uploader.component.html","../../../../libs/platform/src/lib/form/platform-file-uploader/platform-file-uploader.module.ts","../../../../libs/platform/src/lib/form/step-input/step-input.config.ts","../../../../libs/platform/src/lib/form/step-input/step-input.util.ts","../../../../libs/platform/src/lib/form/step-input/base.step-input.ts","../../../../libs/platform/src/lib/form/step-input/step-input-action-button.ts","../../../../libs/platform/src/lib/form/step-input/step-input-decrement.directive.ts","../../../../libs/platform/src/lib/form/step-input/step-input-increment.directive.ts","../../../../libs/platform/src/lib/form/step-input/step-input-control.directive.ts","../../../../libs/platform/src/lib/form/step-input/number/number-step-input.component.ts","../../../../libs/platform/src/lib/form/step-input/number/number-step-input.component.html","../../../../libs/platform/src/lib/form/step-input/step-input.module.ts","../../../../libs/platform/src/lib/form/time-picker/time-picker.component.ts","../../../../libs/platform/src/lib/form/time-picker/time-picker.component.html","../../../../libs/platform/src/lib/form/time-picker/time-picker.module.ts","../../../../libs/platform/src/lib/form/fundamental-ngx-platform-form.ts"],"sourcesContent":["import { FormStates } from '@fundamental-ngx/cdk/forms';\n\n/**\n * Returns form state based on priority.\n * @param states Error states of the form fields.\n * @param priorityStates Array of prioritized states.\n * @returns first found form state of `priorityStates`.\n */\nexport function getFormState(\n states: FormStates[],\n priorityStates: FormStates[] = ['error', 'warning', 'information', 'success', 'default']\n): FormStates {\n let priorityState: FormStates = 'default';\n\n priorityStates.some((state) => {\n const firstErrorState = states.find((formState) => formState === state);\n\n if (!firstErrorState) {\n return false;\n }\n\n priorityState = firstErrorState;\n return true;\n });\n\n return priorityState;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ColumnLayout } from '@fundamental-ngx/platform/shared';\n\nexport const FORM_GROUP_CHILD_FIELD_TOKEN = new InjectionToken<string>('FORM_GROUP_CHILD_FIELD_TOKEN');\n\nexport const DefaultHorizontalLabelLayout: ColumnLayout = {\n XL: 4,\n L: 4,\n M: 4,\n S: 12\n};\n\nexport const DefaultVerticalLabelLayout: ColumnLayout = {\n S: 12\n};\n\nexport const DefaultHorizontalFieldLayout: ColumnLayout = {\n XL: 8,\n L: 8,\n M: 8,\n S: 12\n};\n\nexport const DefaultVerticalFieldLayout: ColumnLayout = {\n S: 12\n};\n\nexport const DefaultGapLayout: ColumnLayout = {\n S: 0\n};\n","import { InjectionToken } from '@angular/core';\n\nexport const FDP_FORM_ERROR_DIRECTIVE = new InjectionToken('FdpFormErrorDirective');\n","import { ChangeDetectorRef, Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport {\n FormError,\n FormErrorDescription,\n FormErrorHeading,\n FormFieldErrorContext\n} from '@fundamental-ngx/platform/shared';\nimport { Subject } from 'rxjs';\nimport { FDP_FORM_ERROR_DIRECTIVE } from './tokens';\n\n@Directive({\n selector: '[fdpFormFieldError]',\n providers: [\n {\n provide: FDP_FORM_ERROR_DIRECTIVE,\n useExisting: FormFieldErrorDirective\n }\n ]\n})\nexport class FormFieldErrorDirective<T = any> implements FormError<T>, OnInit {\n /** Used to connect data with model for typings support. */\n @Input()\n fdpFormFieldErrorAs: T;\n\n /** Error name */\n @Input('fdpFormFieldError')\n error: string;\n\n /** Error type */\n @Input()\n fdpFormFieldErrorType: FormStates = 'error';\n\n /** @hidden */\n detectChanges$ = new Subject<void>();\n\n /** Error type. Defines which type to return. Either self, or from heading directive. */\n get type(): FormStates {\n return this._headingDirective?.fdpFormFieldErrorHeadingType ?? this.fdpFormFieldErrorType;\n }\n\n /** @hidden */\n private _headingDirective: FormErrorHeading | undefined;\n\n /** @hidden */\n private _descriptionDirective: FormErrorDescription | undefined;\n\n /** @hidden */\n private _detectTimeout: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n get _headingTemplateRef(): TemplateRef<FormFieldErrorContext<T>> {\n return this._headingDirective?.templateRef ?? this.templateRef;\n }\n\n /** @hidden */\n get _descriptionTemplateRef(): TemplateRef<FormFieldErrorContext<T>> | null {\n return this._descriptionDirective?.templateRef ?? null;\n }\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: FormFieldErrorDirective,\n ctx: FormFieldErrorContext<any>\n ): ctx is FormFieldErrorContext<any> {\n return true;\n }\n\n /** @hidden */\n constructor(\n public templateRef: TemplateRef<FormFieldErrorContext<T>>,\n private _viewContainer: ViewContainerRef,\n private _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n // We need to create view in order to initialize child directives immediately.\n this._createView();\n }\n\n /** Registers child heading directive. */\n registerHeading(directive: FormErrorHeading): void {\n this._headingDirective = directive;\n this._detectChanges();\n }\n\n /** Registers child description directive. */\n registerDescription(directive: FormErrorDescription): void {\n this._descriptionDirective = directive;\n this._detectChanges();\n }\n\n /** @hidden */\n private _createView(): void {\n this._viewContainer.createEmbeddedView(this.templateRef);\n this._viewContainer.detach();\n }\n\n /** @hidden */\n private _detectChanges(): void {\n // Since child directives can register itself almost instantly, we need to trigger detect changes only one time,\n // in order to bypass error with expected/actual directives count.\n clearTimeout(this._detectTimeout);\n this._detectTimeout = setTimeout(() => {\n this._cdr.detectChanges();\n this.detectChanges$.next();\n }, 5);\n }\n}\n","import { ColumnLayout, ColumnLayoutGridClass } from '@fundamental-ngx/platform/shared';\n\n/** @hidden */\nexport function normalizeColumnLayout(layout: ColumnLayout, defaultColumn = 12): Required<ColumnLayout> {\n layout['S'] = layout['S'] !== undefined ? layout['S'] : defaultColumn;\n layout['M'] = layout['M'] || layout['S'];\n layout['L'] = layout['L'] || layout['M'];\n layout['XL'] = layout['XL'] || layout['L'];\n\n return layout as Required<ColumnLayout>;\n}\n\n/** @hidden */\nexport function generateColumnClass(layout: ColumnLayout): string {\n return Object.entries(layout)\n .reduce((overall, value) => {\n overall.push(`fd-col-${ColumnLayoutGridClass[value[0]]}--${value[1]}`);\n return overall;\n }, [] as string[])\n .join(' ');\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'fdp-form-field-extras',\n template: '<ng-content></ng-content>',\n // \"display: flex\" is used in order to have margin included in control's dimensions\n styles: [':host { display: flex; white-space: normal; }'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormFieldControlExtrasComponent {}\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { FormInputMessageGroupComponent } from '@fundamental-ngx/core/form';\n\n/**\n * This extends core implementation to support richer extensibility and instead of relying\n * only on ng-content selector this will allow you to put any content as trigger.\n *\n * Let's think of u\n */\n@Component({\n selector: 'fdp-input-message-group',\n templateUrl: './input-message-group-with-template.component.html',\n styleUrls: ['./input-message-group-with-template.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class InputMessageGroupWithTemplate extends FormInputMessageGroupComponent {\n /**\n * Custom trigger element.\n */\n @ContentChild('triggerItem', { static: false })\n triggerItemTemplate: TemplateRef<any>;\n}\n","<fd-popover\n (isOpenChange)=\"openChanged($event)\"\n additionalBodyClass=\"fd-popover__body--input-message-group\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [fillControlMode]=\"fillControlMode\"\n [isOpen]=\"isOpen\"\n [placement]=\"placement\"\n [triggers]=\"['focusin', 'focusout']\"\n class=\"fd-form-input-message-group fd-popover--input-message-group\"\n>\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"triggerItemTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n</fd-popover>\n","import { FieldHintOptions } from '@fundamental-ngx/platform/shared';\n\nexport const defaultFormFieldHintOptions: Omit<FieldHintOptions, 'content'> = {\n placement: 'right',\n position: 'after',\n trigger: [\n { trigger: 'mouseenter', openAction: true, closeAction: false },\n { trigger: 'mouseleave', openAction: false, closeAction: true },\n { trigger: 'focusin', openAction: true, closeAction: false },\n { trigger: 'focusout', openAction: false, closeAction: true }\n ],\n glyph: 'hint',\n target: 'auto'\n};\n","import { InjectionToken } from '@angular/core';\nimport { Column, ColumnLayout, FieldHintOptions } from '@fundamental-ngx/platform/shared';\nimport { defaultFormFieldHintOptions } from './config/default-form-field-hint-options';\n\nexport const FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT = new InjectionToken<Omit<FieldHintOptions, 'content'>>(\n 'Form field default hint options',\n {\n factory: () => defaultFormFieldHintOptions\n }\n);\n\nexport interface HintLayoutConfig {\n hintOnInputBreakpoints: Array<keyof ColumnLayout>;\n hintPlaceMinSize: Column;\n}\n\nexport const FDP_FORM_FIELD_HINT_LAYOUT_CONFIG = new InjectionToken<HintLayoutConfig>(\n 'Configuration for setting default values for configuring how places for inline help are coming',\n {\n factory: () => ({\n hintOnInputBreakpoints: ['M', 'L', 'XL'],\n hintPlaceMinSize: 1\n })\n }\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ColumnLayout } from '@fundamental-ngx/platform/shared';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { normalizeColumnLayout } from '../helpers';\nimport { GRID_COLUMNS_NUMBER as maxColumnsPerRow } from '@fundamental-ngx/core/layout-grid';\nimport { FDP_FORM_FIELD_HINT_LAYOUT_CONFIG, HintLayoutConfig } from '../fdp-form.tokens';\n\ntype Layouts = {\n labelColumnLayout: ColumnLayout;\n fieldColumnLayout: ColumnLayout;\n gapColumnLayout: ColumnLayout;\n};\n\n/**\n * Should be used in component level. Ideally placed on container component,\n * so that every it's child FormField can have shared information about peers'\n * need about inline help place.\n */\n@Injectable()\nexport class FormFieldLayoutService {\n /**\n * Will notify if inline help place is needed. If any of the FormFields in group have\n * hintOptions config set the way that it might end up on 'input', then it will emit true\n */\n readonly needsInlineHelpPlace: Observable<boolean>;\n /** @hidden */\n private _needsInlineHelpPlace$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n private _elementsMap: Map<Record<string, any>, boolean> = new Map();\n\n /** @hidden */\n constructor(@Inject(FDP_FORM_FIELD_HINT_LAYOUT_CONFIG) private _hintLayoutConfig: HintLayoutConfig) {\n this.needsInlineHelpPlace = this._needsInlineHelpPlace$.pipe(distinctUntilChanged());\n }\n\n /**\n * Notify service about target component's requirement for the place for inline help\n */\n setNeedsInlineHelp(target: Record<string, any>, isNeeded: boolean): void {\n this._elementsMap.set(target, isNeeded);\n this._updateCombinedValue();\n }\n\n /**\n * Function will give place for hint in case it does not have it yet,\n * if combined needsInlineHelpPlace value is true\n */\n getFixedLayouts(layouts: Layouts): Layouts {\n const fieldColumnLayout = normalizeColumnLayout({ ...layouts.fieldColumnLayout });\n const labelColumnLayout = normalizeColumnLayout({ ...layouts.labelColumnLayout });\n const gapColumnLayout = normalizeColumnLayout({\n ...(layouts.gapColumnLayout ? layouts.gapColumnLayout : { S: 0 })\n });\n if (this._needsInlineHelpPlace$.value) {\n this._hintLayoutConfig.hintOnInputBreakpoints.forEach((sizeName) => {\n const shouldFitInOneLine =\n labelColumnLayout[sizeName] + fieldColumnLayout[sizeName] + gapColumnLayout[sizeName] <=\n maxColumnsPerRow;\n if (gapColumnLayout[sizeName] < this._hintLayoutConfig.hintPlaceMinSize) {\n gapColumnLayout[sizeName] = this._hintLayoutConfig.hintPlaceMinSize;\n }\n if (gapColumnLayout[sizeName] + fieldColumnLayout[sizeName] > maxColumnsPerRow) {\n const diff = gapColumnLayout[sizeName] + fieldColumnLayout[sizeName] - maxColumnsPerRow;\n fieldColumnLayout[sizeName] -= diff;\n }\n if (shouldFitInOneLine) {\n const maxAllocatedPlaceForFieldAndLabel = maxColumnsPerRow - gapColumnLayout[sizeName];\n while (\n labelColumnLayout[sizeName] + fieldColumnLayout[sizeName] >\n maxAllocatedPlaceForFieldAndLabel\n ) {\n fieldColumnLayout[sizeName] -= 1;\n }\n }\n });\n }\n return { fieldColumnLayout, labelColumnLayout, gapColumnLayout };\n }\n\n /**\n * Remove component from the combined value calculations\n */\n removeEntry(target: Record<string, any>): void {\n this._elementsMap.delete(target);\n this._updateCombinedValue();\n }\n\n /**\n * Will loop through all registered components and if any of them has need for\n * inline help place, then it will notify listeners about it and also will set\n * local variable\n * @hidden\n */\n private _updateCombinedValue(): void {\n for (const [, needed] of this._elementsMap) {\n if (needed) {\n return this._needsInlineHelpPlace$.next(true);\n }\n }\n this._needsInlineHelpPlace$.next(false);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Provider,\n QueryList,\n Self,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { FD_FORM_FIELD, FormFieldControl, FormStates } from '@fundamental-ngx/cdk/forms';\nimport { uniqBy } from 'lodash-es';\nimport { BehaviorSubject, combineLatest, filter, Observable, Subject, Subscription, tap } from 'rxjs';\nimport { map, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport {\n Column,\n ColumnLayout,\n FieldHintOptions,\n FormError,\n PlatformFormFieldControl,\n FormFieldErrorDirectiveContext,\n FormFieldGroup,\n FormGroupContainer,\n HintPlacement,\n LabelLayout,\n RESPONSIVE_BREAKPOINTS_CONFIG,\n ResponsiveBreakPointConfig,\n ResponsiveBreakpointsService,\n PlatformFormField,\n FieldHintInput,\n HintContent\n} from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { getFormState } from '../../helpers';\nimport {\n DefaultHorizontalFieldLayout,\n DefaultHorizontalLabelLayout,\n DefaultVerticalFieldLayout,\n DefaultVerticalLabelLayout,\n FORM_GROUP_CHILD_FIELD_TOKEN\n} from '../constants';\nimport { FormFieldErrorDirective } from '../form-field-error/form-field-error.directive';\nimport { generateColumnClass, normalizeColumnLayout } from '../helpers';\nimport { FormFieldControlExtrasComponent } from '../form-field-extras/form-field-extras.component';\nimport { InputMessageGroupWithTemplate } from '../../input-message-group-with-template/input-message-group-with-template.component';\nimport {\n FDP_FORM_FIELD_HINT_LAYOUT_CONFIG,\n FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT,\n HintLayoutConfig\n} from '../fdp-form.tokens';\nimport { FormFieldLayoutService } from '../services/form-field-layout.service';\nimport { defaultFormFieldHintOptions } from '../config/default-form-field-hint-options';\n\nlet defaultId = 0;\n\nconst formFieldProvider: Provider = {\n provide: FD_FORM_FIELD,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\nconst formGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\n/**\n * Form Field represent actual row and aggregates common behavior for the input field such as\n * error, label or hint.\n * Hint is also responsible for listening for FieldControl changes and trigger necessary\n * change detection\n *\n */\n@Component({\n selector: 'fdp-form-field',\n templateUrl: 'form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [formFieldProvider, formGroupChildProvider, FormFieldLayoutService]\n})\nexport class FormFieldComponent\n implements PlatformFormField, AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges\n{\n /** Form field label */\n @Input()\n label: string;\n\n /**\n * Suffix for ids of control elements inside this form field\n */\n @Input()\n id: string = (++defaultId).toString();\n\n /**\n * @deprecated use `hint.placement` input instead\n * Defines hint placement\n */\n @Input()\n hintPlacement: HintPlacement;\n\n /** Hint to be placed next to label */\n @Input()\n hint: Nullable<FieldHintInput>;\n\n /**\n * @deprecated\n * Use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties.\n * Define form field label placement\n */\n @Input()\n set labelLayout(value: LabelLayout) {\n if (isDevMode()) {\n console.warn(\n 'LabelLayout input property is deprecated. Please use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties instead'\n );\n }\n this._labelLayout = value;\n\n this.labelColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalLabelLayout : DefaultVerticalLabelLayout;\n this.fieldColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalFieldLayout : DefaultVerticalFieldLayout;\n }\n\n get labelLayout(): LabelLayout {\n return this._labelLayout;\n }\n\n /**\n * Indicates when form field label should not be displayed\n */\n @Input()\n noLabelLayout = false;\n\n /**\n * The list of validators applied to the form field.\n */\n @Input()\n validators: Array<ValidatorFn> = [Validators.nullValidator];\n\n /**\n * Rank is used for ordering.\n * First lower number, then - higher\n */\n @Input()\n rank: number;\n\n /**\n * Placeholder for the field\n */\n @Input()\n placeholder: string;\n\n /** Form Container column it belongs to */\n @Input()\n column: number;\n\n /** object for placing field in column in each screen layout */\n @Input()\n set columnLayout(layout: ColumnLayout | undefined) {\n if (!layout) {\n return;\n }\n this._columnLayout = layout;\n this._isColumnLayoutEnabled = true;\n this._setLayout();\n }\n\n get columnLayout(): ColumnLayout {\n return this._columnLayout;\n }\n\n /**\n * Defines label's column layout.\n */\n @Input()\n set labelColumnLayout(value: ColumnLayout | undefined) {\n if (!value) {\n return;\n }\n this._labelColumnLayout = normalizeColumnLayout(value);\n this._labelColumnLayoutClass = generateColumnClass(this._labelColumnLayout);\n this._labelColumnLayout$.next(this._labelColumnLayout);\n }\n\n get labelColumnLayout(): ColumnLayout {\n return this._labelColumnLayout;\n }\n\n /**\n * Defines field's column layout.\n */\n @Input()\n set fieldColumnLayout(value: ColumnLayout | undefined) {\n if (!value) {\n return;\n }\n\n this._fieldColumnLayout = normalizeColumnLayout(value);\n this._fieldColumnLayoutClass = generateColumnClass(this._fieldColumnLayout);\n this._fieldColumnLayout$.next(this._fieldColumnLayout);\n }\n\n get fieldColumnLayout(): ColumnLayout {\n return this._fieldColumnLayout;\n }\n\n /**\n * Defines gap column layout.\n */\n @Input()\n set gapColumnLayout(value: ColumnLayout | undefined) {\n if (!value) {\n return;\n }\n\n this._gapColumnLayout = normalizeColumnLayout(value);\n this._gapColumnLayoutClass = generateColumnClass(this._gapColumnLayout);\n this._gapColumnLayout$.next(this._gapColumnLayout);\n }\n\n get gapColumnLayout(): ColumnLayout {\n return this._gapColumnLayout;\n }\n\n /**\n * Translations template reference.\n * This is in most of the cases set from parent container (form-group)\n */\n @Input()\n i18Strings: TemplateRef<any>;\n\n /** Set when form field is a mandatory one. */\n @Input()\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n\n get required(): boolean {\n return this._required;\n }\n\n /**\n * Indicates if field is editable\n */\n @Input()\n set editable(value: BooleanInput) {\n const newVal = coerceBooleanProperty(value);\n if (this._editable !== newVal) {\n this._editable = newVal;\n this._updateControlProperties();\n }\n }\n\n get editable(): boolean {\n return this._editable;\n }\n\n /**\n * Form field custom width in columns must be between 1 - 12\n */\n @Input()\n set columns(value: Column) {\n this._columns = <Column>coerceNumberProperty(value);\n }\n\n get columns(): Column {\n return this._columns;\n }\n\n /**\n * marks field as disabled. used in reactive form approach.\n */\n @Input()\n disabled = false;\n\n /** Whether label text should be appended with colon. */\n @Input()\n colon = false;\n\n /**\n * Form Group Container to bind the Form-Field to.\n * This will override default value injected by constructor\n */\n @Input()\n formGroupContainer: FormGroupContainer;\n\n /** Emits whenever formFieldControl's state changes */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onChange: EventEmitter<string> = new EventEmitter<string>();\n\n /** Emits whenever column layout is changed */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onColumnChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * @hidden\n * Form field template reference\n */\n @ViewChild('renderer', { static: true })\n renderer: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(FormFieldControlExtrasComponent, { read: ElementRef })\n formFieldExtras?: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ContentChildren(FormFieldErrorDirective)\n private _errorDirectiveQuery: QueryList<FormError>;\n\n /** @hidden */\n @ViewChild('labelCol') labelCol?: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @ViewChild(InputMessageGroupWithTemplate, { read: ElementRef })\n inputMessageGroup: ElementRef<HTMLElement>;\n\n /** Combined Error directives from field itself and parent form container. */\n get errorDirectives(): FormError[] {\n return uniqBy([...this._errorDirectives, ...this._formGroupErrorDirectives], 'error');\n }\n\n /** @hidden */\n isHorizontal$: Observable<boolean>;\n\n /**\n * Child FormFieldControl\n */\n control: PlatformFormFieldControl | null;\n\n /** @hidden */\n _labelColumnLayoutClass: string;\n\n /** @hidden */\n _fieldColumnLayoutClass: string;\n\n /** @hidden */\n _gapColumnLayoutClass: string;\n\n /**\n * hint and hint placement coerced to the FieldHintOptions\n */\n hintOptions: FieldHintOptions = defaultFormFieldHintOptions as unknown as FieldHintOptions;\n\n /** @hidden */\n _errorDirectives: FormError[] = [];\n\n /** Grouped errors. */\n groupedErrors: FormFieldErrorDirectiveContext[] = [];\n\n /** Event emited when errors object being changed. */\n errorsChange$ = new Subject<void>();\n\n /**\n * @hidden\n * Optional FormControl\n */\n public formControl: FormControl;\n\n /** @hidden */\n protected _columns: Column = 6;\n\n /** @hidden */\n protected _editable = true;\n\n /** @hidden */\n protected _formGroup: FormGroup;\n\n /** @hidden */\n protected _required = false;\n\n /** @hidden */\n protected _destroyed$ = new Subject<void>();\n\n /** @hidden */\n private _isColumnLayoutEnabled = false;\n\n /** @hidden column number for different screen sizes */\n private _xlColumnNumber: number;\n\n /** @hidden */\n private _lgColumnNumber: number;\n\n /** @hidden */\n private _mdColumnNumber: number;\n\n /** @hidden */\n private _sColumnNumber = 1;\n\n /** @hidden */\n private _columnLayout: ColumnLayout;\n\n /** @hidden */\n private readonly _responsiveBreakPointConfig: ResponsiveBreakPointConfig;\n\n /** @hidden */\n private _labelLayout: LabelLayout;\n\n /** @hidden */\n private _labelColumnLayout: ColumnLayout;\n\n /** @hidden */\n private _fieldColumnLayout: ColumnLayout;\n /** @hidden */\n private _gapColumnLayout: ColumnLayout;\n\n /** @hidden */\n private _formGroupErrorDirectives: FormError[] = [];\n\n /** @hidden */\n private _formGroupErrorDirectivesSubscription: Subscription;\n\n /** @hidden */\n private _errorDirectivesCdr: Subscription;\n\n /** @hidden whether label and control are vertically aligned */\n private get _isHorizontalAlignment(): boolean {\n if (!this.inputMessageGroup || !this.labelCol) {\n return false;\n }\n const inputMessageGroupY = this.inputMessageGroup.nativeElement.getBoundingClientRect().y;\n const labelColRect = this.labelCol.nativeElement.getBoundingClientRect();\n const labelColBottomY = labelColRect.y + labelColRect.height;\n return labelColBottomY > inputMessageGroupY;\n }\n\n /**\n * @hidden\n * Sum of extra heights inside form control and formFieldExtras.\n * Label will be shifted by this number in order to be properly aligned with the control\n */\n get _controlExtrasHeightPx(): number | null {\n if (this.noLabelLayout || !this._isHorizontalAlignment) {\n // proceed only if 1. there's a label; 2. control has vertical alignment\n return null;\n }\n return (\n (this.formFieldExtras?.nativeElement.offsetHeight ?? 0) + (this.control?.extraContentHeightPx ?? 0) || null\n );\n }\n\n /** @hidden */\n private _labelColumnLayout$: BehaviorSubject<ColumnLayout>;\n /** @hidden */\n private _fieldColumnLayout$: BehaviorSubject<ColumnLayout>;\n /** @hidden */\n private _gapColumnLayout$: BehaviorSubject<ColumnLayout>;\n /** @hidden */\n private _needsInlineHelpPlaceSubscription?: Subscription;\n\n /** @hidden */\n get _groupHost(): FormGroupContainer | FormFieldGroup {\n return this.formFieldGroup ? this.formFieldGroup : this.formGroupContainer;\n }\n\n /**\n * Will be updated during onChanges and resize, resulting correct placement of the\n * hint respecting passed configs and given breakpoint of screen.\n */\n hintTarget?: string;\n\n /** @hidden */\n private _breakPointObserver: Observable<any>;\n\n /** @hidden */\n private _formFieldLayoutService: FormFieldLayoutService;\n /** @hidden */\n private readonly _defaultHintOptions: FieldHintOptions;\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() formGroupContainer: FormGroupContainer,\n @Optional() readonly formFieldGroup: FormFieldGroup,\n @Optional()\n @Inject(RESPONSIVE_BREAKPOINTS_CONFIG)\n readonly _defaultResponsiveBreakPointConfig: ResponsiveBreakPointConfig,\n readonly _responsiveBreakpointsService: ResponsiveBreakpointsService,\n @Inject(FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT) _providedHintOptions: FieldHintOptions,\n @Inject(FDP_FORM_FIELD_HINT_LAYOUT_CONFIG) private _hintLayoutConfig: HintLayoutConfig,\n @Self() _selfFormFieldLayoutService: FormFieldLayoutService,\n @Optional() @SkipSelf() _parentFormFieldLayoutService: FormFieldLayoutService\n ) {\n this._defaultHintOptions = {\n ...defaultFormFieldHintOptions,\n ..._providedHintOptions\n };\n this._formFieldLayoutService = _parentFormFieldLayoutService || _selfFormFieldLayoutService;\n this._labelColumnLayout$ = new BehaviorSubject(this._labelColumnLayout);\n this._fieldColumnLayout$ = new BehaviorSubject(this._fieldColumnLayout);\n this._gapColumnLayout$ = new BehaviorSubject(this._gapColumnLayout);\n // formGroupContainer can be injected only if current form-field is located\n // insight formGroupContainer content.\n // If this is not the case the formGroupContainer\n // will be undefined (known angular issue),\n // in such case formGroupContainer can be pointed explicitly using\n // component input annotation\n this.formGroupContainer = formGroupContainer;\n this._responsiveBreakPointConfig = _defaultResponsiveBreakPointConfig || new ResponsiveBreakPointConfig();\n this._breakPointObserver = this._responsiveBreakpointsService.observeBreakpointByConfig(\n this._responsiveBreakPointConfig\n );\n }\n\n /**\n * Sets initial values for label, field and gap columns\n */\n setDefaultColumnLayout(): void {\n // If layout already defined, no need to set default one.\n if (this.labelColumnLayout) {\n return;\n }\n this.listenToInlineHelpPlaceRequirementChanges(() => (this.labelColumnLayout ? this : this._groupHost));\n }\n\n /** @hidden */\n listenToInlineHelpPlaceRequirementChanges(getSource: () => any): void {\n if (this._needsInlineHelpPlaceSubscription) {\n this._needsInlineHelpPlaceSubscription.unsubscribe();\n this._needsInlineHelpPlaceSubscription = void 0;\n }\n const setLayouts = (source: any): void => {\n this.labelColumnLayout = source.labelColumnLayout;\n this.fieldColumnLayout = source.fieldColumnLayout;\n this.gapColumnLayout = source.gapColumnLayout;\n };\n this._needsInlineHelpPlaceSubscription = this._formFieldLayoutService.needsInlineHelpPlace\n .pipe(\n map(() => this._formFieldLayoutService.getFixedLayouts(getSource())),\n tap(setLayouts),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnInit(): void {\n // provides capability to make a field disabled. useful in reactive form approach.\n this.formControl =\n (this.formGroupContainer?.formGroup?.get(this.id) as FormControl) ??\n new FormControl({ value: null, disabled: this.disabled });\n\n if (this.columns && (this.columns < 1 || this.columns > 12)) {\n throw new Error('[columns] accepts numbers between 1 - 12');\n }\n\n if (this._isColumnLayoutEnabled) {\n this._breakPointObserver\n .pipe(takeUntil(this._destroyed$))\n .subscribe((breakPointName) => this._updateLayout(breakPointName));\n }\n\n this._addToFormGroup();\n\n this.isHorizontal$ = combineLatest([\n this._labelColumnLayout$.pipe(filter(Boolean), map(normalizeColumnLayout)),\n this._fieldColumnLayout$.pipe(filter(Boolean), map(normalizeColumnLayout)),\n this._gapColumnLayout$.pipe(map((g) => normalizeColumnLayout(g || { S: 0 })))\n ]).pipe(\n switchMap(([label, field, gap]) =>\n this._breakPointObserver.pipe(\n map((breakpointName) => label[breakpointName] + field[breakpointName] + gap[breakpointName] <= 12)\n )\n )\n );\n this.listenToInlineHelpPlaceRequirementChanges(() => this);\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hint || changes.hintPlacement) {\n this._updateHintOptions();\n this._formFieldLayoutService.setNeedsInlineHelp(\n this,\n (this.hintOptions.target === 'input' || this.hintOptions.target === 'auto') && !!this.hint\n );\n }\n if (changes.hint && changes.hint.firstChange) {\n this._breakPointObserver\n .pipe(\n tap((sizeName) => {\n if (this.hintOptions.target === 'auto') {\n this.hintTarget = this._hintLayoutConfig.hintOnInputBreakpoints.includes(sizeName)\n ? 'input'\n : 'label';\n } else {\n this.hintTarget = this.hintOptions.target;\n }\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._cd.markForCheck();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._assignErrorDirectives();\n\n this._errorDirectiveQuery.changes.pipe(takeUntil(this._destroyed$)).subscribe(() => {\n this._assignErrorDirectives();\n });\n this._updateControlProperties();\n this._validateErrorHandler();\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._formFieldLayoutService.removeEntry(this);\n this._removeFromFormGroup();\n this._destroyed$.next();\n this._destroyed$.complete();\n this._errorDirectivesCdr?.unsubscribe();\n this._formGroupErrorDirectivesSubscription?.unsubscribe();\n }\n\n /** @hidden */\n hasErrors(): boolean {\n const result = this._editable && !!this.control?.controlInvalid;\n return result;\n }\n\n /**\n * Register underlying form control\n * @param formFieldControl\n */\n registerFormFieldControl(formFieldControl: FormFieldControl): void {\n if (this.control) {\n throw Error('Form field can contain only one FormFieldControl');\n }\n\n this.control = formFieldControl as PlatformFormFieldControl;\n\n formFieldControl.stateChanges.pipe(startWith(null), takeUntil(this._destroyed$)).subscribe(() => {\n this._updateControlProperties();\n // need to call explicitly detectChanges() instead of markForCheck before the\n // modified validation state of the control passes over checked phase\n this.onChange.emit('stateChanges');\n this.groupErrors();\n this._cd.detectChanges();\n });\n\n // Refresh UI when value changes\n if (formFieldControl?.ngControl?.valueChanges) {\n formFieldControl.ngControl.valueChanges.pipe(takeUntil(this._destroyed$)).subscribe(() => {\n this.onChange.emit('valueChanges');\n this.groupErrors();\n this._cd.markForCheck();\n });\n }\n\n if (formFieldControl?.ngControl?.control) {\n const control = formFieldControl.ngControl.control;\n\n const hasRequiredValidator =\n this.validators.includes(Validators.required) || this.validators.includes(Validators.requiredTrue);\n\n if (this.required && !hasRequiredValidator) {\n this.validators.push(Validators.required);\n }\n\n if (hasRequiredValidator) {\n this.required = true;\n }\n\n // if form control is disabled, in reactive form approach\n if (this.disabled) {\n control.disable();\n }\n\n /**\n * There is a case when a \"form-group\" initial state is VALID,\n * and on the next loop a child form-filed extends it and make\n * the form-group INVALID.\n * In such case we get the error\n * \"ExpressionChangedAfterItHasBeenCheckedError. Previous value is ng-valid, current value is ng-invalid\".\n * To fix it we have to postpone adding form-field validators\n *\n */\n Promise.resolve().then(() => {\n control.setValidators(Validators.compose(this.validators));\n control.updateValueAndValidity({ emitEvent: false });\n });\n\n this._addControlToFormGroup(formFieldControl?.ngControl?.control);\n }\n\n this._cd.markForCheck();\n }\n\n /**\n * Unregister underlying form control\n * @param formFieldControl\n */\n unregisterFormFieldControl(formFieldControl: FormFieldControl): void {\n if (formFieldControl !== this.control) {\n return;\n }\n\n this.control = null;\n\n this._removeControlFromFormGroup();\n }\n\n /**\n * Groups\n */\n groupErrors(): void {\n // Queue task because firing it right away may cause error with showing empty message.\n setTimeout(() => {\n this.groupedErrors = [];\n const errors = this.control?.ngControl?.errors;\n if (!errors) {\n return [];\n }\n\n this.errorDirectives.forEach((directive) => {\n if (!errors[directive.error]) {\n return;\n }\n\n this.groupedErrors.push({\n directive,\n error: errors[directive.error]\n });\n });\n this.errorsChange$.next();\n this._cd.markForCheck();\n });\n }\n\n /**\n * Gets prioritized control state based on the error types it has.\n */\n getPriorityState(): FormStates {\n if (this.groupedErrors.length === 0) {\n return this.hasErrors() ? 'error' : 'default';\n }\n\n return getFormState(this.groupedErrors.map((error) => error.directive.type));\n }\n\n /**\n * Sets error directives.\n */\n setErrorDirectives(directives: QueryList<FormError>): void {\n this._formGroupErrorDirectivesSubscription?.unsubscribe();\n\n if (!directives) {\n return;\n }\n\n this._formGroupErrorDirectives = directives.toArray();\n\n this._formGroupErrorDirectivesSubscription = directives.changes\n .pipe(takeUntil(this._destroyed$))\n .subscribe(() => {\n this._formGroupErrorDirectives = directives.toArray();\n });\n }\n\n /**\n * Returns whether content of the provided hint is a string.\n * @hidden\n */\n isStringHint(hintOptions: HintContent): hintOptions is string {\n return typeof hintOptions === 'string';\n }\n\n /** @hidden */\n private _validateErrorHandler(): void {\n if (\n this._editable &&\n this.control &&\n this._hasValidators() &&\n !this.i18Strings &&\n this.errorDirectives.length === 0\n ) {\n throw new Error('Validation strings are required for the any provided validations.');\n }\n }\n\n /** @hidden */\n private _hasValidators(): boolean {\n return this.validators && this.validators.length > 1;\n }\n\n /**\n * @hidden\n * Add FormField to FormGroup\n */\n private _addToFormGroup(): void {\n if (!this.formGroupContainer || this.formFieldGroup) {\n return;\n }\n\n this.formGroupContainer.addFormField(this);\n }\n\n /**\n * @hidden\n * Remove FormField from FormGroup\n */\n private _removeFromFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.removeFormField(this);\n }\n\n /**\n * @hidden\n * Add FormControl from FormGroup\n */\n private _addControlToFormGroup(control: AbstractControl): void {\n if (!this.formGroupContainer || !!this.formFieldGroup?.formName) {\n return;\n }\n this.formGroupContainer.addFormControl(this.id, control);\n }\n\n /**\n * @hidden\n * Remove FormControl from FormGroup\n */\n private _removeControlFromFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.removeFormControl(this.id);\n }\n\n /**\n * @hidden\n * Need to be able to set these properties on every level.\n * - Global FormGroup Level as well each field\n *\n * Todo: use more elegant way to set these properties.\n */\n private _updateControlProperties(): void {\n if (this.control && this._editable) {\n this.control.id = this.id;\n this.control.required = this.required;\n\n if (this.placeholder) {\n this.control.placeholder = this.placeholder;\n }\n }\n }\n\n /** @hidden */\n private _setLayout(): void {\n try {\n const normalized = normalizeColumnLayout(this.columnLayout, 1);\n this.columnLayout = normalized;\n this._sColumnNumber = normalized['S'];\n this._mdColumnNumber = normalized['M'];\n this._lgColumnNumber = normalized['L'];\n this._xlColumnNumber = normalized['XL'];\n } catch (error) {\n this._isColumnLayoutEnabled = false;\n }\n }\n\n /** @hidden */\n private _updateLayout(currentBreakingPointName: string): void {\n if (this._isColumnLayoutEnabled) {\n switch (currentBreakingPointName) {\n case 'S':\n this.column = this._sColumnNumber;\n break;\n case 'M':\n this.column = this._mdColumnNumber;\n break;\n case 'L':\n this.column = this._lgColumnNumber;\n break;\n case 'XL':\n this.column = this._xlColumnNumber;\n break;\n default:\n this.column = this._xlColumnNumber;\n }\n }\n\n // emit column change, so form-group knows it and re-arranges the fields\n this.onColumnChange.emit(true);\n }\n\n /** @hidden */\n private _updateHintOptions(): void {\n // placement is here set up because hintPlacement is deprecated\n if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {\n this.hintOptions = {\n ...this._defaultHintOptions,\n placement: this.hintPlacement ? this.hintPlacement : this._defaultHintOptions.placement,\n content: this.hint\n };\n } else if (typeof this.hint === 'object') {\n this.hintOptions = {\n ...this._defaultHintOptions,\n placement: this.hintPlacement ? this.hintPlacement : this._defaultHintOptions.placement,\n ...this.hint\n };\n }\n }\n\n /** @hidden */\n private _assignErrorDirectives(): void {\n this._errorDirectivesCdr?.unsubscribe();\n this._errorDirectives = this._errorDirectiveQuery.toArray();\n this._errorDirectivesCdr = new Subscription();\n\n this._errorDirectives.forEach((directive) => {\n this._errorDirectivesCdr.add(\n directive.detectChanges$.subscribe(() => {\n this.groupErrors();\n this._cd.detectChanges();\n })\n );\n });\n }\n}\n","<ng-template #renderer>\n <div [horizontal]=\"true\" fd-form-item class=\"fd-row\">\n <div\n class=\"fd-col\"\n #labelCol\n [class]=\"_labelColumnLayoutClass\"\n *ngIf=\"!noLabelLayout\"\n [style.margin-bottom.px]=\"_controlExtrasHeightPx\"\n >\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </div>\n <ng-container *ngTemplateOutlet=\"withFormMessage\"></ng-container>\n <ng-container *ngTemplateOutlet=\"gapTemplate\"></ng-container>\n </div>\n <span aria-hidden=\"true\" style=\"display: none\" [id]=\"'fdp-form-hint-' + id\">\n <ng-container *ngIf=\"isStringHint(hintOptions.content); else hintTemplate\">\n {{ hintOptions.content }}\n </ng-container>\n <ng-template #hintTemplate>\n <ng-template [ngTemplateOutlet]=\"$any(hintOptions.content)\"></ng-template>\n </ng-template>\n </span>\n</ng-template>\n\n<ng-template #withFormMessage>\n <fdp-input-message-group\n class=\"fd-col\"\n [class]=\"_fieldColumnLayoutClass\"\n [attr.aria-labelledby]=\"'fdp-form-label-' + id\"\n >\n <!--\n Todo: we should extend this on FormGroup Level and have error trigger strategy that will be applied to\n all the field e.g.: [triggers]=\"['mouseenter', 'mouseleave']\"\n -->\n\n <ng-template #triggerItem>\n <ng-content></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"hasErrors() && groupedErrors.length > 0\">\n <fd-form-message *ngFor=\"let error of groupedErrors\" [type]=\"error.directive.type\">\n <ng-template\n [ngIf]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n <ng-container *ngIf=\"error.directive._headingTemplateRef && error.directive._descriptionTemplateRef\">\n <br />\n </ng-container>\n <ng-template\n [ngIf]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n </fd-form-message>\n </ng-container>\n\n <fd-form-message *ngIf=\"groupedErrors.length === 0 && hasErrors() && i18Strings\" type=\"error\">\n <ng-container *ngTemplateOutlet=\"i18Strings; context: { $implicit: control?.ngControl?.errors }\">\n </ng-container>\n </fd-form-message>\n </fdp-input-message-group>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"hintTarget === 'label'; else withoutHint\">\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [inlineHelpContent]=\"hintOptions.content\"\n [inlineHelpBodyPlacement]=\"hintOptions.placement || 'top'\"\n [inlineHelpPlacement]=\"hintOptions.position || 'after'\"\n [inlineHelpGlyph]=\"hintOptions.glyph || ''\"\n [inlineHelpTriggers]=\"hintOptions.trigger || []\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n [colon]=\"colon\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-container>\n <ng-template #withoutHint>\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [colon]=\"colon\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-template>\n</ng-template>\n\n<ng-template #gapTemplate>\n <ng-container *ngIf=\"hintTarget === 'input' && hintOptions.content; else withoutHint\">\n <div class=\"fd-col fd-form-field-inline-help-container\" [class]=\"_gapColumnLayoutClass\">\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"hintOptions.content\"\n [glyph]=\"hintOptions.glyph\"\n [placement]=\"hintOptions.placement || null\"\n [triggers]=\"hintOptions.trigger || []\"\n tabindex=\"0\"\n >\n </fd-icon>\n </span>\n </div>\n </ng-container>\n <ng-template #withoutHint>\n <div class=\"fd-col\" [class]=\"_gapColumnLayoutClass\"></div>\n </ng-template>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Provider,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_FORM_FIELD } from '@fundamental-ngx/cdk/forms';\n\nimport {\n ColumnLayout,\n FormFieldGroup,\n FormGroupContainer,\n HintOptions,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { FORM_GROUP_CHILD_FIELD_TOKEN } from '../constants';\n\nconst formFieldGroupProvider: Provider = {\n provide: FormFieldGroup,\n useExisting: forwardRef(() => FormFieldGroupComponent)\n};\n\nconst formGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormFieldGroupComponent)\n};\n\n@Component({\n selector: 'fdp-form-field-group',\n template: ` <ng-content></ng-content>`,\n styleUrls: ['./form-field-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [formFieldGroupProvider, formGroupChildProvider]\n})\nexport class FormFieldGroupComponent implements FormFieldGroup, OnInit, OnDestroy {\n /**\n * Group header title\n */\n @Input()\n label: string;\n\n /** Group's form name */\n @Input()\n formName: string;\n\n /**\n * Form Group Container to bind the Form-Field-Group to.\n * This will override default value injected by constructor\n */\n @Input()\n formGroupContainer: FormGroupContainer;\n\n /**\n * Defines label's column layout.\n */\n @Input()\n set labelColumnLayout(value: ColumnLayout | undefined) {\n if (value) {\n this._labelColumnLayout = value;\n }\n }\n get labelColumnLayout(): ColumnLayout {\n return this._labelColumnLayout;\n }\n /** @hidden */\n private _labelColumnLayout: ColumnLayout;\n\n /**\n * Defines field's column layout.\n */\n @Input()\n set fieldColumnLayout(value: ColumnLayout | undefined) {\n if (value) {\n this._fieldColumnLayout = value;\n }\n }\n get fieldColumnLayout(): ColumnLayout {\n return this._fieldColumnLayout;\n }\n /** @hidden */\n private _fieldColumnLayout: ColumnLayout;\n\n /**\n * Defines gap column layout.\n */\n @Input()\n set gapColumnLayout(value: ColumnLayout | undefined) {\n if (value) {\n this._gapColumnLayout = value;\n }\n }\n get gapColumnLayout(): ColumnLayout {\n return this._gapColumnLayout;\n }\n /** @hidden */\n private _gapColumnLayout: ColumnLayout;\n\n /**\n * Describes hint options for group header\n */\n @Input()\n hintOptions?: HintOptions;\n\n /**\n * Get form fields wrapped into form field group\n */\n @ContentChildren(FD_FORM_FIELD, { descendants: true })\n fields: QueryList<PlatformFormField>;\n\n /** @hidden */\n constructor(@Optional() formGroupContainer: FormGroupContainer) {\n this.formGroupContainer = formGroupContainer;\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._addToFormGroup();\n this._setDefaultLayout();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeFromFormGroup();\n }\n\n /** @hidden */\n private _setDefaultLayout(): void {\n // If layout already defined, no need to set default one.\n if (this.labelColumnLayout) {\n return;\n }\n\n this.labelColumnLayout = this.formGroupContainer?.labelColumnLayout;\n this.fieldColumnLayout = this.formGroupContainer?.fieldColumnLayout;\n this.gapColumnLayout = this.formGroupContainer?.gapColumnLayout;\n }\n\n /** @hidden */\n private _addToFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.addFormFieldGroup(this);\n }\n\n /** @hidden */\n private _removeFromFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.removeFormFieldGroup(this);\n }\n}\n","import { AbstractControlOptions, AsyncValidatorFn, FormControl, FormGroup, ValidatorFn } from '@angular/forms';\n\nimport { DynamicAbstractControlOptions } from './interfaces/dynamic-abstract-control';\nimport { DynamicFormFieldGroup, PreparedDynamicFormFieldItem } from './interfaces/dynamic-form-item';\n\nexport type DynamicFormGroupControl = DynamicFormControl | DynamicFormControlGroup;\n\nexport interface DynamicFormGroupControls {\n [key: string]: DynamicFormGroupControl;\n}\n\nexport class DynamicFormControlGroup extends FormGroup {\n /** @hidden */\n public formItem: DynamicFormFieldGroup;\n /** @hidden */\n public type = 'group';\n /** @hidden */\n public override controls: DynamicFormGroupControls;\n\n /** @hidden */\n constructor(\n formItem: DynamicFormFieldGroup,\n controls: DynamicFormGroupControls,\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(controls, validatorOrOpts, asyncValidator);\n this.formItem = formItem;\n }\n}\n\nexport class DynamicFormControl extends FormControl {\n /** @hidden */\n public formItem: PreparedDynamicFormFieldItem;\n /** @hidden */\n public type = 'field';\n\n /**\n * @description Creates a new `DynamicFormControl` instance.\n *\n * @param formState Initializes the control with an initial value,\n * or an object that defines the initial value and disabled state.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n * @param formItem `DynamicFormItem` object\n *\n */\n constructor(formState: any, validatorOrOpts: DynamicAbstractControlOptions) {\n super(formState, validatorOrOpts);\n this.formItem = validatorOrOpts.dynamicFormItem;\n }\n}\n","import { forwardRef, InjectionToken, Provider } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { FD_FORM_FIELD } from '@fundamental-ngx/cdk/forms';\n\nimport { FORM_GROUP_CHILD_FIELD_TOKEN } from '../../form-group/constants';\nimport { FormFieldComponent } from '../../form-group/form-field/form-field.component';\nimport { DynamicFormFieldItem } from '../interfaces/dynamic-form-item';\nimport { FormGeneratorConfig } from '../interfaces/form-generator-module-config';\n\nexport const dynamicFormFieldProvider: Provider = {\n provide: FD_FORM_FIELD,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\nexport const dynamicFormGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\nexport const FORM_GENERATOR_ITEM_CONFIG = new InjectionToken<DynamicFormFieldItem>('FormGeneratorItemConfig');\n\nexport const FORM_GENERATOR_CONFIG = new InjectionToken<FormGeneratorConfig>('FormGeneratorConfig');\n\nexport const defaultFormGeneratorConfig: FormGeneratorConfig = {\n controlNameSeparator: '|',\n ungroupedControlsName: 'ungrouped'\n};\n\nexport const defaultFormGeneratorConfigProvider: Provider = {\n provide: FORM_GENERATOR_CONFIG,\n useValue: defaultFormGeneratorConfig\n};\n\nexport const defaultFormGeneratorItemConfig: Partial<DynamicFormFieldItem> = {\n useMessageAsPlaceholder: true,\n required: false,\n validators: [Validators.nullValidator]\n};\n\nexport const defaultFormGeneratorItemConfigProvider: Provider = {\n provide: FORM_GENERATOR_ITEM_CONFIG,\n useValue: defaultFormGeneratorItemConfig\n};\n","import { Directive, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { PlatformFormField, SelectItem } from '@fundamental-ngx/platform/shared';\nimport { BaseDynamicFormFieldItem, PreparedDynamicFormFieldItem } from './interfaces/dynamic-form-item';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from './providers/providers';\n\nexport interface BaseDynamicFormGeneratorControlInterface {\n formItem: PreparedDynamicFormFieldItem;\n name: string;\n id: string;\n form: FormGroup;\n formField: PlatformFormField;\n}\n\n/**\n * Abstract class that used as a base for the Dynamic Form Generator components.\n */\n@Directive({\n providers: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport abstract class BaseDynamicFormGeneratorControl<T extends BaseDynamicFormFieldItem = BaseDynamicFormFieldItem>\n implements BaseDynamicFormGeneratorControlInterface\n{\n /**\n * @description @see DynamicFormItem.\n */\n @Input() formItem: PreparedDynamicFormFieldItem<T>;\n\n /**\n * @description Id of the control.\n */\n @Input() id: string;\n\n /**\n * @description Represents form control name.\n */\n @Input() name: string;\n\n /**\n * @description Reference to the @see FormGroup class.\n */\n @Input() form: FormGroup;\n\n /**\n * @description Reference to the @see FormFieldComponent.\n */\n @Input() formField: PlatformFormField;\n\n /** @description Inner form group name */\n @Input() formGroupName: string;\n\n /** @description Returns form item choices. */\n get choices(): SelectItem[] {\n return this.formItem.choices ?? [];\n }\n\n /** @description Returns form item placeholder. */\n get placeholder(): string {\n if (!this.formItem) {\n return '';\n }\n if (this.formItem?.placeholder) {\n return this.formItem?.placeholder;\n }\n return (this.formItem?.useMessageAsPlaceholder && this.formItem?.message) || '';\n }\n}\n","/**\n * @license\n * F. Kolar\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\n\nconst VALID_INPUT_TYPES = ['text', 'number', 'email', 'password'];\n\nexport type InputType = 'text' | 'number' | 'email' | 'password';\n\n/**\n * Input field implementation to be compliant with our FormGroup/FormField design and also to\n * achieve certain this in Angular this component is re-using several ideas from MatDesign\n *\n */\n@Component({\n selector: 'fdp-input',\n templateUrl: 'input.component.html',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: InputComponent, multi: true }]\n})\nexport class InputComponent extends BaseInput implements OnInit, AfterViewInit {\n /** Input type */\n @Input()\n type: InputType = 'text';\n\n /**\n * @hidden\n * This `required` field is used internally by other components such as Input Group.\n * Input group will not be able to set required value to input, until `required` is input through the`@Input` property.\n */\n @Input()\n required: boolean;\n\n /** return the value in the text box */\n @Input()\n set value(value: any) {\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** Emits event on focus change */\n @Output() focusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden */\n get inputElementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n if (!this.type || VALID_INPUT_TYPES.indexOf(this.type) === -1) {\n throw new Error(` Input type ${this.type} is not supported`);\n }\n }\n\n /** @hidden */\n _onFocus(): void {\n this._onFocusChanged(true);\n // propagate event\n this.focusChange.emit(true);\n }\n\n /** @hidden */\n _onBlur(): void {\n this._onFocusChanged(false);\n // propagate event\n this.focusChange.emit(false);\n }\n}\n","<!--\n Does it make sense to have some other state than error?\n-->\n<input\n #inputElementRef\n fd-form-control\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{ standalone: true }\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [state]=\"state\"\n [readOnly]=\"readonly\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n/>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\nimport { InputDynamicFormFieldItem } from '../../interfaces/dynamic-form-item';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-input',\n templateUrl: './dynamic-form-generator-input.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorInputComponent extends BaseDynamicFormGeneratorControl<InputDynamicFormFieldItem> {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\" *ngIf=\"formField\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-input\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [type]=\"formItem.controlType || 'text'\"\n [formControlName]=\"name\"\n ></fdp-input>\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { FdCheckboxValues, CheckboxComponent as FdCheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\n\n/** Change event object emitted by Platform Checkbox. */\nexport class PlatformCheckboxChange {\n /** The source Checkbox of the event. */\n source: CheckboxComponent;\n /**\n * The new `checked` value of the checkbox.\n * possible value: true/false and array of checkbox values.\n */\n checked: any;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fdp-checkbox',\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => CheckboxComponent), multi: true }]\n})\nexport class CheckboxComponent extends BaseInput implements AfterViewInit {\n /**\n * Checkbox tooltip\n */\n @Input()\n title: string;\n\n /** Sets label for checkbox. */\n @Input()\n label: string;\n\n /** true when checkbox has indeterminate state */\n @Input()\n tristate = false;\n\n /** @deprecated */\n @Input()\n set isBinary(value: boolean) {\n if (isDevMode()) {\n console.warn(\n '\"isBinary\" is deprecated and has no effect anymore \\n' +\n 'Checkbox is binary by default. Use \"tristate\" input if you need to have indeterminate checkbox.'\n );\n }\n }\n\n // this is undesired to have \"checked\" input instead of \"value\"\n // but it was done this way initially and we have to keep this in order to not break anything\n /**\n * Checked state of the checkbox control.\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('checked')\n set value(selectValue: any) {\n this.setValue(selectValue);\n }\n get value(): any {\n return this.getValue();\n }\n\n /** when true indeterminate state can be selected */\n @Input()\n tristateSelectable = false;\n\n /** value for checkbox control when it's state is checked. */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value')\n set checkboxTrueValue(trueValue: any) {\n if (isDevMode()) {\n console.warn('\"value\" input is deprecated. Use \"values\" instead');\n }\n this.values = this.values ? { ...this.values, trueValue } : { trueValue };\n }\n\n /** Values returned by control. */\n @Input()\n values: FdCheckboxValues;\n\n /** Whether checkbox should be rendered standalone (without any text). */\n @Input()\n standalone = false;\n\n /**\n * Emitting checked event for non-form checkbox\n */\n @Output()\n readonly checkedChange = new EventEmitter<any>();\n\n /**\n * @deprecated use \"checkedChange\" instead\n * Emitting checkbox change event\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n readonly change: EventEmitter<PlatformCheckboxChange> = new EventEmitter<PlatformCheckboxChange>();\n\n /**\n * @deprecated rely on checkbox state directly instead\n * Event emitted when the checkbox's `indeterminate` value changes.\n */\n @Output()\n readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * @hidden\n * is needed for the checkbox group to access component values\n */\n @ViewChild(FdCheckboxComponent)\n coreCheckbox: FdCheckboxComponent;\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n protected _changeDetector: ChangeDetectorRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0\n ) {\n super(_changeDetector, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n // necessary to fulfill baseInput check.\n // case: fdp-checkbox passed in declarative fdp-checkbox-group without id and name.\n this.name = `fdp-checkbox-${nextUniqueId++}`;\n this.tabIndexValue = tabIndexValue;\n }\n\n /** update controller on checkbox state change */\n public onModelChange(value: any): void {\n this.value = value;\n this._emitChangeEvent();\n this.stateChanges.next('checkbox: onModelChange');\n }\n\n /**\n * Method to emit change event\n */\n private _emitChangeEvent(): void {\n this.checkedChange.emit(this.value);\n\n const event = new PlatformCheckboxChange();\n event.source = this;\n event.checked = this.value;\n this.change.emit(event);\n this.indeterminateChange.emit(this.value === this.coreCheckbox?.values.thirdStateValue);\n }\n}\n","<div fd-form-item>\n <fd-checkbox\n [inputId]=\"id\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [label]=\"label\"\n [tristate]=\"tristate\"\n [values]=\"values\"\n [tristateSelectable]=\"tristateSelectable\"\n [state]=\"state\"\n [title]=\"title\"\n [required]=\"required\"\n [ariaLabel]=\"ariaLabel || null\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaDescribedBy]=\"ariaDescribedBy\"\n [ngModel]=\"value\"\n [standalone]=\"standalone\"\n (ngModelChange)=\"onModelChange($event)\"\n (focusChange)=\"_onFocusChanged($event)\"\n >\n <ng-content></ng-content>\n </fd-checkbox>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { RangeSelector } from '@fundamental-ngx/cdk/utils';\nimport { SelectionModel } from '@angular/cdk/collections';\n\nimport {\n InLineLayoutCollectionBaseInput,\n RESPONSIVE_BREAKPOINTS_CONFIG,\n ResponsiveBreakPointConfig,\n ResponsiveBreakpointsService,\n coerceArraySafe,\n SelectItem,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\nlet warnedAboutChecked = false;\nconst warnAboutChecked = (): void => {\n if (isDevMode() && !warnedAboutChecked) {\n console.warn('The fdp-checkbox-group[checked] property is deprecated. Use fdp-checkbox-group[value] instead');\n warnedAboutChecked = true;\n }\n};\n\n/**\n * Checkbox group implementation based on the\n * https://github.com/SAP/fundamental-ngx/wiki/Platform:-CheckboxGroup-Technical-Design\n * documents.\n */\n@Component({\n selector: 'fdp-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => CheckboxGroupComponent), multi: true }]\n})\nexport class CheckboxGroupComponent extends InLineLayoutCollectionBaseInput {\n /**\n * value for selected checkboxes.\n */\n @Input()\n set value(selectedValue: any[]) {\n this.setValue(selectedValue);\n this._updateSelectionModelByValue();\n }\n get value(): any[] {\n return this.getValue();\n }\n\n /**\n * To Display multiple checkboxes in a line\n */\n @Input()\n set isInline(inline: boolean) {\n this._inlineCurrentValue$.next(inline);\n }\n get isInline(): boolean {\n return this._inlineCurrentValue$.value;\n }\n\n /**\n * @deprecated\n * Establishes two way binding, when checkbox group used outside form.\n */\n @Input()\n set checked(checkedValues: string[]) {\n warnAboutChecked();\n this.value = checkedValues;\n }\n get checked(): string[] {\n warnAboutChecked();\n return this.value;\n }\n\n /** Children checkboxes passed as content */\n @ContentChildren(CheckboxComponent)\n contentCheckboxes: QueryList<CheckboxComponent>;\n\n /** Children checkboxes created from passed list values. */\n @ViewChildren(CheckboxComponent)\n viewCheckboxes: QueryList<CheckboxComponent>;\n\n /** Emits checked change event */\n @Output()\n readonly valueChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n /**\n * @deprecated - use \"valueChange\" instead\n * Emits checked change event\n */\n @Output()\n readonly checkedChange = this.valueChange;\n\n /** @hidden */\n private readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n readonly _selectionModel = new SelectionModel(true);\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n readonly _responsiveBreakpointsService: ResponsiveBreakpointsService,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional()\n @SkipSelf()\n @Host()\n @Inject(FD_FORM_FIELD_CONTROL)\n @Inject(FD_FORM_FIELD_CONTROL)\n formControl: PlatformFormFieldControl,\n @Optional()\n @Inject(RESPONSIVE_BREAKPOINTS_CONFIG)\n readonly _defaultResponsiveBreakPointConfig: ResponsiveBreakPointConfig\n ) {\n super(\n cd,\n elementRef,\n _responsiveBreakpointsService,\n ngControl,\n controlContainer,\n ngForm,\n formField,\n formControl,\n _defaultResponsiveBreakPointConfig\n );\n }\n\n /**\n * @hidden\n * @param selectionState actual value of the checkbox\n * @param checkboxTrueValue thuthy value to compare the \"selectionState\" with\n */\n onModelChanged(selectionState: any, checkboxTrueValue: any): void {\n const isSelected = selectionState === checkboxTrueValue;\n if (isSelected) {\n this._selectionModel.select(checkboxTrueValue);\n } else {\n this._selectionModel.deselect(checkboxTrueValue);\n }\n this._setValueBySelectionModel();\n this.onTouched();\n this.valueChange.emit(this.value);\n }\n\n /** @hidden */\n onCheckboxClick(index: number, source: 'contentChildren' | 'list', event?: MouseEvent): void {\n // this handler will be invoked after \"valueChange\"\n const queryList = source === 'list' ? this.viewCheckboxes : this.contentCheckboxes;\n const target = queryList.get(index);\n\n const isChecked = this._selectionModel.isSelected(target?.values.trueValue);\n this._rangeSelector.onRangeElementToggled(index, event);\n\n if (!this._rangeSelector.lastRangeSelectionState?.isRangeSelection) {\n // no need to proceed, if it's not a range selection - current checkbox is already updated\n return;\n }\n\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const checkbox = queryList.get(idx);\n if (checkbox?.disabled) {\n return;\n }\n const checkboxValue = checkbox?.values.trueValue;\n if (isChecked) {\n this._selectionModel.select(checkboxValue);\n } else {\n this._selectionModel.deselect(checkboxValue);\n }\n });\n this._setValueBySelectionModel();\n this.valueChange.emit(this.value);\n }\n\n /** @hidden */\n writeValue(selectedValue: any): void {\n super.writeValue(coerceArraySafe(selectedValue));\n this._updateSelectionModelByValue();\n }\n\n /** @inheritdoc */\n protected setValue(value: any, emitOnChange = true): void {\n super.setValue(coerceArraySafe(value), emitOnChange);\n }\n\n /**\n * access display value for objects, acts as checkbox label.\n */\n public getDisplayValue(item: any): string {\n return this.displayValue(item);\n }\n\n /**\n * access lookup value for objects, acts as checkbox value.\n */\n public getLookupValue(item: any): string {\n return this.lookupValue(item);\n }\n\n /** @hidden */\n public getListItemDisabledValue(item: CheckboxGroupComponent['list'][number]): boolean {\n return this.disabled || !!(<SelectItem>item)?.disabled;\n }\n\n /** @hidden */\n private _setValueBySelectionModel(): void {\n super.setValue(this._selectionModel.selected);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n private _updateSelectionModelByValue(): void {\n this._selectionModel.clear();\n this.value.forEach((v) => this._selectionModel.select(v));\n this._cd.markForCheck();\n }\n}\n","<fd-form-group\n [isInline]=\"isInline\"\n role=\"group\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n>\n <ng-container *ngIf=\"!list\">\n <ng-container *ngFor=\"let checkbox of contentCheckboxes; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxtmpt;\n context: {\n id: id + i,\n idx: i,\n source: 'contentChildren',\n name: name,\n checkboxValue: checkbox.coreCheckbox?.values?.trueValue,\n labeltext: checkbox.label,\n disabled: disabled || checkbox.disabled,\n ariaLabel: checkbox.ariaLabel,\n ariaLabelledBy: checkbox.ariaLabelledBy,\n ariaDescribedBy: checkbox.ariaDescribedBy,\n title: checkbox.title\n }\n \"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"list\">\n <ng-container *ngTemplateOutlet=\"listvalues\"></ng-container>\n </ng-container>\n</fd-form-group>\n\n<ng-template #listvalues>\n <ng-container *ngFor=\"let item of list; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxtmpt;\n context: {\n id: id + i,\n idx: i,\n source: 'list',\n name: name,\n checkboxValue: getLookupValue(item),\n labeltext: getDisplayValue(item),\n disabled: getListItemDisabledValue(item)\n }\n \"\n >\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template\n #checkboxtmpt\n let-id=\"id\"\n let-idx=\"idx\"\n let-source=\"source\"\n let-name=\"name\"\n let-checkboxValue=\"checkboxValue\"\n let-labeltext=\"labeltext\"\n let-checkboxDisabled=\"disabled\"\n let-ariaLabel=\"ariaLabel\"\n let-ariaLabelledBy=\"ariaLabelledBy\"\n let-ariaDescribedBy=\"ariaDescribedBy\"\n let-title=\"title\"\n>\n <fdp-checkbox\n [id]=\"id\"\n [name]=\"name\"\n [values]=\"{ trueValue: checkboxValue }\"\n [label]=\"labeltext\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaDescribedBy]=\"ariaDescribedBy\"\n [title]=\"title\"\n [disabled]=\"checkboxDisabled\"\n [state]=\"state\"\n [ngModel]=\"_selectionModel.isSelected(checkboxValue) ? checkboxValue : false\"\n (ngModelChange)=\"onModelChanged($event, checkboxValue)\"\n (click)=\"onCheckboxClick(idx, source, $event)\"\n >\n </fdp-checkbox>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-checkbox',\n templateUrl: './dynamic-form-generator-checkbox.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorCheckboxComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-checkbox-group\n [id]=\"id\"\n [isInline]=\"formItem.guiOptions?.inline || false\"\n [inlineLayout]=\"formItem.guiOptions?.inlineLayout\"\n [name]=\"name\"\n [list]=\"choices\"\n [formControlName]=\"name\"\n ></fdp-checkbox-group>\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FocusableOption } from '@angular/cdk/a11y';\n\nimport { RadioButtonComponent as CoreRadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'fdp-radio-button',\n templateUrl: './radio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioButtonComponent extends BaseInput implements AfterViewInit, FocusableOption {\n /** sets radio button tooltip */\n @Input()\n title: string;\n\n /**\n * Includes the Radio in the page tab sequence.\n */\n @Input()\n tabIndex = -1;\n\n /** value for Radio button */\n @Input()\n set value(newValue: any) {\n this._value = newValue;\n }\n get value(): any {\n return super.getValue();\n }\n\n /**\n * @deprecated\n * set state of individual radio.Used by RBG to set radio states\n */\n @Input()\n set stateType(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get stateType(): FormStates {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /** used for radio button creation if list value present */\n @Input()\n forceRender = false;\n\n /** reference of template */\n @ViewChild('renderer')\n renderer: TemplateRef<any>;\n\n /** @hidden */\n _currentValue: any;\n\n /** @hidden Radio checked status */\n _isChecked = false;\n\n /** click event to emit */\n @Output()\n readonly checked: EventEmitter<RadioButtonComponent> = new EventEmitter();\n\n /** Access radio button child element passed as content of radio button group */\n @ViewChild(CoreRadioButtonComponent, { static: false })\n private coreRadioButton: CoreRadioButtonComponent;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n // @hidden have to set default initial values as base class has check and throws error\n this.id = `fdp-radio-id-${uniqueId}`;\n this.name = `fdp-radio-name-${uniqueId}`;\n uniqueId++;\n }\n\n /** @hidden Controlvalue accessor */\n writeValue(value: any): void {\n this._valueChange(value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n _valueChange(value: any, emitEvent = false): void {\n if (this.disabled) {\n emitEvent = false;\n }\n\n this._currentValue = value;\n this._isChecked = this._currentValue === super.getValue();\n if (this._isChecked && emitEvent) {\n this.checked.emit(this);\n }\n this.tabIndex = this._isChecked ? 0 : -1;\n this._cd.detectChanges();\n if (emitEvent) {\n this.onChange(value);\n this.onTouched();\n }\n }\n\n /** method for cdk FocusKeymanager */\n focus(): void {\n this.coreRadioButton?.inputElement.nativeElement.focus();\n }\n\n /** method to select radio button */\n select(): void {\n this._valueChange(super.getValue());\n }\n\n /** method to uncheck radio button */\n unselect(): void {\n this._valueChange(undefined);\n }\n\n /** Setting tabIndex for radio accessibility */\n setTabIndex(index: 0 | -1): void {\n this.tabIndex = index;\n this._cd.markForCheck();\n }\n}\n","<ng-template #renderer>\n <fd-radio-button\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [tabIndex]=\"_isChecked ? 0 : tabIndex\"\n [title]=\"title\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaDescribedBy]=\"ariaDescribedBy\"\n [ngModel]=\"_currentValue\"\n (ngModelChange)=\"_valueChange($event, true)\"\n >\n <ng-content></ng-content>\n </fd-radio-button>\n</ng-template>\n\n<ng-container *ngIf=\"forceRender\">\n <ng-container *ngTemplateOutlet=\"renderer\"></ng-container>\n</ng-container>\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { merge, Subject } from 'rxjs';\n\nimport {\n PlatformFormFieldControl,\n InLineLayoutCollectionBaseInput,\n PlatformFormField,\n RESPONSIVE_BREAKPOINTS_CONFIG,\n ResponsiveBreakPointConfig,\n ResponsiveBreakpointsService,\n SelectItem\n} from '@fundamental-ngx/platform/shared';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\n\nimport { RadioButtonComponent } from './radio/radio.component';\n\n/**\n * Radio group implementation based on the\n * https://github.com/SAP/fundamental-ngx/wiki/Platform:-RadioGroup-Technical-Design\n * documents.\n */\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fdp-radio-group',\n templateUrl: './radio-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => RadioGroupComponent), multi: true }]\n})\nexport class RadioGroupComponent\n extends InLineLayoutCollectionBaseInput\n implements AfterViewInit, AfterContentChecked, OnDestroy\n{\n /** Value of selected radio button */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('selected')\n set value(newValue: any) {\n super.setValue(newValue);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** To Display Radio buttons in a line */\n @Input()\n set isInline(inline: boolean) {\n this._inlineCurrentValue$.next(inline);\n }\n get isInline(): boolean {\n return this._inlineCurrentValue$.value;\n }\n\n /** None value radio button created */\n @Input()\n hasNoValue = false;\n\n /** Label for None value radio button */\n @Input()\n noValueLabel = 'None';\n\n /** Children radio buttons part of Group radio button, passed as content */\n @ContentChildren(RadioButtonComponent)\n contentRadioButtons: QueryList<RadioButtonComponent>;\n\n /** Children radio buttons part of Group radio button, created from list of values */\n @ViewChildren(RadioButtonComponent)\n viewRadioButtons: QueryList<RadioButtonComponent>;\n\n /** Selected radio button change event raised */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n change: EventEmitter<RadioButtonComponent> = new EventEmitter<RadioButtonComponent>();\n\n /** @hidden */\n private _activeItemSet = false;\n\n /** @hidden The currently selected radio button. Should match value. */\n private _selected: RadioButtonComponent | null = null;\n\n /** @hidden */\n private _destroy$ = new Subject<boolean>();\n\n /** @hidden FocusKeyManager instance */\n private _keyboardEventsManager: FocusKeyManager<RadioButtonComponent>;\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n readonly _responsiveBreakpointsService: ResponsiveBreakpointsService,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Optional()\n @Inject(RESPONSIVE_BREAKPOINTS_CONFIG)\n readonly _defaultResponsiveBreakPointConfig: ResponsiveBreakPointConfig\n ) {\n super(\n _cd,\n elementRef,\n _responsiveBreakpointsService,\n ngControl,\n controlContainer,\n ngForm,\n formField,\n formControl,\n _defaultResponsiveBreakPointConfig\n );\n this.id = `radio-group-${nextUniqueId++}`;\n }\n\n /** Control Value Accessor */\n writeValue(value: any): void {\n super.writeValue(value);\n this.contentRadioButtons?.forEach((b) => this._selectUnselect(b));\n this.viewRadioButtons?.forEach((b) => this._selectUnselect(b));\n }\n\n /** Access display value for objects, acts as checkbox label. */\n getDisplayValue(item: any): string {\n return this.displayValue(item);\n }\n\n /**\n * Called on button click for view radio button, created from list of values\n * @param event\n */\n selected(event: RadioButtonComponent): void {\n this._selectedValueChanged(event);\n }\n\n /** @hidden Selecting default button as provided as input */\n ngAfterContentChecked(): void {\n if (!this._validateRadioButtons()) {\n throw new Error('fdp-radio-button-group must contain a fdp-radio-button');\n }\n this.contentRadioButtons.forEach((button) => (button.state = this.state));\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n * Initialize properties once fd-radio-buttons are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterViewInit(): void {\n setTimeout(() => {\n this._initialSetup(this.contentRadioButtons);\n this._initialSetup(this.viewRadioButtons);\n });\n super.ngAfterViewInit();\n }\n\n /** @hidden Destroys event subscription. */\n ngOnDestroy(): void {\n this._destroy$.next(true);\n this._destroy$.complete();\n this._keyboardEventsManager?.destroy();\n }\n\n /** @hidden */\n _getListItemDisabledValue(item: RadioGroupComponent['list'][number]): boolean {\n return this.disabled || (typeof item === 'object' && !!(<SelectItem>item).disabled);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent): void {\n event.stopImmediatePropagation();\n if (this._keyboardEventsManager) {\n // sets Active item. so arrow key starts after the active item.\n // Need to do only once, when one radio is already selected\n if (this._selected && !this._activeItemSet) {\n this._keyboardEventsManager.setActiveItem(this._selected);\n this._activeItemSet = true;\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n // passing the event to key manager so we get a change fired\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n }\n\n /** @hidden */\n private _initialSetup(radioButtons: QueryList<RadioButtonComponent>): void {\n if (!radioButtons || radioButtons?.length === 0) {\n return;\n }\n\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(radioButtons).withWrap().withHorizontalOrientation('ltr');\n\n radioButtons.changes\n .pipe(\n startWith(radioButtons),\n switchMap(() => {\n let firstEnabledButtonIndex = -1;\n const checkedEvents = radioButtons.map((button, i) => {\n if (this.list) {\n button.state = this.state;\n } else {\n this._setProperties(button);\n }\n\n this._selectUnselect(button);\n\n // finding first enabled button to set tabIndex=0\n if (!button.disabled && !this._disabled && firstEnabledButtonIndex < 0) {\n firstEnabledButtonIndex = i;\n }\n\n return button.checked.asObservable();\n });\n\n // accessibility requirement\n if (!this._selected && radioButtons && firstEnabledButtonIndex > -1) {\n radioButtons.toArray()[firstEnabledButtonIndex].setTabIndex(0);\n }\n return merge(...checkedEvents);\n }),\n takeUntil(this._destroy$)\n )\n .subscribe((ev) => this._selectedValueChanged(ev));\n }\n\n /**\n * @hidden\n * Selects given button, if value matches\n * @param button\n */\n private _selectUnselect(button: RadioButtonComponent): void {\n if (button.value !== this.value) {\n button.unselect();\n\n return;\n }\n\n // selected button\n if (this._selected !== button) {\n this._selected = button;\n }\n\n if (!button._isChecked) {\n button.select();\n }\n }\n\n /** @hidden Called every time a radio button is clicked, In content child as well as viewchild */\n private _selectedValueChanged(button: RadioButtonComponent): void {\n if (this._selected !== button) {\n this._resetTabIndex(button);\n\n if (this._selected) {\n this._selected.unselect();\n }\n\n this._selected = button;\n button.select();\n }\n\n this.value = button.value;\n this.change.emit(button);\n this.onTouched();\n }\n\n /** @hidden resets tabIndex for first radio in radio group. for accessibility tabIndex was set */\n private _resetTabIndex(selectedRadio: RadioButtonComponent): void {\n if (this.viewRadioButtons || this.contentRadioButtons) {\n const radios = this.viewRadioButtons.length > 0 ? this.viewRadioButtons : this.contentRadioButtons;\n radios.forEach((radio) => {\n if (radio !== selectedRadio && radio.tabIndex === 0) {\n radio.tabIndex = -1;\n }\n });\n }\n }\n\n /**\n * @hidden\n * @param button Set initial values, used while content children creation\n */\n private _setProperties(button: RadioButtonComponent): void {\n if (button) {\n button.name = this.name;\n button.state = this.state;\n button.disabled = button.disabled ? button.disabled : this._disabled;\n }\n }\n\n /** @hidden Make sure we have expected child. */\n private _validateRadioButtons(): boolean {\n return (\n this.contentRadioButtons.filter((item) => !(item instanceof RadioButtonComponent || item['renderer']))\n .length === 0\n );\n }\n}\n","<fd-form-group\n [isInline]=\"isInline\"\n role=\"radiogroup\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-orientation]=\"isInline ? 'horizontal' : 'vertical'\"\n [attr.aria-required]=\"required\"\n>\n <ng-container *ngIf=\"!list\">\n <ng-container *ngFor=\"let radio of contentRadioButtons\">\n <div fd-form-item>\n <ng-container\n *ngTemplateOutlet=\"\n radio?.renderer || null;\n context: {\n name: name,\n value: radio.value,\n state: state,\n disabled: disabled || radio.disabled,\n ariaLabel: radio.ariaLabel,\n ariaLabelledBy: radio.ariaLabelledBy,\n ariaDescribedBy: radio.ariaDescribedBy,\n title: radio.title\n }\n \"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"list\">\n <ng-container *ngTemplateOutlet=\"listvalues\"></ng-container>\n </ng-container>\n</fd-form-group>\n\n<ng-template #listvalues>\n <ng-container *ngIf=\"hasNoValue\">\n <div fd-form-item>\n <fdp-radio-button [name]=\"name\" value=\"None\" [state]=\"state\" [disabled]=\"disabled\" [forceRender]=\"true\">\n {{ noValueLabel }}\n </fdp-radio-button>\n </div>\n </ng-container>\n <ng-container *ngFor=\"let item of list\">\n <div fd-form-item>\n <fdp-radio-button\n [name]=\"name\"\n [value]=\"lookupValue(item)\"\n [state]=\"state\"\n [disabled]=\"_getListItemDisabledValue(item)\"\n [forceRender]=\"true\"\n >\n {{ getDisplayValue(item) }}\n </fdp-radio-button>\n </div>\n </ng-container>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-radio',\n templateUrl: './dynamic-form-generator-radio.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorRadioComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-radio-group\n [id]=\"id\"\n [isInline]=\"formItem.guiOptions?.inline || false\"\n [inlineLayout]=\"formItem.guiOptions?.inlineLayout\"\n [name]=\"name\"\n [list]=\"choices\"\n [formControlName]=\"name\"\n ></fdp-radio-group>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Default options for platform Text Area\n */\n@Injectable({ providedIn: 'root' })\nexport class TextAreaConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<TextAreaConfig>): () => TextAreaConfig {\n const useFactory = (): TextAreaConfig => Object.assign(new TextAreaConfig(), obj);\n return useFactory;\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n HostListener,\n Inject,\n Input,\n isDevMode,\n OnInit,\n Optional,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { BACKSPACE, DELETE } from '@angular/cdk/keycodes';\n\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { TextAreaConfig } from './text-area.config';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nconst VALID_WRAP_TYPES = ['hard', 'soft', 'off'];\n\nexport type WrapType = 'hard' | 'soft' | 'off';\n\n/**\n * Textarea field implementation that is compliant with Platform's FormGroup/FormField design\n *\n */\n@Component({\n selector: 'fdp-textarea',\n templateUrl: 'text-area.component.html',\n styleUrls: ['text-area.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: FD_FORM_FIELD_CONTROL,\n useExisting: TextAreaComponent,\n multi: true\n }\n ]\n})\nexport class TextAreaComponent extends BaseInput implements AfterViewChecked, OnInit, AfterViewInit {\n /**\n * The height to which the textarea will grow when `growing` is set.\n */\n @Input()\n height: Nullable<string>;\n\n /**\n * The number of rows that will be visible when `growing` is set.\n * If both `growingMaxLines` and `height` are provided, `height` value takes precedence.\n */\n @Input()\n growingMaxLines: Nullable<number>;\n\n /**\n * The textarea `cols` attribute wrapped- the number of letters visible per line.\n * If width is set to auto, this attribute has no effect.\n */\n @Input()\n cols: number;\n\n /**\n * The textarea `wrap` attribute - can be one of three: 'off', 'hard' or 'soft'.\n */\n @Input()\n wrapType: WrapType = 'soft';\n\n /**\n * Whether the textarea is readonly\n */\n @Input()\n readonly: boolean;\n\n /** The maximum number of characters allowed to enter.\n * If `showExceededText` is false, `maxLength` has native textarea's behavior of disallowing typing beyond `maxLength`.\n * If `showExceededText` is true, user is allowed to type beyond `maxLength`, but error states and counter messages showing\n * the exceeded count is displayed.\n */\n @Input()\n maxLength: number;\n\n /**\n * Whether counter message should be shown.\n * If `showExceededText` is false, no state changes or error messages are shown. User is simply not allowed to type\n * beyond the `maxLength` characters.\n */\n @Input()\n showExceededText = false;\n\n /**\n * Whether this textarea can grow.\n */\n @Input()\n growing = false;\n\n /**\n * @deprecated\n * set state of individual checkbox. Used by CBG to set checkbox states */\n @Input()\n set stateType(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get stateType(): FormStates {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /**\n * The textarea's value\n */\n @Input()\n set value(value: any) {\n if (value) {\n super.setValue(value);\n } else {\n // when custom value not set, we should set/reset counter to maxlength value when it becomes undefined\n this.exceededCharCount = this.maxLength ? this.maxLength : 0;\n // reset state by resetting value\n super.setValue('');\n }\n }\n get value(): any {\n return super.getValue();\n }\n\n /** @hidden */\n @ViewChild('counter')\n _textareaCounter?: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n hasTextExceeded = false;\n\n /** @hidden excess character count */\n exceededCharCount = 0;\n\n /** @hidden a string placeholder that toggles between 'remaining' and 'excess' for the select ICU expression */\n counterExcessOrRemaining = 'remaining';\n\n /** @hidden flag to check if there is an initial value set */\n isValueCustomSet = false;\n\n /** @hidden */\n /** to keep track of number of characters in the textarea */\n private _textAreaCharCount = 0;\n\n /** @hidden */\n private _isPasted = false;\n\n /** for i18n counter message translation */\n private readonly remainingText = 'remaining';\n /** for i18n counter message translation */\n private readonly excessText = 'excess';\n\n /**\n * @hidden\n * @see PlatformFormFieldControl.extraContentHeightPx\n */\n get extraContentHeightPx(): number | undefined {\n return this._textareaCounter?.nativeElement.offsetHeight;\n }\n\n /** @hidden */\n private get _shouldTrackTextLimit(): boolean {\n return this.maxLength > 0 && !this.showExceededText;\n }\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n protected _textAreaConfig: TextAreaConfig\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (!this.wrapType || VALID_WRAP_TYPES.indexOf(this.wrapType) === -1) {\n throw new Error(`Textarea wrap type ${this.wrapType} is not supported`);\n }\n // if not custom set, set counter to max length value, else it calculates remaining/exceeded characters.\n if (!this.value) {\n this.exceededCharCount = this.maxLength || 0;\n } else {\n this.isValueCustomSet = true;\n }\n super.ngOnInit();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n // set max height\n this._setMaxHeight();\n\n // don't set any error state if we are not showing counter message\n if (!this._shouldTrackTextLimit) {\n this.state = undefined;\n }\n\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngAfterViewChecked(): void {\n // when value is custom set(initial value is present), the heights don't get\n // set to show the full text in the ngAfterViewInit immediately. therefore, we call autoGrowTextArea in\n // ngAfterViewChecked and detect changes again.\n if (this.value && this.isValueCustomSet) {\n this.autoGrowTextArea(); // if applicable, grow the textarea when value is custom set\n this.stateChanges.next('textarea: ngAfterViewChecked');\n }\n }\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n super.writeValue(value ?? '');\n this.updateCounterInteractions();\n this.stateChanges.next('textarea: writeValue');\n }\n\n /** update the counter message and related interactions */\n updateCounterInteractions(): void {\n this._textAreaCharCount = this.value?.length ?? 0;\n\n if (this.maxLength) {\n // newly added to avoid unnecessary iteration, remove if issue found\n this.validateLengthOnCustomSet();\n }\n }\n\n /** if exceeded maxlength when set as a value in code, highlight the exceeded text. */\n validateLengthOnCustomSet(): void {\n if (this._textAreaCharCount > this.maxLength) {\n if (this._isPasted) {\n this._targetElement.focus();\n this._targetElement.setSelectionRange(this.maxLength, this._textAreaCharCount);\n }\n\n this.counterExcessOrRemaining = this.excessText;\n this.exceededCharCount = this._textAreaCharCount - this.maxLength;\n } else {\n this.counterExcessOrRemaining = this.remainingText;\n this.exceededCharCount = this.maxLength - this._textAreaCharCount;\n }\n\n this._isPasted = false;\n }\n\n /** handle exceeded maxlength case when text is pasted */\n handlePasteInteraction(): void {\n this._isPasted = true;\n\n // Wrapped in timeout to make selecting range working\n setTimeout(() => this.updateCounterInteractions());\n }\n\n /** handle auto growing of textarea */\n autoGrowTextArea(): void {\n if (this.growing) {\n this._targetElement.style.height = 'inherit';\n const textareaTotalHeight = this._getTextareaTotalHeight();\n const maxHeight = parseInt(this._targetElement.style.maxHeight as string, 10);\n if (maxHeight) {\n if (textareaTotalHeight <= maxHeight) {\n this._targetElement.style.height = textareaTotalHeight + 'px';\n } else {\n if (this.height) {\n this._targetElement.style.height = this.height;\n } else {\n this._targetElement.style.height = maxHeight + 'px';\n }\n }\n } else {\n // no bound max height, keep growing\n this._targetElement.style.height = textareaTotalHeight + 'px';\n }\n }\n }\n\n /**\n * get line height of textarea\n */\n getTextareaLineHeight(): number {\n // Get the computed styles for the element\n if (this._targetElement) {\n const computed = window.getComputedStyle(this._targetElement);\n\n // Calculate the height\n return parseInt(computed.getPropertyValue('line-height'), 10);\n }\n return 20; // default line height if nothing is defined\n }\n\n /** when backpress or delete key is pressed when showExceededText field is not set, simply remove excess characters,\n /* else handle autogrow case\n */\n @HostListener('keyup', ['$event'])\n handleBackPress(event: KeyboardEvent): void {\n // if not showing exceeded text message/interactions or growing, and custom value set\n if (this.growing) {\n this.autoGrowTextArea();\n this.isValueCustomSet = false; // set it to false first time it comes here\n }\n if (this._shouldTrackTextLimit && KeyUtil.isKeyCode(event, [DELETE, BACKSPACE])) {\n // for the custom value set and showExceededText=false case, on any key press, remove excess characters\n if (this.value) {\n this._textAreaCharCount = this.value.length;\n if (this._textAreaCharCount > this.maxLength) {\n // remove excess characters\n this.value = this.value.substring(0, this.maxLength);\n this.isValueCustomSet = false; // since value is now changed, it is no longer custom set\n }\n }\n }\n }\n\n /**\n * get the updated state when character count breaches `maxLength`\n */\n getUpdatedState(): FormStates {\n if (this._getContentLength() > this.maxLength) {\n this.hasTextExceeded = true; // set flag for error message to also change accordingly\n this.counterExcessOrRemaining = this.excessText;\n\n return this.state;\n }\n this.hasTextExceeded = false;\n this.counterExcessOrRemaining = this.remainingText;\n\n return this.state; // return any other errors found by parent form field\n }\n\n /** @hidden Native element */\n get _targetElement(): HTMLTextAreaElement {\n return this._elementRef?.nativeElement;\n }\n\n /** @hidden get the length of the textarea content */\n private _getContentLength(): number {\n let contentLength;\n if (this._targetElement) {\n contentLength = this._targetElement.value.length;\n }\n if (this.value) {\n contentLength = this.value.length;\n }\n return contentLength;\n }\n\n /** @hidden get the total height including borders and scroll height */\n private _getTextareaTotalHeight(): number {\n // Get the computed styles for the element\n const computed = window.getComputedStyle(this._targetElement);\n // Calculate the height\n const height =\n parseInt(computed.getPropertyValue('border-top-width'), 10) +\n this._targetElement.scrollHeight +\n parseInt(computed.getPropertyValue('border-bottom-width'), 10);\n\n return height;\n }\n\n /** @hidden set initial max height **/\n private _setMaxHeight(): void {\n if (this.growing && this._targetElement) {\n if (this.growingMaxLines) {\n this._targetElement.style.maxHeight = this.growingMaxLines * this.getTextareaLineHeight() + 'px';\n }\n if (this.height) {\n this._targetElement.style.maxHeight = this.height;\n }\n } else {\n if (this.growingMaxLines) {\n // nothing to do here. rows attribute takes care.\n }\n if (this.height) {\n this._targetElement.style.height = this.height;\n }\n }\n }\n}\n","<textarea\n #inputElementRef\n fd-form-control\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [rows]=\"growing ? 2 : height ? 2 : growingMaxLines\"\n [cols]=\"cols\"\n [wrap]=\"wrapType\"\n [maxlength]=\"!showExceededText ? maxLength : null\"\n [(ngModel)]=\"value\"\n [state]=\"getUpdatedState()\"\n (paste)=\"handlePasteInteraction()\"\n (blur)=\"_onFocusChanged(false)\"\n (focus)=\"_onFocusChanged(true)\"\n></textarea>\n\n<!-- ICU recommends full text in format -->\n<div\n class=\"fd-textarea-counter\"\n *ngIf=\"showExceededText\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [attr.id]=\"id + '-counter'\"\n #counter\n>\n <!-- render spaces instead of the actual value while translation string is loading in order to avoid content jumps -->\n <ng-container *ngIf=\"counterExcessOrRemaining === 'excess'; else charactersRemaining\">\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersOverTheLimitSingular'\n : 'platformTextarea.counterMessageCharactersOverTheLimitPlural'\n ) | fdTranslate: { count: exceededCharCount }:'&nbsp;&nbsp;'\n \"\n ></span>\n </ng-container>\n <ng-template #charactersRemaining>\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersRemainingSingular'\n : 'platformTextarea.counterMessageCharactersRemainingPlural'\n ) | fdTranslate: { count: exceededCharCount }:'&nbsp;&nbsp;'\n \"\n ></span>\n </ng-template>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-editor',\n templateUrl: './dynamic-form-generator-editor.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorEditorComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-textarea [id]=\"id\" [placeholder]=\"placeholder\" [name]=\"name\" [formControlName]=\"name\"></fdp-textarea>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { PlatformConfig } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class SelectConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<SelectConfig>): (platformConfig: PlatformConfig) => SelectConfig {\n const useFactory = (platformConfig: PlatformConfig): SelectConfig =>\n Object.assign(new SelectConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ENTER } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\n\nimport { fromEvent, Observable, Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, SingleDropdownValueControl } from '@fundamental-ngx/cdk/forms';\nimport { ContentDensityService, FocusEscapeDirection, KeyUtil, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ListComponent } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport {\n CollectionBaseInput,\n isJsObject,\n isOptionItem,\n isString,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\nimport { TextAlignment } from '../../combobox';\nimport { SelectConfig } from '../select.config';\nimport { SelectOptionItem } from './../models/select.models';\n\nexport type FdpSelectData<T> = SelectOptionItem[] | Observable<T[]> | T[];\n\n/**\n * @deprecated\n * `FdpSelectionChangeEvent` will be removed in future versions in favour of plain value emission\n */\nexport class FdpSelectionChangeEvent {\n /**\n * Select selection change event\n * @param payload selected value\n */\n constructor(\n public payload: any // Contains selected item\n ) {}\n}\n\n@Directive()\nexport abstract class BaseSelect\n extends CollectionBaseInput\n implements SingleDropdownValueControl, AfterViewInit, OnDestroy\n{\n /** Provides maximum default height for the optionPanel */\n @Input()\n maxHeight = '250px';\n\n /** Whether the select should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Tells the select if we need to group items */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation) */\n @Input()\n groupKey?: string;\n\n /** The field to show data in secondary column */\n @Input()\n secondaryKey?: string;\n\n /** Show the second column (Applicable for two columns layout) */\n @Input()\n showSecondaryText = false;\n\n /** Glyph to add icon in the select component. */\n @Input()\n glyph = 'slim-arrow-down';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Trigger value */\n @Input()\n triggerValue: string;\n\n /**\n * Preset options for the select body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /** Horizontally align text inside the second column (Applicable for two columns layout) */\n @Input()\n secondaryTextAlignment: TextAlignment = 'right';\n\n /**\n * Max width of list container\n * */\n @Input()\n width: string;\n\n /** Whether the select component is readonly. */\n @Input()\n readonly = false;\n\n /** Placeholder for the select. Appears in the\n * triggerbox if no option is selected. */\n @Input()\n placeholder: string;\n\n /** Whether close the popover on outside click. */\n @Input()\n closeOnOutsideClick = true;\n\n /** Custom template used to build control body. */\n @Input()\n controlTemplate: TemplateRef<any> | undefined;\n\n /** Binds to control aria-labelledBy attribute */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets control aria-label attribute value */\n @Input()\n ariaLabel = null;\n\n /** Select Input Mobile Configuration */\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true };\n\n /**\n * String rendered as first value in the popup which let the user to make 'no selection' from\n * available list of values. When this option is active and use make this selection we save a\n * NULL value\n */\n @Input()\n noValueLabel: string;\n\n /** Whether not to wrap text */\n @Input()\n noWrapText = false;\n\n /** Turns on/off Adjustable Width feature */\n @Input()\n autoResize = false;\n\n /** First Column ratio */\n @Input()\n set firstColumnRatio(value: number) {\n this._firstColumnRatio = coerceNumberProperty(value);\n }\n\n get firstColumnRatio(): number {\n return this._firstColumnRatio;\n }\n\n /** Secoond Column ratio */\n @Input()\n set secondColumnRatio(value: number) {\n this._secondColumnRatio = coerceNumberProperty(value);\n }\n\n get secondColumnRatio(): number {\n return this._secondColumnRatio;\n }\n\n /**\n * Min width of list container\n *\n * */\n @Input()\n minWidth?: number;\n\n /**\n * Max width of list container\n * */\n @Input()\n maxWidth?: number;\n\n /**\n * Action to perform when user shifts focus from the dropdown.\n * - `close` will close the dropdown preserving previously selected value.\n * - `closeAndSelect` will close the dropdown and select last focused dropdown item.\n */\n @Input()\n tabOutStrategy: 'close' | 'closeAndSelect' = 'close';\n\n /** Data for suggestion list */\n @Input()\n set list(value: any) {\n if (value) {\n this._optionItems = this._convertToOptionItems(value);\n }\n }\n get list(): any {\n return this._optionItems;\n }\n\n /** @hidden */\n get canClose(): boolean {\n return !(this.mobile && this.mobileConfig.approveButtonText);\n }\n\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<FdpSelectionChangeEvent>();\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /** Custom Option item Template\n * * @hidden\n * */\n _optionItemTemplate: TemplateRef<any>;\n\n /**\n * Custom Secondary item Template\n * @hidden\n * */\n _secondaryItemTemplate: TemplateRef<any>;\n\n /**\n * Custom Selected option item Template\n * @hidden\n * */\n _selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n _contentDensityService: ContentDensityService;\n\n /**\n * List of option items\n * @hidden\n * */\n _optionItems: SelectOptionItem[];\n\n /** @hidden */\n _subscriptions = new Subscription();\n\n /** @hidden */\n private _searchInputElement: ElementRef;\n\n /** Whether the select is opened. */\n private _isOpen = false;\n\n /**\n * Need for opening mobile version\n *\n * @hidden\n */\n private _openChange = new Subject<boolean>();\n\n /** @hidden */\n private _dsSubscription?: Subscription;\n\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n\n /** @hidden */\n private _firstColumnRatio: number;\n\n /** @hidden */\n private _secondColumnRatio: number;\n\n /** @hidden */\n protected constructor(\n readonly cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n protected selectConfig: SelectConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n this._subscriptions.unsubscribe();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n\n /** Is empty search field */\n get isEmptyValue(): boolean {\n return this.value.trim().length === 0;\n }\n\n /** @hidden */\n protected setValue(newValue: any, emitOnChange = true): void {\n if (newValue !== this._value) {\n this.writeValue(newValue);\n if (emitOnChange) {\n this.onChange(this.value);\n this.onTouched();\n this.selectionChange.emit({ payload: this.value });\n }\n this.cd.markForCheck();\n }\n }\n\n /** @hidden\n * Close list * */\n close(event: MouseEvent | null = null, forceClose: boolean = false): void {\n if (event) {\n const target = event.target as HTMLInputElement;\n if (target && target.id === this.id) {\n return;\n }\n }\n\n if (this._isOpen && (forceClose || this.canClose)) {\n this._isOpen = false;\n this._openChange.next(this._isOpen);\n this.cd.markForCheck();\n this.onTouched();\n }\n }\n\n /** @hidden */\n showList(isOpen: boolean): void {\n if (this._isOpen !== isOpen) {\n this._isOpen = isOpen;\n this.onTouched();\n this._openChange.next(isOpen);\n }\n\n this.cd.detectChanges();\n }\n\n /** @hidden */\n handlePressEnter(event: KeyboardEvent, value: SelectOptionItem): void {\n if (!KeyUtil.isKeyCode(event, ENTER)) {\n return;\n }\n\n this.setValue(value);\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this._searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = this._element.getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = window.innerWidth - scrollBarWidth - rect.left;\n this.minWidth = rect.width - 2;\n }\n\n /**\n * Convert original data to OptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): SelectOptionItem[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as SelectOptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to OptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): SelectOptionItem[] {\n if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Secondary OptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): SelectOptionItem[] {\n const selectItems: SelectOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n secondaryText: this.objectGet(value, this.secondaryKey),\n value: this.lookupValue(value)\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to OptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: string[]): SelectOptionItem[] {\n const selectItems: SelectOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({ label: value, value });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to OptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): SelectOptionItem[] {\n const selectItems: SelectOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n value\n });\n }\n\n return selectItems;\n }\n\n /** @hidden\n * Assign custom templates\n * */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case '_optionItemTemplate':\n this._optionItemTemplate = template.templateRef;\n break;\n case '_secondaryItemTemplate':\n this._secondaryItemTemplate = template.templateRef;\n break;\n case '_selectedItemTemplate':\n this._selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { SelectComponent as CoreSelect } from '@fundamental-ngx/core/select';\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { BaseSelect } from '../commons/base-select';\nimport { SelectConfig } from '../select.config';\n\n@Component({\n selector: 'fdp-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SelectComponent, multi: true }]\n})\nexport class SelectComponent extends BaseSelect implements AfterViewInit, AfterViewChecked {\n /**\n * @deprecated\n * Holds the control state of select\n */\n @Input()\n set selectState(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"selectState\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get selectState(): FormStates {\n if (isDevMode()) {\n console.warn('\"selectState\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /**\n * Directly sets value to the component that at the ends up at writeValue as well fires\n * change detections\n */\n @Input()\n set value(newValue: any) {\n this.setValue(newValue);\n }\n get value(): any {\n return this._value;\n }\n\n /** Should select be inlined. */\n @Input()\n inline = true;\n\n /** @hidden */\n @ViewChild(CoreSelect, { static: true })\n select: CoreSelect;\n\n /** @hidden */\n constructor(\n readonly cd: ChangeDetectorRef,\n readonly elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n readonly _dynamicComponentService: DynamicComponentService,\n readonly _selectConfig: SelectConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, _selectConfig, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n // set columns ratio for 2\n if (this.firstColumnRatio && this.secondColumnRatio) {\n this._setColumnsRatio(this.firstColumnRatio, this.secondColumnRatio);\n }\n\n // set width to avoid resize\n if (this.width) {\n const controlItem = this.elementRef.nativeElement.querySelector('.fd-select__text-content') as HTMLElement;\n controlItem.style.width = this.width;\n }\n\n // setting option items\n this.select._options.forEach((option) => {\n const optionItem = option._getHtmlElement();\n\n // set maxWidth default is 40rem\n if (this.maxWidth) {\n optionItem.setAttribute('style', 'max-width: ' + this.maxWidth + 'px');\n }\n // by default text will be overlapped, below it will help to truncate\n if (this.noWrapText) {\n const listTitle = optionItem.querySelector('.fd-list__title');\n if (listTitle) {\n const listTitleInnerHTML = listTitle.innerHTML;\n listTitle.setAttribute('title', listTitleInnerHTML);\n listTitle.setAttribute('aria-label', listTitleInnerHTML);\n listTitle.classList.add('fd-list__title--no-wrap');\n }\n }\n });\n }\n\n /** @hidden */\n ngAfterViewChecked(): void {\n this._cd.detectChanges();\n }\n\n /**\n * Define is selected item selected\n * @hidden\n */\n _isSelectedOptionItem(selectedItem: any): boolean {\n return this.value === this.lookupValue(selectedItem);\n }\n\n /** @hidden */\n _onSelection(value: any): void {\n this.setValue(value);\n }\n\n /** @hidden */\n private _setColumnsRatio(firstColumnRatio: number, secondColumnRatio: number): void {\n const totalProportions = firstColumnRatio + secondColumnRatio;\n const firstColumnProportion = Math.round((firstColumnRatio / totalProportions) * 100);\n const secondColumnProportion = 100 - firstColumnProportion;\n\n // setting option items\n this.select._options.forEach((option) => {\n const optionItem = option._getHtmlElement();\n const titleElement = <HTMLElement>optionItem.querySelector('[fd-list-title]');\n this._setOptionAttribute(titleElement, firstColumnProportion);\n\n const secondaryElement = <HTMLElement>optionItem.querySelector('[fd-list-secondary]');\n this._setOptionAttribute(secondaryElement, secondColumnProportion);\n });\n }\n\n /** @hidden */\n private _setOptionAttribute(element: HTMLElement, proportion: number): void {\n element.setAttribute('style', 'width: ' + proportion + '%; max-width: ' + proportion + '%');\n }\n}\n","<fd-select\n [placeholder]=\"placeholder\"\n [glyph]=\"glyph\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n [controlTemplate]=\"controlTemplate\"\n [appendTo]=\"appendTo\"\n [fillControlMode]=\"fillControlMode\"\n [maxHeight]=\"maxHeight\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.tooltip]=\"value\"\n [attr.aria-readonly]=\"readonly\"\n [attr.role]=\"'listbox'\"\n [value]=\"value\"\n [state]=\"state\"\n [stateMessage]=\"stateMessage\"\n [mobile]=\"mobile\"\n [mobileConfig]=\"mobileConfig\"\n [inline]=\"inline\"\n [(ngModel)]=\"value\"\n [tabOutStrategy]=\"tabOutStrategy\"\n (valueChange)=\"_onSelection($event)\"\n>\n <ng-content></ng-content>\n <li fd-option *ngIf=\"noValueLabel\" [disabled]=\"false\" [value]=\"null\">\n {{ noValueLabel }}\n </li>\n <li\n fd-option\n *ngFor=\"let item of _optionItems; index as index\"\n [disabled]=\"!!item.disabled\"\n [value]=\"item.value\"\n [attr.aria-labelledby]=\"ariaLabel\"\n [attr.aria-disabled]=\"disabled\"\n >\n <fd-icon *ngIf=\"item.icon\" [glyph]=\"item.icon\" class=\"fd-template-icon icon-margin\"></fd-icon>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: item, index: index }\"\n ></ng-container>\n <ng-container\n secondary\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: item }\"\n ></ng-container>\n </li>\n</fd-select>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"_isSelectedOptionItem(optionItem) && !!_selectedItemTemplate\"\n [ngTemplateOutlet]=\"_selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(_isSelectedOptionItem(optionItem) && _selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!_optionItemTemplate\">\n <span [innerHTML]=\"optionItem.label\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"_optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"_optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!_secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [innerHTML]=\"optionItem.secondaryText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"_secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"_secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\nimport { SelectDynamicFormFieldItem } from '../../interfaces/dynamic-form-item';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-select',\n templateUrl: './dynamic-form-generator-select.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorSelectComponent extends BaseDynamicFormGeneratorControl<SelectDynamicFormFieldItem> {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-select\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [inline]=\"formItem.guiOptions?.inline !== false\"\n [name]=\"name\"\n [list]=\"formItem.choices\"\n [formControlName]=\"name\"\n [secondaryKey]=\"formItem.secondaryKey\"\n [showSecondaryText]=\"formItem.showSecondaryText ? formItem.showSecondaryText : false\"\n [secondaryTextAlignment]=\"formItem.secondaryTextAlignment ? formItem.secondaryTextAlignment : 'right'\"\n [controlTemplate]=\"formItem.controlTemplate\"\n ></fdp-select>\n </ng-container>\n</ng-container>\n","import { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\n\nimport { CalendarType, CalendarYearGrid, DateRange, DaysOfWeek, FdCalendarView } from '@fundamental-ngx/core/calendar';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { DatePickerComponent as FdDatePickerComponent } from '@fundamental-ngx/core/date-picker';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport { PlatformFormFieldControl, BaseInput, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/**\n * The Platform date picker component is a wrapper around fd-date-picker using platform form.\n * It is able to provide form field functionalities as well along with fd-date-picker functions.\n *\n * <fdp-form-group #ffg [formGroup]=\"datePickerForm\">\n * <fdp-form-field #ffl1 id=\"birthday\">\n * <fdp-date-picker name=\"birthday\" type=\"single\" [formControl]=\"ffl1.formControl\"></fdp-date-picker>\n * </fdp-form-field>\n * </fdp-form-group>\n *\n */\n\n@Component({\n selector: 'fdp-date-picker',\n templateUrl: './date-picker.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformDatePickerComponent, multi: true }],\n host: {\n '(blur)': 'onTouched()'\n }\n})\nexport class PlatformDatePickerComponent<D> extends BaseInput {\n /**\n * date-picker value set as controller value\n */\n @Input()\n set value(value: DateRange<D> | D) {\n super.setValue(value);\n }\n get value(): DateRange<D> | D {\n return super.getValue();\n }\n\n /** below code taken from core/date-picker */\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n type: CalendarType = 'single';\n\n /** The currently selected CalendarDay model */\n @Input()\n selectedDate: D;\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D> = { start: null, end: null };\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected on Day View.\n */\n @Input()\n rangeHoverEffect = false;\n\n /** Whether to validate the date picker input. */\n @Input()\n useValidation = true;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core date picker)\n * Aria label for the date picker input.\n */\n @Input()\n dateInputLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core date picker)\n * Aria label for the datepicker input.\n */\n @Input()\n dateRangeInputLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core date picker)\n * Aria label for the button to show/hide the calendar.\n */\n @Input()\n displayCalendarToggleLabel: string;\n\n /** Enables Today-Selection-Button if true */\n @Input()\n showTodayButton = false;\n\n /** Label for Today-Selection-Button */\n @Input()\n todayButtonLabel = 'Today';\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = 'day';\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Defines if date picker should be closed after date choose */\n @Input()\n closeOnDateChoose = true;\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates) {\n super.state = state;\n }\n get state(): FormStates {\n if (this.fdDatePickerComponent?._isInvalidDateInput || !this._datePickerValid) {\n return 'error';\n }\n\n return super.state;\n }\n\n /**\n * @deprecated\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set datepickerState(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"datepickerState\" is deprecated. Use \"state\" instead');\n }\n this.state = state;\n }\n get datepickerState(): FormStates {\n if (isDevMode()) {\n console.warn('\"datepickerState\" is deprecated. Use \"state\" instead');\n }\n return this.state;\n }\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__special-day--{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5,\n yearMapping: (num: number) => num.toString()\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3,\n yearMapping: (num: number) => num.toString()\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether the date picker is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Should date picker be inlined. */\n @Input()\n inline = true;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input()\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Fired when a new date is selected. */\n @Output()\n readonly selectedDateChange = new EventEmitter<Nullable<D>>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange = new EventEmitter<FdCalendarView>();\n\n /** @hidden */\n private _datePickerValid = true;\n\n /**\n * @hidden core date-picker as child\n */\n @ViewChild(FdDatePickerComponent)\n fdDatePickerComponent: FdDatePickerComponent<D>;\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param value\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n * @param value\n */\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n disableRangeStartFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n * @param value\n */\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n disableRangeEndFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n constructor(\n protected _changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @Self() public ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n super(_changeDetectorRef, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n /** @hidden */\n writeValue(value: D | DateRange<D> | null): void {\n super.writeValue(value);\n this._changeDetectorRef.detectChanges();\n }\n\n /**\n * validates date on date change.\n * @param value D | DateRange<D>\n */\n handleDateChange(value: D | DateRange<D>): void {\n this.value = value;\n\n if (this.type === 'single' && !this.value && !this.allowNull) {\n this._datePickerValid = false;\n } else if (this.type === 'range' && !this.allowNull) {\n const dateRange = this.value as DateRange<D>;\n this._datePickerValid = !!dateRange.start;\n } else {\n this._datePickerValid = true;\n }\n\n this.stateChanges.next('date picker: handleDateInputChange');\n\n if (this.type === 'single') {\n this.handleSelectedDateChange(this.selectedDate);\n } else if (this.type === 'range') {\n this.handleSelectedRangeDateChange(this.selectedRangeDate);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method that handles changes when popover is opened or closed.\n */\n handleOpenChange = (open: boolean): void => {\n this.isOpenChange.emit(open);\n };\n\n /** @hidden */\n handleSelectedDateChange = (fdDate: Nullable<D>): void => {\n this.selectedDateChange.emit(fdDate);\n };\n\n /** @hidden */\n handleSelectedRangeDateChange = (fdRangeDate: DateRange<D>): void => {\n this.selectedRangeDateChange.emit(fdRangeDate);\n };\n\n /** @hidden */\n handleActiveViewChange = (fdCalendarView: FdCalendarView): void => {\n this.activeViewChange.emit(fdCalendarView);\n };\n}\n\n/** @hidden */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdpDatePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDateModule, or provide a ` +\n `custom implementation.`\n );\n}\n","<fd-date-picker\n [inputId]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [type]=\"type\"\n [state]=\"state\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [selectedDate]=\"selectedDate\"\n [showTodayButton]=\"showTodayButton\"\n [todayButtonLabel]=\"todayButtonLabel\"\n [selectedRangeDate]=\"selectedRangeDate\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [useValidation]=\"useValidation\"\n [dateInputLabel]=\"dateInputLabel\"\n [dateRangeInputLabel]=\"dateRangeInputLabel\"\n [displayCalendarToggleLabel]=\"displayCalendarToggleLabel\"\n [allowNull]=\"allowNull\"\n [activeView]=\"activeView\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [disabled]=\"disabled\"\n [closeOnDateChoose]=\"closeOnDateChoose\"\n [buttonFocusable]=\"buttonFocusable\"\n [specialDaysRules]=\"specialDaysRules\"\n [yearGrid]=\"yearGrid\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [markWeekends]=\"markWeekends\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [isOpen]=\"isOpen\"\n [disableFunction]=\"disableFunction\"\n [disableRangeStartFunction]=\"disableRangeStartFunction\"\n [disableRangeEndFunction]=\"disableRangeEndFunction\"\n [inline]=\"inline\"\n [processInputOnBlur]=\"processInputOnBlur\"\n [preventScrollOnFocus]=\"preventScrollOnFocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"handleDateChange($event)\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n (selectedDateChange)=\"handleSelectedDateChange($event)\"\n (selectedRangeDateChange)=\"handleSelectedRangeDateChange($event)\"\n>\n <ng-content></ng-content>\n</fd-date-picker>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-datepicker',\n templateUrl: './dynamic-form-generator-datepicker.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorDatepickerComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-date-picker\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [formControlName]=\"name\"\n [inline]=\"formItem.guiOptions?.inline !== false\"\n [allowNull]=\"false\"\n ></fdp-date-picker>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Default options for platform Switch\n */\n@Injectable({ providedIn: 'root' })\nexport class SwitchConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<SwitchConfig>): () => SwitchConfig {\n const useFactory = (): SwitchConfig => Object.assign(new SwitchConfig(), obj);\n return useFactory;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n Optional,\n Output,\n Self,\n SkipSelf\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { SwitchConfig } from './switch.config';\n\n/** Switch change event instance */\nexport class SwitchChangeEvent {\n /** The source Switch of the event. */\n source: SwitchComponent;\n /** The new `payload` value of the switch. */\n payload: boolean;\n}\n\n@Component({\n selector: 'fdp-switch',\n templateUrl: './switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }]\n})\nexport class SwitchComponent extends BaseInput {\n /** aria-label attribute of the inner input element. */\n @Input()\n ariaLabel = 'Switch input';\n\n /** aria-labelledby attribute of the inner input element. */\n @Input()\n ariaLabelledby: string | null = null;\n\n /** Whether the switch is semantic */\n @Input()\n semantic = false;\n\n /**\n * Event fired when the state of the switch changes.\n * *$event* can be used to retrieve the new state of the switch.\n */\n @Output()\n readonly switchChange: EventEmitter<SwitchChangeEvent> = new EventEmitter<SwitchChangeEvent>();\n\n /** value for switch control */\n set value(selectValue: any) {\n this.setValue(selectValue);\n }\n get value(): any {\n return this.getValue();\n }\n\n /** @hidden\n * tracking switch current value\n */\n switchCurrentValue = false;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n protected _switchConfig: SwitchConfig\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** update controller on switch state change */\n onValueChange(modelValue: boolean): void {\n this._updateModel(modelValue);\n this.onTouched();\n this.stateChanges.next('switch: onValueChange');\n }\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n this.switchCurrentValue = value;\n super.writeValue(value);\n }\n\n /** @hidden\n * update model\n */\n private _updateModel(modelValue: boolean): void {\n this._emitChangeEvent(modelValue);\n }\n\n /** @hidden\n * Method to emit change event\n */\n private _emitChangeEvent(modelValue: boolean): void {\n const event = new SwitchChangeEvent();\n event.source = this;\n event.payload = modelValue;\n\n // setting value, it will call setValue()\n this.value = modelValue;\n this.switchChange.emit(event);\n }\n}\n","<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledby]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-switch',\n templateUrl: './dynamic-form-generator-switch.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorSwitchComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-switch\n [id]=\"id\"\n [name]=\"name\"\n [semantic]=\"formItem.guiOptions?.additionalData?.semantic\"\n [formControlName]=\"name\"\n ></fdp-switch>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { DataProvider, PlatformConfig, MatchingStrategy } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Multi-Input\n */\n@Injectable({ providedIn: 'root' })\nexport class MultiInputConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<MultiInputConfig>): (platformConfig: PlatformConfig) => MultiInputConfig {\n const useFactory = (platformConfig: PlatformConfig): MultiInputConfig =>\n Object.assign(new MultiInputConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\nimport { combineLatest, fromEvent, isObservable, Observable, Subject, Subscription } from 'rxjs';\nimport { takeUntil, startWith } from 'rxjs/operators';\n\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { ContentDensity, FocusEscapeDirection, KeyUtil, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { FdpListComponent, ListComponent } from '@fundamental-ngx/platform/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport {\n CollectionBaseInput,\n PlatformFormFieldControl,\n isDataSource,\n isFunction,\n isJsObject,\n isOptionItem,\n isString,\n MatchingBy,\n MatchingStrategy,\n MultiInputOption,\n ArrayMultiInputDataSource,\n ObservableMultiInputDataSource,\n MultiInputDataSource,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { TextAlignment } from '../combobox';\nimport { MultiInputConfig } from './multi-input.config';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nexport type FdpMultiInputDataSource<T> = MultiInputDataSource<T> | Observable<T[]> | T[];\n\n@Directive()\nexport abstract class BaseMultiInput extends CollectionBaseInput implements AfterViewInit, OnChanges, OnDestroy {\n /** Provides maximum height for the optionPanel */\n @Input()\n maxHeight = '250px';\n\n /** Datasource for suggestion list */\n @Input()\n set dataSource(value: FdpMultiInputDataSource<any>) {\n if (value) {\n this._initializeDataSource(value);\n }\n }\n get dataSource(): FdpMultiInputDataSource<any> {\n return this._dataSource;\n }\n\n /** Whether the autocomplete should be enabled; Enabled by default */\n @Input()\n autoComplete = true;\n\n /**\n * Todo: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the Multi Input should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Multi Input Mobile Configuration, it's applied only, when mobile is enabled */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /**\n * Whether AddOn Button should be focusable\n * @default false\n */\n @Input()\n buttonFocusable = false;\n\n /** Tells the multi input if we need to group items */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation) */\n @Input()\n groupKey?: string;\n\n /** The field to show data in secondary column */\n @Input()\n description?: string;\n\n /** The field to show avatar image data in secondary column */\n @Input()\n avatarsrc?: string;\n\n /** Show the second column (Applicable for two columns layout) */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (Applicable for two columns layout) */\n @Input()\n secondaryTextAlignment: TextAlignment = 'right';\n\n /** Turns on/off Adjustable Width feature */\n @Input()\n autoResize = false;\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Value of the multi input */\n @Input()\n set value(value: any) {\n const selectedItems = Array.isArray(value) ? value : [value];\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** @hidden Emits event when the menu is opened/closed */\n @Output()\n readonly isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is started. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onDataRequested = new EventEmitter<void>();\n\n /** Event emitted when data loading is finished. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onDataReceived = new EventEmitter<void>();\n\n /** Event emitted when the search term changes. Use *$event* to access the new term. */\n @Output()\n readonly searchTermChange: EventEmitter<string> = new EventEmitter<string>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n readonly addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** @hidden */\n @ViewChild(FdpListComponent)\n listComponent: ListComponent<MultiInputOption>;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /** @hidden\n * Custom Option item Template\n * */\n optionItemTemplate: TemplateRef<any>;\n\n /** @hidden\n * Custom Group Header item Template\n * */\n groupItemTemplate: TemplateRef<any>;\n\n /** @hidden\n * Custom Secondary item Template\n * */\n secondaryItemTemplate: TemplateRef<any>;\n\n /** @hidden\n * Custom Selected option item Template\n * */\n selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n searchInputElement: ElementRef;\n\n /** @hidden */\n _contentDensity: ContentDensity = this.multiInputConfig.contentDensity;\n\n /** @hidden */\n abstract controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n abstract listTemplate: TemplateRef<any>;\n\n /** input text of the input. */\n inputText: string;\n\n /** Whether the Multi Input is opened. */\n isOpen = false;\n\n /** @hidden */\n get canClose(): boolean {\n return !(this.mobile && this.mobileConfig.approveButtonText);\n }\n\n /** @hidden\n * List of matched suggestions\n * */\n _suggestions: MultiInputOption[];\n\n /** @hidden\n * List of matched suggestions\n * */\n _newSuggestions: MultiInputOption[];\n\n /** @hidden\n * Max width of list container\n * */\n maxWidth?: number;\n\n /** @hidden\n * Min width of list container\n * */\n minWidth?: number;\n\n /**\n * Need for opening mobile version\n *\n * @hidden\n */\n openChange = new Subject<boolean>();\n\n /** @hidden emits whenever there're changes to the inputs, that affect the data creation from data source */\n private readonly _updateDataSourceValues$ = new Subject<void>();\n\n /** @hidden */\n protected _dataSource: FdpMultiInputDataSource<any>;\n\n /** @hidden */\n private _matchingStrategy: MatchingStrategy = this.multiInputConfig.matchingStrategy;\n /** @hidden */\n private _dsSubscription?: Subscription;\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n /** Keys, that won't trigger the popover's open state, when dispatched on search input */\n private readonly _nonOpeningKeys: number[] = [\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT,\n BACKSPACE\n ];\n\n /** @hidden */\n private _displayFn = (value: any): string => this.displayValue(value);\n\n /** @hidden */\n private _secondaryFn = (value: any): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n } else if (isJsObject(value) && this.description) {\n const currentItem = this.objectGet(value, this.description);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return value;\n }\n };\n\n /** @hidden */\n protected constructor(\n readonly cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n protected multiInputConfig: MultiInputConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('group' in changes || 'groupKey' in changes) {\n this._updateDataSourceValues$.next();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiInputDataSource<any>).close();\n }\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n * Define is this item selected\n */\n abstract isSelectedOptionItem(selectedItem: MultiInputOption): boolean;\n\n /**\n * @hidden\n * Emit select OptionItem\n * */\n abstract selectOptionItem(item: MultiInputOption): void;\n\n /**\n * @hidden\n * Define value as selected\n * */\n abstract setAsSelected(item: MultiInputOption[]): void;\n\n /**\n * @hidden\n * Mathod for marking list option as selected.\n */\n abstract _markListItemsAsSelected(): void;\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n const selectedItems = Array.isArray(value) ? value : [value];\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.writeValue(value);\n }\n\n /** @hidden */\n _popoverOpenChangeHandle(isOpen: boolean): void {\n if (!isOpen) {\n this.close();\n }\n }\n\n /** Opens the select popover body. */\n open(): void {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this.openChange.next(this.isOpen);\n this._cd.markForCheck();\n setTimeout(() => {\n this._markListItemsAsSelected();\n if (this.inputText) {\n return;\n }\n });\n }\n /** Closes the select popover body. */\n close(): void {\n this.isOpen = false;\n this.inputText = '';\n this.searchTermChanged();\n if (!this.mobile) {\n this.searchInputElement.nativeElement.focus();\n }\n this.isOpenChange.emit(false);\n this.openChange.next(false);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n convertObjectToMultiInputOption(items: any[]): MultiInputOption[] {\n return this._convertObjectsToOptionItems(items);\n }\n\n /** @hidden */\n searchTermChanged(text: string = this.inputText): void {\n if (text) {\n this.open();\n }\n const map = new Map();\n map.set('query', text);\n map.set('limit', 12);\n this.ds?.match(map);\n\n this.searchTermChange.emit(text);\n\n this.cd.detectChanges();\n }\n\n /** @hidden */\n showList(isOpen: boolean): void {\n if (this.isOpen !== isOpen) {\n if (isOpen) {\n this.open();\n } else {\n this.searchTermChanged('');\n this.close();\n }\n }\n }\n\n /** @hidden */\n handleOptionItem(value: MultiInputOption): void {\n if (value) {\n this.selectOptionItem(value);\n }\n }\n\n /** @hidden */\n handlePressEnter(event: KeyboardEvent, value: MultiInputOption): void {\n if (!KeyUtil.isKeyCode(event, ENTER)) {\n return;\n }\n\n this.handleOptionItem(value);\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n onInputKeydownHandler(event: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, TAB) && this.isOpen) {\n this.close();\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this.showList(true);\n }\n\n if (this.isOpen) {\n this.listComponent?._setCurrentActiveItemIndex(0);\n this.listComponent?.listItems.first.focus();\n } else {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this.showList(false);\n } else if (!event.ctrlKey && !KeyUtil.isKeyCode(event, this._nonOpeningKeys)) {\n this.showList(true);\n }\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this.searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n protected get ds(): MultiInputDataSource<any> {\n return this.dataSource as MultiInputDataSource<any>;\n }\n\n /** @hidden\n * Method that picks other value moved from current one by offset, called only when Multi Input is closed */\n private _chooseOtherItem(offset: number): void {\n const index: number = this._suggestions.findIndex((value) => value.label === this.inputText);\n\n if (this._suggestions[index + offset]) {\n this.handleOptionItem(this._suggestions[index + offset]);\n }\n }\n\n /** @hidden */\n private _initializeDataSource(ds: FdpMultiInputDataSource<any>): void {\n this._suggestions = [];\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiInputDataSource<any>).close();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = undefined;\n }\n }\n // Convert whatever comes in as DataSource so we can work with it identically\n this._dataSource = this._openDataStream(ds);\n }\n\n /** @hidden */\n private _openDataStream(ds: FdpMultiInputDataSource<any>): MultiInputDataSource<any> {\n const initDataSource = this._toDataStream(ds);\n\n if (initDataSource === undefined) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n /**\n * This is single point of data entry to the component. We dont want to set data on different\n * places. If any new data comes in either you do a search and you want to pass initial data\n * its here.\n */\n this._dsSubscription = new Subscription();\n const dsSub = combineLatest([initDataSource.open(), this._updateDataSourceValues$.pipe(startWith(null))])\n .pipe(takeUntil(this._destroyed))\n .subscribe(([data]) => {\n this._suggestions = this._convertToOptionItems(data);\n this.stateChanges.next('initDataSource.open().');\n\n this.cd.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n\n this._dsSubscription.add(initDataSource.onDataRequested().subscribe(this.onDataRequested));\n this._dsSubscription.add(initDataSource.onDataReceived().subscribe(this.onDataReceived));\n\n initDataSource.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.description) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n initDataSource.dataProvider.setMatchingBy(matchingBy);\n initDataSource.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n map.set('limit', 12);\n initDataSource.match(map);\n\n return initDataSource;\n }\n\n /** @hidden */\n private _toDataStream(source: FdpMultiInputDataSource<any>): MultiInputDataSource<any> | undefined {\n if (isDataSource(source)) {\n return source as MultiInputDataSource<any>;\n }\n\n if (Array.isArray(source)) {\n // default implementation to work on top of arrays\n return new ArrayMultiInputDataSource<any>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableMultiInputDataSource<any>(source);\n }\n\n return undefined;\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = (this._element.querySelector('fd-input-group') as HTMLElement).getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = window.innerWidth - scrollBarWidth - rect.left;\n this.minWidth = rect.width - 2;\n }\n\n /**\n * Convert original data to OptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): MultiInputOption[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as MultiInputOption[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to OptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): MultiInputOption[] {\n if (this.group && this.groupKey) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.description) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n private _convertObjectsToGroupOptionItems<K>(items: K[]): MultiInputOption[] {\n const group: { [key: string]: K[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = this.groupKey && item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: MultiInputOption = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.description) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n return selectItem;\n });\n }\n\n /**\n * Convert object[] data to Secondary OptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): MultiInputOption[] {\n const selectItems: MultiInputOption[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n avatarSrc: this.avatarsrc ? this.objectGet(value, this.avatarsrc) : null,\n description: this.description ? this.objectGet(value, this.description) : null,\n value\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to OptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: any[]): MultiInputOption[] {\n const selectItems: MultiInputOption[] = [];\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({ label: value, value });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to OptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): MultiInputOption[] {\n const selectItems: MultiInputOption[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n value\n });\n }\n\n return selectItems;\n }\n\n /** @hidden\n * Assign custom templates\n * */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const MULTIINPUT_COMPONENT = new InjectionToken<string[]>('PlatformMultiInputInterface');\n\nexport interface PlatformMultiInputInterface extends MobileMode {\n _selected: any[];\n openChange: Subject<boolean>;\n\n _dialogApprove(): void;\n _dialogDismiss(selectedBackup: any[]): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MULTIINPUT_COMPONENT, PlatformMultiInputInterface } from '../multi-input.interface';\n\n@Component({\n selector: 'fdp-multi-input-mobile',\n templateUrl: './multi-input-mobile.component.html',\n styleUrls: ['./multi-input-mobile.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class PlatformMultiInputMobileComponent\n extends MobileModeBase<PlatformMultiInputInterface>\n implements OnInit, OnDestroy\n{\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n private _selectedBackup: any[];\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n @Inject(MULTIINPUT_COMPONENT) multiInputComponent: PlatformMultiInputInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, multiInputComponent, MobileModeControl.MULTI_INPUT, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiInputOpenChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.onDestroy();\n }\n\n /** @hidden */\n _handleApprove(): void {\n this.dialogRef.close();\n this._component._dialogApprove();\n }\n\n /** @hidden */\n _handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component._dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n private _listenOnMultiInputOpenChange(): void {\n this._component.openChange\n .pipe(distinctUntilChanged(), takeUntil(this._onDestroy$))\n .subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n this._handleApprove();\n return;\n }\n\n this._selectedBackup = [...this._component._selected];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n escKeyCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-dialog-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"_handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"fdp-multi-dialog-input\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { PlatformMultiInputMobileComponent } from './multi-input-mobile.component';\n\n@NgModule({\n declarations: [PlatformMultiInputMobileComponent],\n imports: [CommonModule, BarModule, DialogModule, ButtonModule],\n exports: [PlatformMultiInputMobileComponent]\n})\nexport class PlatformMultiInputMobileModule {}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { OptionItem } from '@fundamental-ngx/platform/shared';\n\nexport interface AutoCompleteEvent {\n term: string;\n forceClose: boolean;\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fdp-auto-complete]'\n})\nexport class AutoCompleteDirective {\n /** Values that will fill missing text in the input. */\n @Input()\n options: OptionItem[];\n\n /**\n * Input text, that is taken from ngModel of formControl,\n * there has to be difference between native input value and model value\n */\n @Input()\n inputText: string;\n\n /** Check is directive use in mobile view to prevent additional blur events */\n @Input()\n mobile: boolean;\n\n /** Event thrown, when the auto ahead text is accepted */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onComplete: EventEmitter<AutoCompleteEvent> = new EventEmitter<AutoCompleteEvent>();\n\n /** @hidden */\n private readonly _completeKeys: number[] = [ENTER];\n\n /** @hidden */\n private readonly _fillKeys: number[] = [LEFT_ARROW, RIGHT_ARROW];\n\n /** @hidden */\n private readonly _stopKeys: number[] = [BACKSPACE, DELETE, ESCAPE];\n\n /** @hidden */\n private _oldValue: string;\n\n /** @hidden */\n private _lastKeyUpEvent: KeyboardEvent;\n\n /** @hidden */\n private get _element(): HTMLInputElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef<HTMLInputElement>) {}\n\n /** @hidden */\n @HostListener('blur')\n handleBlur(): void {\n if (Boolean(this.inputText) && !this.mobile) {\n this._element.value = this.inputText;\n }\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._element.value = this.inputText;\n } else if (KeyUtil.isKeyCode(event, this._completeKeys)) {\n this._sendCompleteEvent(true);\n } else if (KeyUtil.isKeyCode(event, this._fillKeys)) {\n this._sendCompleteEvent(false);\n } else if (!this._isControlKey(event) && this.inputText) {\n /** Prevention from triggering typeahead, when having crtl/cmd + keys */\n if (!this._triggerTypeAhead()) {\n return;\n }\n\n this._oldValue = this.inputText;\n const item = this._searchByStrategy();\n\n if (item) {\n this._typeahead(item.label);\n }\n }\n\n this._lastKeyUpEvent = event;\n }\n\n /** @hidden */\n private _typeahead(displayedValue: string): void {\n const selectionStartIndex = this.inputText.length;\n this._element.value = displayedValue;\n\n this._setSelectionRange(selectionStartIndex, displayedValue.length);\n }\n\n /** @hidden */\n private _setSelectionRange(selectionStart: number, selectionEnd: number): void {\n const direction = this._element.selectionDirection;\n\n this._element.setSelectionRange(selectionStart, selectionEnd, direction ?? undefined);\n }\n\n /** @hidden */\n private _isControlKey(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, CONTROL) || event.ctrlKey;\n }\n\n /** @hidden */\n private _triggerTypeAhead(): boolean {\n return !(\n this._lastKeyUpEvent &&\n KeyUtil.isKeyCode(this._lastKeyUpEvent, CONTROL) &&\n this.inputText === this._oldValue\n );\n }\n\n /** @hidden */\n private _sendCompleteEvent(forceClose: boolean): void {\n this.onComplete.emit({\n term: this._element.value,\n forceClose\n });\n\n if (this.inputText !== this._oldValue) {\n const inputTextLength = this.inputText.length;\n this._element.setSelectionRange(inputTextLength, inputTextLength);\n }\n }\n\n /** @hidden */\n private _searchByStrategy(): OptionItem | undefined {\n const [firstItem] = this.options;\n if (!firstItem) {\n return;\n }\n\n if (firstItem.isGroup) {\n let matchedSelectItem: OptionItem | undefined;\n\n for (const option of this.options) {\n if (!option.children) {\n continue;\n }\n matchedSelectItem = this._findByStrategyStartsWith(option.children, this.inputText);\n\n if (matchedSelectItem) {\n break;\n }\n }\n\n if (matchedSelectItem) {\n return matchedSelectItem;\n }\n }\n\n return this._findByStrategyStartsWith(this.options, this.inputText);\n }\n\n /** @hidden */\n private _findByStrategyStartsWith(options: OptionItem[], inputText: string): OptionItem | undefined {\n return options.find((option) => option.label.toLocaleLowerCase().startsWith(inputText.toLocaleLowerCase()));\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Injector,\n Input,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { DOWN_ARROW, ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { TokenizerComponent } from '@fundamental-ngx/core/token';\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport {\n DATA_PROVIDERS,\n DataProvider,\n PlatformFormFieldControl,\n MultiInputDataSource,\n MultiInputOption,\n isFunction,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { BaseListItem, ListComponent, ModifyItemEvent, SelectionType } from '@fundamental-ngx/platform/list';\n\nimport { InputType } from '../input/input.component';\nimport { AutoCompleteEvent } from '../auto-complete/auto-complete.directive';\nimport { BaseMultiInput } from './base-multi-input';\nimport { PlatformMultiInputMobileComponent } from './multi-input-mobile/multi-input-mobile.component';\nimport { PlatformMultiInputMobileModule } from './multi-input-mobile/multi-input-mobile.module';\nimport { MULTIINPUT_COMPONENT } from './multi-input.interface';\nimport { MultiInputConfig } from './multi-input.config';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport equal from 'fast-deep-equal';\nimport { FD_LANGUAGE, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { firstValueFrom, Observable } from 'rxjs';\n\nlet uniqueHiddenLabel = 0;\n\nexport class MultiInputSelectionChangeEvent {\n /**\n * Multi Input selection change event\n * @param source Multi Input component\n * @param payload Selected value\n */\n constructor(\n public source: PlatformMultiInputComponent,\n public payload: any // Contains selected item\n ) {}\n}\n\n@Component({\n selector: 'fdp-multi-input',\n templateUrl: './multi-input.component.html',\n styleUrls: ['./multi-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => PlatformMultiInputComponent),\n multi: true\n },\n contentDensityObserverProviders()\n ]\n})\nexport class PlatformMultiInputComponent extends BaseMultiInput implements OnInit, AfterViewInit {\n /** @hidden */\n protected tokenCountHiddenLabel = `fdp-multi-input-token-count-id-${uniqueHiddenLabel++}`;\n\n /** token count hidden label */\n @Input()\n tokenHiddenId: string = this.tokenCountHiddenLabel;\n\n /** type Represent the type of input used for the multi Input */\n @Input()\n type: InputType;\n\n /** boolean type represents the focus set for the respective multi input */\n @Input()\n autofocus = false;\n\n /** */\n @Input()\n glyphAriaLabel: string;\n\n /** @hidden */\n @ViewChild(ListComponent)\n listTemplateDD: ListComponent<MultiInputOption>;\n\n /** Selected values from the list items. */\n _selected: any[] = [];\n\n /** Selected items of the multi input. */\n @Input()\n set selected(selectedValue: any[]) {\n this.value = selectedValue;\n }\n get selected(): any[] {\n return this._selected;\n }\n\n /**\n *\n */\n @Input()\n selectionMode: SelectionType = 'none';\n\n /** Whether the list in byline mode. */\n @Input()\n hasByLine = false;\n\n /** @hidden */\n selectedValue?: MultiInputOption;\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** @hidden Whether the input is disabled. */\n protected _disabled = false;\n\n /** Whether the multi input is disabled. */\n @Input()\n set disabled(value) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * `equal` will apply a width to the body equivalent to the width of the control.\n * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /**\n * The trigger events that will open/close the options popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n @Input()\n triggers: string[] = [];\n\n /** Whether the combobox should close, when a click is performed outside its boundaries. True by default */\n @Input()\n closeOnOutsideClick = true;\n\n /** Callback function when add-on button clicked. */\n @Input()\n addOnButtonClickFn: () => void;\n\n /** Event emitted when item is selected. */\n @Output()\n readonly selectionChange = new EventEmitter<MultiInputSelectionChangeEvent>();\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n tokenizer: TokenizerComponent;\n\n /** @hidden */\n @ViewChild('controlTemplate')\n controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChildren(BaseListItem)\n private readonly _listItems: QueryList<BaseListItem>;\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n constructor(\n /** @hidden */\n readonly cd: ChangeDetectorRef,\n /** @hidden */\n readonly elementRef: ElementRef,\n /** @hidden */\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n /** @hidden */\n @Optional() @Self() readonly ngForm: NgForm,\n /** @hidden */\n @Optional() readonly dialogConfig: DialogConfig,\n /** @hidden */\n readonly _dynamicComponentService: DynamicComponentService,\n /** @hidden */\n private readonly _viewContainerRef: ViewContainerRef,\n /** @hidden */\n private readonly _injector: Injector,\n /** @hidden */\n @Optional() @Inject(DATA_PROVIDERS) private _providers: Map<string, DataProvider<any>>,\n /** @hidden */\n readonly _multiInputConfig: MultiInputConfig,\n /** @hidden */\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n /** @hidden */\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n readonly contentDensityObserver: ContentDensityObserver,\n /** @hidden */\n @Inject(FD_LANGUAGE) private readonly _language: Observable<FdLanguage>\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n dialogConfig,\n _multiInputConfig,\n formField,\n formControl\n );\n }\n\n /** Display function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs a string.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details. */\n @Input()\n displayFn = (str: string): string => str;\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n\n const providers = this._providers?.size === 0 ? this._multiInputConfig.providers : this._providers;\n // if we have both prefer dataSource\n if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) {\n this.dataSource = new MultiInputDataSource(providers.get(this.entityClass)!);\n }\n\n this._getAriaLabel();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n\n this.tokenizer._showOverflowPopover = false;\n }\n\n /** @hidden Method to emit change event */\n emitChangeEvent<T>(modelValue: T): void {\n const event = new MultiInputSelectionChangeEvent(this, modelValue);\n\n this.selectionChange.emit(event);\n }\n\n /** @hidden */\n _checkboxSelected(value: any, event: ModifyItemEvent): void {\n const isSelected = event.source._selected;\n const index = this.selected.findIndex((selectvalue) => equal(selectvalue, value));\n\n if (isSelected && index > -1) {\n return;\n }\n\n this.addToArray(value, false);\n }\n\n /** @hidden */\n addToArray(value: any, focusOnInput = true): void {\n const index = this.selected.findIndex((selectvalue) => equal(selectvalue, value));\n if (index === -1) {\n this.selected.push(value);\n } else {\n this.selected.splice(index, 1);\n }\n if (!this.mobile && focusOnInput) {\n this.close();\n }\n this._updateModel(this.selected);\n if (focusOnInput) {\n this.searchInputElement.nativeElement.focus();\n }\n this.emitChangeEvent(value ? this.selected : null);\n this._cd.detectChanges();\n }\n\n /** @hidden */\n addOnButtonClick(event: Event): void {\n if (!this.openDropdownOnAddOnClicked && this.isOpen) {\n this.showList(false);\n } else if (this.openDropdownOnAddOnClicked) {\n this.showList(!this.isOpen);\n this.searchInputElement?.nativeElement.focus();\n }\n\n this.addOnButtonClicked.emit(event);\n\n if (isFunction(this.addOnButtonClickFn)) {\n this.addOnButtonClickFn();\n return;\n }\n }\n\n /** @hidden */\n onInputGroupClicked(): void {\n if (this.mobile && !this.isOpen) {\n this.open();\n }\n }\n\n /** @hidden */\n moreClicked(): void {\n this.open();\n this._suggestions = this.selected;\n this._cd.markForCheck();\n }\n\n /** @hidden */\n deleteToken(selectedValue: MultiInputOption): void {\n if (this.tokenizer.tokenList.length > 0) {\n this.tokenizer.tokenList.forEach((token) => {\n if (token.tokenWrapperElement.nativeElement.textContent === selectedValue.label) {\n this.selected.splice(this.selected.indexOf(selectedValue), 1);\n }\n });\n }\n this._updateModel(this.selected);\n this.searchInputElement.nativeElement.focus();\n this.close();\n this._cd.markForCheck();\n }\n\n /** @hidden */\n removeToken(token: any): void {\n this.selected.splice(this.selected.indexOf(token), 1);\n this.emitChangeEvent(token ? this.selected : null);\n this.searchInputElement.nativeElement.focus();\n if (this.selected.length === 0) {\n this._selected = [];\n }\n this._updateModel(this.selected);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n removeSelectedTokens(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n if (this.isOpen) {\n this.listComponent._setCurrentActiveItemIndex(0);\n this.listTemplateDD.listItems.first.focus();\n } else {\n this.showList(!this.isOpen);\n this.searchInputElement.nativeElement.focus();\n }\n }\n if (KeyUtil.isKeyCode(event, [ESCAPE])) {\n this.showList(false);\n }\n this._cd.markForCheck();\n }\n\n /** @hidden Define is selected item selected */\n isSelectedOptionItem(selectedItem: any): boolean {\n return (\n (this.lookupKey && this.lookupValue(this.selected) === this.lookupValue(selectedItem)) ||\n this.displayValue(this.selected) === this.displayValue(selectedItem)\n );\n }\n\n /** @hidden Method to set selected item */\n selectOptionItem(item: MultiInputOption): void {\n if (this.mobile) {\n this.selectedValue = item;\n this.inputText = item.label;\n this.cd.detectChanges();\n\n return;\n }\n\n this.inputText = item.label;\n this._checkAndUpdate(item);\n this.showList(false);\n }\n\n /** @hidden Method to set as selected */\n setAsSelected(item: MultiInputOption[]): void {\n this._selected = item;\n this.inputText = '';\n this._markListItemsAsSelected();\n }\n\n /**\n * @hidden\n * Mathod for marking items in dropdown as selected.\n */\n _markListItemsAsSelected(): void {\n this._listItems?.forEach((listItem) => {\n const isSelected = !!this._selected.find((value) => equal(value.value, listItem.value));\n listItem.setSelected(isSelected);\n });\n }\n\n /** @hidden */\n _onAutoComplete(event: AutoCompleteEvent): void {\n if (!event.forceClose || !this._suggestions) {\n return;\n }\n\n const [item] = this.isGroup ? this._suggestions[0]?.children || [] : this._suggestions;\n if (item && item.label === event.term) {\n this.addToArray(item);\n }\n }\n\n /** @hidden */\n _onKeydownEnter(event: Event): void {\n if (this.inputText) {\n event.preventDefault();\n }\n }\n\n /** @hidden Handle dialog dismissing, closes popover and sets backup data. */\n _dialogDismiss(selected: any[]): void {\n this._selected = selected;\n this.showList(false);\n }\n\n /** @hidden Handle dialog approval, closes popover and propagates data changes. */\n _dialogApprove(): void {\n this.onChange(this.selected);\n this._updateModel(this.selected);\n this.showList(false);\n }\n\n /** @hidden if not selected update model */\n private _checkAndUpdate(modelValue: MultiInputOption): void {\n if (this.isSelectedOptionItem(modelValue)) {\n return;\n }\n\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n /** @hidden */\n private _getSelectedOptionItem(text: string): MultiInputOption | undefined {\n if (!this.isGroup) {\n return this._suggestions.find((item) => item.label === text);\n }\n\n return this._suggestions\n .reduce((result: MultiInputOption[], item: MultiInputOption) => {\n item.children && result.push(...item.children);\n\n return result;\n }, [])\n .find((item) => item.label === text);\n }\n\n /** @hidden Update model */\n private _updateModel(value: any): void {\n // setting value, it will call setValue()\n this.value = value;\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTIINPUT_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n await this._dynamicComponentService.createDynamicModule(\n { listTemplate: this.listTemplate, controlTemplate: this.controlTemplate },\n PlatformMultiInputMobileModule,\n PlatformMultiInputMobileComponent,\n this._viewContainerRef,\n injector\n );\n }\n\n /** @hidden */\n private async _getAriaLabel(): Promise<void> {\n const lang = await firstValueFrom(this._language);\n this.ariaLabel = this._translationResolver.resolve(lang, 'coreMultiInput.multiInputAriaLabel');\n }\n}\n","<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"isOpen ? _suggestions : []\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [interceptTabKey]=\"false\"\n (keydown.tab)=\"close()\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatarSrc]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-multi-input',\n templateUrl: './dynamic-form-generator-multi-input.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorMultiInputComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [formControlName]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [name]=\"name\"\n [dataSource]=\"choices\"\n displayKey=\"label\"\n lookupKey=\"label\"\n [autofocus]=\"true\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\nimport { ObjectStatusDynamicFormFieldItem } from '../../interfaces/dynamic-form-item';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-object-status',\n templateUrl: './dynamic-form-generator-object-status.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorObjectStatusComponent extends BaseDynamicFormGeneratorControl<ObjectStatusDynamicFormFieldItem> {}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-object-status\n [label]=\"formItem.default\"\n [status]=\"formItem.guiOptions?.status\"\n [glyph]=\"formItem.guiOptions?.icon\"\n ></fdp-object-status>\n </ng-container>\n</ng-container>\n","import { DynamicFormGeneratorInputComponent } from '../controls/dynamic-form-generator-input/dynamic-form-generator-input.component';\nimport { DynamicFormGeneratorCheckboxComponent } from '../controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component';\nimport { DynamicFormGeneratorRadioComponent } from '../controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component';\nimport { DynamicFormGeneratorEditorComponent } from '../controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component';\nimport { DynamicFormGeneratorSelectComponent } from '../controls/dynamic-form-generator-select/dynamic-form-generator-select.component';\nimport { FormComponentDefinition } from '../interfaces/form-component-definition';\nimport { DynamicFormGeneratorDatepickerComponent } from '../controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component';\nimport { DynamicFormGeneratorSwitchComponent } from '../controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component';\nimport { DynamicFormGeneratorMultiInputComponent } from '../controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component';\nimport { DynamicFormGeneratorObjectStatusComponent } from '../controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component';\n\nexport const DEFAULT_COMPONENTS_LIST: FormComponentDefinition[] = [\n {\n types: ['input', 'email', 'number', 'password'],\n component: DynamicFormGeneratorInputComponent\n },\n {\n types: ['checkbox'],\n component: DynamicFormGeneratorCheckboxComponent\n },\n {\n types: ['radio', 'confirm'],\n component: DynamicFormGeneratorRadioComponent\n },\n {\n types: ['editor', 'textarea'],\n component: DynamicFormGeneratorEditorComponent\n },\n {\n types: ['select', 'list'],\n component: DynamicFormGeneratorSelectComponent\n },\n {\n types: ['datepicker'],\n component: DynamicFormGeneratorDatepickerComponent\n },\n {\n types: ['switch'],\n component: DynamicFormGeneratorSwitchComponent\n },\n {\n types: ['multi-input'],\n component: DynamicFormGeneratorMultiInputComponent\n },\n {\n types: ['object-status'],\n component: DynamicFormGeneratorObjectStatusComponent\n }\n];\n","import { Injectable, Type } from '@angular/core';\nimport { FormComponentDefinition } from './interfaces/form-component-definition';\nimport { DEFAULT_COMPONENTS_LIST } from './config/default-components-list';\nimport { BaseDynamicFormGeneratorControl } from './base-dynamic-form-generator-control';\n\n/**\n * Since form generator service most probably will be provided by parent component,\n * so that forms map does not interfere with other form generators,\n * Components Accessor is a separate service with a global scope, which can be also provided per component.\n */\n@Injectable()\nexport class FormGeneratorComponentsAccessorService {\n /**\n * @hidden\n */\n private _formComponentDefinitions: FormComponentDefinition[] = DEFAULT_COMPONENTS_LIST;\n\n /**\n * @description Adds custom component to the list of available components for the form generator items.\n * @param component Angular component.\n * @param types types of the form item.\n */\n addComponent(component: Type<BaseDynamicFormGeneratorControl>, types: string[]): boolean {\n const bestMatchComponentIndex = this._formComponentDefinitions.findIndex((c) =>\n c.types?.every((t) => types.includes(t))\n );\n\n if (bestMatchComponentIndex > -1) {\n this._formComponentDefinitions[bestMatchComponentIndex].component = component;\n return true;\n }\n\n // Try to find component in types key. There might be some unique cases when new component might replace multiple.\n const existingComponents = this._formComponentDefinitions.filter((c) =>\n c.types?.filter((t) => types.includes(t))\n );\n\n existingComponents.forEach((existingComponent, index) => {\n existingComponent.types = existingComponent.types?.filter((t) => !types.includes(t));\n this._formComponentDefinitions[index] = existingComponent;\n });\n\n this._formComponentDefinitions.push({\n types,\n component\n });\n\n return true;\n }\n\n /**\n * @description Returns best-matched component based on provided `type` argument\n * @param type form item type\n * @returns @see FormComponentDefinition Component definition for the form item\n */\n getComponentDefinitionByType(type: string): FormComponentDefinition | undefined {\n return this._formComponentDefinitions.find((c) => c.types?.includes(type));\n }\n}\n","export const DEFAULT_VALIDATION_ERRORS = {\n required: 'This field is required',\n validator: 'This field is invalid'\n};\n","import { Inject, Injectable, OnDestroy, Optional, SkipSelf, Type } from '@angular/core';\nimport { AsyncValidatorFn, FormBuilder, Validators } from '@angular/forms';\nimport { isFunction, selectStrategy } from '@fundamental-ngx/cdk/utils';\nimport { cloneDeep, merge } from 'lodash-es';\n\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport { DynamicFormControl, DynamicFormControlGroup, DynamicFormGroupControl } from './dynamic-form-control';\nimport { FormGeneratorComponentsAccessorService } from './form-generator-components-accessor.service';\nimport {\n DynamicFormFieldItem,\n DynamicFormItem,\n DynamicFormItemChoiceTypes,\n DynamicFormValue,\n PreparedDynamicFormFieldItem\n} from './interfaces/dynamic-form-item';\nimport { FormComponentDefinition } from './interfaces/form-component-definition';\nimport { DEFAULT_VALIDATION_ERRORS } from './config/default-validation-errors';\nimport { BaseDynamicFormGeneratorControl } from './base-dynamic-form-generator-control';\nimport { DynamicFormGroup } from './interfaces/dynamic-form-group';\nimport { FormGeneratorConfig } from './interfaces/form-generator-module-config';\nimport { defaultFormGeneratorConfig, FORM_GENERATOR_CONFIG, FORM_GENERATOR_ITEM_CONFIG } from './providers/providers';\n\n/**\n * @description Form generator service\n */\n@Injectable()\nexport class FormGeneratorService implements OnDestroy {\n /**\n * Map of generated forms to access later.\n */\n readonly forms: Map<string, DynamicFormGroup> = new Map<string, DynamicFormGroup>();\n\n /**\n * Predefined validation error messages.\n */\n validationErrorHints = DEFAULT_VALIDATION_ERRORS;\n\n /** @hidden */\n private readonly _config: FormGeneratorConfig = defaultFormGeneratorConfig;\n\n /**\n * @hidden\n * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _fb: FormBuilder,\n private _componentsAccessor: FormGeneratorComponentsAccessorService,\n @Optional()\n @SkipSelf()\n @Inject(FORM_GENERATOR_ITEM_CONFIG)\n private _defaultItemConfig: Partial<DynamicFormFieldItem>,\n @Optional()\n @SkipSelf()\n @Inject(FORM_GENERATOR_CONFIG)\n private _providedConfig: Partial<FormGeneratorConfig>\n ) {\n this._config = merge(cloneDeep(this._config), cloneDeep(this._providedConfig));\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * @description Generates `FormGroup` class with the list of `DynamicFormControl` control classes\n * defined in `formItems` argument.\n * @param formName Form name.\n * @param formItems the list of form items which used for form control generation.\n * @returns `FormGroup` class with the list of `DynamicFormControl` control classes.\n */\n async generateForm(formName: string, formItems: DynamicFormItem[]): Promise<DynamicFormGroup> {\n const form = this._fb.group({}) as DynamicFormGroup;\n\n const defaultFormGroup = new DynamicFormControlGroup(\n {\n name: this._config.ungroupedControlsName\n },\n {}\n );\n\n formItems = this._transformFormItems(formItems);\n\n formItems.forEach((formItem) => {\n if (!this.isFormFieldItem(formItem)) {\n if (!formItem.items?.length) {\n return;\n }\n\n const group = new DynamicFormControlGroup(formItem, {});\n\n formItem.items.forEach((groupFormItem) => {\n const groupFormControl = this._generateDynamicFormItem(\n groupFormItem as PreparedDynamicFormFieldItem,\n form\n );\n\n if (!groupFormControl) {\n return;\n }\n\n group.addControl(groupFormItem.name, groupFormControl);\n\n groupFormControl.updateValueAndValidity({ emitEvent: false });\n });\n\n form.addControl(formItem.name, group);\n return;\n }\n\n const formControl = this._generateDynamicFormItem(formItem as PreparedDynamicFormFieldItem, form);\n\n if (!formControl) {\n return;\n }\n\n defaultFormGroup.addControl(formItem.name, formControl);\n\n defaultFormGroup.formItem.items = [...[formItem]];\n\n formControl.updateValueAndValidity({ emitEvent: false });\n });\n\n const formControlNames = Object.keys(defaultFormGroup.controls);\n\n form.addControl(this._config.ungroupedControlsName, defaultFormGroup);\n\n // After we created initial form, we need to get dynamic labels, choices and value\n for (const key of formControlNames) {\n const formItem = formItems.find((fi) => fi.name === key);\n\n if (!this.isFormFieldItem(formItem)) {\n continue;\n }\n\n const [[message, placeholder, defaultValue], choices] = await Promise.all([\n this._getFormItemProperties<[string, string, any]>(formItem, defaultFormGroup, [\n 'message',\n 'placeholder',\n 'default'\n ]),\n this._getFormItemChoices(formItem, defaultFormGroup)\n ]);\n\n formItem.message = message;\n formItem.placeholder = placeholder;\n formItem.default = defaultValue;\n formItem.choices = choices;\n\n // Update form value since it might be changed\n defaultFormGroup.controls[formItem.name].setValue(formItem.default);\n\n defaultFormGroup.controls[key].formItem = formItem as PreparedDynamicFormFieldItem;\n }\n\n this.forms.set(formName, form);\n\n return form;\n }\n\n /**\n * @description Returns form value with applied filters and transformers.\n * @param form Form generator form\n * @param renderValue Whether or not form value will be used for rendering purposes.\n * @returns form value object.\n */\n async getFormValue(\n form: DynamicFormGroup | DynamicFormControlGroup,\n renderValue = false\n ): Promise<DynamicFormValue> {\n await this._triggerFieldsOnchange(form);\n\n const formValue = cloneDeep(form.value);\n\n for (const [i, control] of Object.entries(form.controls)) {\n const formItem = control.formItem;\n\n if (!this.isFormFieldItem(formItem)) {\n formValue[i] = await this.getFormValue(control as DynamicFormControlGroup, renderValue);\n continue;\n }\n\n if (formItem.shouldShow === false) {\n delete formValue[i];\n continue;\n }\n\n if (formItem.transformer) {\n const obj = formItem.transformer(formValue[i], formValue, formItem);\n formValue[i] = await this._getFunctionValue(obj);\n }\n\n if (renderValue && formItem.valueRenderer) {\n const obj = formItem.valueRenderer(formValue[i], formValue, formItem);\n formValue[i] = await this._getFunctionValue(obj);\n }\n\n if (renderValue && formItem['controlType'] === 'password') {\n formValue[i] = this._formatPasswordValue(formValue[i]);\n }\n }\n\n return this._getFormValueWithoutUngrouped(formValue);\n }\n\n /**\n * @description Adds custom component to the list of available components for the form generator items.\n * @param component Angular component.\n * @param types types of the form item.\n */\n addComponent(component: Type<BaseDynamicFormGeneratorControl>, types: string[]): boolean {\n return this._componentsAccessor.addComponent(component, types);\n }\n\n /**\n * @description Returns best-matched component based on provided `type` argument\n * @param type form item type\n * @returns @see FormComponentDefinition Component definition for the form item\n */\n getComponentDefinitionByType(type: string): FormComponentDefinition | undefined {\n return this._componentsAccessor.getComponentDefinitionByType(type);\n }\n\n /**\n * @returns Object of available errors, where key is an error type,\n * and it's value is a display text.\n */\n getValidationErrorHints(key: string): string {\n return this.validationErrorHints[key];\n }\n\n /**\n * @description Adds custom error hint defined by user.\n * @param type error type from validator.\n * @param value display text.\n */\n addValidationErrorHint(type: string, value: string): void {\n this.validationErrorHints[type] = value;\n }\n\n /**\n * @description Checks if some items of the form should be hidden,\n * or visible based on `when` method result.\n * @param form\n * @returns `Set` where key is item name, and boolean value if field needs to be shown.\n */\n async checkVisibleFormItems(form: DynamicFormGroup): Promise<{ [key: string]: boolean }> {\n const formValue = this._getFormValueWithoutUngrouped(cloneDeep(form.value));\n return await this._checkFormControlsVisibility(form, formValue);\n }\n\n /**\n * Is current form item is a field item.\n * @param item form item.\n * @returns is current form item is a field.\n */\n isFormFieldItem(item: any): item is DynamicFormFieldItem {\n return !!(item as DynamicFormFieldItem).type;\n }\n\n /**\n * Method for searching a form control inside form group. Can also search inside ungrouped form group.\n * @param form Form group.\n * @param controlNames Name of the form control.\n * @returns Found form control.\n */\n getFormControl(form: DynamicFormGroup, ...controlNames: string[]): DynamicFormGroupControl {\n controlNames = controlNames.reduce((names: string[], name) => {\n names = [...names, ...name.split(this._config.controlNameSeparator)];\n\n return names;\n }, []);\n\n let control = form?.get(controlNames);\n\n // If no control found, try to find it in ungrouped group\n if (!control) {\n control = form?.get([this._config.ungroupedControlsName, ...controlNames]);\n }\n\n return control as DynamicFormGroupControl;\n }\n\n /** Resets the form to it's initial state. */\n resetForm(form: DynamicFormGroup): void {\n for (const control of Object.values(form.controls)) {\n if (control instanceof DynamicFormControlGroup) {\n this.resetForm(control);\n return;\n }\n // Get default value\n control.setValue(control.formItem.default);\n }\n }\n\n /** @hidden */\n _getFormValueWithoutUngrouped(value: any): any {\n if (value[this._config.ungroupedControlsName]) {\n const ungroupedGroupValue: Record<string, any> = value[this._config.ungroupedControlsName];\n for (const [fieldName, fieldValue] of Object.entries(ungroupedGroupValue)) {\n value[fieldName] = fieldValue;\n }\n }\n delete value[this._config.ungroupedControlsName];\n\n return value;\n }\n\n /** @hidden */\n private _assignFormItemValidators(\n formItem: PreparedDynamicFormFieldItem,\n form: DynamicFormGroup\n ): PreparedDynamicFormFieldItem {\n let validator: AsyncValidatorFn | null = null;\n\n if (isFunction(formItem.validate)) {\n validator = async (control) => {\n const obj = formItem.validate!(control.value, this._getFormValueWithoutUngrouped(form));\n\n const result = await this._getFunctionValue(obj);\n\n const returnObj = {};\n\n returnObj[`${(<DynamicFormControl>control).formItem.name}Validator`] =\n typeof result === 'boolean' ? true : result;\n\n return result === null ? result : returnObj;\n };\n\n formItem.asyncValidators = formItem.asyncValidators || [];\n formItem.asyncValidators =\n typeof formItem.asyncValidators === 'function' ? [formItem.asyncValidators] : formItem.asyncValidators;\n\n formItem.asyncValidators.push(validator);\n }\n\n formItem.validators = formItem.validators || [Validators.nullValidator];\n\n formItem.required = formItem.required || formItem.validators.includes(Validators.required);\n\n return formItem;\n }\n\n /** @hidden */\n private _generateDynamicFormItem(\n formItem: PreparedDynamicFormFieldItem,\n form: DynamicFormGroup\n ): DynamicFormControl | undefined {\n const formItemComponentType = this.getComponentDefinitionByType(formItem.type);\n\n if (!formItemComponentType) {\n console.warn(`Form item '${formItem.name}' with type '${formItem.type}' has no defined component.\n Please use 'addComponent' method in ${FormGeneratorService.name} to define appropriate relations.`);\n\n return;\n }\n\n formItem = this._assignFormItemValidators(formItem, form);\n\n const formControl = new DynamicFormControl(formItem.default, {\n validators: formItem.validators,\n asyncValidators: formItem.asyncValidators,\n dynamicFormItem: formItem,\n updateOn: 'change'\n });\n\n if (isFunction(formItem.onchange)) {\n formControl.valueChanges.pipe(debounceTime(50), takeUntil(this._onDestroy$)).subscribe(async (value) => {\n const obj = formItem.onchange!(value, this.forms, formControl);\n\n await this._getFunctionValue(obj);\n });\n }\n\n formControl.updateValueAndValidity({ emitEvent: false });\n\n return formControl;\n }\n\n /** @hidden */\n private async _checkFormControlsVisibility(\n form: DynamicFormGroup | DynamicFormControlGroup,\n formValue: any\n ): Promise<{ [key: string]: boolean }> {\n let shouldShowFields: { [key: string]: boolean } = {};\n form = form instanceof DynamicFormControlGroup ? form : form;\n\n for (const [key, control] of Object.entries(form.controls)) {\n const formItem = control.formItem;\n\n if (!this.isFormFieldItem(formItem)) {\n const groupVisibleItems = await this._checkFormControlsVisibility(\n control as DynamicFormControlGroup,\n formValue\n );\n\n shouldShowFields = Object.assign(shouldShowFields, groupVisibleItems);\n continue;\n }\n\n if (!formItem.when) {\n shouldShowFields[key] = true;\n continue;\n }\n\n const obj = formItem.when(formValue, this.forms, control);\n shouldShowFields[key] = await this._getFunctionValue(obj);\n }\n\n return shouldShowFields;\n }\n\n /**\n * @hidden\n * @param formItem\n * @param form\n * @param key\n * @returns\n */\n private async _getFormItemPropertyValue<T = string>(\n formItem: DynamicFormFieldItem,\n form: DynamicFormGroup,\n key: keyof DynamicFormFieldItem\n ): Promise<T> {\n let value = formItem[key];\n\n if (typeof value === 'function') {\n const obj = value(this._getFormValueWithoutUngrouped(form));\n\n value = await this._getFunctionValue(obj);\n }\n\n return (await this._getFunctionValue(value)) as T;\n }\n\n /** @hidden */\n private async _getFormItemProperties<TTypes extends any[] = any[]>(\n formItem: DynamicFormFieldItem,\n form: DynamicFormGroup,\n keys: string[]\n ): Promise<TTypes> {\n const promises: Promise<any>[] = [];\n keys.forEach((key) => {\n promises.push(this._getFormItemPropertyValue(formItem, form, key));\n });\n return (await Promise.all(promises)) as TTypes;\n }\n\n /**\n * @hidden\n * @param formItem\n * @param form\n * @returns\n */\n private async _getFormItemChoices(formItem: DynamicFormFieldItem, form: DynamicFormGroup): Promise<SelectItem[]> {\n const defaultChoices = await this._getFormItemPropertyValue<DynamicFormItemChoiceTypes[]>(\n formItem,\n form,\n 'choices'\n );\n\n if (!defaultChoices) {\n return [];\n }\n\n return defaultChoices.map((c: string | number | SelectItem) =>\n typeof c === 'object' ? c : ({ label: c, value: c } as SelectItem)\n ) as SelectItem[];\n }\n\n /**\n * @hidden\n * @description Returns value from Promise-like, Observable-like, simple function or just some object.\n * @param obj\n * @returns\n */\n private async _getFunctionValue(obj: any): Promise<any> {\n const strategy = selectStrategy(obj);\n\n let result: any;\n\n await strategy.createSubscription(obj, (value: any) => {\n result = value;\n });\n\n if (isFunction(result)) {\n await this._getFunctionValue(result);\n }\n\n return result;\n }\n\n /** @hidden */\n private _formatPasswordValue(password: string): string {\n return '*'.repeat(password?.length);\n }\n\n /** @hidden */\n private _getMergedFormFieldItemConfig(formItem: DynamicFormFieldItem): DynamicFormFieldItem {\n return merge(cloneDeep(this._defaultItemConfig), formItem);\n }\n\n /** @hidden */\n private _transformFormItems(formItems: DynamicFormItem[]): DynamicFormItem[] {\n formItems.forEach((item, index) => {\n if (!this.isFormFieldItem(item)) {\n return;\n }\n\n formItems[index] = this._getMergedFormFieldItemConfig(item);\n });\n\n return formItems;\n }\n\n /** @hidden */\n private async _triggerFieldsOnchange(form: DynamicFormGroup | DynamicFormControlGroup): Promise<void> {\n for (const control of Object.values(form.controls)) {\n const formItem = control.formItem;\n\n if (!this.isFormFieldItem(formItem)) {\n await this._triggerFieldsOnchange(control as DynamicFormControlGroup);\n continue;\n }\n\n if (formItem.onchange) {\n const obj = formItem.onchange(control.value as any, this.forms, control as DynamicFormControl);\n await this._getFunctionValue(obj);\n }\n }\n }\n}\n","import { Directive, Inject, Input, Optional, TemplateRef } from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { FormError, FormErrorHeading, FormFieldErrorContext } from '@fundamental-ngx/platform/shared';\nimport { FDP_FORM_ERROR_DIRECTIVE } from './tokens';\n\n@Directive({\n selector: '[fdpFormFieldErrorHeading]'\n})\nexport class FormFieldErrorHeadingDirective<T = any> implements FormErrorHeading {\n /** Used to connect data with model for typings support. */\n @Input()\n fdpFormFieldErrorHeadingAs: T;\n\n /** Error type. */\n @Input()\n fdpFormFieldErrorHeadingType: FormStates | undefined;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: FormFieldErrorHeadingDirective,\n ctx: FormFieldErrorContext<any>\n ): ctx is FormFieldErrorContext<any> {\n return true;\n }\n\n /** @hidden */\n constructor(\n public templateRef: TemplateRef<FormFieldErrorContext<T>>,\n @Optional() @Inject(FDP_FORM_ERROR_DIRECTIVE) private _formFieldErrorDirective: FormError\n ) {\n this._formFieldErrorDirective?.registerHeading(this);\n }\n}\n","import { Directive, Inject, Input, Optional, TemplateRef } from '@angular/core';\nimport { FormError, FormErrorDescription, FormFieldErrorContext } from '@fundamental-ngx/platform/shared';\nimport { FDP_FORM_ERROR_DIRECTIVE } from './tokens';\n\n@Directive({\n selector: '[fdpFormFieldErrorDescription]'\n})\nexport class FormFieldErrorDescriptionDirective<T = any> implements FormErrorDescription {\n /** Used to connect data with model for typings support. */\n @Input()\n fdpFormFieldErrorDescriptionAs: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: FormFieldErrorDescriptionDirective,\n ctx: FormFieldErrorContext<any>\n ): ctx is FormFieldErrorContext<any> {\n return true;\n }\n\n /** @hidden */\n constructor(\n public templateRef: TemplateRef<FormFieldErrorContext<T>>,\n @Optional() @Inject(FDP_FORM_ERROR_DIRECTIVE) private _formFieldErrorDirective: FormError\n ) {\n this._formFieldErrorDirective?.registerDescription(this);\n }\n}\n","import { Directive, Inject, Injector, Input, OnInit, Optional, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { PreparedDynamicFormFieldItem } from './interfaces/dynamic-form-item';\nimport { BaseDynamicFormGeneratorControl } from './base-dynamic-form-generator-control';\nimport { FormGeneratorService } from './form-generator.service';\nimport {\n CONTENT_DENSITY_DIRECTIVE,\n ContentDensityGlobalKeyword,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { Observable, of } from 'rxjs';\n\n/**\n * Dynamic form control directive represents a renderer of the dynamic components\n * based on the information provided in `formItem` input\n */\n@Directive({\n selector: '[fdpDynamicFormControl]'\n})\nexport class DynamicFormControlDirective implements OnInit {\n /**\n * @description @see DynamicFormItem\n */\n @Input() formItem: PreparedDynamicFormFieldItem;\n\n /**\n * @description Represents form control id.\n */\n @Input()\n id: string;\n\n /**\n * @description Represents form control name.\n */\n @Input() name: string;\n\n /**\n * @description Reference to the @see FormGroup class.\n */\n @Input() form: FormGroup;\n\n /** Form group name path */\n @Input() formGroupNamePath: string;\n\n /**\n * @description Reference to the @see FormFieldComponent\n */\n @Input() formField: PlatformFormField;\n\n /**\n * Control field instance.\n */\n formFieldControl: PlatformFormFieldControl;\n\n /** @hidden */\n constructor(\n private readonly _formGeneratorService: FormGeneratorService,\n private readonly _vcRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() @Inject(CONTENT_DENSITY_DIRECTIVE) private contentDensityDirective: Observable<ContentDensityMode>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n const foundComponent = this._formGeneratorService.getComponentDefinitionByType(this.formItem.type);\n\n if (!foundComponent) {\n return;\n }\n\n this._vcRef.clear();\n\n const componentRef = this._vcRef.createComponent<BaseDynamicFormGeneratorControl>(foundComponent.component, {\n injector: Injector.create({\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useFactory: () => {\n if (this.formItem?.guiOptions?.contentDensity) {\n return of(this.formItem.guiOptions.contentDensity);\n }\n if (this.contentDensityDirective) {\n return this.contentDensityDirective;\n }\n return of(ContentDensityGlobalKeyword);\n }\n }\n ],\n parent: this._injector\n })\n });\n\n componentRef.instance.formItem = this.formItem;\n componentRef.instance.id = this.id; // This is also done from fdp-form-field\n componentRef.instance.name = this.name;\n componentRef.instance.form = this.form;\n componentRef.instance.formField = this.formField;\n componentRef.instance.formGroupName = this.formGroupNamePath;\n\n this.formFieldControl = componentRef.instance as unknown as PlatformFormFieldControl;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n OnInit,\n Provider,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_FORM_FIELD } from '@fundamental-ngx/cdk/forms';\nimport { FieldHintOptions, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { FORM_GROUP_CHILD_FIELD_TOKEN } from '../../form-group/constants';\nimport { FormFieldComponent } from '../../form-group/form-field/form-field.component';\nimport { DynamicFormControl } from '../dynamic-form-control';\nimport { FormGeneratorService } from '../form-generator.service';\nimport { DynamicFormGroup } from '../interfaces/dynamic-form-group';\nimport { DynamicFormItemValidationObject } from '../interfaces/dynamic-form-item';\n\nconst formFieldProvider: Provider = {\n provide: FD_FORM_FIELD,\n useExisting: forwardRef(() => FormGeneratorFieldComponent)\n};\n\nconst formGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormGeneratorFieldComponent)\n};\n\n@Component({\n selector: 'fdp-form-generator-field',\n templateUrl: './form-generator-field.component.html',\n providers: [formFieldProvider, formGroupChildProvider],\n encapsulation: ViewEncapsulation.None\n})\nexport class FormGeneratorFieldComponent implements OnInit {\n /**\n * Form control.\n */\n @Input() field: DynamicFormControl;\n\n /**\n * Form generator's form.\n */\n @Input() form: DynamicFormGroup;\n\n /**\n * Translations template reference.\n */\n @Input() i18n: TemplateRef<any>;\n\n /**\n * Form control name\n */\n @Input() formFieldName: string;\n\n /**\n * Path of the form group.\n */\n @Input() formGroupNamePath: string;\n\n /**\n * Rank is used for ordering.\n * The lower number the higher priority.\n */\n @Input() rank: number;\n\n /**\n * Whether this field should be visible.\n */\n @Input() shouldShow: boolean;\n\n /**\n * Describes hint options for field label\n */\n @Input() hintOptions?: FieldHintOptions;\n\n /**\n * Form field component.\n */\n @ViewChild(forwardRef(() => FormFieldComponent)) fieldRenderer: PlatformFormField;\n\n /** @hidden */\n get _placeholder(): string {\n if (!this.field) {\n return '';\n }\n if (this.field.formItem?.placeholder) {\n return this.field.formItem?.placeholder as string;\n }\n if (this.field.formItem?.useMessageAsPlaceholder) {\n return this.field.formItem?.message as string;\n }\n return '';\n }\n\n /** @hidden */\n _errorModels: { type: string; value: any }[] = [];\n\n /** @hidden */\n constructor(private _fgService: FormGeneratorService, private _cdr: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._errorModels = this._getErrors();\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _getErrors(): { type: string; value: any }[] {\n const registeredErrors = this._fgService.validationErrorHints;\n\n const returnErrors: { type: string; value: any }[] = [\n {\n type: `${this.field.formItem.name}Validator`,\n value: null\n }\n ];\n\n Object.entries(registeredErrors).forEach((type) => {\n const [errorType, errorValue] = type;\n\n returnErrors.push({\n type: errorType,\n value: errorValue\n });\n });\n\n return returnErrors;\n }\n\n /** @hidden */\n _isAdvancedError(error: any): error is DynamicFormItemValidationObject {\n return error.heading && error.description && error.type;\n }\n}\n","<fdp-form-field\n [hint]=\"hintOptions\"\n [placeholder]=\"_placeholder\"\n [id]=\"field.formItem.id || formFieldName\"\n [column]=\"field.formItem.guiOptions?.column || 1\"\n [columnLayout]=\"field.formItem.guiOptions?.columnLayout\"\n [colon]=\"field.formItem.guiOptions?.appendColon === true\"\n [label]=\"field.formItem.message\"\n [validators]=\"field.formItem.validators || []\"\n [required]=\"field.formItem.required\"\n [rank]=\"rank\"\n [labelColumnLayout]=\"field.formItem.guiOptions?.labelColumnLayout\"\n [fieldColumnLayout]=\"field.formItem.guiOptions?.fieldColumnLayout\"\n [gapColumnLayout]=\"field.formItem.guiOptions?.gapColumnLayout\"\n [noLabelLayout]=\"field.formItem.guiOptions?.noLabelLayout || false\"\n [formGroup]=\"form\"\n #formField\n>\n <ng-container *ngFor=\"let error of _errorModels\">\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n <ng-container *ngIf=\"_isAdvancedError(directiveError)\">\n <ng-container *ngIf=\"directiveError.heading\">\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"directiveError.description\">\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!_isAdvancedError(directiveError)\">\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n </ng-container>\n </span>\n </ng-container>\n <ng-container\n [formField]=\"formField\"\n [form]=\"form\"\n [formGroupNamePath]=\"formGroupNamePath\"\n fdpDynamicFormControl\n [id]=\"field.formItem.id || formFieldName\"\n [name]=\"formFieldName\"\n [formItem]=\"field.formItem\"\n >\n </ng-container>\n</fdp-form-field>\n","import { TemplateRef } from '@angular/core';\n\nimport { PlatformFormField, HintOptions } from '@fundamental-ngx/platform/shared';\nimport { FormFieldComponent } from './form-group/form-field/form-field.component';\nimport { FormFieldGroupComponent } from './form-group/form-field-group/form-field-group.component';\nimport { FormGeneratorFieldComponent } from './form-generator/form-generator-field/form-generator-field.component';\n\nexport interface FieldColumn {\n [key: number]: Array<Field>;\n}\n\n/** @hidden */\nexport function isFieldChild(child: unknown): child is PlatformFormField {\n return child instanceof FormFieldComponent;\n}\n\n/** @hidden */\nexport function isFieldGroupWrapperChild(child: unknown): child is FormGeneratorFieldComponent {\n return child instanceof FormGeneratorFieldComponent;\n}\n\n/** @hidden */\nexport function isFieldGroupChild(child: unknown): child is FormFieldGroupComponent {\n return child instanceof FormFieldGroupComponent;\n}\n\n/** @hidden */\nexport function getFormField(field: PlatformFormField | FormGeneratorFieldComponent): PlatformFormField {\n return isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;\n}\n\n/** @hidden */\nexport function getField(field: PlatformFormField): Field {\n field = isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;\n\n return new Field(field.id, field.rank, field.renderer, field.column);\n}\n\nexport class Field {\n /** @hidden */\n constructor(\n public name?: string,\n public rank?: number,\n public renderer?: TemplateRef<any>,\n public column?: number\n ) {}\n}\n\nexport class FieldGroup {\n /** @hidden */\n constructor(public label: string, public fields: FieldColumn, public hintOptions?: HintOptions) {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AutoCompleteDirective } from './auto-complete.directive';\n\n@NgModule({\n declarations: [AutoCompleteDirective],\n imports: [CommonModule],\n exports: [AutoCompleteDirective]\n})\nexport class PlatformAutoCompleteModule {}\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CheckboxModule } from '@fundamental-ngx/core/checkbox';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from './checkbox.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { FormItemModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [\n CommonModule,\n FormsModule,\n CheckboxModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n FormItemModule,\n ContentDensityModule\n ],\n exports: [CheckboxComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformCheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FormGroupModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { CheckboxGroupComponent } from './checkbox-group.component';\nimport { PlatformCheckboxModule } from '../checkbox/checkbox.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n imports: [\n CommonModule,\n PlatformCheckboxModule,\n FormsModule,\n FormGroupModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [CheckboxGroupComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n declarations: [CheckboxGroupComponent]\n})\nexport class PlatformCheckboxGroupModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { DataProvider, PlatformConfig, MatchingStrategy } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class ComboboxConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<ComboboxConfig>): (platformConfig: PlatformConfig) => ComboboxConfig {\n const useFactory = (platformConfig: PlatformConfig): ComboboxConfig =>\n Object.assign(new ComboboxConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const COMBOBOX_COMPONENT = new InjectionToken<string[]>('ComboboxInterface');\n\n/**\n * Combobox Interface to have typing and avoid circular dependency between\n * ComboboxComponent <==> ComboboxMobileComponent\n */\nexport interface ComboboxInterface extends MobileMode {\n inputText: string;\n openChange: Subject<boolean>;\n\n dialogApprove(): void;\n dialogDismiss(backup: string): void;\n detectChanges(): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { COMBOBOX_COMPONENT, ComboboxInterface } from '../../combobox.interface';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-combobox-mobile',\n templateUrl: './combobox-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ComboboxMobileComponent extends MobileModeBase<ComboboxInterface> implements OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n private _selectedBackup: string;\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n @Inject(COMBOBOX_COMPONENT) comboboxComponent: ComboboxInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, comboboxComponent, MobileModeControl.COMBOBOX, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiInputOpenChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.onDestroy();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n return;\n }\n\n this._selectedBackup = this._component.inputText;\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiInputOpenChange(): void {\n this._component.openChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement\n });\n\n // Have to fire \"detectChanges\" to fix \"ExpressionChangedAfterItHasBeenCheckedError\"\n this.dialogRef.afterLoaded.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this._component.detectChanges();\n });\n\n const refSub = this.dialogRef.afterClosed.subscribe({\n error: (type) => {\n if (type === 'escape') {\n this._component.dialogDismiss(this._selectedBackup);\n refSub.unsubscribe();\n }\n }\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { ComboboxMobileComponent } from './combobox/combobox-mobile.component';\n\n@NgModule({\n declarations: [ComboboxMobileComponent],\n imports: [BarModule, DialogModule, ButtonModule, CommonModule],\n exports: [ComboboxMobileComponent]\n})\nexport class PlatformComboboxMobileModule {}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n NUMPAD_EIGHT,\n NUMPAD_FIVE,\n NUMPAD_FOUR,\n NUMPAD_NINE,\n NUMPAD_ONE,\n NUMPAD_SEVEN,\n NUMPAD_SIX,\n NUMPAD_THREE,\n NUMPAD_TWO,\n NUMPAD_ZERO,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { Observable, Subject, Subscription, fromEvent, isObservable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ContentDensity, FocusEscapeDirection, KeyUtil, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { ListComponent } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport {\n ArrayComboBoxDataSource,\n CollectionBaseInput,\n ComboBoxDataSource,\n MatchingBy,\n MatchingStrategy,\n ObservableComboBoxDataSource,\n OptionItem,\n PlatformFormField,\n PlatformFormFieldControl,\n coerceArraySafe,\n isDataSource,\n isFunction,\n isJsObject,\n isOptionItem,\n isString\n} from '@fundamental-ngx/platform/shared';\n\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, SingleDropdownValueControl } from '@fundamental-ngx/cdk/forms';\nimport { AutoCompleteEvent } from '../../auto-complete/auto-complete.directive';\nimport { ComboboxConfig } from '../combobox.config';\n\nexport type TextAlignment = 'left' | 'right';\nexport type FdpComboBoxDataSource<T> = ComboBoxDataSource<T> | Observable<T[]> | T[];\n\n@Directive()\nexport abstract class BaseCombobox\n extends CollectionBaseInput\n implements AfterViewInit, SingleDropdownValueControl, OnDestroy\n{\n /** Provides maximum height for the optionPanel */\n @Input()\n maxHeight = '250px';\n\n /** Datasource for suggestion list */\n @Input()\n set dataSource(value: FdpComboBoxDataSource<any>) {\n if (value) {\n this._initializeDataSource(value);\n }\n }\n get dataSource(): FdpComboBoxDataSource<any> {\n return this._dataSource;\n }\n\n /** Whether the autocomplete should be enabled; Enabled by default */\n @Input()\n autoComplete = true;\n\n /**\n * Todo: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the combobox should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Multi Input Mobile Configuration, it's applied only, when mobile is enabled */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Tells the combo if we need to group items */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation) */\n @Input()\n groupKey?: string;\n\n /** The field to show data in secondary column */\n @Input()\n secondaryKey?: string;\n\n /** Show the second column (Applicable for two columns layout) */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (Applicable for two columns layout) */\n @Input()\n secondaryTextAlignment: TextAlignment;\n\n /** Turns on/off Adjustable Width feature */\n @Input()\n autoResize = false;\n\n /** Value of the combobox */\n @Input()\n set value(value: any) {\n const selectedItems = coerceArraySafe(value);\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * `equal` will apply a width to the body equivalent to the width of the control.\n * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = false;\n\n /**\n * The trigger events that will open/close the options popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n @Input()\n triggers: string[] = [];\n\n /** Whether the combobox should close, when a click is performed outside its boundaries. True by default */\n @Input()\n closeOnOutsideClick = true;\n\n /** Whether list item options should be rendered as byline. */\n @Input()\n byline = false;\n\n /**\n * Action to perform when user shifts focus from the dropdown.\n * - `close` will close the dropdown preserving previously selected value.\n * - `closeAndSelect` will close the dropdown and select last focused dropdown item.\n */\n @Input()\n tabOutStrategy: 'close' | 'closeAndSelect' = 'closeAndSelect';\n\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataRequested = new EventEmitter<void>();\n\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataReceived = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /** @hidden Custom Option item Template */\n optionItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden Custom Group Header item Template */\n groupItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden Custom Secondary item Template */\n secondaryItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden Custom Selected option item Template */\n selectedItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden */\n searchInputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n _contentDensity: ContentDensity = this.comboboxConfig.contentDensity;\n\n /** Input text of the input. */\n set inputText(value: string) {\n this._inputTextValue = value;\n\n this.onTouched();\n }\n get inputText(): string {\n return this._inputTextValue || '';\n }\n\n /** Whether the combobox is opened. */\n isOpen = false;\n\n /** Whether a combobox can be closed */\n get canClose(): boolean {\n return !(this.mobile && this.mobileConfig.approveButtonText);\n }\n\n /** @hidden List of matched suggestions */\n _suggestions: OptionItem[];\n\n /** @hidden Max width of list container */\n maxWidth?: number;\n\n /** @hidden Min width of list container */\n minWidth?: number;\n\n /** @hidden Need for opening mobile version */\n openChange = new Subject<boolean>();\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** Is suggestions list empty */\n get isSuggestionsListEmpty(): boolean {\n return this._suggestions.length === 0;\n }\n\n /** @hidden */\n protected _dataSource: FdpComboBoxDataSource<any>;\n\n /** @hidden */\n _flatSuggestions: OptionItem[];\n\n /** @hidden */\n private _inputTextValue: string;\n\n /** @hidden */\n private _matchingStrategy: MatchingStrategy = this.comboboxConfig.matchingStrategy;\n\n /** @hidden */\n private _dsSubscription?: Subscription;\n\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n\n /** Keys, that won't trigger the popover's open state, when dispatched on search input */\n private readonly _nonOpeningKeys: number[] = [\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT\n ];\n\n /** Keys, that are numbers from number keypad */\n private readonly _numberPadNumberKeys: number[] = [\n NUMPAD_ZERO,\n NUMPAD_ONE,\n NUMPAD_TWO,\n NUMPAD_THREE,\n NUMPAD_FOUR,\n NUMPAD_FIVE,\n NUMPAD_SIX,\n NUMPAD_SEVEN,\n NUMPAD_SEVEN,\n NUMPAD_EIGHT,\n NUMPAD_NINE\n ];\n\n /** @hidden */\n private _displayFn = (value: any): string => this.displayValue(value);\n\n /** @hidden */\n private _secondaryFn = (value: any): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n }\n\n if (isJsObject(value) && this.secondaryKey) {\n const currentItem = this.objectGet(value, this.secondaryKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n }\n\n return value;\n };\n\n /** @hidden */\n protected constructor(\n readonly cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n protected comboboxConfig: ComboboxConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as ComboBoxDataSource<any>).close();\n }\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n\n /** @hidden Method to emit change event */\n abstract emitChangeEvent<K>(value: K): void;\n\n /** @hidden Define is this item selected */\n abstract isSelectedOptionItem(selectedItem: OptionItem): boolean;\n\n /** @hidden Emit select OptionItem */\n abstract selectOptionItem(item: OptionItem): void;\n\n /** @hidden Define value as selected */\n abstract setAsSelected(item: OptionItem[]): void;\n\n /** Is empty search field */\n get isEmptyValue(): boolean {\n return this.inputText.trim().length === 0;\n }\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n const selectedItems = coerceArraySafe(value);\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.writeValue(value);\n }\n\n /** @hidden */\n searchTermChanged(text: string): void {\n if (this.inputText === text) {\n return;\n }\n this.inputText = text;\n\n const map = new Map();\n map.set('query', text);\n map.set('limit', 12);\n\n this.ds.match(map);\n }\n\n /** @hidden */\n isOpenChangeHandle(isOpen: boolean): void {\n if (this.isOpen === isOpen) {\n return;\n }\n\n this.isOpen = isOpen;\n this.onTouched();\n this.openChange.next(isOpen);\n\n this.cd.detectChanges();\n }\n\n /** @hidden */\n handleOptionItem(value: OptionItem): void {\n if (value) {\n this.selectOptionItem(value);\n }\n\n this.searchInputElement.nativeElement.focus();\n }\n\n /** @hidden */\n handlePressEnter(event: KeyboardEvent, value: OptionItem): void {\n if (!KeyUtil.isKeyCode(event, ENTER)) {\n return;\n }\n\n this.handleOptionItem(value);\n }\n\n /**\n * Handle Click on Button\n * @hidden\n */\n onPrimaryButtonClick(): void {\n // if it's mobile mode ignore this click\n if (this.mobile) {\n return;\n }\n\n this.isOpenChangeHandle(!this.isOpen);\n\n if (this.isOpen) {\n this.searchInputElement?.nativeElement.focus();\n }\n }\n\n /**\n * Handle click on input group in mobile mode\n * @hidden\n */\n openInMobileMode(): void {\n // if it's already opened just ignore this click\n // if it's not mobile mode just ignore this click\n if (this.isOpen || !this.mobile) {\n return;\n }\n\n // otherwise show options\n this.isOpenChangeHandle(true);\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n onInputKeydownHandler(event: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, TAB)) {\n this._close();\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this.isOpenChangeHandle(true);\n }\n\n if (this.isOpen && this.listComponent) {\n this.listComponent.setItemActive(0);\n } else if (!this.isOpen) {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this.isOpenChangeHandle(false);\n } else if (!event.ctrlKey && !KeyUtil.isKeyCode(event, this._nonOpeningKeys)) {\n if (!KeyUtil.isKeyCode(event, this._numberPadNumberKeys)) {\n this.isOpenChangeHandle(true);\n }\n const acceptedKeys =\n !KeyUtil.isKeyCode(event, BACKSPACE) &&\n !KeyUtil.isKeyType(event, 'alphabetical') &&\n !KeyUtil.isKeyType(event, 'numeric') &&\n !KeyUtil.isKeyCode(event, this._numberPadNumberKeys);\n\n if (this.isEmptyValue && acceptedKeys) {\n this.listComponent?.setItemActive(0);\n }\n }\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this.searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _onCompleteTerm(event: AutoCompleteEvent): void {\n if (event.forceClose) {\n this.toggleSelectionByInputText(event.term);\n this.isOpenChangeHandle(false);\n }\n }\n\n /** @hidden */\n toggleSelectionByInputText(text = this.inputText): void {\n let optionItem = this._getSelectItemByInputValue(text);\n if (!optionItem) {\n optionItem = {\n label: text,\n value: text\n };\n }\n\n this.selectOptionItem(optionItem);\n }\n\n /** @hidden */\n _close(): void {\n if (this.tabOutStrategy === 'closeAndSelect') {\n const focusedItem = this.listComponent.getActiveItem();\n if (focusedItem) {\n this.handleOptionItem(focusedItem.value);\n return;\n }\n }\n this.inputText = this.value ? this.inputText : '';\n this.searchInputElement.nativeElement.focus();\n this.isOpenChangeHandle(false);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n protected _getSelectItemByInputValue(displayValue: string): OptionItem | undefined {\n return this._flatSuggestions.find((value) => value.label === displayValue);\n }\n\n /** @hidden */\n protected get ds(): ComboBoxDataSource<any> {\n return this.dataSource as ComboBoxDataSource<any>;\n }\n\n /** @hidden Map grouped values to array. */\n protected _flatGroups(items: OptionItem[]): OptionItem[] {\n return items.reduce((result: OptionItem[], item: OptionItem) => result.concat(item.children ?? []), []);\n }\n\n /**\n * @hidden\n * Method that picks other value moved from current one by offset, called only when combobox is closed\n */\n private _chooseOtherItem(offset: number): void {\n const activeValue = this._getSelectItemByValue(this.inputText);\n const index: number = this._suggestions.findIndex((value) => value === activeValue);\n\n if (this._suggestions[index + offset]) {\n this.handleOptionItem(this._suggestions[index + offset]);\n }\n }\n\n /** @hidden */\n private _getSelectItemByValue(displayValue: string): OptionItem | undefined {\n return this._suggestions.find((value) => value.label === displayValue);\n }\n\n /** @hidden */\n private async _initializeDataSource(ds: FdpComboBoxDataSource<any>): Promise<void> {\n this._suggestions = [];\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as ComboBoxDataSource<any>).close();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = undefined;\n }\n }\n\n // initializing data source in the seperate microtask to let all config options to be set before it\n // for example, \"isGroup\" input is needed for initialization logic and it might not be set at this point\n await Promise.resolve();\n // Convert whatever comes in as DataSource so we can work with it identically\n this._dataSource = this._openDataStream(ds);\n }\n\n /** @hidden */\n private _openDataStream(ds: FdpComboBoxDataSource<any>): ComboBoxDataSource<any> {\n const initDataSource = this._toDataStream(ds);\n\n if (initDataSource === undefined) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n this._dsSubscription = new Subscription();\n /**\n * This is single point of data entry to the component. We dont want to set data on different\n * places. If any new data comes in either you do a search and you want to pass initial data\n * its here.\n */\n const dsSub = initDataSource\n .open()\n .pipe(takeUntil(this._destroyed))\n .subscribe((data) => {\n this._suggestions = this._convertToOptionItems(data);\n this._flatSuggestions = this.isGroup ? this._flatGroups(this._suggestions) : this._suggestions;\n\n this.stateChanges.next('initDataSource.open().');\n\n this.cd.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n\n this._dsSubscription.add(initDataSource.onDataRequested().subscribe(this.onDataRequested));\n this._dsSubscription.add(initDataSource.onDataReceived().subscribe(this.onDataReceived));\n\n initDataSource.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.secondaryKey) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n initDataSource.dataProvider.setMatchingBy(matchingBy);\n initDataSource.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n map.set('limit', 12);\n initDataSource.match(map);\n\n return initDataSource;\n }\n\n /** @hidden */\n private _toDataStream(source: FdpComboBoxDataSource<any>): ComboBoxDataSource<any> | undefined {\n if (isDataSource(source)) {\n return source as ComboBoxDataSource<any>;\n }\n\n if (Array.isArray(source)) {\n // default implementation to work on top of arrays\n return new ArrayComboBoxDataSource<any>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableComboBoxDataSource<any>(source);\n }\n\n return undefined;\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const gap = 5;\n const { offsetWidth, clientWidth } = document.body;\n const { width, left } = (this._element.querySelector('fd-input-group') as HTMLElement).getBoundingClientRect();\n const scrollBarWidth = offsetWidth - clientWidth;\n\n this.maxWidth = this.autoResize ? window.innerWidth - scrollBarWidth - left - gap : this.minWidth;\n this.minWidth = width - 2;\n\n this._cd.detectChanges();\n }\n\n /**\n * Convert original data to OptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): OptionItem[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as OptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to OptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): OptionItem[] {\n if (this.group && this.groupKey) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n private _convertObjectsToGroupOptionItems<K>(items: K[]): OptionItem[] {\n const group: { [key: string]: K[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = this.groupKey && item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: OptionItem = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.secondaryKey) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n\n return selectItem;\n });\n }\n\n /**\n * Convert object[] data to Secondary OptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): OptionItem[] {\n const selectItems: OptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n secondaryText: this.objectGet(value, this.secondaryKey),\n value\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to OptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: any[]): OptionItem[] {\n const selectItems: OptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({ label: value, value });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to OptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): OptionItem[] {\n const selectItems: OptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n value\n });\n }\n\n return selectItems;\n }\n\n /** @hidden Assign custom templates */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Injector,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport {\n ComboBoxDataSource,\n DATA_PROVIDERS,\n DataProvider,\n OptionItem,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\n\nimport { PlatformComboboxMobileModule } from '../combobox-mobile/combobox-mobile.module';\nimport { ComboboxMobileComponent } from '../combobox-mobile/combobox/combobox-mobile.component';\nimport { ComboboxConfig } from '../combobox.config';\nimport { COMBOBOX_COMPONENT, ComboboxInterface } from '../combobox.interface';\nimport { BaseCombobox } from '../commons/base-combobox';\n\nexport class ComboboxSelectionChangeEvent {\n /**\n * Combobox selection event\n * @param source Combobox component\n * @param payload Selected option\n */\n constructor(\n public source: ComboboxComponent,\n public payload: any // Contains selected item\n ) {}\n}\n\n@Component({\n selector: 'fdp-combobox',\n templateUrl: './combobox.component.html',\n styleUrls: ['./combobox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ComboboxComponent, multi: true },\n contentDensityObserverProviders()\n ]\n})\nexport class ComboboxComponent extends BaseCombobox implements ComboboxInterface, OnInit, AfterViewInit {\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<ComboboxSelectionChangeEvent>();\n /** @hidden */\n @ViewChild('searchInputElement')\n searchInputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('controlTemplate')\n controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n _selectedElement?: OptionItem;\n\n /** @hidden */\n constructor(\n readonly cd: ChangeDetectorRef,\n readonly elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n readonly _dynamicComponentService: DynamicComponentService,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() @Inject(DATA_PROVIDERS) private providers: Map<string, DataProvider<any>>,\n readonly _comboboxConfig: ComboboxConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n dialogConfig,\n _comboboxConfig,\n formField,\n formControl\n );\n }\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n const providers = this.providers?.size === 0 ? this._comboboxConfig.providers : this.providers;\n // if we have both prefer dataSource\n if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) {\n this.dataSource = new ComboBoxDataSource(providers.get(this.entityClass)!);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n }\n\n /** @hidden */\n _onBlur(event: FocusEvent): void {\n if (this.mobile) {\n return;\n }\n\n const target = event.relatedTarget as HTMLElement;\n if (target) {\n const isList = !!target.closest('.fdp-combobox__list-container');\n const isListItem = !!target.closest('.fd-list__item');\n if (isList || isListItem) {\n return;\n }\n }\n\n if ((!this._selectedElement && !this.inputText) || this._selectedElement?.label === this.inputText) {\n return;\n }\n\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n /** @hidden Method to emit change event */\n emitChangeEvent<T>(modelValue: T): void {\n const event = new ComboboxSelectionChangeEvent(this, modelValue);\n\n this.selectionChange.emit(event);\n }\n\n /** @hidden Method to set selected item */\n selectOptionItem(item: OptionItem): void {\n if (this.mobile) {\n this._selectedElement = item;\n this.inputText = item.label;\n this.cd.detectChanges();\n\n return;\n }\n\n this.inputText = item.label;\n this._checkAndUpdate(item);\n this.isOpenChangeHandle(false);\n }\n\n /** @hidden Method to set as selected */\n setAsSelected(item: OptionItem[]): void {\n const selectedItem = item[0];\n\n if (this.isSelectedOptionItem(selectedItem)) {\n return;\n }\n\n this._selectedElement = (this.isGroup && selectedItem?.children?.[0]) || selectedItem;\n this.inputText = this.displayValue(this._selectedElement);\n }\n\n /** @hidden Define is selected item selected */\n isSelectedOptionItem(selectedItem: any): boolean {\n return (\n (this.lookupKey && this.lookupValue(this._selectedElement) === this.lookupValue(selectedItem)) ||\n this.displayValue(this._selectedElement) === this.displayValue(selectedItem)\n );\n }\n\n /** @hidden Define is selected item selected by display value */\n isSelectedOptionItemByDisplayValue(selectedItem: any): boolean {\n return this._selectedElement?.label === selectedItem;\n }\n\n /** Handle dialog dismissing, closes popover and sets backup data. */\n dialogDismiss(term: string): void {\n if (this._selectedElement?.label !== term) {\n this._selectedElement = this._getSelectedOptionItem(term);\n }\n\n this.inputText = term;\n this.isOpenChangeHandle(false);\n }\n\n /** Handle dialog approval, closes popover and propagates data changes. */\n dialogApprove(): void {\n if (this._selectedElement?.label === this.inputText) {\n this._updateModel(this._selectedElement.value);\n } else {\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n this.isOpenChangeHandle(false);\n }\n\n /** @hidden if not selected update model */\n private _checkAndUpdate(modelValue: OptionItem): void {\n if (this.isSelectedOptionItem(modelValue)) {\n return;\n }\n\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n /** @hidden Update model */\n private _updateModel(value: any): void {\n // setting value, it will call setValue()\n this.value = value;\n\n this.emitChangeEvent(value ? value : null);\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: COMBOBOX_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n await this._dynamicComponentService.createDynamicModule(\n { listTemplate: this.listTemplate, controlTemplate: this.controlTemplate },\n PlatformComboboxMobileModule,\n ComboboxMobileComponent,\n this._viewContainerRef,\n injector\n );\n }\n\n /** @hidden */\n private _getSelectedOptionItem(text: string): OptionItem | undefined {\n if (!this.isGroup) {\n return this._suggestions.find((item) => item.label === text);\n }\n\n return this._suggestions\n .reduce((result: OptionItem[], item: OptionItem) => {\n result.push(...(item.children ?? []));\n\n return result;\n }, [])\n .find((item) => item.label === text);\n }\n}\n","<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list {{ !!stateMessage && 'fdp-combobox__list--message' }}\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n (keydown.tab)=\"_close()\"\n (keydown.shift.tab)=\"_close()\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicComponentService, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\nimport { ComboboxComponent } from './combobox/combobox.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [ComboboxComponent],\n imports: [\n CommonModule,\n FormsModule,\n InputGroupModule,\n PipeModule,\n ListModule,\n ButtonModule,\n PopoverModule,\n PlatformAutoCompleteModule,\n FormModule,\n I18nModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n providers: [DynamicComponentService],\n exports: [ComboboxComponent, TemplateModule, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformComboboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { DatePickerModule } from '@fundamental-ngx/core/date-picker';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PlatformDatePickerComponent } from './date-picker.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [PlatformDatePickerComponent],\n imports: [\n CommonModule,\n DatePickerModule,\n FormsModule,\n ReactiveFormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformDatePickerComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformDatePickerModule {}\n","/** @hidden */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdpDatetimePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\n\nimport { CalendarYearGrid, DaysOfWeek, FdCalendarView } from '@fundamental-ngx/core/calendar';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { DatetimePickerComponent } from '@fundamental-ngx/core/datetime-picker';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { createMissingDateImplementationError } from './errors';\n\n@Component({\n selector: 'fdp-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformDatetimePickerComponent, multi: true }]\n})\nexport class PlatformDatetimePickerComponent<D> extends BaseInput implements AfterViewInit {\n /**\n * value for datetime\n */\n @Input()\n set value(value: D) {\n super.setValue(value);\n }\n get value(): D {\n return super.getValue();\n }\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /**\n * Whether the time component should be meridian (am/pm).\n * Default value is based on the current locale format option\n * */\n @Input()\n meridian: boolean;\n\n /**\n * Whether the time component shows seconds.\n * Default value is based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /**\n * Whether the time component shows minutes.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * Whether the time component shows hours.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** Whether to perform visual validation on the picker input. */\n @Input()\n useValidation = true;\n\n /** Whether the popover is open. Two-way binding is supported. */\n @Input()\n isOpen = false;\n\n /** The starting day of week for the calendar. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = 'day';\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core datetime picker)\n * Aria label for the datetime picker input.\n */\n @Input()\n datetimeInputLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core datetime picker)\n * Aria label for the button to show/hide the calendar.\n */\n @Input()\n displayDatetimeToggleLabel: string;\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /**\n * @Input when set to true time component will use 2 digits for each number.\n * For example 9 will become 09\n * but 12 will be kept as 12.\n * Only uses by time component and does not change input format\n */\n @Input() keepTwoDigitsTime = false;\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates | undefined) {\n super.state = state;\n }\n\n get state(): FormStates {\n if (this.dateTimePickerComponent?.isInvalidDateInput) {\n // if any other error from core dtp\n return 'error';\n }\n return super.state;\n }\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__special-day--{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether or not to show the datetime picker footer with submit/cancel buttons. */\n @Input()\n showFooter = true;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input()\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text and aria-label of the DateTimePicker 'OK' button.\n */\n @Input()\n okLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text and aria-label of the DateTimePicker 'Cancel' button.\n */\n @Input()\n cancelLabel: string;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the date changes. This can be a time or day change. */\n @Output()\n readonly datetimeChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when popover closes. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onClose: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(DatetimePickerComponent)\n dateTimePickerComponent: DatetimePickerComponent<D>;\n\n /** @hidden */\n @ViewChild(DatetimePickerComponent, { static: true, read: ElementRef })\n protected _elRef: ElementRef;\n\n /** @hidden */\n @ViewChild(DatetimePickerComponent, { static: true, read: NgControl })\n protected _control: NgControl;\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param fdDate FdDate\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n get _isRequired(): boolean {\n return !!this.formField?.required;\n }\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n // Use here @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n super(_cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n\n // default model value\n this.value = _dateTimeAdapter.now();\n }\n\n /**\n * @hidden\n */\n ngAfterViewInit(): void {\n // if used with platform forms, adjust width of datetimepicker to take 100% container space\n if (this.formField) {\n this._adjustPickerWidth();\n }\n }\n\n /** @hidden */\n writeValue(value: D): void {\n super.writeValue(value);\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n * override base functionality to catch new disabled state\n */\n setDisabledState(disabled: boolean): void {\n super.setDisabledState(disabled);\n this.dateTimePickerComponent?.setDisabledState(disabled);\n }\n\n /**\n * @hidden\n * logic to handle validation from both platform forms and core datetiimepicker\n * @param datetime inputted\n */\n handleDatetimeInputChange(datetime: D): void {\n if (this.dateTimePickerComponent) {\n if (this.dateTimePickerComponent._isInvalidDateInput) {\n if (this.ngControl.control && this._control.value) {\n this.ngControl.control.setErrors(this._control.errors);\n }\n this.state = 'error';\n } else {\n if (!this.dateTimePickerComponent._inputFieldDate && !this.allowNull) {\n this.state = 'error'; // null value in not allowNull should throw error\n } else {\n this.state = undefined; // resetting to default state\n }\n }\n // only set the value if it is a valid datetime object\n if (this.dateTimePickerComponent._inputFieldDate) {\n this.value = datetime;\n }\n\n this.stateChanges.next('datetime picker: handleDatetimeInputChange');\n }\n\n this.datetimeChange.emit(datetime);\n\n this.onTouched();\n }\n\n /**\n * Method that handles changes when popover is opened or closed.\n */\n handleOpenChange = (open: boolean): void => {\n this.isOpenChange.emit(open);\n };\n /**\n * Method that handle calendar active view change and throws event.\n */\n handleActiveViewChange = (fdCalendarView: FdCalendarView): void => {\n this.activeViewChange.emit(fdCalendarView);\n };\n\n /**\n * @hidden\n * method that adjusts width of datetimepicker to take 100% container space\n */\n private _adjustPickerWidth(): void {\n const customPopoverEl = this._elRef.nativeElement.querySelector('.fd-datetime .fd-popover-custom');\n if (!customPopoverEl) {\n return;\n }\n customPopoverEl.style.display = 'inline';\n }\n}\n","<fd-datetime-picker\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"_isRequired\"\n [attr.ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [inputId]=\"id\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [meridian]=\"meridian\"\n [disabled]=\"disabled\"\n [displaySeconds]=\"displaySeconds\"\n [displayMinutes]=\"displayMinutes\"\n [displayHours]=\"displayHours\"\n [useValidation]=\"useValidation\"\n [isOpen]=\"isOpen\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [activeView]=\"activeView\"\n [datetimeInputLabel]=\"datetimeInputLabel\"\n [displayDatetimeToggleLabel]=\"displayDatetimeToggleLabel\"\n [allowNull]=\"allowNull && !_isRequired\"\n [keepTwoDigitsTime]=\"keepTwoDigitsTime\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [specialDaysRules]=\"specialDaysRules\"\n [yearGrid]=\"yearGrid\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [markWeekends]=\"markWeekends\"\n [spinnerButtons]=\"spinnerButtons\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [showFooter]=\"showFooter\"\n [disableFunction]=\"disableFunction\"\n [processInputOnBlur]=\"processInputOnBlur\"\n [preventScrollOnFocus]=\"preventScrollOnFocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"handleDatetimeInputChange($event)\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (touched)=\"onTouched()\"\n>\n <ng-content></ng-content>\n</fd-datetime-picker>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { DatetimePickerModule } from '@fundamental-ngx/core/datetime-picker';\nimport { PlatformDatetimePickerComponent } from './datetime-picker.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [PlatformDatetimePickerComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DatetimePickerModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformDatetimePickerComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformDatetimePickerModule {}\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { DynamicFormControl } from './dynamic-form-control';\n\n/**\n * @description\n * Structural directive, which hides current form item and toggles validation rules for it.\n */\n@Directive({\n selector: '[fdpDynamicFormControlField]'\n})\nexport class DynamicFormControlFieldDirective implements OnInit {\n /**\n * @description Form control instance.\n */\n @Input()\n set fdpDynamicFormControlField(value: DynamicFormControl) {\n this._control = value;\n\n this._originalValidators = this._control.formItem.validators;\n this._originalAsyncValidators = this._control.formItem.asyncValidators;\n\n this._updateView();\n }\n\n /**\n * @description boolean flag representing if current item should be shown.\n */\n @Input()\n set fdpDynamicFormControlFieldShow(value: boolean) {\n this.shouldShowFormItem = value;\n this._updateView();\n }\n\n /**\n * @hidden\n */\n private _control: DynamicFormControl;\n\n /**\n * @hidden\n */\n private _originalValidators?: Nullable<ValidatorFn | ValidatorFn[]>;\n\n /**\n * @hidden\n */\n private _originalAsyncValidators: Nullable<AsyncValidatorFn | AsyncValidatorFn[]>;\n\n /**\n * @hidden\n */\n private _componentRemoved = true;\n\n /**\n * @hidden\n */\n private _shouldShowFormItem: boolean;\n\n /** @hidden */\n constructor(private readonly _templateRef: TemplateRef<any>, private readonly _viewContainer: ViewContainerRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._updateView();\n }\n\n /**\n * @description If false, validation will be skipped from the form item control\n */\n set shouldShowFormItem(value: boolean) {\n if (value === this._shouldShowFormItem) {\n return;\n }\n\n this._shouldShowFormItem = value;\n\n if (!value) {\n this._control.clearValidators();\n this._control.clearAsyncValidators();\n } else {\n this._control.setValidators(this._originalValidators ?? []);\n this._control.setAsyncValidators(this._originalAsyncValidators ?? []);\n }\n\n this._control.updateValueAndValidity({ emitEvent: false });\n }\n\n /** @hidden */\n private _updateView(): void {\n if (this._shouldShowFormItem && this._componentRemoved) {\n this._viewContainer.createEmbeddedView(this._templateRef);\n this._componentRemoved = false;\n } else if (!this._shouldShowFormItem) {\n this._viewContainer.clear();\n this._componentRemoved = true;\n }\n }\n}\n","import { FieldHintOptions } from '@fundamental-ngx/platform/shared';\n\nexport const defaultFormGeneratorHintOptions: Omit<FieldHintOptions, 'content'> = {\n placement: 'right',\n position: 'after',\n trigger: [\n { trigger: 'mouseenter', openAction: true, closeAction: false },\n { trigger: 'mouseleave', openAction: false, closeAction: true },\n { trigger: 'focusin', openAction: true, closeAction: false },\n { trigger: 'focusout', openAction: false, closeAction: true }\n ],\n glyph: 'hint',\n target: 'auto'\n};\n","import { InjectionToken } from '@angular/core';\nimport { FieldHintOptions } from '@fundamental-ngx/platform/shared';\nimport { defaultFormGeneratorHintOptions } from './config/default-form-generator-hint-options';\n\nexport const FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS = new InjectionToken<Omit<FieldHintOptions, 'content'>>(\n 'Default options for form-generator hint',\n {\n factory: () => defaultFormGeneratorHintOptions\n }\n);\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { FieldGroup } from '../../form-helpers';\nimport { HintOptions } from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-form-group-header]',\n templateUrl: './form-group-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.fd-form-group__header]': 'true'\n }\n})\nexport class FormGroupHeaderComponent {\n /** Fields Group */\n @Input()\n fieldGroup: Nullable<FieldGroup>;\n\n /** Hint options */\n get hintOptions(): HintOptions | undefined {\n if (this.fieldGroup?.hintOptions) {\n return this.fieldGroup.hintOptions;\n }\n\n return;\n }\n}\n","<ng-container *ngIf=\"fieldGroup && hintOptions?.position === 'before'\">\n <ng-container *ngTemplateOutlet=\"inlineHelpRef\"></ng-container>\n</ng-container>\n\n<h6 class=\"fd-form-group__header-text\">\n {{ fieldGroup?.label }}\n</h6>\n\n<ng-container *ngIf=\"fieldGroup && hintOptions?.position === 'after'\">\n <ng-container *ngTemplateOutlet=\"inlineHelpRef\"></ng-container>\n</ng-container>\n\n<ng-template #inlineHelpRef>\n <span *ngIf=\"hintOptions\" fd-link [undecorated]=\"true\">\n <fd-icon\n [style.vertical-align]=\"'middle'\"\n [fd-inline-help]=\"hintOptions.content\"\n [glyph]=\"hintOptions.glyph\"\n [placement]=\"hintOptions.placement || null\"\n [triggers]=\"hintOptions.trigger || []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KeyValue } from '@angular/common';\nimport { FieldColumn, FieldGroup } from '../../form-helpers';\n\n@Pipe({ name: 'fieldGroupRowValue' })\nexport class FieldGroupRowValuePipe implements PipeTransform {\n /** @hidden */\n transform(row: KeyValue<any, FieldColumn | FieldGroup>): FieldColumn {\n return row.value instanceof FieldGroup ? row.value.fields : row.value;\n }\n}\n","/**\n * @license\n * F. Kolar\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n */\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Provider,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { AbstractControl, ControlContainer, FormGroup, NgForm } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport {\n ColumnLayout,\n FieldHintOptions,\n FormFieldGroup,\n FormGroupContainer,\n HintInput,\n HintOptions,\n HintPlacement,\n LabelLayout,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n Field,\n FieldColumn,\n FieldGroup,\n getField,\n getFormField,\n isFieldChild,\n isFieldGroupChild,\n isFieldGroupWrapperChild\n} from '../form-helpers';\nimport { FormFieldErrorDirective } from './form-field-error/form-field-error.directive';\nimport { FormFieldComponent } from './form-field/form-field.component';\nimport {\n DefaultGapLayout,\n DefaultHorizontalFieldLayout,\n DefaultHorizontalLabelLayout,\n DefaultVerticalFieldLayout,\n DefaultVerticalLabelLayout,\n FORM_GROUP_CHILD_FIELD_TOKEN\n} from './constants';\nimport { generateColumnClass, normalizeColumnLayout } from './helpers';\nimport { FormFieldLayoutService } from './services/form-field-layout.service';\nimport { FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT } from './fdp-form.tokens';\nimport { contentDensityObserverProviders, ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport { FormField } from '@fundamental-ngx/cdk/forms';\n\nexport const formGroupProvider: Provider = {\n provide: FormGroupContainer,\n useExisting: forwardRef(() => FormGroupComponent)\n};\n\ntype FormGroupField = (FormField | FormFieldGroup) & { hintOptions?: HintOptions };\n\nlet formGroupUniqueId = 0;\n\n/**\n *\n * FormGroup represent high order container aggregating FormFields and ability to distribute these\n * fields into columns. It mainly hides implementation details that we need to deal with every\n * time we are building a form. We have input fields , error managements, different states,\n * hints and many more.\n *\n * Well behaved form that has information side by side in multiple\n * columns needs to also know how to merge properly.\n *\n * Just to get the idea about the structure without actual input components inside\n *\n * ```html\n * <fdp-form-group [hintPlacement]=\"'inline'\" columnLayout=\"XL2-L2-M1-S1\">\n * <fdp-form-field [id]=\"'Field A'\" [rank]=\"10\" column=\"1\">\n * </fdp-form-field>\n *\n * <fdp-form-field [id]=\"'Field B'\" [rank]=\"30\" column=\"1\">\n * </fdp-form-field>\n *\n * <fdp-form-field [id]=\"'Field C'\" [rank]=\"20\" column=\"1\">\n * </fdp-form-field>\n *\n * <fdp-form-field [id]=\"Field D\" [rank]=\"20\" column=\"2\">\n * </fdp-form-field>\n *\n *\n * <fdp-form-field [id]=\"'Field E'\" [rank]=\"30\" column=\"2\">\n * </fdp-form-field>\n * </fdp-form-group>\n\n *\n * ````\n *\n *\n * Which can be translated like this\n * [Field A] - First column, rank 10\n * [Field B] - First column, rank 30\n * [Field C] - First column, rank 20\n * [Field D] - Second column, rank 20\n * [Field E] - Second column, rank 30\n *\n * What we expect that it creates following form with two column layout:\n * [Field A] [Field D]\n * [Field C] [Field E]\n * [Field B]\n *\n * You can see all is sorted accordingly by rank (C goes before B).\n *\n * When you move into smaller device and all is merged into one columns the naive solution would be:\n *\n * [Field A]\n * [Field C]\n * [Field B]\n * [Field D]\n * [Field E]\n *\n * The fields needs to restructure according to their original positioning. When Field D was on the\n * top why we should move it to the bottom? The more correct solution should be following.\n *\n * [Field A]\n * [Field D]\n * [Field C]\n * [Field E]\n * [Field B]\n *\n * Fields nicely merge together. they don't wrap.\n *\n *\n * Besides this layout support it also wraps form functionality and it can work with FormGroup.\n * You can also decide if you want your form with <form> element or without it.\n *\n *\n */\n@Component({\n selector: 'fdp-form-group',\n templateUrl: 'form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [formGroupProvider, FormFieldLayoutService, contentDensityObserverProviders()]\n})\nexport class FormGroupComponent\n implements FormGroupContainer, OnInit, AfterContentInit, AfterViewInit, OnDestroy, OnChanges\n{\n /** Id for the form group element */\n @Input()\n id = `fdp-form-group-${formGroupUniqueId++}`;\n\n /** Name property to be set on a form. Will be used if `useForm` is set to true */\n @Input()\n name: string;\n\n /** Indicates if group is editable */\n @Input()\n editable = true;\n\n /** Indicates when labels should not be displayed */\n @Input()\n noLabelLayout = false;\n\n /** User's custom classes */\n @Input()\n class: string;\n\n /**\n * Form group hint options\n */\n @Input()\n hint: HintInput;\n\n /**\n * @deprecated\n * Use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties.\n *\n * Defines form field label placement.\n */\n @Input()\n set labelLayout(value: LabelLayout) {\n if (isDevMode()) {\n console.warn(\n 'LabelLayout input property is deprecated. Please use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties instead'\n );\n }\n this._labelLayout = value;\n\n this.labelColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalLabelLayout : DefaultVerticalLabelLayout;\n this.fieldColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalFieldLayout : DefaultVerticalFieldLayout;\n }\n get labelLayout(): LabelLayout {\n return this._labelLayout;\n }\n\n /**\n * Defines column layout for inline items.\n */\n @Input()\n set inlineColumnLayout(value: ColumnLayout) {\n this._inlineColumnLayout = normalizeColumnLayout(value);\n this._updateInlineColumnLayout();\n }\n\n get inlineColumnLayout(): ColumnLayout {\n return this._inlineColumnLayout;\n }\n\n /** @hidden */\n _inlineColumnLayoutClass: string;\n\n /** @hidden */\n private _inlineColumnLayout = DefaultVerticalFieldLayout;\n\n /**\n * Defines label's column layout.\n */\n @Input()\n labelColumnLayout: ColumnLayout = DefaultHorizontalLabelLayout;\n\n /**\n * Defines field's column layout.\n */\n @Input()\n fieldColumnLayout: ColumnLayout = DefaultHorizontalFieldLayout;\n\n /**\n * Defines gap column layout.\n */\n @Input()\n gapColumnLayout: ColumnLayout = DefaultGapLayout;\n\n /** Angular FormGroup where all underlying controls will be attached to. */\n @Input()\n formGroup: FormGroup;\n\n /** This is rather simple for now just to have some Section Title if needed */\n @Input()\n topTitle: string;\n\n /** Form's main title. */\n @Input()\n mainTitle: Nullable<string>;\n\n /** Whether to hide form's main title. Default is false. */\n @Input()\n hideMainTItle = false;\n\n /**\n * Convenient way to initialize internal FormControls from object\n */\n @Input()\n object: any;\n\n /**\n * Translations template reference.\n *\n * This is just here to support several ways to pass translation.\n *\n * One way is to provide ng-template #i18n inside the form-group tag and the other one\n * some global one as binding\n */\n @Input()\n i18Strings: TemplateRef<any>;\n\n /** Whether to wrap all the provided content in a `<form>` */\n @Input()\n set useForm(value: BooleanInput) {\n this._useForm = coerceBooleanProperty(value);\n }\n get useForm(): boolean {\n return this._useForm;\n }\n\n /**\n * Specify the column layout in the format `XLn-Ln-Mn-Sn` where n is the number of columns and can be different for each size.\n * eg: XL2-L2-M2-S1 would create 2-column layouts for XL, L, and M sizes and single-column layout for S size.\n */\n @Input()\n columnLayout: Nullable<string>;\n\n /** Whether all form items should have identical layout provided for form group */\n @Input()\n unifiedLayout = true;\n\n /**\n * onSubmit event\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSubmit: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Native form element. Available with `[useForm]=\"true\"` input property.\n */\n @ViewChild('nativeForm', { read: NgForm })\n nativeForm: NgForm;\n\n /** @hidden */\n @ContentChild('i18n', { static: true })\n i18Template: TemplateRef<any>;\n\n /** @hidden */\n @ContentChildren(FormFieldErrorDirective)\n private _errorDirectives: QueryList<FormFieldErrorDirective>;\n\n /**\n * @hidden\n *\n * Keep track of added form fields children in correct order.\n *\n * Since \"descendants: true\" includes fields of nested form group as well.\n *\n * We are forced to use \"ContentChildren\" so FormField children can be used\n * with optional rendering (ngIf) safely.\n *\n * Form fields within the formGroup is driven by multi-zone layout support. We need to be\n * able to add number of FormFields, and based on given configuration (zone, rank) render them\n * under correct zone (top, bottom, left, right).\n *\n * We want to make sure that we don't include content and then try to somehow position it as it\n * would lead to the UI where user can see elementing moving as you try to position it.\n *\n */\n @ContentChildren(FORM_GROUP_CHILD_FIELD_TOKEN as any, { descendants: true })\n protected formGroupChildren: QueryList<FormGroupField>;\n\n /**\n * @hidden\n *\n * List of direct FdpFormGroup's children.\n *\n * Since \"formGroupChildren\" uses \"{ descendants: true }\" option that means\n * \"formGroupChildren\" will keep track of nested FdpFormGroup fields as well.\n * This list relies on the injection mechanism so nested FdpFormGroup's fields/fieldGroups\n * will be omitted\n */\n private _formGroupDirectChildren: Array<FormGroupField> = [];\n\n /** @hidden */\n xlColumnsNumber: number;\n /** @hidden */\n lgColumnsNumber: number;\n /** @hidden */\n mdColumnsNumber: number;\n\n /**\n * @hidden\n * User responsive layout\n */\n xlCol: string;\n\n /**\n * @hidden\n * Packed fields which should be rendered\n */\n formRows: { [key: number]: FieldColumn | FieldGroup } = {};\n\n /** @hidden */\n _hintOptions: HintOptions;\n\n /** @hidden */\n private _useForm = false;\n /** @hidden */\n private _hintPlacement: HintPlacement = 'right';\n\n /** @hidden */\n private _labelLayout: LabelLayout;\n\n /** @hidden */\n protected _destroyed = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n private elementRef: ElementRef,\n @Optional() private formContainer: ControlContainer,\n readonly contentDensityObserver: ContentDensityObserver,\n @Inject(FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT) private _defaultHintOptions: FieldHintOptions\n ) {\n this.formGroup = <FormGroup>(this.formContainer ? this.formContainer.control : new FormGroup({}));\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n if (changes.hint) {\n if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {\n this._hintOptions = {\n ...this._defaultHintOptions,\n content: this.hint\n };\n } else {\n this._hintOptions = {\n ...this._defaultHintOptions,\n ...this.hint\n };\n }\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (!this.formGroup) {\n this.formGroup = new FormGroup({});\n }\n this.buildComponentCssClass();\n this._updateInlineColumnLayout();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;\n\n this._setUserLayout();\n this._updateFieldByColumn();\n this._updateFormFieldsProperties();\n this._listenToFormGroupChildren();\n this._listenFormFieldColumnChange();\n this._cd.markForCheck();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;\n\n this._setUserLayout();\n this._updateFieldByColumn();\n this._updateFormFieldsProperties();\n this._listenToFormGroupChildren();\n this._listenFormFieldColumnChange();\n this._trackFormGroupResize();\n this._cd.markForCheck();\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n addFormField(formField: PlatformFormField): void {\n // It's needed to set default FormField properties\n // on early stage otherwise validation errors\n // will be thrown on FormField level (e.g. i18string are not defined)\n this._updateFormFieldProperties(formField);\n // keep track of directly registered children\n this._addDirectFormGroupChild(formField);\n }\n\n /** @hidden */\n removeFormField(formField: PlatformFormField): void {\n this._removeDirectFormGroupChild(formField);\n }\n\n /** @hidden */\n addFormFieldGroup(formFieldGroup: FormFieldGroup): void {\n this._addDirectFormGroupChild(formFieldGroup);\n }\n\n /** @hidden */\n removeFormFieldGroup(formFieldGroup: FormFieldGroup): void {\n this._removeDirectFormGroupChild(formFieldGroup);\n }\n\n /** @hidden */\n addFormControl(name: string, control: AbstractControl): void {\n this.formGroup.setControl(name, control);\n // letting control to set value. when provided value is 'false'.\n if (this.object) {\n control.patchValue(this.object[name]);\n }\n }\n\n /** @hidden */\n removeFormControl(name: string): void {\n this.formGroup.removeControl(name);\n }\n\n /** @hidden */\n trackByFn(index: number): number {\n return index;\n }\n\n /** @hidden */\n trackByFieldName(index: number, field: Field): string | undefined {\n return field ? field.name : undefined;\n }\n\n /** @hidden */\n buildComponentCssClass(): string[] {\n return ['fd-container', this.class];\n }\n\n /** @hidden used for template side Type correction */\n $fieldGroup = (f: any): FieldGroup => f;\n\n /** @hidden */\n private _listenToFormGroupChildren(): void {\n this.formGroupChildren.changes.subscribe(() => {\n this._updateFieldByColumn();\n this._cd.markForCheck();\n });\n }\n\n /** @hidden */\n private _listenFormFieldColumnChange(): void {\n this.formGroupChildren.forEach((field: FormGroupField) =>\n (<FormFieldComponent>field).onColumnChange?.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._updateFieldByColumn();\n this._cd.markForCheck();\n })\n );\n }\n\n /**\n * @hidden\n * Assign a fields or field group to specified columns with rank.\n * if `columnLayoutType` is given a fields without column property will set on last column.\n * Otherwise the fields set 1 column.\n */\n private _updateFieldByColumn(): void {\n const formChildren = this._getFormGroupChildren();\n const rows: { [key: number]: FieldColumn | FieldGroup } = {};\n let rowNumber = 0;\n let columns: FieldColumn = {};\n\n for (const child of formChildren) {\n if (isFieldChild(child)) {\n const field = getField(child);\n const columnNumber = this._validateFieldColumn(child.column);\n\n if (!columns[columnNumber]) {\n columns[columnNumber] = [];\n }\n columns[columnNumber].push(field);\n }\n\n if (isFieldGroupChild(child)) {\n const fieldGroupColumns: FieldColumn = {};\n if (Object.keys(columns).length) {\n rows[rowNumber] = columns;\n columns = {};\n rowNumber++;\n }\n\n const groupFields = child.fields.map((field) => getField(field));\n groupFields.forEach((groupField) => {\n const columnNumber = this._validateFieldColumn(groupField.column);\n\n if (!fieldGroupColumns[columnNumber]) {\n fieldGroupColumns[columnNumber] = [];\n }\n fieldGroupColumns[columnNumber].push(groupField);\n });\n\n rows[rowNumber] = new FieldGroup(child.label, fieldGroupColumns, child.hintOptions);\n rowNumber++;\n }\n }\n rows[rowNumber] = columns;\n this.formRows = rows;\n }\n\n /** @hidden Validate column number */\n private _validateFieldColumn(columnNumber: number | undefined): number {\n if (this.columnLayout && columnNumber) {\n if (isNaN(columnNumber)) {\n throw new Error('Input a valid column number');\n }\n\n if (columnNumber > this.xlColumnsNumber) {\n throw new Error(`Columns cannot be more than ${this.xlColumnsNumber}`);\n }\n\n return columnNumber;\n }\n\n return this.xlColumnsNumber;\n }\n\n /** @hidden */\n private _updateFormFieldsProperties(): void {\n this._getFormGroupChildren().forEach((formField: FormGroupField) => {\n if (isFieldChild(formField)) {\n this._updateFormFieldProperties(formField);\n }\n\n if (isFieldGroupChild(formField)) {\n formField.fields.forEach((field) => this._updateFormFieldProperties(getFormField(field)));\n }\n });\n }\n\n /**\n * @hidden\n * Pass some global properties to each field. Even formGroup cna be inject directly inside form\n * field we are using here a setter method to initialize the\n *\n */\n private _updateFormFieldProperties(formField: PlatformFormField): void {\n if (this.unifiedLayout) {\n formField.hintPlacement = this._hintPlacement;\n formField.editable = this.editable;\n formField.noLabelLayout = this.noLabelLayout;\n }\n formField.setDefaultColumnLayout();\n formField.i18Strings = formField.i18Strings ? formField.i18Strings : this.i18Strings;\n formField.setErrorDirectives(this._errorDirectives);\n }\n\n /**\n * @hidden\n * if `columnLayoutType` is given, set those column layouts appropriately. Otherwise, a layout will set on 1 column\n */\n private _setUserLayout(): void {\n if (this.columnLayout) {\n this._getColumnNumbers(this.columnLayout);\n if (isNaN(this.xlColumnsNumber) || isNaN(this.lgColumnsNumber) || isNaN(this.mdColumnsNumber)) {\n throw new Error('Input a valid number for columns');\n }\n if (this.xlColumnsNumber > 12 || this.lgColumnsNumber > 12 || this.mdColumnsNumber > 12) {\n throw new Error('Columns cannot be more than 12');\n }\n const lgColumns = 12 / this.lgColumnsNumber;\n const mdColumns = 12 / this.mdColumnsNumber;\n const xlColumns = 12 / this.xlColumnsNumber;\n\n // for `lg` single-column layout, Styles does not use any class, and providing `fd-col-lg--12` has unintended side-effects\n // therefore, we remove the lg class for single-column layout\n if (lgColumns === 12) {\n this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns}`;\n } else {\n this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns} fd-col-lg--${lgColumns}`;\n }\n } else {\n this.xlCol = `fd-col-xl--12 fd-col-md--12 fd-col-lg--12`;\n }\n }\n\n /** @hidden */\n private _getColumnNumbers(layout: string): void {\n const [xl, lg, md] = layout.split('-');\n this.xlColumnsNumber = parseInt(xl.slice(2, xl.length), 10);\n this.lgColumnsNumber = parseInt(lg.slice(1, lg.length), 10);\n this.mdColumnsNumber = parseInt(md.slice(1, md.length), 10);\n }\n\n /** @hidden */\n private _addDirectFormGroupChild(child: FormGroupField): void {\n if (this._formGroupDirectChildren.indexOf(child) > -1) {\n return;\n }\n this._formGroupDirectChildren.push(child);\n }\n\n /** @hidden */\n private _removeDirectFormGroupChild(child: PlatformFormField | FormFieldGroup): void {\n this._formGroupDirectChildren = this._formGroupDirectChildren.filter((_child) => _child !== child);\n }\n\n /**\n * @hidden\n * Get direct form group children in the original order\n */\n private _getFormGroupChildren(): FormGroupField[] {\n if (!this.formGroupChildren) {\n return [];\n }\n const children = this.formGroupChildren\n .toArray()\n .map((child) => (isFieldGroupWrapperChild(child) ? child.fieldRenderer : child));\n\n return children.filter((child) => this._formGroupDirectChildren.includes(child));\n }\n\n /** @hidden */\n private _updateInlineColumnLayout(): void {\n this._inlineColumnLayoutClass = generateColumnClass(this.inlineColumnLayout);\n }\n\n /**\n * @hidden\n * have to trigger change detection here in order to re-check contents\n * inside \"FormField.renderer\" template every time component's dimensions changed\n */\n private _trackFormGroupResize(): void {\n this._subscriptions.add(\n resizeObservable(this.elementRef.nativeElement)\n .pipe(debounceTime(20))\n .subscribe(() => this._cd.markForCheck())\n );\n }\n}\n","<form #nativeForm (ngSubmit)=\"onSubmit.emit($event)\" *ngIf=\"useForm; else body\" [id]=\"id\" [name]=\"name\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n</form>\n\n<ng-template #body>\n <!-- Render fields and field groups with assigned columns -->\n <ng-container *ngTemplateOutlet=\"fields\"></ng-container>\n</ng-template>\n\n<ng-template #fields>\n <div *ngIf=\"mainTitle && !hideMainTItle\" class=\"fd-form-header\">\n <ng-template [ngTemplateOutlet]=\"mainTitleTemplate\"></ng-template>\n </div>\n\n <div\n class=\"fd-container fd-form-layout-grid-container\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n >\n <div *ngFor=\"let column of formRows | keyvalue; trackBy: trackByFn\" class=\"fd-row\">\n <div\n *ngFor=\"let fields of column | fieldGroupRowValue | keyvalue; trackBy: trackByFn; let index = index\"\n class=\"fd-col fd-form-group\"\n [class]=\"xlCol\"\n >\n <div class=\"fd-row\" *ngIf=\"$fieldGroup(column.value) as value\">\n <div class=\"fd-col\">\n <div *ngIf=\"value.label\" fdp-form-group-header [fieldGroup]=\"index === 0 ? value : null\"></div>\n </div>\n </div>\n\n <div *ngFor=\"let field of fields.value; trackBy: trackByFieldName\" class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"_inlineColumnLayoutClass\" [style.order]=\"field.rank\">\n <ng-container *ngTemplateOutlet=\"field?.renderer || null\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- For nested form-group -->\n<ng-content select=\"fdp-form-group\"></ng-content>\n\n<ng-template #mainTitleTemplate>\n <ng-container *ngIf=\"_hintOptions?.content && _hintOptions.position === 'before'\">\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n </ng-container>\n\n <h5 class=\"fd-form-header__text\">\n {{ mainTitle }}\n </h5>\n\n <ng-container *ngIf=\"_hintOptions?.content && _hintOptions.position === 'after'\">\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n </ng-container>\n\n <ng-template #hintTemplate>\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"_hintOptions.content\"\n [glyph]=\"_hintOptions.glyph\"\n [placement]=\"_hintOptions.placement || null\"\n [triggers]=\"_hintOptions.trigger || []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n </ng-template>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DynamicFormControl, DynamicFormControlGroup, DynamicFormGroupControl } from '../dynamic-form-control';\n\n@Pipe({ name: 'getOrderedFieldControls' })\nexport class GetOrderedFieldControlsPipe implements PipeTransform {\n /** @hidden */\n transform(field: DynamicFormGroupControl): DynamicFormControl[] {\n // casting type explicity to the DynamicFormControl[] as this pipe will be used specifically with this data type\n return Object.values((field as DynamicFormControlGroup).controls).sort((a, b) =>\n (a.formItem.rank ?? -Infinity) > (b.formItem.rank ?? -Infinity) ? 1 : -1\n ) as DynamicFormControl[];\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormControlStatus, FormGroupDirective, NgForm } from '@angular/forms';\nimport { debounceTime, filter, startWith, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport {\n ColumnLayout,\n FieldHintOptions,\n PlatformFormFieldControl,\n HintOptions,\n LabelLayout,\n HintInput\n} from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormGeneratorFieldComponent } from '../form-generator-field/form-generator-field.component';\n\nimport { FormGeneratorService } from '../form-generator.service';\nimport {\n BaseDynamicFormItemGuiOptions,\n DynamicFormItem,\n DynamicFormItemGuiOptions,\n DynamicFormItemValidationObject,\n DynamicFormValue\n} from '../interfaces/dynamic-form-item';\nimport {\n DynamicFormControl,\n DynamicFormControlGroup,\n DynamicFormGroupControl,\n DynamicFormGroupControls\n} from '../dynamic-form-control';\nimport { DynamicFormGroup } from '../interfaces/dynamic-form-group';\nimport {\n DefaultGapLayout,\n DefaultHorizontalFieldLayout,\n DefaultHorizontalLabelLayout,\n DefaultVerticalFieldLayout,\n DefaultVerticalLabelLayout\n} from '../../form-group/constants';\nimport { FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS } from '../form-generator.tokens';\nimport { defaultFormGeneratorHintOptions } from '../config/default-form-generator-hint-options';\n\nlet formUniqueId = 0;\n\nexport const FDP_FORM_IGNORED_STATUSES: FormControlStatus[] = ['INVALID', 'PENDING', 'DISABLED'];\n\nexport interface SubmitFormEventResult {\n /**\n * @description Indicator if validation has been passed.\n */\n success: boolean;\n /**\n * @description Formatted form value.\n */\n value: DynamicFormValue | null;\n}\n\n/**\n * @description Form Generator component represents a high-level component\n * which includes @see FormGroup inside.\n */\n@Component({\n selector: 'fdp-form-generator',\n templateUrl: './form-generator.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormGeneratorComponent implements OnDestroy, OnChanges {\n /** @description Unique form name */\n @Input()\n formName = `fdp-form-generator-${formUniqueId++}`;\n\n /**\n * @description List of @see DynamicFormItem representing the list of items\n * to be rendered in the form.\n */\n @Input()\n set formItems(formItems: DynamicFormItem[]) {\n if (!formItems) {\n return;\n }\n\n this._formItems = formItems.map((item, index) => ({ ...item, rank: item.rank || index }));\n this._generateForm();\n }\n get formItems(): DynamicFormItem[] {\n return this._formItems;\n }\n\n /**\n * @description Form main title.\n */\n @Input()\n mainTitle: Nullable<string>;\n\n /**\n * Whether to hide main title. Default is false.\n */\n @Input()\n hideMainTItle = false;\n\n /**\n * @description\n * Hint for the main title\n */\n @Input()\n hint: HintInput;\n\n /**\n * @description Specify the column layout in the format `XLn-Ln-Mn-Sn`\n * where n is the number of columns and can be different for each size.\n * eg: XL2-L2-M2-S1 would create 2-column layouts for XL, L,\n * and M sizes and single-column layout for S size.\n */\n @Input()\n columnLayout: Nullable<string>;\n\n /**\n * @deprecated\n * Use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties.\n *\n * Defines form field label placement.\n */\n @Input()\n set labelLayout(value: LabelLayout) {\n if (isDevMode()) {\n console.warn(\n 'LabelLayout input property is deprecated. Please use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties instead'\n );\n }\n this._labelLayout = value;\n\n this.labelColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalLabelLayout : DefaultVerticalLabelLayout;\n this.fieldColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalFieldLayout : DefaultVerticalFieldLayout;\n }\n get labelLayout(): LabelLayout {\n return this._labelLayout;\n }\n\n /**\n * Defines label's column layout.\n */\n @Input()\n labelColumnLayout: ColumnLayout = DefaultVerticalLabelLayout;\n\n /**\n * Defines field's column layout.\n */\n @Input()\n fieldColumnLayout: ColumnLayout = DefaultVerticalFieldLayout;\n\n /**\n * Defines gap column layout.\n */\n @Input()\n gapColumnLayout: ColumnLayout = DefaultGapLayout;\n\n /** Whether all form items should have identical layout provided for form group. */\n @Input()\n unifiedLayout = true;\n\n /** Inline column layout */\n @Input()\n inlineColumnLayout: ColumnLayout = DefaultVerticalFieldLayout;\n\n /**\n * @hidden\n * Removes extra empty row.\n * TODO: remove after #7533 has been fixed.\n */\n @Input()\n noAdditionalContent = false;\n\n /**\n * @description Event which notifies parent component that the form has been successfully created\n * and all controls are in place.\n */\n @Output()\n formCreated = new EventEmitter<DynamicFormGroup>();\n\n /**\n * @description Event which notifies parent component that the form has been successfully validated\n * and submitted. Contains form\n */\n @Output()\n formSubmitted = new EventEmitter<DynamicFormValue>();\n\n /**\n * @description Event which notifies parent component that the form was submitted.\n */\n @Output()\n formSubmittedStatus = new EventEmitter<SubmitFormEventResult>();\n\n /**\n * @description Represents the form instance. @see NgForm\n */\n @ViewChild(NgForm)\n ngForm: NgForm;\n\n /** Inner form group directive. */\n @ViewChild(FormGroupDirective)\n formGroup: FormGroupDirective;\n\n /** Inner form fields */\n @ViewChildren(FormGeneratorFieldComponent)\n fields: QueryList<FormGeneratorFieldComponent>;\n\n /** Array of form field controls. */\n get formFields(): PlatformFormFieldControl[] {\n return this.fields\n ?.toArray()\n .filter((field) => !!field.fieldRenderer?.control)\n .map((field) => field.fieldRenderer.control!);\n }\n\n /**\n * @description Dynamically generated form. @see FormGeneratorService\n */\n form: DynamicFormGroup;\n /**\n * @description List of the form controls.\n */\n formControlItems: DynamicFormGroupControl[];\n\n /**\n * Set of flags representing if particular form item should be visible to the user.\n */\n shouldShowFields: { [key: string]: boolean } = {};\n\n /**\n * Flag representing that form is loading\n */\n formLoading = true;\n\n /**\n * Stream of form loading state.\n */\n loading$ = new BehaviorSubject<boolean>(this.formLoading);\n\n /**\n * Stream of last form submission status.\n */\n formSubmittedStatus$ = new Subject<SubmitFormEventResult>();\n\n /**\n * Stream of last form submission value.\n */\n formValue$ = new BehaviorSubject<DynamicFormValue>({});\n\n /** @hidden\n * To differentiate between first loading when skeletons be shown and subsequent loadings when busy indicator be shown\n */\n _firstLoadingDone = false;\n\n /**\n * @hidden\n */\n hintOptions: HintOptions;\n\n /** @hidden */\n _errorModels: { type: string; value: any }[] = [];\n\n /**\n * @hidden\n */\n private _formItems: DynamicFormItem[];\n\n /**\n * @hidden\n */\n private _formValueSubscription: Subscription;\n\n /**\n * @hidden\n * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _labelLayout: LabelLayout;\n\n /** @hidden */\n private readonly _defaultHintOptions: FieldHintOptions;\n\n /** @hidden */\n private _ngSubmitSubscription: Subscription | undefined;\n\n /** @hidden */\n constructor(\n private _fgService: FormGeneratorService,\n private _cd: ChangeDetectorRef,\n @Inject(FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS) _providedHintOptions: FieldHintOptions\n ) {\n this._defaultHintOptions = {\n ...defaultFormGeneratorHintOptions,\n ..._providedHintOptions\n };\n\n this._errorModels = this._getErrors();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hint) {\n if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {\n this.hintOptions = {\n ...this._defaultHintOptions,\n content: this.hint\n };\n } else {\n this.hintOptions = {\n ...this._defaultHintOptions,\n ...this.hint\n };\n }\n }\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._ngSubmitSubscription?.unsubscribe();\n }\n\n /**\n * Refreshes form items visibility with 'when' condition.\n */\n async refreshStepsVisibility(): Promise<void> {\n this.shouldShowFields = await this._fgService.checkVisibleFormItems(this.form);\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n */\n async _onSubmit(): Promise<void> {\n this.form.markAllAsTouched();\n this._cd.detectChanges();\n\n const formValue = await this._fgService.getFormValue(this.form);\n\n this.formSubmittedStatus.emit({ success: !this.form.invalid, value: formValue });\n this.formSubmittedStatus$.next({ success: !this.form.invalid, value: formValue });\n\n if (this.form.invalid) {\n return;\n }\n this.formSubmitted.emit(formValue);\n this.formValue$.next(formValue);\n\n this.form.markAsPristine();\n }\n\n /**\n * @hidden\n */\n private async _generateForm(): Promise<void> {\n this.formLoading = true;\n this.loading$.next(this.formLoading);\n\n const form = await this._fgService.generateForm(this.formName, this.formItems);\n\n this._formValueSubscription?.unsubscribe();\n\n this.form = form;\n\n this.formControlItems = this._getOrderedControls(form.controls);\n\n this.shouldShowFields = await this._fgService.checkVisibleFormItems(this.form);\n\n this._formValueSubscription = this.form.valueChanges\n .pipe(debounceTime(50), takeUntil(this._onDestroy$))\n .subscribe(async () => {\n this.shouldShowFields = await this._fgService.checkVisibleFormItems(this.form);\n this._cd.markForCheck();\n });\n\n this.formLoading = false;\n this._firstLoadingDone = true;\n\n this._cd.detectChanges();\n\n this.formCreated.emit(this.form);\n this.loading$.next(this.formLoading);\n\n if (!this.formGroup) {\n return;\n }\n\n this._listenToSubmit();\n }\n\n /**\n *\n * @hidden\n */\n _trackFn(index: number, value: DynamicFormGroupControl): string {\n return `${index}_${value.formItem.name}`;\n }\n\n /**\n *\n * @description Programmatically submit form.\n * This method also calls validation for the form items.\n */\n submit(): void {\n this.formGroup.onSubmit(new Event('submit'));\n }\n\n /** @hidden */\n private _getOrderedControls(controls: DynamicFormGroupControls): (DynamicFormControl | DynamicFormControlGroup)[] {\n return Object.values(controls).sort(\n (a, b) => (a.formItem?.rank ?? -Infinity) - (b.formItem?.rank ?? -Infinity)\n );\n }\n\n /**\n * @description\n * Used for extracting hintOptions from GuiOptions. This will coerce string | HintOptions to FieldHintOptions,\n * will combine default value of hints for form generator with provided options.\n * @param guiOptions\n */\n getHintOptions(\n guiOptions?: BaseDynamicFormItemGuiOptions | DynamicFormItemGuiOptions\n ): FieldHintOptions | undefined {\n if (!guiOptions?.hint) {\n return;\n }\n const formItemHintOptions = guiOptions.hint;\n const placement = guiOptions.hintPlacement || this._defaultHintOptions.placement;\n if (typeof formItemHintOptions === 'string' || formItemHintOptions instanceof TemplateRef) {\n return {\n ...this._defaultHintOptions,\n placement,\n content: formItemHintOptions\n };\n }\n return {\n ...this._defaultHintOptions,\n placement,\n ...formItemHintOptions\n };\n }\n\n /** @hidden */\n _isAdvancedError(error: any): error is DynamicFormItemValidationObject {\n return error.heading && error.description && error.type;\n }\n\n /** @hidden */\n private _getErrors(): { type: string; value: any }[] {\n const returnErrors: { type: string; value: any }[] = [];\n const registeredErrors = this._fgService.validationErrorHints;\n Object.entries(registeredErrors).forEach((type) => {\n const [errorType, errorValue] = type;\n\n returnErrors.push({\n type: errorType,\n value: errorValue\n });\n });\n\n return returnErrors;\n }\n\n /** @hidden */\n private _listenToSubmit(): void {\n this._ngSubmitSubscription?.unsubscribe();\n this._ngSubmitSubscription = this.formGroup.ngSubmit\n .pipe(\n switchMap(() =>\n this.formGroup.statusChanges!.pipe(\n startWith(this.formGroup.status),\n filter((status: FormControlStatus) => status !== 'PENDING'),\n take(1),\n // filter((status) => status !== 'INVALID'),\n takeUntil(this._onDestroy$)\n )\n )\n )\n .subscribe(async () => {\n await this._onSubmit();\n this._listenToSubmit();\n });\n }\n}\n","<fd-busy-indicator *ngIf=\"_firstLoadingDone; else loadingTemplate\" [loading]=\"formLoading\" [block]=\"true\">\n <fdp-form-group\n *ngIf=\"form\"\n [hint]=\"hint\"\n [mainTitle]=\"mainTitle\"\n [hideMainTItle]=\"hideMainTItle\"\n [formGroup]=\"form\"\n [columnLayout]=\"columnLayout\"\n [labelColumnLayout]=\"labelColumnLayout\"\n [fieldColumnLayout]=\"fieldColumnLayout\"\n [gapColumnLayout]=\"gapColumnLayout\"\n [unifiedLayout]=\"unifiedLayout\"\n [inlineColumnLayout]=\"inlineColumnLayout\"\n [useForm]=\"true\"\n >\n <ng-container *ngFor=\"let error of _errorModels\">\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n <ng-container *ngIf=\"_isAdvancedError(directiveError)\">\n <ng-container *ngIf=\"directiveError.heading\">\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"directiveError.description\">\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!_isAdvancedError(directiveError)\">\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n </ng-container>\n </span>\n </ng-container>\n <ng-container *ngFor=\"let field of formControlItems; trackBy: _trackFn\">\n <ng-container\n *ngTemplateOutlet=\"\n field.type === 'field' ? fieldRenderer : groupRenderer;\n context: { field: field, formFieldName: field.formItem.name, rank: field.formItem?.rank || 0 }\n \"\n ></ng-container>\n <ng-template\n #fieldRenderer\n let-field=\"field\"\n let-formFieldName=\"formFieldName\"\n let-formGroupName=\"formGroupName\"\n let-rank=\"rank\"\n >\n <ng-container\n *fdpDynamicFormControlField=\"field; show: shouldShowFields[field.formItem.name] !== false\"\n >\n <fdp-form-generator-field\n [hintOptions]=\"getHintOptions(field.formItem.guiOptions)\"\n [form]=\"form\"\n [shouldShow]=\"shouldShowFields[field.formItem.name] !== false\"\n [field]=\"field\"\n [formFieldName]=\"formFieldName\"\n [formGroupNamePath]=\"formGroupName\"\n [rank]=\"rank\"\n ></fdp-form-generator-field>\n </ng-container>\n </ng-template>\n <ng-template #groupRenderer>\n <fdp-form-field-group\n [hintOptions]=\"getHintOptions(field.formItem.guiOptions)\"\n [label]=\"field.formItem.message || ''\"\n [labelColumnLayout]=\"field.formItem.guiOptions?.labelColumnLayout\"\n [fieldColumnLayout]=\"field.formItem.guiOptions?.fieldColumnLayout\"\n [gapColumnLayout]=\"field.formItem.guiOptions?.gapColumnLayout\"\n [formName]=\"field.formItem.name\"\n >\n <ng-container *ngFor=\"let groupField of field | getOrderedFieldControls\">\n <ng-container\n *fdpDynamicFormControlField=\"\n groupField;\n show: shouldShowFields[groupField.formItem.name!] !== false\n \"\n >\n <fdp-form-generator-field\n [hintOptions]=\"getHintOptions(groupField.formItem.guiOptions)\"\n [form]=\"form\"\n [field]=\"groupField\"\n [shouldShow]=\"shouldShowFields[groupField.formItem.name!] !== false\"\n [formFieldName]=\"groupField.formItem.name\"\n [formGroupNamePath]=\"field.formItem.name\"\n [rank]=\"groupField.formItem.rank || 0\"\n ></fdp-form-generator-field>\n </ng-container>\n </ng-container>\n </fdp-form-field-group>\n </ng-template>\n </ng-container>\n <fdp-form-field *ngIf=\"!noAdditionalContent\" [column]=\"1\" [rank]=\"formControlItems.length + 1\">\n <!-- For user-defined elements, like submit button -->\n <ng-content></ng-content>\n </fdp-form-field>\n </fdp-form-group>\n</fd-busy-indicator>\n\n<ng-template #loadingTemplate>\n <fd-skeleton width=\"100%\" height=\"100px\" style=\"padding: 1rem\">\n <svg:rect x=\"0\" y=\"0\" rx=\"4\" width=\"15%\" height=\"8\" />\n <svg:rect x=\"0\" y=\"20\" rx=\"4\" width=\"25%\" height=\"16\" />\n\n <svg:rect x=\"35%\" y=\"0\" rx=\"4\" width=\"15%\" height=\"8\" />\n <svg:rect x=\"35%\" y=\"20\" rx=\"4\" width=\"25%\" height=\"16\" />\n\n <svg:rect x=\"0\" y=\"60\" rx=\"4\" width=\"15%\" height=\"8\" />\n <svg:rect x=\"0\" y=\"80\" rx=\"4\" width=\"25%\" height=\"16\" />\n </fd-skeleton>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { InputComponent } from './input.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [InputComponent],\n imports: [\n CommonModule,\n FormModule,\n FormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [InputComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformInputModule {}\n","import { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\nimport { Directive, forwardRef } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-form-group[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedFormGroupCompactDirective)\n }\n ]\n})\nexport class DeprecatedFormGroupCompactDirective extends DeprecatedCompactDirective {\n /** @hidden */\n constructor() {\n super('fdp-form-group');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { FormModule as FdFormModule } from '@fundamental-ngx/core/form';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { InlineHelpModule } from '@fundamental-ngx/core/inline-help';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { FormGroupComponent } from './form-group.component';\nimport { FormFieldComponent } from './form-field/form-field.component';\nimport { InputMessageGroupWithTemplate } from '../input-message-group-with-template/input-message-group-with-template.component';\nimport { FormFieldGroupComponent } from './form-field-group/form-field-group.component';\nimport { FormFieldControlExtrasComponent } from './form-field-extras/form-field-extras.component';\nimport { FormGroupHeaderComponent } from './form-group-header/form-group-header.component';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FieldGroupRowValuePipe } from './pipes/field-group-row-value.pipe';\nimport { DeprecatedFormGroupCompactDirective } from './deprecated-form-group-compact.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { FormFieldErrorDirective } from './form-field-error/form-field-error.directive';\nimport { FormFieldErrorHeadingDirective } from './form-field-error/form-field-error-heading.directive';\nimport { FormFieldErrorDescriptionDirective } from './form-field-error/form-field-error-description.directive';\n\nconst EXPORTABLE_DECLARATIONS = [\n FormGroupComponent,\n FormFieldComponent,\n InputMessageGroupWithTemplate,\n FormFieldGroupComponent,\n FormFieldControlExtrasComponent,\n FormGroupHeaderComponent,\n FieldGroupRowValuePipe,\n DeprecatedFormGroupCompactDirective,\n FormFieldErrorDirective,\n FormFieldErrorHeadingDirective,\n FormFieldErrorDescriptionDirective\n];\n\n@NgModule({\n declarations: [...EXPORTABLE_DECLARATIONS],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FdFormModule,\n InlineHelpModule,\n PopoverModule,\n IconModule,\n LinkModule,\n ContentDensityModule\n ],\n exports: [...EXPORTABLE_DECLARATIONS, ContentDensityModule]\n})\nexport class FdpFormGroupModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n/**\n * Used to represent an option of the select component.\n */\n@Component({\n selector: 'fdp-option',\n template: `<li fd-option [id]=\"id\" [value]=\"value\" [disabled]=\"disabled\"><ng-content></ng-content></li>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OptionComponent {\n /** Option id attribute */\n @Input()\n id = `fdp-option-${nextUniqueId++}`;\n\n /** Value of the option. Similar to how a native select operates. */\n @Input()\n value: any;\n\n /** Whether to disable this option specifically. */\n @Input()\n disabled = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicComponentService, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { SelectModule } from '@fundamental-ngx/core/select';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\nimport { SelectComponent } from './select/select.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { OptionComponent } from './option/option.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [SelectComponent, OptionComponent],\n imports: [\n CommonModule,\n FormsModule,\n InputGroupModule,\n ListModule,\n PipeModule,\n ButtonModule,\n PlatformAutoCompleteModule,\n PopoverModule,\n IconModule,\n ReactiveFormsModule,\n SelectModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n providers: [DynamicComponentService],\n exports: [\n SelectComponent,\n OptionComponent,\n TemplateModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ]\n})\nexport class PlatformSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormModule as FdFormModule } from '@fundamental-ngx/core/form';\nimport { RadioModule } from '@fundamental-ngx/core/radio';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { RadioGroupComponent } from './radio-group.component';\nimport { RadioButtonComponent } from './radio/radio.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n imports: [\n CommonModule,\n FdFormModule,\n FormsModule,\n RadioModule,\n ReactiveFormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [\n RadioGroupComponent,\n RadioButtonComponent,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n declarations: [RadioGroupComponent, RadioButtonComponent]\n})\nexport class PlatformRadioGroupModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormControlModule } from '@fundamental-ngx/core/form';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { TextAreaComponent } from './text-area.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FormControlModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule,\n I18nModule\n ],\n exports: [TextAreaComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n declarations: [TextAreaComponent]\n})\nexport class PlatformTextAreaModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { SwitchModule } from '@fundamental-ngx/core/switch';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { SwitchComponent } from './switch/switch.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [SwitchComponent],\n imports: [\n CommonModule,\n FormsModule,\n SwitchModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [SwitchComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformSwitchModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { DataProvider, PlatformConfig, MatchingStrategy } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Multi-Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class MultiComboboxConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(\n obj: Partial<MultiComboboxConfig>\n ): (platformConfig: PlatformConfig) => MultiComboboxConfig {\n const useFactory = (platformConfig: PlatformConfig): MultiComboboxConfig =>\n Object.assign(new MultiComboboxConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\n\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, fromEvent, isObservable, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport {\n ContentDensity,\n FocusEscapeDirection,\n KeyUtil,\n Nullable,\n RangeSelector,\n TemplateDirective\n} from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { ListComponent } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport {\n ArrayMultiComboBoxDataSource,\n coerceArraySafe,\n CollectionBaseInput,\n isDataSource,\n isFunction,\n isJsObject,\n isOptionItem,\n isSelectableOptionItem,\n isString,\n MatchingBy,\n MatchingStrategy,\n MultiComboBoxDataSource,\n ObservableMultiComboBoxDataSource,\n PlatformFormField,\n PlatformFormFieldControl,\n SelectableOptionItem\n} from '@fundamental-ngx/platform/shared';\n\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { TextAlignment } from '../../combobox';\nimport { MultiComboboxConfig } from '../multi-combobox.config';\n\nexport const MAP_LIMIT = new InjectionToken<number>('Map limit≥', { factory: () => 12 });\n\nexport type FdpMultiComboboxDataSource<T> = MultiComboBoxDataSource<T> | Observable<T[]> | T[];\n\nexport class MultiComboboxSelectionChangeEvent {\n /**\n * Multi Combobox selection change event\n * @param source Multi Combobox component\n * @param selectedItems Selected items\n */\n constructor(\n public source: BaseMultiCombobox,\n public selectedItems: SelectableOptionItem['value'] // Contains selected items\n ) {}\n}\n\n@Directive()\nexport abstract class BaseMultiCombobox extends CollectionBaseInput implements OnChanges, AfterViewInit, OnDestroy {\n /** Provides selected items. */\n @Input()\n selectedItems: any[] = [];\n\n /** Provides maximum height for the optionPanel. */\n @Input()\n maxHeight = '250px';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = false;\n\n /** Datasource for suggestion list. */\n @Input()\n set dataSource(value: FdpMultiComboboxDataSource<any>) {}\n get dataSource(): FdpMultiComboboxDataSource<any> {\n return this._dataSource;\n }\n\n /** Whether the autocomplete should be enabled; Enabled by default. */\n @Input()\n autoComplete = true;\n\n /**\n * TODO: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the multi-combobox should be built on mobile mode. */\n @Input()\n mobile = false;\n\n /** Multi Combobox Mobile Configuration, it's applied only, when mobile is enabled. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Tells the multi-combobox if we need to group items. */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation). */\n @Input()\n groupKey: string;\n\n /** The field to show data in secondary column. */\n @Input()\n secondaryKey: string;\n\n /** Show the second column (applicable for two columns layout). */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (applicable for two columns layout). */\n @Input()\n secondaryTextAlignment: TextAlignment = 'right';\n\n /** Turns on/off Adjustable Width feature. */\n @Input()\n autoResize = false;\n\n /** Value of the multi combobox */\n @Input()\n set value(value: any) {\n super.setValue(value, true);\n }\n get value(): any {\n return super.getValue();\n }\n\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /** Sets title attribute to addon button. */\n @Input()\n addonIconTitle: string;\n\n /** Sets invalid entry message. */\n @Input()\n invalidEntryMessage = 'Invalid entry';\n\n /** Turns limitless mode, ON or OFF */\n @Input()\n limitless: boolean;\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<MultiComboboxSelectionChangeEvent>();\n\n /** @hidden Emits event when the menu is opened/closed. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataRequested = new EventEmitter<void>();\n\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataReceived = new EventEmitter<void>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n searchInputElement: ElementRef;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /**\n * @hidden\n * Custom Option item Template.\n */\n optionItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Group Header item Template.\n */\n groupItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Secondary item Template.\n */\n secondaryItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Selected option item Template.\n */\n selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n _contentDensity: ContentDensity = this.multiComboboxConfig.contentDensity;\n\n /** @hidden */\n listTemplate: TemplateRef<any>;\n\n /** Set the input text of the input. */\n set inputText(value: string) {\n this._inputTextValue = value;\n\n this.onTouched();\n }\n\n /** Get the input text of the input. */\n get inputText(): string {\n return this._inputTextValue || '';\n }\n\n /** Is empty search field. */\n get isEmptyValue(): boolean {\n return this.inputText.trim().length === 0;\n }\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** Whether the Multi Input is opened. */\n isOpen = false;\n\n /**\n * @hidden\n * List of matched suggestions\n */\n _suggestions: SelectableOptionItem[];\n\n /**\n * @hidden\n * Grouped suggestions mapped to array.\n */\n _flatSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n _fullFlatSuggestions: SelectableOptionItem[] = [];\n\n /**\n * @hidden\n * List of selected suggestions\n */\n _selectedSuggestions: SelectableOptionItem[];\n\n /**\n * @hidden\n * Max width of list container\n */\n maxWidth: number;\n\n /**\n * @hidden\n * Min width of list container\n */\n minWidth: number;\n\n /**\n * @hidden\n * Need for opening mobile version\n */\n openChange = new Subject<boolean>();\n\n /** @hidden */\n selectedShown$ = new BehaviorSubject(false);\n\n /** @hidden */\n protected _dataSource: FdpMultiComboboxDataSource<any>;\n\n /** @hidden */\n private _inputTextValue: string;\n\n /** @hidden */\n private _previousInputText: string;\n\n /** @hidden */\n private _matchingStrategy: MatchingStrategy = this.multiComboboxConfig.matchingStrategy;\n\n /** @hidden */\n private _dsSubscription: Subscription | null = null;\n\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n\n /**\n * @hidden\n * Keys, that won't trigger the popover's open state, when dispatched on search input.\n */\n private readonly _nonOpeningKeys: number[] = [\n BACKSPACE,\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT\n ];\n\n /** @hidden */\n private _timerSub$: Subscription;\n\n /** @hidden */\n private _previousState?: FormStates;\n\n /** @hidden */\n private _previousStateMessage: Nullable<string>;\n\n /** @hidden */\n protected readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n private _displayFn = (value: any): string => this.displayValue(value);\n\n /** @hidden */\n private _secondaryFn = (value: any): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n } else if (isJsObject(value) && this.secondaryKey) {\n const currentItem = this.objectGet(value, this.secondaryKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return value;\n }\n };\n\n /** @hidden */\n protected constructor(\n protected readonly _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n protected multiComboboxConfig: MultiComboboxConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Inject(MAP_LIMIT) private _mapLimit: number\n ) {\n super(_cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n const dataSourceChange = changes['dataSource'];\n\n if (dataSourceChange) {\n this._initializeDataSource(dataSourceChange.currentValue);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n this._previousInputText = this.inputText;\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiComboBoxDataSource<any>).close();\n }\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n\n /**\n * @hidden\n * Method to set input text as item label.\n */\n abstract setInputTextFromOptionItem(item: SelectableOptionItem): void;\n\n /**\n * @hidden\n * Toggle item selection.\n */\n abstract toggleSelection(item: SelectableOptionItem): void;\n\n /**\n * @hidden\n * Toggle item selection by input text value.\n */\n abstract toggleSelectionByInputText(): void;\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n this.selectedItems = coerceArraySafe(value);\n super.writeValue(this.selectedItems);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /** @hidden */\n popoverOpenChangeHandle(isOpen: boolean): void {\n this.isOpen = isOpen;\n this._rangeSelector.reset();\n }\n\n /** Opens the select popover body. */\n open(): void {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this._cd.markForCheck();\n }\n\n /** Closes the select popover body. */\n close(): void {\n this._rangeSelector.reset();\n this.selectedShown$.next(false);\n this.inputText = '';\n this._focusToSearchField();\n\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n showList(isOpen: boolean): void {\n if (this.isOpen !== isOpen) {\n this.isOpen = isOpen;\n this.onTouched();\n this.openChange.next(isOpen);\n }\n\n if (!this.isOpen) {\n this.searchTermChanged('');\n }\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n searchTermChanged(text: string = this.inputText): void {\n if (text) {\n this.open();\n }\n\n const map = new Map();\n map.set('query', text);\n\n if (!this.limitless) {\n map.set('limit', this._mapLimit);\n }\n\n this.ds.match(map);\n\n this._cd.markForCheck();\n }\n\n /**\n * Handle Click on Button\n * @hidden\n */\n onPrimaryButtonClick(isOpen: boolean): void {\n if (!isOpen) {\n this.searchTermChanged('');\n }\n\n if (this.openDropdownOnAddOnClicked) {\n this.showList(!isOpen);\n } else if (this.isOpen) {\n this.showList(false);\n }\n\n this.searchInputElement?.nativeElement.focus();\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n onInputKeydownHandler(event: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this.showList(true);\n }\n\n if (this.isOpen && this.listComponent) {\n this.listComponent.setItemActive(0);\n } else if (!this.isOpen) {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this.toggleSelectionByInputText();\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this.showList(false);\n } else if (!KeyUtil.isKeyCode(event, [...this._nonOpeningKeys, CONTROL])) {\n this.showList(true);\n const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') && !KeyUtil.isKeyType(event, 'numeric');\n if (acceptedKeys) {\n // SetTimeout is needed for input to receive new value.\n setTimeout(() => {\n if (this.isEmptyValue) {\n this.listComponent?.setItemActive(0);\n }\n });\n }\n }\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this.searchInputElement?.nativeElement.focus();\n }\n }\n\n /**\n * @hidden\n * Method to emit change event\n */\n _emitChangeEvent(): void {\n const event = new MultiComboboxSelectionChangeEvent(this, this.value);\n\n this.selectionChange.emit(event);\n }\n\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n protected setValue(value: any, emitOnChange = true): void {\n this.selectedItems = coerceArraySafe(value);\n super.setValue(this.selectedItems, emitOnChange);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /** @hidden */\n protected _setSelectedSuggestions(): void {\n this._selectedSuggestions = [];\n\n if (!this.selectedItems?.length) {\n return;\n }\n\n for (let i = 0; i < this.selectedItems.length; i++) {\n const selectedItem = this.selectedItems[i];\n const finder = (item: SelectableOptionItem): boolean =>\n item.label === selectedItem || item.value === selectedItem;\n const idFromFullFlatSuggestions = this._fullFlatSuggestions.findIndex(finder);\n const idFromSuggestions = (this._suggestions || []).findIndex(finder);\n const itemIndex = Math.max(idFromFullFlatSuggestions, idFromSuggestions);\n const collection = idFromFullFlatSuggestions !== -1 ? this._fullFlatSuggestions : this._suggestions;\n if (idFromFullFlatSuggestions === -1 && idFromSuggestions === -1) {\n this._convertToOptionItems([selectedItem]).forEach((optionItem: SelectableOptionItem) => {\n optionItem.selected = true;\n this._selectedSuggestions.push(optionItem);\n });\n } else if (\n this._suggestions &&\n collection === this._suggestions &&\n !this._fullFlatSuggestions.includes(collection[itemIndex])\n ) {\n this._fullFlatSuggestions.push(collection[itemIndex]);\n }\n if (itemIndex > -1) {\n this._selectedSuggestions.push(collection[itemIndex]);\n collection[itemIndex].selected = true;\n }\n }\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n protected get ds(): MultiComboBoxDataSource<any> {\n return this.dataSource as MultiComboBoxDataSource<any>;\n }\n\n /** @hidden */\n protected _focusToSearchField(): void {\n this.searchInputElement?.nativeElement.focus();\n }\n\n /** @hidden\n * Method that picks other value moved from current one by offset, called only when Multi Combobox is closed */\n private _chooseOtherItem(offset: number): void {\n if (this._selectedSuggestions?.length === this._flatSuggestions.length) {\n this.inputText = '';\n return;\n }\n\n const activeValue = this._getSelectItemByInputValue(this.inputText);\n const index = this._flatSuggestions.findIndex((value) => value === activeValue);\n const position = !this.inputText && offset === -1 ? this._flatSuggestions.length - 1 : index + offset;\n const item = this._flatSuggestions[position];\n\n if (item) {\n this.setInputTextFromOptionItem(item);\n }\n\n const selectedIndex = this._selectedSuggestions.findIndex((value) => value.label === item?.label);\n if (selectedIndex !== -1) {\n this._chooseOtherItem(offset);\n }\n }\n\n /** @hidden */\n protected _getSelectItemByInputValue(displayValue: string): SelectableOptionItem | undefined {\n return this._flatSuggestions.find((value) => value.label === displayValue);\n }\n\n /** @hidden\n * Map grouped values to array. */\n protected _flattenGroups(items: SelectableOptionItem[]): SelectableOptionItem[] {\n return items.reduce((result, item) => result.concat(item.children ?? []), <SelectableOptionItem[]>[]);\n }\n\n /** @hidden */\n private _initializeDataSource(ds: FdpMultiComboboxDataSource<any>): void {\n this._suggestions = [];\n this._flatSuggestions = [];\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiComboBoxDataSource<any>).close();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = null;\n }\n }\n // Convert whatever comes in as DataSource so we can work with it identically\n this._dataSource = this._openDataStream(ds);\n }\n\n /** @hidden */\n private _openDataStream(ds: FdpMultiComboboxDataSource<any>): MultiComboBoxDataSource<any> {\n const initDataSource = this._toDataStream(ds);\n let isInitDataSource = true;\n\n if (initDataSource === undefined) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n\n initDataSource.limitless = this.limitless;\n\n /**\n * This is single point of data entry to the component. We dont want to set data on different\n * places. If any new data comes in either you do a search and you want to pass initial data\n * its here.\n */\n this._dsSubscription = new Subscription();\n const dsSub = initDataSource\n .open()\n .pipe(skip(1), takeUntil(this._destroyed))\n .subscribe((data) => {\n if (data.length === 0) {\n this._processingEmptyData();\n\n return;\n } else {\n this._previousInputText = this.inputText;\n }\n\n this._suggestions = this._convertToOptionItems(data).map((optionItem: SelectableOptionItem) => {\n const selectedElement = this._selectedSuggestions.find(\n (selectedItem: SelectableOptionItem) => selectedItem.id === optionItem.id\n );\n if (selectedElement) {\n optionItem.selected = selectedElement.selected;\n }\n return optionItem;\n });\n\n this._flatSuggestions = this.isGroup ? this._flattenGroups(this._suggestions) : this._suggestions;\n\n if (isInitDataSource) {\n this._fullFlatSuggestions = this._flatSuggestions;\n isInitDataSource = false;\n }\n\n const selectedSuggestionsLength = this._selectedSuggestions.length;\n if (selectedSuggestionsLength > 0) {\n for (let i = 0; i < selectedSuggestionsLength; i++) {\n const selectedSuggestion = this._selectedSuggestions[i];\n const idx = this._suggestions.findIndex((item) => equal(item.value, selectedSuggestion.value));\n\n if (idx !== -1) {\n this._suggestions[idx].selected = true;\n }\n }\n }\n\n this.stateChanges.next('initDataSource.open().');\n\n this._cd.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n\n this._dsSubscription.add(initDataSource.onDataRequested().subscribe(this.onDataRequested));\n this._dsSubscription.add(initDataSource.onDataReceived().subscribe(this.onDataReceived));\n\n initDataSource.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.secondaryKey) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n initDataSource.dataProvider.setMatchingBy(matchingBy);\n initDataSource.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n\n if (!this.limitless) {\n map.set('limit', MAP_LIMIT);\n }\n\n initDataSource.match(map);\n\n return initDataSource;\n }\n\n /** @hidden */\n private _processingEmptyData(): void {\n this._cd.detectChanges();\n\n this.inputText = this._previousInputText;\n\n this._setInvalidEntry();\n\n if (this._timerSub$) {\n this._timerSub$.unsubscribe();\n }\n\n this._timerSub$ = timer(3000).subscribe(() => this._unsetInvalidEntry());\n }\n\n /** @hidden */\n private _setInvalidEntry(): void {\n if (this._previousState || this._previousStateMessage) {\n return;\n }\n\n this._previousState = this.state;\n this.state = 'error';\n\n this._previousStateMessage = this.stateMessage;\n this.stateMessage = this.invalidEntryMessage;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n private _unsetInvalidEntry(): void {\n this.state = this._previousState;\n this._previousState = undefined;\n\n this.stateMessage = this._previousStateMessage;\n this._previousStateMessage = undefined;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n private _toDataStream(source: FdpMultiComboboxDataSource<any>): MultiComboBoxDataSource<any> | undefined {\n if (isDataSource(source)) {\n return source as MultiComboBoxDataSource<any>;\n }\n\n if (Array.isArray(source)) {\n return new ArrayMultiComboBoxDataSource<any>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableMultiComboBoxDataSource<any>(source);\n }\n\n return undefined;\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = (this._element.querySelector('fd-input-group') as HTMLElement).getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = this.autoResize ? window.innerWidth - scrollBarWidth - rect.left : this.minWidth;\n this.minWidth = rect.width - 2;\n this._cd.markForCheck();\n }\n\n /**\n * Convert original data to SelectableOptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): SelectableOptionItem[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isSelectableOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as SelectableOptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to SelectableOptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): SelectableOptionItem[] {\n if (this.isGroup) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n protected _convertObjectsToGroupOptionItems<K>(items: K[]): SelectableOptionItem[] {\n const group: { [key: string]: K[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: SelectableOptionItem = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.secondaryKey) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n\n return selectItem;\n });\n }\n\n /**\n * Convert object[] data to Secondary SelectableOptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): SelectableOptionItem[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n id: this.lookupValue(value),\n secondaryText: this.objectGet(value, this.secondaryKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to SelectableOptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: any[]): SelectableOptionItem[] {\n const selectItems: SelectableOptionItem[] = [];\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: value,\n id: this.lookupValue(value),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to SelectableOptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): SelectableOptionItem[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n id: this.lookupValue(value),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * @hidden\n * Assign custom templates\n */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\nimport { SelectableOptionItem } from '@fundamental-ngx/platform/shared';\n\nexport const MULTICOMBOBOX_COMPONENT = new InjectionToken<string[]>('MultiComboboxInterface');\n\n/**\n * Combobox Interface to have typing and avoid circular dependency between\n * MultiComboboxComponent <==> MultiComboboxMobileComponent\n */\nexport interface MultiComboboxInterface extends MobileMode {\n _suggestions: SelectableOptionItem[];\n _selectedSuggestions: SelectableOptionItem[];\n selectedShown$: BehaviorSubject<boolean>;\n openChange: Subject<boolean>;\n\n moreClicked(): void;\n dialogApprove(): void;\n dialogDismiss(backup: SelectableOptionItem[]): void;\n searchTermChanged(term?: string): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { SelectableOptionItem } from '@fundamental-ngx/platform/shared';\nimport { MULTICOMBOBOX_COMPONENT, MultiComboboxInterface } from '../../multi-combobox.interface';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-multi-combobox-mobile',\n templateUrl: './multi-combobox-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiComboboxMobileComponent extends MobileModeBase<MultiComboboxInterface> implements OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n selectedShown$ = this._component.selectedShown$;\n\n /** @hidden */\n private _selectedBackup: SelectableOptionItem[];\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n @Inject(MULTICOMBOBOX_COMPONENT) multiComboboxComponent: MultiComboboxInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, multiComboboxComponent, MobileModeControl.MULTI_COMBOBOX, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiComboboxOpenChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.onDestroy();\n }\n\n /** @hidden */\n showSelected(): void {\n const isSelectedShown = this.selectedShown$.getValue();\n\n if (isSelectedShown) {\n this._component.searchTermChanged();\n this.selectedShown$.next(false);\n return;\n }\n\n this._component.moreClicked();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n return;\n }\n\n this._selectedBackup = this._component._selectedSuggestions?.length\n ? [...this._component._selectedSuggestions]\n : [];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiComboboxOpenChange(): void {\n this._component.openChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n escKeyCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title fd-dialog-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n\n <button\n *ngIf=\"selectedShown$ | async\"\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"emphasized\"\n [title]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n\n <button\n *ngIf=\"(selectedShown$ | async) === false\"\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"transparent\"\n [title]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { MultiComboboxMobileComponent } from './multi-combobox/multi-combobox-mobile.component';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n declarations: [MultiComboboxMobileComponent],\n imports: [BarModule, DialogModule, ButtonModule, CommonModule, I18nModule],\n entryComponents: [MultiComboboxMobileComponent],\n exports: [MultiComboboxMobileComponent]\n})\nexport class PlatformMultiComboboxMobileModule {}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { A, DOWN_ARROW, ENTER, ESCAPE, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n Inject,\n Injector,\n OnInit,\n Optional,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n isDevMode\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport equal from 'fast-deep-equal';\n\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport {\n DATA_PROVIDERS,\n DataProvider,\n MultiComboBoxDataSource,\n OptionItem,\n PlatformFormField,\n PlatformFormFieldControl,\n SelectableOptionItem\n} from '@fundamental-ngx/platform/shared';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { TokenizerComponent } from '@fundamental-ngx/core/token';\nimport { AutoCompleteEvent } from '../../auto-complete/auto-complete.directive';\nimport { BaseMultiCombobox, MAP_LIMIT } from '../commons/base-multi-combobox';\nimport { PlatformMultiComboboxMobileModule } from '../multi-combobox-mobile/multi-combobox-mobile.module';\nimport { MultiComboboxMobileComponent } from '../multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component';\nimport { MultiComboboxConfig } from '../multi-combobox.config';\nimport { MULTICOMBOBOX_COMPONENT } from '../multi-combobox.interface';\n\nlet deprecationWarningShown = false;\n\n/**\n * This component can work with both string primitives as well as with complex objects. In order\n * to use objects user must provide an unique ID to lookupkey, which will be used in comparing\n * each items of array. It is important to provide lookupkey value as there might be multiple\n * items with same name but different properties which is to be differently identified otherwise\n * it will be treated as same objects.\n */\n\n@Component({\n selector: 'fdp-multi-combobox',\n templateUrl: './multi-combobox.component.html',\n styleUrls: ['./multi-combobox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: FD_FORM_FIELD_CONTROL,\n useExisting: MultiComboboxComponent,\n multi: true\n },\n contentDensityObserverProviders()\n ]\n})\nexport class MultiComboboxComponent extends BaseMultiCombobox implements OnInit, AfterViewInit {\n /** @hidden */\n @ViewChild('mobileControlTemplate')\n mobileControlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n _tokenizer: TokenizerComponent;\n\n /**\n * @hidden\n * List of selected suggestions\n */\n _selectedSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n readonly elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n readonly _dynamicComponentService: DynamicComponentService,\n @Optional() @Inject(DATA_PROVIDERS) private _providers: Map<string, DataProvider<any>>,\n readonly _multiComboboxConfig: MultiComboboxConfig,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Inject(MAP_LIMIT) _mapLimit: number,\n readonly contentDensityObserver: ContentDensityObserver\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n dialogConfig,\n _multiComboboxConfig,\n formField,\n formControl,\n _mapLimit\n );\n\n if (!deprecationWarningShown && isDevMode()) {\n console.warn(\n `[DEPRECATION] Platform Multi Combobox component is deprecated since v0.39.0. Please migrate to Core's version.`\n );\n deprecationWarningShown = true;\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n\n const providers = this._providers?.size === 0 ? this._multiComboboxConfig.providers : this._providers;\n // if we have both prefer dataSource\n if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) {\n this.dataSource = new MultiComboBoxDataSource(providers.get(this.entityClass)!);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n\n this._setSelectedSuggestions();\n\n this._tokenizer._showOverflowPopover = false;\n }\n\n /** @hidden */\n toggleSelection(item: SelectableOptionItem): void {\n const idx = this._getTokenIndexByIdlOrValue(item);\n\n if (idx === -1) {\n this._selectedSuggestions.push(item);\n } else {\n this._selectedSuggestions.splice(idx, 1);\n }\n\n item.selected = !item.selected;\n\n this._propagateChange();\n\n if (!this._selectedSuggestions.length) {\n this._focusToSearchField();\n }\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n onOptionCheckboxClicked(event: MouseEvent, index: number): void {\n event.stopPropagation();\n this._onListElementClicked(event, index);\n }\n\n /** @hidden */\n onCompleteTerm(event: AutoCompleteEvent): void {\n if (event.forceClose) {\n this.toggleSelectionByInputText(event.term);\n this.close();\n }\n }\n\n /** @hidden */\n toggleSelectionByInputText(text = this.inputText): void {\n const item = this._getSelectItemByInputValue(text);\n if (item) {\n this.toggleSelection(item);\n this.inputText = '';\n }\n }\n\n /**\n * @hidden\n * Method that selects all possible options.\n * *select* attribute – if *true* select all, if *false* unselect all\n * */\n handleSelectAllItems(select: boolean): void {\n this._flatSuggestions.forEach((item) => (item.selected = select));\n this._selectedSuggestions = select ? [...this._flatSuggestions] : [];\n this._rangeSelector.reset();\n\n this._propagateChange();\n }\n\n /** @hidden */\n navigateByTokens(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW]) && this.isOpen) {\n this.listComponent.items?.first.focus();\n }\n }\n\n /** @hidden */\n removeToken(token: SelectableOptionItem, event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n }\n this.toggleSelection(token);\n this._rangeSelector.reset();\n }\n\n /** @hidden */\n moreClicked(): void {\n this._suggestions = this.isGroup\n ? this._convertObjectsToGroupOptionItems(this._selectedSuggestions.map(({ value }) => value))\n : this._suggestions.filter((value) =>\n this._selectedSuggestions.some((item) => equal(item.value, value.value))\n );\n\n this.showList(true);\n this.selectedShown$.next(true);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n onBlur(event: FocusEvent): void {\n const target = event.relatedTarget as HTMLElement;\n if (target) {\n const isList = !!target.closest('.fdp-multi-combobox__list-container');\n if (isList) {\n return;\n }\n if (\n this._suggestions?.length === 1 &&\n this._suggestions[0].label === this.inputText &&\n !this._suggestions[0].selected\n ) {\n this.toggleSelection(this._suggestions[0]);\n }\n this.showList(false);\n this.inputText = '';\n }\n }\n\n /**\n * @hidden\n * Method to set input text as item label.\n */\n setInputTextFromOptionItem(item: OptionItem): void {\n this.inputText = item.label;\n\n if (this.mobile) {\n return;\n }\n\n this.showList(false);\n }\n\n /** @hidden */\n onItemKeyDownHandler(event: KeyboardEvent, index: number): void {\n if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this._focusToSearchField();\n this.close();\n } else if ((event.ctrlKey || event.metaKey) && event.shiftKey && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this.handleSelectAllItems(false);\n } else if ((event.ctrlKey || event.metaKey) && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this.handleSelectAllItems(true);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n if (!this.mobile) {\n this.close();\n }\n this._rangeSelector.reset();\n } else if (KeyUtil.isKeyCode(event, SPACE)) {\n this._rangeSelector.reset();\n }\n }\n\n /** @hidden */\n onOptionClicked(event: MouseEvent, index: number): void {\n this._onListElementClicked(event, index);\n this.close();\n }\n\n /** @hidden */\n _addOnClicked(event: Event): void {\n this.addOnButtonClicked.emit(event);\n if (!this.mobile) {\n this.onPrimaryButtonClick(this.isOpen);\n }\n }\n\n /** @hidden Handle dialog dismissing, closes popover and sets backup data. */\n dialogDismiss(backup: SelectableOptionItem[]): void {\n this._selectedSuggestions = [...backup];\n this.inputText = '';\n this.showList(false);\n this.selectedShown$.next(false);\n }\n\n /** @hidden Handle dialog approval, closes popover and propagates data changes. */\n dialogApprove(): void {\n this.inputText = '';\n this.showList(false);\n this._propagateChange(true);\n }\n\n /**\n * @hidden\n * applying range selection. Note, that this function will be invoked after combobox item's value has been changed\n */\n private _onListElementClicked(event: MouseEvent, index: number): void {\n // value has been changed at this point, so it can be safely used\n const selectionState = this._suggestions[index].selected;\n this._rangeSelector.onRangeElementToggled(index, event);\n const toRemoveSet = new Set();\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const current = this._suggestions[idx];\n if (current.selected !== selectionState) {\n if (current.selected) {\n // removing from \"_selectedSuggestions\" list\n toRemoveSet.add(current.value);\n } else {\n // adding current item to \"_selectedSuggestions\"\n this._selectedSuggestions.push(current);\n }\n current.selected = selectionState;\n }\n });\n this._selectedSuggestions = this._selectedSuggestions.filter((s) => !toRemoveSet.has(s.value));\n // selected items should be displayed in the same order as options\n const valueIndexes = new Map<any, number>(this._suggestions.map((s, i) => [s.value, i]));\n this._selectedSuggestions.sort((a, b) => valueIndexes.get(a.value)! - valueIndexes.get(b.value)!);\n this._tokenizer.onResize();\n\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollLeft =\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n private _getTokenIndexByIdlOrValue(item: SelectableOptionItem): number {\n return this._selectedSuggestions.findIndex((token) => token.id === item.id || equal(token.value, item.value));\n }\n\n /** @hidden */\n private _mapAndUpdateModel(): void {\n const selectedItems = this._selectedSuggestions.map(({ value }) => value);\n\n // setting value, it will call setValue()\n this.value = selectedItems;\n }\n\n /** @hidden */\n private _propagateChange(emitInMobile?: boolean): void {\n if (!this.mobile || emitInMobile) {\n this.onChange(this._selectedSuggestions);\n this._mapAndUpdateModel();\n }\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTICOMBOBOX_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n await this._dynamicComponentService.createDynamicModule(\n { listTemplate: this.listTemplate, controlTemplate: this.mobileControlTemplate },\n PlatformMultiComboboxMobileModule,\n MultiComboboxMobileComponent,\n this._viewContainerRef,\n injector\n );\n }\n}\n","<div class=\"fdp-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fdp-multi-combobox__list-container\"\n (isOpenChange)=\"popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && onPrimaryButtonClick(false)\"\n (keydown)=\"navigateByTokens($event)\"\n >\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"true\"\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n class=\"fdp-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"ariaLabel || ('coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n [attr.aria-required]=\"required\"\n class=\"fd-tokenizer__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel\"\n >\n <input\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"ariaLabel || ('coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"!mobile && onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-multi-combobox__list fd-list--multi-input\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width]=\"!mobile && minWidth + 'px'\"\n [style.max-width]=\"autoResize && maxWidth + 'px'\"\n [attr.aria-labelledby]=\"id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup; else plainList\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <label fd-list-item fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n (click)=\"!mobile && close()\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-template #plainList>\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n (click)=\"!mobile && onOptionClicked($event, i)\"\n (keydown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { CheckboxModule } from '@fundamental-ngx/core/checkbox';\nimport { DynamicComponentService, TemplateModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { MultiAnnouncerModule } from '@fundamental-ngx/core/multi-combobox';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { TokenModule } from '@fundamental-ngx/core/token';\nimport { I18nModule } from '@fundamental-ngx/i18n';\nimport { PlatformListModule, StandardListItemModule } from '@fundamental-ngx/platform/list';\nimport { MultiComboboxComponent } from './multi-combobox/multi-combobox.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n declarations: [MultiComboboxComponent],\n imports: [\n CommonModule,\n FormsModule,\n CheckboxModule,\n InputGroupModule,\n PipeModule,\n TokenModule,\n ListModule,\n ButtonModule,\n FormModule,\n PopoverModule,\n PlatformListModule,\n StandardListItemModule,\n PlatformAutoCompleteModule,\n I18nModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule,\n MultiAnnouncerModule\n ],\n providers: [DynamicComponentService],\n exports: [MultiComboboxComponent, TemplateModule, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformMultiComboboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { InitialFocusModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { TokenModule } from '@fundamental-ngx/core/token';\nimport { PlatformListModule, StandardListItemModule } from '@fundamental-ngx/platform/list';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\n\nimport { PlatformMultiInputComponent } from './multi-input.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { MultiAnnouncerModule } from '@fundamental-ngx/core/multi-combobox';\n\n@NgModule({\n declarations: [PlatformMultiInputComponent],\n imports: [\n CommonModule,\n FormsModule,\n PlatformListModule,\n StandardListItemModule,\n TokenModule,\n PipeModule,\n PopoverModule,\n InputGroupModule,\n PlatformAutoCompleteModule,\n FormModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule,\n InitialFocusModule,\n MultiAnnouncerModule\n ],\n exports: [PlatformMultiInputComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformMultiInputModule {}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\nimport { BusyIndicatorModule } from '@fundamental-ngx/core/busy-indicator';\nimport { PlatformButtonModule } from '@fundamental-ngx/platform/button';\nimport { SkeletonModule } from '@fundamental-ngx/core/skeleton';\nimport { FormGeneratorComponentsAccessorService } from './form-generator-components-accessor.service';\nimport { FormGeneratorComponent } from './form-generator/form-generator.component';\nimport { DynamicFormControlFieldDirective } from './dynamic-form-control-field.directive';\nimport { PlatformInputModule } from '../input/fdp-input.module';\nimport { FdpFormGroupModule } from '../form-group/fdp-form.module';\nimport { PlatformCheckboxGroupModule } from '../checkbox-group/checkbox-group.module';\nimport { PlatformSelectModule } from '../select/select.module';\nimport { PlatformRadioGroupModule } from '../radio-group/radio-group.module';\nimport { PlatformTextAreaModule } from '../text-area/text-area.module';\nimport { PlatformDatePickerModule } from '../date-picker/date-picker.module';\nimport { PlatformSwitchModule } from '../switch/switch.module';\nimport { DynamicFormControlDirective } from './dynamic-form-control.directive';\nimport { DynamicFormGeneratorCheckboxComponent } from './controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component';\nimport { DynamicFormGeneratorInputComponent } from './controls/dynamic-form-generator-input/dynamic-form-generator-input.component';\nimport { DynamicFormGeneratorEditorComponent } from './controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component';\nimport { DynamicFormGeneratorSelectComponent } from './controls/dynamic-form-generator-select/dynamic-form-generator-select.component';\nimport { DynamicFormGeneratorRadioComponent } from './controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component';\nimport { DynamicFormGeneratorDatepickerComponent } from './controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component';\nimport { DynamicFormGeneratorSwitchComponent } from './controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component';\nimport { FormGeneratorService } from './form-generator.service';\nimport { FormGeneratorFieldComponent } from './form-generator-field/form-generator-field.component';\nimport { DynamicFormGeneratorMultiInputComponent } from './controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component';\nimport { FormGeneratorModuleConfig } from './interfaces/form-generator-module-config';\nimport { GetOrderedFieldControlsPipe } from './pipes/get-ordered-form-controls.pipe';\nimport { PlatformMultiComboboxModule } from '../multi-combobox/multi-combobox.module';\nimport { PlatformMultiInputModule } from '../multi-input/multi-input.module';\nimport {\n defaultFormGeneratorConfigProvider,\n defaultFormGeneratorItemConfigProvider,\n FORM_GENERATOR_CONFIG,\n FORM_GENERATOR_ITEM_CONFIG\n} from './providers/providers';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { DynamicFormGeneratorObjectStatusComponent } from './controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component';\nimport { PlatformObjectStatusModule } from '@fundamental-ngx/platform/object-status';\n\n/**\n * Adds Form Generator functionality to your application.\n *\n * Can be imported in two ways:\n * * Plain PlatformFormGeneratorModule with default configuration\n * * With `withConfig()` method which allows passing custom default configuration.\n */\n@NgModule({\n declarations: [\n FormGeneratorComponent,\n DynamicFormControlFieldDirective,\n DynamicFormControlDirective,\n DynamicFormGeneratorCheckboxComponent,\n DynamicFormGeneratorInputComponent,\n DynamicFormGeneratorEditorComponent,\n DynamicFormGeneratorSelectComponent,\n DynamicFormGeneratorRadioComponent,\n DynamicFormGeneratorDatepickerComponent,\n DynamicFormGeneratorSwitchComponent,\n FormGeneratorFieldComponent,\n DynamicFormGeneratorMultiInputComponent,\n GetOrderedFieldControlsPipe,\n DynamicFormGeneratorObjectStatusComponent\n ],\n imports: [\n CommonModule,\n FdpFormGroupModule,\n PlatformInputModule,\n FormsModule,\n ReactiveFormsModule,\n PlatformButtonModule,\n PlatformCheckboxGroupModule,\n PlatformSelectModule,\n PlatformRadioGroupModule,\n PlatformTextAreaModule,\n PlatformInputModule,\n PlatformDatePickerModule,\n PlatformSwitchModule,\n FormMessageModule,\n BusyIndicatorModule,\n PlatformMultiComboboxModule,\n PlatformMultiInputModule,\n ContentDensityModule,\n SkeletonModule,\n ListModule,\n PlatformObjectStatusModule\n ],\n providers: [\n FormGeneratorService,\n FormGeneratorComponentsAccessorService,\n defaultFormGeneratorItemConfigProvider,\n defaultFormGeneratorConfigProvider\n ],\n exports: [\n FormGeneratorComponent,\n DynamicFormControlFieldDirective,\n DynamicFormControlDirective,\n DynamicFormGeneratorCheckboxComponent,\n DynamicFormGeneratorInputComponent,\n DynamicFormGeneratorEditorComponent,\n DynamicFormGeneratorSelectComponent,\n DynamicFormGeneratorRadioComponent,\n DynamicFormGeneratorDatepickerComponent,\n DynamicFormGeneratorSwitchComponent,\n FormGeneratorFieldComponent,\n ContentDensityModule,\n DynamicFormGeneratorObjectStatusComponent\n ]\n})\nexport class PlatformFormGeneratorModule {\n /**\n * Allows configuring module on a global level with custom configuration.\n * @param config User's custom configuration.\n */\n static withConfig(config: Partial<FormGeneratorModuleConfig>): ModuleWithProviders<PlatformFormGeneratorModule> {\n return {\n ngModule: PlatformFormGeneratorModule,\n providers: [\n {\n provide: FORM_GENERATOR_ITEM_CONFIG,\n useValue: config.itemConfig\n },\n {\n provide: FORM_GENERATOR_CONFIG,\n useValue: config.formConfig\n }\n ]\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const CSS_CLASS_NAME = {\n host: 'fdp-input-group',\n input: 'fd-input-group__input',\n addon: 'fd-input-group__addon',\n addonButton: 'fd-input-group__addon--button',\n button: 'fd-input-group__button'\n} as const;\n\nexport const INPUT_GROUP_CHILD_TOKEN = new InjectionToken<string>('INPUT_GROUP_CHILD_TOKEN');\n","import {\n Component,\n ViewChild,\n TemplateRef,\n ContentChild,\n ElementRef,\n Renderer2,\n AfterContentInit,\n Provider,\n forwardRef,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { ButtonComponent } from '@fundamental-ngx/platform/button';\n\nimport { CSS_CLASS_NAME, INPUT_GROUP_CHILD_TOKEN } from './constants';\n\nexport const inputGroupAddonChildProvider: Provider = {\n provide: INPUT_GROUP_CHILD_TOKEN,\n useExisting: forwardRef(() => InputGroupAddonComponent)\n};\n\n/**\n * Fundamental input group addon component\n *\n * This component is intended to be used inside `<fdp-input-group>`\n *\n *\n * Input group addon can contain a plain text:\n * ```\n * <fdp-input-group-addon>$</fdp-input-group-addon>\n * ```\n * Icon:\n * ```\n * <fdp-input-group-addon><i class=\"sap-icon--employee\"></i></fdp-input-group-addon>\n * ```\n * Button component:\n * ```\n * <fdp-input-group-addon><fdp-button label=\"Action\"></fdp-button></fdp-input-group-addon>\n * ```\n *\n */\n@Component({\n selector: 'fdp-input-group-addon',\n template: '<ng-template><ng-content></ng-content></ng-template>',\n providers: [inputGroupAddonChildProvider],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputGroupAddonComponent implements AfterContentInit {\n /** @hidden */\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this._setButtonControlOptions();\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /** @hidden */\n @ViewChild(TemplateRef)\n contentTemplateRef: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(ButtonComponent)\n button: ButtonComponent;\n\n /** @hidden */\n @ContentChild(ButtonComponent, { read: ElementRef })\n set buttonElementRef(buttonComponentElementRef: ElementRef<HTMLElement>) {\n this._setButtonElementClass(buttonComponentElementRef?.nativeElement);\n }\n\n /** @hidden */\n private _disabled = false;\n\n /** @hidden */\n constructor(private _renderer: Renderer2) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setButtonControlOptions();\n }\n\n /** @hidden */\n private _setButtonControlOptions(): void {\n const button = this.button;\n\n if (!button) {\n return;\n }\n\n // button.contentDensity = this._contentDensity;\n button.disabled = this._disabled;\n\n button.markForCheck();\n }\n\n /** @hidden */\n private _setButtonElementClass(buttonComponentElement: HTMLElement): void {\n if (!buttonComponentElement) {\n return;\n }\n const button = buttonComponentElement.querySelector('button');\n this._renderer.addClass(button, CSS_CLASS_NAME.button);\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport { CSS_CLASS_NAME } from './constants';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\n/**\n * Fundamental input group addon body component\n */\n@Component({\n selector: 'fdp-input-group-addon-body',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()]\n})\nexport class InputGroupAddonBodyComponent implements OnInit {\n /**\n * indicates if addon contains a button\n */\n @Input()\n set hasButton(hasButton: boolean) {\n if (hasButton) {\n this._addClassNameToHostElement(CSS_CLASS_NAME.addonButton);\n } else {\n this._removeClassNameFromHostElement(CSS_CLASS_NAME.addonButton);\n }\n }\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private contentDensityObserver: ContentDensityObserver\n ) {\n contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(CSS_CLASS_NAME.addon);\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n this._renderer.addClass(this._elementRef.nativeElement, className);\n }\n\n /** @hidden */\n private _removeClassNameFromHostElement(className: string): void {\n this._renderer.removeClass(this._elementRef.nativeElement, className);\n }\n}\n","import { Provider, forwardRef, Component, Input, ChangeDetectionStrategy } from '@angular/core';\n\nimport { InputType } from '../input/input.component';\nimport { INPUT_GROUP_CHILD_TOKEN } from './constants';\n\n/**\n * fdp-input-group needs it's own input component to\n * register INPUT_GROUP_CHILD in order to render\n * input group content children in the order that they are placed\n *\n */\n\nexport const inputGroupInputChildProvider: Provider = {\n provide: INPUT_GROUP_CHILD_TOKEN,\n useExisting: forwardRef(() => InputGroupInputComponent)\n};\n\n/**\n * Fundamental input group input component\n *\n * This component is intended to be used inside `<fdp-input-group>`\n *\n * Example:\n * ```\n * <fdp-input-group name=\"group\">\n * <fdp-input-group-input type=\"email\"></fdp-input-group-input>\n * </fdp-input-group>\n * ```\n *\n */\n@Component({\n selector: 'fdp-input-group-input',\n template: '',\n providers: [inputGroupInputChildProvider],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputGroupInputComponent {\n /** InputType 'text' | 'number' | 'email' | 'password' */\n @Input()\n type: InputType = 'text';\n}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { PlatformConfig } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for platform input group\n */\n@Injectable({ providedIn: 'root' })\nexport class InputGroupConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<InputGroupConfig>): (platformConfig: PlatformConfig) => InputGroupConfig {\n const useFactory = (platformConfig: PlatformConfig): InputGroupConfig =>\n Object.assign(new InputGroupConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n forwardRef,\n Host,\n Inject,\n Input,\n OnInit,\n Optional,\n QueryList,\n Renderer2,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { startWith } from 'rxjs/operators';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { InputComponent } from '../input/input.component';\n\nimport { CSS_CLASS_NAME, INPUT_GROUP_CHILD_TOKEN } from './constants';\nimport { InputGroupConfig } from './input-group.config';\nimport { InputGroupAddonComponent } from './addon.component';\nimport { InputGroupInputComponent } from './input.component';\n\n/**\n * Fundamental input group component\n *\n * ```html\n * <fdp-input-group>\n * <fdp-input-group-addon>$</fdp-input-group-addon>\n * <fdp-input-group-input type=\"number\"></fdp-input-group-input>\n * <fdp-input-group-addon>0.00</fdp-input-group-addon>\n * </fdp-input-group>\n * ```\n *\n */\n@Component({\n selector: 'fdp-input-group',\n templateUrl: './input-group.component.html',\n styleUrls: ['./input-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => InputGroupComponent), multi: true },\n contentDensityObserverProviders()\n ]\n})\nexport class InputGroupComponent extends BaseInput implements OnInit, AfterContentInit, AfterViewInit {\n /** Input value */\n @Input()\n set value(value: any) {\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** @hidden */\n @ContentChildren(INPUT_GROUP_CHILD_TOKEN)\n _children: QueryList<InputGroupInputComponent | InputGroupAddonComponent>;\n\n /** @hidden */\n @ContentChild(InputGroupInputComponent)\n _input: InputGroupInputComponent;\n\n /** @hidden */\n @ViewChild(InputComponent, { read: ElementRef })\n set _inputComponentElement(inputComponentElementRef: ElementRef<HTMLElement>) {\n this._setInputElementClass(inputComponentElementRef?.nativeElement);\n }\n\n /** @hidden */\n _beforeInputAddons: InputGroupAddonComponent[] = [];\n\n /** @hidden */\n _afterInputAddons: InputGroupAddonComponent[] = [];\n\n /** @hidden */\n get _controlStateClass(): string | null {\n const state = this.state;\n return state ? `is-${state}` : null;\n }\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n private _renderer: Renderer2,\n protected _hostElementRef: ElementRef<HTMLElement>,\n protected _inputGroupConfig: InputGroupConfig\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n /**\n * Assign predefined className to host element\n * to make css selector stronger\n */\n this._addClassNameToHostElement(CSS_CLASS_NAME.host);\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._listenToChildrenQueryListChanges();\n }\n\n /**\n * @hidden\n * override base functionality to catch new disabled state\n */\n setDisabledState(disabled: boolean): void {\n super.setDisabledState(disabled);\n this._setAddonsOptions();\n }\n\n /** @hidden */\n _onChangeInputValue(value: string): void {\n this.value = value;\n }\n\n /** @hidden */\n _onKeyPress(event: KeyboardEvent): void {\n // prevent typing non-digit chars\n if (this._input.type === 'number') {\n if (!event.key.match(/([0-9]|[-]|[,]|[.])/)) {\n event.preventDefault();\n }\n }\n }\n\n /** @hidden */\n private _listenToChildrenQueryListChanges(): void {\n this._children.changes.pipe(startWith(this._children)).subscribe(() => {\n this._createAddonsGroups();\n this._setAddonsOptions();\n });\n }\n\n /** @hidden */\n private _setInputElementClass(inputComponentElement: HTMLElement): void {\n if (!inputComponentElement) {\n return;\n }\n\n const inputElement = inputComponentElement.querySelector('input');\n this._renderer.addClass(inputElement, CSS_CLASS_NAME.input);\n }\n\n /** @hidden */\n private _createAddonsGroups(): void {\n const childrenList = this._children.toArray();\n const inputChildIndex = childrenList.findIndex((child) => this._isInputChild(child));\n\n // reset group's containers\n this._beforeInputAddons = [];\n this._afterInputAddons = [];\n\n childrenList.forEach((child, index) => {\n if (!this._isAddonChild(child)) {\n return;\n }\n if (index < inputChildIndex) {\n this._beforeInputAddons.push(child);\n }\n if (index > inputChildIndex) {\n this._afterInputAddons.push(child);\n }\n });\n }\n\n /** @hidden */\n private _isInputChild(child: unknown): child is InputGroupInputComponent {\n return child instanceof InputGroupInputComponent;\n }\n\n /** @hidden */\n private _isAddonChild(child: unknown): child is InputGroupAddonComponent {\n return child instanceof InputGroupAddonComponent;\n }\n\n /** @hidden */\n private _setAddonsOptions(): void {\n const before = this._beforeInputAddons || [];\n const after = this._afterInputAddons || [];\n [...before, ...after].forEach((addon) => {\n addon.disabled = this.disabled;\n });\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n this._renderer.addClass(this._hostElementRef.nativeElement, className);\n }\n}\n","<div class=\"fd-input-group\" [class.is-disabled]=\"disabled\" [class]=\"_controlStateClass\" [class.is-focus]=\"focused\">\n <!-- Before input addons area -->\n <fdp-input-group-addon-body *ngFor=\"let addon of _beforeInputAddons\">\n <ng-container *ngTemplateOutlet=\"addon.contentTemplateRef\"></ng-container>\n </fdp-input-group-addon-body>\n\n <!-- Input -->\n <ng-container *ngIf=\"_input\">\n <fdp-input\n [name]=\"name\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [type]=\"_input.type\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [required]=\"required\"\n (input)=\"_onChangeInputValue($any($event.target)?.value)\"\n (focusChange)=\"_onFocusChanged($event)\"\n (keypress)=\"_onKeyPress($event)\"\n ></fdp-input>\n </ng-container>\n\n <!-- After input addons area -->\n <fdp-input-group-addon-body *ngFor=\"let addon of _afterInputAddons\" [hasButton]=\"!!addon.button\">\n <ng-container *ngTemplateOutlet=\"addon.contentTemplateRef\"></ng-container>\n </fdp-input-group-addon-body>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\nimport { PlatformInputModule } from '../input/fdp-input.module';\nimport { InputGroupComponent } from './input-group.component';\nimport { InputGroupAddonComponent } from './addon.component';\nimport { InputGroupAddonBodyComponent } from './addon-body.component';\nimport { InputGroupInputComponent } from './input.component';\n\n@NgModule({\n declarations: [\n InputGroupComponent,\n InputGroupAddonComponent,\n InputGroupAddonBodyComponent,\n InputGroupInputComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n PlatformInputModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [\n PlatformInputModule,\n InputGroupComponent,\n InputGroupAddonComponent,\n InputGroupInputComponent,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ]\n})\nexport class PlatformInputGroupModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n isDevMode,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\n\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport class FileUploaderInvalidChangeEvent {\n /**\n * File Uploader invalid change event\n * @param source File Uploader component\n * @param payload Value\n */\n constructor(\n public source: PlatformFileUploaderComponent,\n public payload: File[] // Contains selected item\n ) {}\n}\n\nexport class FileUploaderSelectionChangeEvent {\n /**\n * File Uploader invalid change event\n * @param source File Uploader component\n * @param payload Value\n */\n constructor(\n public source: PlatformFileUploaderComponent,\n public payload: File[] // Contains selected item\n ) {}\n}\n\n@Component({\n selector: 'fdp-file-uploader',\n templateUrl: './platform-file-uploader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()]\n})\nexport class PlatformFileUploaderComponent extends BaseInput implements OnInit {\n /** Button value */\n @Input()\n buttonLabel: string;\n\n /** Value for input element. */\n @Input()\n buttonAriaLabel: Nullable<string>;\n\n /** Whether the file input accepts drag and dropped files. */\n @Input()\n dragndrop = true;\n\n /** Max file size in bytes that the input will accept. */\n @Input()\n maxFileSize = '';\n\n /** Min file size in bytes that the input will accept. */\n @Input()\n minFileSize = '';\n\n /** Whether the file input should accept multiple files. */\n @Input()\n multiple = true;\n\n /** Accepted file extensions. Format: `'.png,.jpg'`. */\n @Input()\n accept: string;\n\n /** Specifies number of files to allow to select */\n @Input()\n fileLimit: number;\n\n /**\n * @deprecated\n * set state of individual checkbox. Used by CBG to set checkbox states */\n @Input()\n set stateType(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get stateType(): FormStates {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /** Event emitted when valid file is uploded. */\n @Output()\n selectionChange: EventEmitter<FileUploaderSelectionChangeEvent> =\n new EventEmitter<FileUploaderSelectionChangeEvent>();\n /** Event emitted when invalid file is uploded. */\n @Output()\n invalidFileChange: EventEmitter<FileUploaderInvalidChangeEvent> =\n new EventEmitter<FileUploaderInvalidChangeEvent>();\n\n /** Files upladed hidden field to store file data */\n files: File[];\n\n /**\n * Control Value Accessor\n */\n writeValue(value: File): void {\n super.writeValue(value);\n }\n\n /** Sets value file data*/\n @Input()\n set value(value: File) {\n super.setValue(value);\n }\n get value(): File {\n return super.getValue();\n }\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n readonly contentDensityObserver: ContentDensityObserver\n ) {\n super(_cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n /** Handle valid file changes event handler */\n handleFileChange(fileArray: File[]): void {\n this.files = fileArray;\n const event = new FileUploaderSelectionChangeEvent(this, this.files);\n this.selectionChange.emit(event);\n }\n\n /** Handle invalid file changes event handler */\n handleInvalidFiles(fileArray: File[]): void {\n this.files = fileArray;\n const event = new FileUploaderInvalidChangeEvent(this, this.files);\n this.invalidFileChange.emit(event);\n }\n}\n","<fd-file-uploader\n [id]=\"id\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [placeholder]=\"placeholder\"\n [buttonLabel]=\"buttonLabel\"\n [buttonAriaLabel]=\"buttonAriaLabel\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [maxFileSize]=\"maxFileSize\"\n [minFileSize]=\"minFileSize\"\n [state]=\"state\"\n [required]=\"required\"\n [width]=\"width\"\n [(ngModel)]=\"value\"\n (selectedInvalidFiles)=\"handleInvalidFiles($event)\"\n (selectedFilesChanged)=\"handleFileChange($event)\"\n></fd-file-uploader>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FileUploaderModule } from '@fundamental-ngx/core/file-uploader';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PlatformFileUploaderComponent } from './platform-file-uploader.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [PlatformFileUploaderComponent],\n imports: [\n CommonModule,\n FileUploaderModule,\n FormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformFileUploaderComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformFileUploaderModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Default options for platform step input\n */\n\n@Injectable({ providedIn: 'root' })\nexport class StepInputConfig {\n /**\n * ARIA label for increment button\n */\n incrementLabel = 'Increment';\n\n /**\n * ARIA label for decrement button\n */\n decrementLabel = 'Decrement';\n\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n}\n","export const addAndCutFloatingNumberDistortion = (value: number | null, step: number): number => {\n value = value || 0;\n const stepDecimals = `${step}`.split('.')[1];\n const valueDecimals = `${value}`.split('.')[1];\n const stepDecimalsLength = stepDecimals ? stepDecimals.length : 0;\n const valueDecimalsLength = valueDecimals ? valueDecimals.length : 0;\n const longestDecimal = Math.max(valueDecimalsLength, stepDecimalsLength);\n\n return Number((value + step).toFixed(longestDecimal));\n};\n\nexport const getNumberDecimalLength = (value: number): number => {\n const numberStr = (value || 0).toString();\n return (numberStr.split('.')[0] || '').length;\n};\n","import {\n Input,\n Output,\n EventEmitter,\n Renderer2,\n Directive,\n OnInit,\n ChangeDetectorRef,\n ElementRef\n} from '@angular/core';\nimport { NgForm, NgControl, ControlContainer } from '@angular/forms';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { takeUntil, switchMap, map } from 'rxjs/operators';\n\nimport { ContentDensity, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { StepInputConfig } from './step-input.config';\nimport { addAndCutFloatingNumberDistortion, getNumberDecimalLength } from './step-input.util';\n\n/** Change event object emitted by Platform Step Input component */\nexport class StepInputChangeEvent<T extends StepInputComponent = StepInputComponent, K = number> {\n /**\n * Step input selection change event\n * @param source Step input component\n * @param payload Selected value\n */\n constructor(\n /** The source Step Input of the event. */\n public source: T,\n /** The new value of a control. */\n public payload: K\n ) {}\n}\n\nexport enum StepInputAlign {\n Left = 'left',\n Center = 'center',\n Right = 'right'\n}\n\nexport type StepInputStepFunctionAction = 'increase' | 'decrease';\nexport type StepInputStepFunction = (value: number, action: StepInputStepFunctionAction) => number;\n\nconst ALIGN_INPUT_OPTIONS_LIST = [StepInputAlign.Left, StepInputAlign.Center, StepInputAlign.Right];\n\n/**\n * StepInputComponent is a base abstract class that should be used\n * to create type specific StepInput components such as number, money, unitOfMeasure\n * This holds base Step Input functionality that can be abstracted\n */\n@Directive()\nexport abstract class StepInputComponent extends BaseInput implements OnInit {\n /** Sets input value */\n @Input()\n set value(value: Nullable<number>) {\n if (value !== this._value) {\n super.setValue(value);\n this._calculateCanDecrementIncrement();\n }\n }\n get value(): Nullable<number> {\n return super.getValue();\n }\n\n /** Sets minimum value boundary */\n @Input()\n set min(min: number) {\n this._min = !isNaN(min) ? min : -Number.MAX_VALUE;\n this._calculateCanDecrement();\n }\n get min(): number {\n return this._min;\n }\n\n /** Sets maximum value boundary */\n @Input()\n set max(max: number) {\n this._max = !isNaN(max) ? max : Number.MAX_VALUE;\n this._calculateCanIncrement();\n }\n get max(): number {\n return this._max;\n }\n\n /** Sets input step value */\n @Input()\n set step(step: number) {\n this._checkAndThrowErrorIfStepDoesntMatchPrecision(this.precision, step);\n this._step = step;\n this._calculateCanDecrementIncrement();\n }\n get step(): number {\n return this._step;\n }\n\n /** Custom function to calculate step dynamically */\n @Input()\n set stepFn(stepFn: StepInputStepFunction) {\n this._stepFn = stepFn;\n this._calculateCanDecrementIncrement();\n }\n\n /** Number of digits after the decimal point */\n @Input()\n set precision(precision: number) {\n this._checkAndThrowErrorIfStepDoesntMatchPrecision(precision, this.step);\n this._precision = precision;\n }\n get precision(): number {\n return this._precision;\n }\n\n /** Sets largeStep multiplier */\n @Input()\n largerStep = 2;\n\n /** Hides -/+ icons and shows labels */\n @Input()\n showLabels = false;\n\n /** Horizontally aligns value inside input */\n @Input()\n set align(align: StepInputAlign) {\n this._align$.next(align);\n }\n\n /**\n * ARIA label for increment button\n */\n @Input()\n incrementLabel: string = this.config.incrementLabel;\n\n /**\n * ARIA label for decrement button\n */\n @Input()\n decrementLabel: string = this.config.decrementLabel;\n\n /** Emits new value when control value has changed */\n @Output()\n valueChange = new EventEmitter<StepInputChangeEvent>();\n\n /** @hidden */\n lastEmittedValue: number;\n\n /** @hidden */\n canIncrement = true;\n\n /** @hidden */\n canDecrement = true;\n\n /** @hidden\n * Indicates if control has an error\n */\n isErrorState = false;\n\n /** @hidden */\n get canChangeValue(): boolean {\n return !(this.disabled || !this.editable);\n }\n\n /** @hidden */\n _contentDensity: ContentDensity = this.config.contentDensity;\n\n /** @hidden */\n _align: StepInputAlign | null;\n\n /** @hidden */\n private _max: number = Number.MAX_VALUE;\n\n /** @hidden */\n private _min: number = -Number.MAX_VALUE;\n\n /** @hidden */\n private _step = 1;\n\n /** @hidden */\n private _stepFn: StepInputStepFunction;\n\n /** @hidden */\n private _precision: number;\n\n /** @hidden */\n private _align$ = new BehaviorSubject<StepInputAlign | null>(null);\n\n /** @hidden */\n private _pendingEnteredValue: number | Error | null = null;\n\n /** @hidden */\n private get _currentValue(): number | null {\n const pendingValue = this._pendingEnteredValue;\n\n if (pendingValue instanceof Error) {\n return null;\n }\n\n if (pendingValue === null) {\n return this._value;\n }\n\n return pendingValue;\n }\n\n /** @hidden */\n protected constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n ngControl: NgControl,\n controlContainer: ControlContainer,\n ngForm: NgForm,\n formField: PlatformFormField,\n formControl: PlatformFormFieldControl,\n protected config: StepInputConfig,\n private _renderer: Renderer2,\n private _rtlService: RtlService\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n\n this._calculateCanDecrementIncrement();\n\n this._updateViewValue();\n\n this.lastEmittedValue = this._value;\n\n this._listenToFormErrorState();\n\n this._listenToAlign();\n }\n\n /** @hidden\n * Override writeValue method to keep input view value up to date\n */\n writeValue(value: number): void {\n super.writeValue(value);\n this._updateViewValue();\n this._resetPendingEnteredValue();\n }\n\n /** Increase value */\n increase(step = this._getStepValueForIncrease()): void {\n if (!this.canIncrement) {\n return;\n }\n const value = addAndCutFloatingNumberDistortion(this._currentValue, step);\n this.value = this._validateValueByLimits(value);\n this._emitChangedValue();\n }\n\n /** Decrease value */\n decrease(step = this._getStepValueForDecrease()): void {\n if (!this.canDecrement) {\n return;\n }\n const value = addAndCutFloatingNumberDistortion(this._currentValue, -step);\n this.value = this._validateValueByLimits(value);\n this._emitChangedValue();\n }\n\n /** Increase value by large step */\n largeStepIncrease(): void {\n const step = this._getStepValueForIncrease() * this.largerStep;\n this.increase(step);\n }\n\n /** Decrease value by large step */\n largeStepDecrease(): void {\n const step = this._getStepValueForDecrease() * this.largerStep;\n this.decrease(step);\n }\n\n /** @hidden\n * catch value during entering from view.\n */\n onEnterValue(value: string): void {\n const parsedValue = this.parseValueInFocusMode(value);\n let pendingValue = parsedValue;\n\n if (pendingValue !== null) {\n pendingValue = this._validateValueByLimits(pendingValue);\n }\n\n // could not parse value, value is invalid\n if (pendingValue === null) {\n this._setPendingEnteredValue(new Error('value is invalid'));\n } else {\n this._setPendingEnteredValue(pendingValue);\n }\n }\n\n /** @hidden\n * Commit entered value from view.\n */\n commitEnteredValue(): void {\n const newValue = this._currentValue;\n\n const needToUpdateView = this._value === newValue;\n\n this.value = newValue;\n\n if (needToUpdateView) {\n this._updateViewValue();\n }\n\n if (this._value !== this.lastEmittedValue) {\n this._emitChangedValue();\n }\n }\n\n /** @hidden\n * Indicates when input gets focused\n */\n onFocus(): void {\n super._onFocusChanged(true);\n // When focus happens by \"Tab\" key an input field value gets selected by default.\n // In cases when new_formatted_value !== previous_value the selection gets lost.\n // So it's needed to track selection before new value rendering and restore it.\n const { selectionStart, selectionEnd } = this._getValueSelection();\n this._updateViewValue();\n if (selectionEnd - selectionStart > 0) {\n this._setValueSelection(selectionStart, selectionEnd);\n }\n }\n\n /** @hidden\n * Indicates when input loses focus\n */\n onBlur(): void {\n super._onFocusChanged(false);\n this._updateViewValue();\n }\n\n /** Create valueChange event */\n abstract createChangeEvent(value: number): StepInputChangeEvent;\n\n /** Format value for view presentation */\n abstract formatValue(value: number | null): string;\n\n /** Format value for \"in focus\" mode */\n abstract formatValueInFocusMode(value: number): string;\n\n /** Parse value entered \"in focus\" mode */\n abstract parseValueInFocusMode(value: string): number | null;\n\n /** @hidden */\n private _listenToFormErrorState(): void {\n this.stateChanges\n .asObservable()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n const oldValue = this.isErrorState;\n this.isErrorState = this.state === 'error';\n if (this.isErrorState !== oldValue) {\n this._cd.markForCheck();\n }\n });\n }\n\n /** @hidden */\n private _listenToAlign(): void {\n this._align$\n .asObservable()\n .pipe(\n switchMap((align) => {\n if (!this._rtlService) {\n return of(align);\n }\n\n return this._rtlService.rtl.pipe(\n map((isRtl): StepInputAlign | null => {\n if (!ALIGN_INPUT_OPTIONS_LIST.includes(align!)) {\n return null;\n }\n if (isRtl && align === StepInputAlign.Left) {\n return StepInputAlign.Right;\n }\n if (isRtl && align === StepInputAlign.Right) {\n return StepInputAlign.Left;\n }\n return align;\n })\n );\n }),\n takeUntil(this._destroyed)\n )\n .subscribe((align) => {\n this._align = align;\n this._cd.markForCheck();\n });\n }\n\n /** @hidden */\n private _emitChangedValue(): void {\n const value = this._value;\n this.lastEmittedValue = value;\n this.valueChange.emit(this.createChangeEvent(value));\n }\n\n /** @hidden */\n private _getStepValueForIncrease(): number {\n return this._getStepValue('increase');\n }\n\n /** @hidden */\n private _getStepValueForDecrease(): number {\n return this._getStepValue('decrease');\n }\n\n /** @hidden\n * Get step value based either on \"stepFn\" or \"step\"\n */\n private _getStepValue(action: StepInputStepFunctionAction): number {\n // steFn has precedence\n if (typeof this._stepFn === 'function') {\n const calculatedStep = this._stepFn(this._currentValue ?? this.min, action);\n return calculatedStep;\n }\n return this.step;\n }\n\n /** @hidden */\n private _updateViewValue(): void {\n const formatted = this._formatValue();\n this._renderValue(formatted);\n }\n\n /** @hidden */\n private _formatValue(value = this._value): string {\n if (this.focused) {\n return this.formatValueInFocusMode(value);\n }\n return this.formatValue(value);\n }\n\n /** @hidden */\n private _renderValue(value: string): void {\n const inputEl = this._getInputNativeElement();\n this._renderer.setProperty(inputEl, 'value', value);\n }\n\n /** @hidden */\n private _getInputNativeElement(): HTMLInputElement | null {\n return this._elementRef.nativeElement as HTMLInputElement | null;\n }\n\n /** @hidden */\n private _getValueSelection(): { selectionStart: number; selectionEnd: number } {\n const inputEl = this._getInputNativeElement();\n const selectionStart = inputEl?.selectionStart || 0;\n const selectionEnd = inputEl?.selectionEnd || 0;\n return { selectionStart, selectionEnd };\n }\n\n /** @hidden */\n private _setValueSelection(selectionStart: number, selectionEnd: number): void {\n const inputEl = this._getInputNativeElement();\n if (!inputEl) {\n return;\n }\n inputEl.setSelectionRange(selectionStart, selectionEnd);\n }\n\n /** @hidden */\n private _calculateCanIncrement(): void {\n const step = this._getStepValueForIncrease();\n this.canIncrement = (this._value || 0) + step <= this._max;\n }\n\n /** @hidden */\n private _calculateCanDecrement(): void {\n const step = this._getStepValueForDecrease();\n this.canDecrement = (this._value || 0) - step >= this._min;\n }\n\n /** @hidden */\n private _calculateCanDecrementIncrement(): void {\n this._calculateCanDecrement();\n this._calculateCanIncrement();\n }\n\n /** @hidden */\n private _validateValueByLimits(value: number): number {\n return Math.min(Math.max(value, this._min), this._max);\n }\n\n /** @hidden */\n private _checkAndThrowErrorIfStepDoesntMatchPrecision(precision: number, step: number): void {\n // Check if \"precision\" is valid comparing to \"step\"\n const stepDecimalLength = getNumberDecimalLength(step);\n const precisionDecimalLength = getNumberDecimalLength(precision);\n if (stepDecimalLength > precisionDecimalLength) {\n throw Error(\n `Step input: The value of step property can not contain more digits after the decimal point than what is set to the precision property`\n );\n }\n }\n\n /** @hidden */\n private _setPendingEnteredValue(value: number | Error): void {\n this._pendingEnteredValue = value;\n }\n\n /** @hidden */\n private _resetPendingEnteredValue(): void {\n this._pendingEnteredValue = null;\n }\n}\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { fromEvent, timer, interval, Subject } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\n\n/**\n * This is a base step input directive to be used for increase/decrease buttons.\n */\n@Directive()\nexport abstract class StepInputActionButton implements OnDestroy {\n /** @hidden */\n protected _destroyed = new Subject<void>();\n\n /**\n * @hidden\n * Indicates if action can be handled\n */\n abstract canHandleAction(): boolean;\n\n /**\n * @hidden\n * Step input button action handler\n */\n abstract runAction(): void;\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** @hidden */\n @HostListener('mousedown')\n click(): void {\n if (!this.canHandleAction()) {\n return;\n }\n\n // Run action while button is pressed\n timer(500)\n .pipe(\n switchMap(() => interval(40)),\n takeUntil(fromEvent(window, 'mouseup', { capture: true, once: true }))\n )\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.runAction());\n\n this.runAction();\n }\n}\n","import { Directive, SkipSelf } from '@angular/core';\n\nimport { StepInputComponent } from './base.step-input';\nimport { StepInputActionButton } from './step-input-action-button';\n\n/**\n * This Directive is used to be assigned to decrement button.\n */\n@Directive({\n selector: '[fdpStepInputDecrement]'\n})\nexport class StepInputDecrementDirective extends StepInputActionButton {\n /** @hidden */\n constructor(@SkipSelf() private stepInput: StepInputComponent) {\n super();\n }\n\n /** @hidden */\n canHandleAction(): boolean {\n return !!this.stepInput.canChangeValue;\n }\n\n /** @hidden */\n runAction(): void {\n this.stepInput.decrease();\n }\n}\n","import { Directive, SkipSelf } from '@angular/core';\n\nimport { StepInputComponent } from './base.step-input';\nimport { StepInputActionButton } from './step-input-action-button';\n\n/**\n * This Directive is used to be assigned to increment button.\n */\n@Directive({\n selector: '[fdpStepInputIncrement]'\n})\nexport class StepInputIncrementDirective extends StepInputActionButton {\n /** @hidden */\n constructor(@SkipSelf() private stepInput: StepInputComponent) {\n super();\n }\n\n /** @hidden */\n canHandleAction(): boolean {\n return !!this.stepInput.canChangeValue;\n }\n\n /** @hidden */\n runAction(): void {\n this.stepInput.increase();\n }\n}\n","import { Directive, HostListener, SkipSelf } from '@angular/core';\nimport { DOWN_ARROW, PAGE_DOWN, PAGE_UP, UP_ARROW } from '@angular/cdk/keycodes';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { StepInputComponent } from './base.step-input';\n\n/**\n * This directive is intendant to be a bridge between input control and BaseStepInput Component.\n */\n@Directive({\n selector: '[fdpStepInputControl]'\n})\nexport class StepInputControlDirective {\n /** @hidden */\n constructor(@SkipSelf() private stepInput: StepInputComponent) {}\n\n /**\n * @hidden\n * Handle \"input\" event to keep track of what user is entering\n */\n @HostListener('input', ['$event'])\n onInput(event: InputEvent): void {\n if (!this.stepInput.canChangeValue) {\n return;\n }\n\n const value: string = ((event.target as HTMLInputElement).value || '').trim();\n this.stepInput.onEnterValue(value);\n }\n\n /**\n * @hidden\n * Handle \"change\" event to commit entered value\n */\n @HostListener('change')\n onChange(): void {\n if (!this.stepInput.canChangeValue) {\n return;\n }\n this.stepInput.commitEnteredValue();\n }\n\n /**\n * @hidden\n * Handle \"focus\" event\n */\n @HostListener('focus')\n onFocus(): void {\n this.stepInput.onFocus();\n }\n\n /**\n * @hidden\n * Handle \"blur\" event\n */\n @HostListener('blur')\n onBlur(): void {\n this.stepInput.onBlur();\n }\n\n /**\n * @hidden\n * Handle \"keydown\" event\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n if (!this.stepInput.canChangeValue) {\n return;\n }\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n this.stepInput.increase();\n this._muteEvent(event);\n }\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this.stepInput.decrease();\n this._muteEvent(event);\n }\n if (KeyUtil.isKeyCode(event, PAGE_UP)) {\n this.stepInput.largeStepIncrease();\n this._muteEvent(event);\n }\n if (KeyUtil.isKeyCode(event, PAGE_DOWN)) {\n this.stepInput.largeStepDecrease();\n this._muteEvent(event);\n }\n }\n\n /**\n * @hidden\n * Handle mouse wheel\n */\n @HostListener('wheel', ['$event'])\n onMouseWheel(event: WheelEvent): void {\n if (!this.stepInput.canChangeValue || !this.stepInput.focused) {\n return;\n }\n event.preventDefault();\n if (event.deltaY > 0) {\n this.stepInput.decrease();\n } else {\n this.stepInput.increase();\n }\n }\n\n /**\n * @hidden\n * Mute event\n */\n private _muteEvent(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n Inject,\n Input,\n LOCALE_ID,\n Optional,\n Renderer2,\n Self,\n SkipSelf,\n ViewEncapsulation\n} from '@angular/core';\nimport { formatNumber } from '@angular/common';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { StepInputChangeEvent, StepInputComponent } from '../base.step-input';\nimport { StepInputConfig } from '../step-input.config';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\n/**\n * Fundamental number-step-input component\n *\n * Example of usage\n * ```html\n * <fdp-number-step-input\n * name=\"number\"\n * [value]=\"value\"\n * (valueChange)=\"onValueChange($event)\"\n * ></fdp-number-step-input>\n * ```\n *\n * */\n@Component({\n selector: 'fdp-number-step-input',\n templateUrl: 'number-step-input.component.html',\n styleUrls: ['number-step-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: FD_FORM_FIELD_CONTROL, useExisting: NumberStepInputComponent, multi: true },\n { provide: StepInputComponent, useExisting: NumberStepInputComponent },\n contentDensityObserverProviders()\n ]\n})\nexport class NumberStepInputComponent extends StepInputComponent {\n /** Set description */\n @Input() description: string;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n config: StepInputConfig,\n renderer: Renderer2,\n @Optional() rtlService: RtlService,\n @Inject(LOCALE_ID) readonly localeId: string,\n readonly contentDensityObserver: ContentDensityObserver\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n formField,\n formControl,\n config,\n renderer,\n rtlService\n );\n }\n\n /** @hidden\n * Create change event instance\n */\n createChangeEvent(value: number): StepInputChangeEvent {\n return new StepInputChangeEvent(this, value);\n }\n\n /** @hidden\n * Format value taking into account LOCALE_ID\n */\n formatValue(value: number | null): string {\n const precision = this.precision;\n const digitsInfo = !isNaN(precision) ? `1.${precision}-${precision}` : undefined;\n return formatNumber(value || 0, this.localeId, digitsInfo);\n }\n\n /** @hidden\n * In order to avoid issues trying to parse formatted number\n * (potentially specific for each local)\n * we have to simplify number format once it's in focus mode.\n * In this case we deal with a regular float number\n */\n formatValueInFocusMode(value: number | null): string {\n const precision = this.precision;\n value = value || 0;\n if (!isNaN(precision)) {\n return value.toFixed(precision);\n }\n return value.toString(10);\n }\n\n /** @hidden\n * Used to parse entered value\n */\n parseValueInFocusMode(value: string | null): number | null {\n // if user leaves input empty we should consider it as '0' by default\n value = value || '0';\n const parsedValue = Number.parseFloat(value);\n return isNaN(parsedValue) ? null : parsedValue;\n }\n}\n","<fd-form-input-message-group>\n <div\n class=\"fd-step-input\"\n [class.is-focus]=\"focused\"\n [class.is-readonly]=\"!editable\"\n [class.is-disabled]=\"disabled\"\n [class.fd-step-input--without-buttons]=\"showLabels\"\n [class]=\"state ? 'is-' + state : ''\"\n >\n <button\n class=\"fd-step-input__button\"\n tabindex=\"-1\"\n type=\"button\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"showLabels ? null : 'less'\"\n fdpStepInputDecrement\n [attr.aria-disabled]=\"disabled || !canDecrement\"\n [attr.title]=\"decrementLabel\"\n [attr.aria-label]=\"decrementLabel\"\n [attr.aria-controls]=\"id\"\n >\n {{ showLabels ? decrementLabel : '' }}\n </button>\n <input\n #inputElementRef\n class=\"fd-input fd-input--no-number-spinner fd-step-input__input\"\n [id]=\"id\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [readonly]=\"!editable\"\n [attr.placeholder]=\"placeholder || ''\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"description ? id + '__description' : ''\"\n [attr.aria-required]=\"required\"\n [style.textAlign]=\"_align\"\n fdpStepInputControl\n type=\"text\"\n inputmode=\"numeric\"\n fdkOnlyDigits\n [decimal]=\"true\"\n />\n <button\n class=\"fd-step-input__button\"\n tabindex=\"-1\"\n type=\"button\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"showLabels ? null : 'add'\"\n fdpStepInputIncrement\n [attr.aria-disabled]=\"disabled || !canIncrement\"\n [attr.title]=\"incrementLabel\"\n [attr.aria-label]=\"incrementLabel\"\n [attr.aria-controls]=\"id\"\n >\n {{ showLabels ? incrementLabel : '' }}\n </button>\n </div>\n <fd-form-message *ngIf=\"stateMessage\" [type]=\"state\" [innerHTML]=\"stateMessage\"></fd-form-message>\n</fd-form-input-message-group>\n<span *ngIf=\"description\" [id]=\"id + '__description'\" class=\"fd-form-label fd-form-label--unit-description\">\n {{ description }}\n</span>\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { OnlyDigitsModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { StepInputDecrementDirective } from './step-input-decrement.directive';\nimport { StepInputIncrementDirective } from './step-input-increment.directive';\nimport { StepInputControlDirective } from './step-input-control.directive';\nimport { NumberStepInputComponent } from './number/number-step-input.component';\nimport { FormInputMessageGroupModule, FormMessageModule } from '@fundamental-ngx/core/form';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PipeModule,\n ButtonModule,\n OnlyDigitsModule,\n FormInputMessageGroupModule,\n FormMessageModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n declarations: [\n StepInputDecrementDirective,\n StepInputIncrementDirective,\n StepInputControlDirective,\n NumberStepInputComponent\n ],\n exports: [NumberStepInputComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformStepInputModule {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\n\nimport { TimePickerComponent } from '@fundamental-ngx/core/time-picker';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\n\n@Component({\n selector: 'fdp-time-picker',\n templateUrl: './time-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformTimePickerComponent, multi: true }]\n})\nexport class PlatformTimePickerComponent<D> extends BaseInput implements OnInit, AfterViewInit, OnDestroy {\n /**\n * @Input date time object representation\n */\n @Input()\n set value(value: D | null) {\n super.setValue(value);\n }\n get value(): D | null {\n return super.getValue();\n }\n\n /**\n * @Input date time object representation\n */\n @Input()\n time: D;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /** @deprecated\n * Meridian is deprecated. Use displayFormat and parseFormat inputs or\n * DateTimeFormats.display.timeInput and DateTimeFormats.parse.timeInput instead.\n * @Input When set to false, uses the 24 hour clock (hours ranging from 0 to 23).\n * Default value based on the current locale format option\n */\n @Input()\n meridian: boolean;\n\n /**\n * @Input When set to false, hides the input for seconds.\n * Default value based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /**\n * @Input When set to false, hides the input for minutes.\n * Default value based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * @Input When set to false, hides the input for hours.\n * Default value based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** @Input Default time picker placeholder which is set dependant on the hours, minutes and seconds.\n * Otherwise It can be set to a default value\n */\n @Input()\n placeholder: string;\n\n /** Aria label for the time picker input. */\n @Input()\n timePickerInputLabel: string;\n\n /** Whether a null input is considered valid(success). */\n @Input()\n allowNull = true;\n\n /** Defines if time component should be used with tablet mode */\n @Input()\n tablet = false;\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates | undefined) {\n super.state = state;\n }\n\n get state(): FormStates {\n if (this.timePickerComponent && this.timePickerComponent._isInvalidTimeInput) {\n // if any other error from core timePicker\n return 'error';\n }\n return super.state;\n }\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /** Whether to validate the time picker input. */\n @Input()\n useValidation = true;\n\n /**\n * @Input when set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n @Input()\n keepTwoDigitsTime = false;\n\n /**\n * Display format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n displayFormat: unknown;\n\n /**\n * Parse format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n parseFormat: unknown;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(TimePickerComponent)\n timePickerComponent: TimePickerComponent<D>;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /**\n * Method that handles changes when popover is opened or closed.\n */\n handleOpenChange(open: boolean): void {\n this.isOpenChange.emit(open);\n }\n\n /**\n * logic to handle validation from both platform forms and core datetiimepicker\n * @param value inputted\n */\n handleTimeChange(value: D): void {\n if (this.timePickerComponent) {\n if (this.timePickerComponent._isInvalidTimeInput) {\n this.state = 'error';\n } else {\n this.state = !this.timePickerComponent.time && !this.allowNull ? 'error' : undefined;\n }\n this.value = value;\n this.stateChanges.next('time picker: handleTimeInputChange');\n }\n this.onTouched();\n }\n}\n","<fd-time-picker\n [attr.aria-label]=\"ariaLabel\"\n [attr.ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [inputId]=\"id\"\n [required]=\"required\"\n [time]=\"time\"\n [meridian]=\"meridian\"\n [disabled]=\"disabled\"\n [displayFormat]=\"displayFormat\"\n [spinnerButtons]=\"spinnerButtons\"\n [displaySeconds]=\"displaySeconds\"\n [displayMinutes]=\"displayMinutes\"\n [displayHours]=\"displayHours\"\n [placeholder]=\"placeholder\"\n [timePickerInputLabel]=\"timePickerInputLabel\"\n [allowNull]=\"allowNull\"\n [tablet]=\"tablet\"\n [placement]=\"placement\"\n [parseFormat]=\"parseFormat\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [useValidation]=\"useValidation\"\n [keepTwoDigitsTime]=\"keepTwoDigitsTime\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (ngModelChange)=\"handleTimeChange($event)\"\n [(ngModel)]=\"value\"\n>\n <ng-content></ng-content>\n</fd-time-picker>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { TimePickerModule } from '@fundamental-ngx/core/time-picker';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { PlatformTimePickerComponent } from './time-picker.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n declarations: [PlatformTimePickerComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TimePickerModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformTimePickerComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformTimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","maxColumnsPerRow","formFieldProvider","formGroupChildProvider","i2.FormFieldLayoutService","i8.InputMessageGroupWithTemplate","i2","i2.InputComponent","i3","nextUniqueId","FdCheckboxComponent","i4.CheckboxComponent","i5","i2.CheckboxGroupComponent","CoreRadioButtonComponent","i5.RadioButtonComponent","i2.RadioGroupComponent","i2.TextAreaConfig","i2.TextAreaComponent","i2.SelectConfig","i3.SelectConfig","CoreSelect","i4","i7","i2.SelectComponent","createMissingDateImplementationError","FdDatePickerComponent","i2.PlatformDatePickerComponent","i2.SwitchConfig","i2.SwitchComponent","i3.MultiInputConfig","i4.MultiInputConfig","ListComponent","i6","i9","i11.AutoCompleteDirective","i12","i2.PlatformMultiInputComponent","merge","isFunction","i2.FormGeneratorComponentsAccessorService","i1.FormGeneratorService","i3.FormFieldComponent","i4.FormFieldErrorDirective","i5.FormFieldErrorHeadingDirective","i6.FormFieldErrorDescriptionDirective","i8.DynamicFormControlDirective","i3.ComboboxConfig","i4.ComboboxConfig","i8","i9.AutoCompleteDirective","i10","i11","i7.FormGroupHeaderComponent","i8.FieldGroupRowValuePipe","filter","i3.FormGroupComponent","i4.FormFieldComponent","i5.FormFieldGroupComponent","i6.FormFieldErrorDirective","i7.FormFieldErrorHeadingDirective","i8.FormFieldErrorDescriptionDirective","i12.DynamicFormControlFieldDirective","i13.FormGeneratorFieldComponent","i14.GetOrderedFieldControlsPipe","FdFormModule","i3.MultiComboboxConfig","i4.MultiComboboxConfig","i13.AutoCompleteDirective","i14","i15","i2.InputGroupConfig","i4.InputComponent","i5.InputGroupAddonBodyComponent","i3.StepInputConfig","i1.StepInputComponent","i8.StepInputDecrementDirective","i9.StepInputIncrementDirective","i10.StepInputControlDirective"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-platform-form.mjs","sources":["../../../../libs/platform/src/lib/form/helpers.ts","../../../../libs/platform/src/lib/form/form-group/constants.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/tokens.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/form-field-error.directive.ts","../../../../libs/platform/src/lib/form/form-group/helpers.ts","../../../../libs/platform/src/lib/form/form-group/form-field-extras/form-field-extras.component.ts","../../../../libs/platform/src/lib/form/input-message-group-with-template/input-message-group-with-template.component.ts","../../../../libs/platform/src/lib/form/input-message-group-with-template/input-message-group-with-template.component.html","../../../../libs/platform/src/lib/form/form-group/config/default-form-field-hint-options.ts","../../../../libs/platform/src/lib/form/form-group/fdp-form.tokens.ts","../../../../libs/platform/src/lib/form/form-group/services/form-field-layout.service.ts","../../../../libs/platform/src/lib/form/form-group/form-field/form-field.component.ts","../../../../libs/platform/src/lib/form/form-group/form-field/form-field.component.html","../../../../libs/platform/src/lib/form/form-group/form-field-group/form-field-group.component.ts","../../../../libs/platform/src/lib/form/form-generator/dynamic-form-control.ts","../../../../libs/platform/src/lib/form/form-generator/providers/providers.ts","../../../../libs/platform/src/lib/form/form-generator/base-dynamic-form-generator-control.ts","../../../../libs/platform/src/lib/form/input/input.component.ts","../../../../libs/platform/src/lib/form/input/input.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.html","../../../../libs/platform/src/lib/form/checkbox/checkbox.component.ts","../../../../libs/platform/src/lib/form/checkbox/checkbox.component.html","../../../../libs/platform/src/lib/form/checkbox-group/checkbox-group.component.ts","../../../../libs/platform/src/lib/form/checkbox-group/checkbox-group.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.html","../../../../libs/platform/src/lib/form/radio-group/radio/radio.component.ts","../../../../libs/platform/src/lib/form/radio-group/radio/radio.component.html","../../../../libs/platform/src/lib/form/radio-group/radio-group.component.ts","../../../../libs/platform/src/lib/form/radio-group/radio-group.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.html","../../../../libs/platform/src/lib/form/text-area/text-area.config.ts","../../../../libs/platform/src/lib/form/text-area/text-area.component.ts","../../../../libs/platform/src/lib/form/text-area/text-area.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.html","../../../../libs/platform/src/lib/form/select/select.config.ts","../../../../libs/platform/src/lib/form/select/commons/base-select.ts","../../../../libs/platform/src/lib/form/select/select/select.component.ts","../../../../libs/platform/src/lib/form/select/select/select.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.html","../../../../libs/platform/src/lib/form/date-picker/date-picker.component.ts","../../../../libs/platform/src/lib/form/date-picker/date-picker.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.html","../../../../libs/platform/src/lib/form/switch/switch/switch.config.ts","../../../../libs/platform/src/lib/form/switch/switch/switch.component.ts","../../../../libs/platform/src/lib/form/switch/switch/switch.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.html","../../../../libs/platform/src/lib/form/multi-input/multi-input.config.ts","../../../../libs/platform/src/lib/form/multi-input/base-multi-input.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.interface.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input-mobile/multi-input-mobile.component.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input-mobile/multi-input-mobile.component.html","../../../../libs/platform/src/lib/form/multi-input/multi-input-mobile/multi-input-mobile.module.ts","../../../../libs/platform/src/lib/form/auto-complete/auto-complete.directive.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.component.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.html","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.ts","../../../../libs/platform/src/lib/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.html","../../../../libs/platform/src/lib/form/form-generator/config/default-components-list.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator-components-accessor.service.ts","../../../../libs/platform/src/lib/form/form-generator/config/default-validation-errors.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator.service.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/form-field-error-heading.directive.ts","../../../../libs/platform/src/lib/form/form-group/form-field-error/form-field-error-description.directive.ts","../../../../libs/platform/src/lib/form/form-generator/dynamic-form-control.directive.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator-field/form-generator-field.component.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator-field/form-generator-field.component.html","../../../../libs/platform/src/lib/form/form-helpers.ts","../../../../libs/platform/src/lib/form/auto-complete/auto-complete.module.ts","../../../../libs/platform/src/lib/form/checkbox/checkbox.module.ts","../../../../libs/platform/src/lib/form/checkbox-group/checkbox-group.module.ts","../../../../libs/platform/src/lib/form/combobox/combobox.config.ts","../../../../libs/platform/src/lib/form/combobox/combobox.interface.ts","../../../../libs/platform/src/lib/form/combobox/combobox-mobile/combobox/combobox-mobile.component.ts","../../../../libs/platform/src/lib/form/combobox/combobox-mobile/combobox/combobox-mobile.component.html","../../../../libs/platform/src/lib/form/combobox/combobox-mobile/combobox-mobile.module.ts","../../../../libs/platform/src/lib/form/combobox/commons/base-combobox.ts","../../../../libs/platform/src/lib/form/combobox/combobox/combobox.component.ts","../../../../libs/platform/src/lib/form/combobox/combobox/combobox.component.html","../../../../libs/platform/src/lib/form/combobox/combobox.module.ts","../../../../libs/platform/src/lib/form/date-picker/date-picker.module.ts","../../../../libs/platform/src/lib/form/datetime-picker/errors.ts","../../../../libs/platform/src/lib/form/datetime-picker/datetime-picker.component.ts","../../../../libs/platform/src/lib/form/datetime-picker/datetime-picker.component.html","../../../../libs/platform/src/lib/form/datetime-picker/datetime-picker.module.ts","../../../../libs/platform/src/lib/form/form-generator/dynamic-form-control-field.directive.ts","../../../../libs/platform/src/lib/form/form-generator/config/default-form-generator-hint-options.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator.tokens.ts","../../../../libs/platform/src/lib/form/form-group/form-group-header/form-group-header.component.ts","../../../../libs/platform/src/lib/form/form-group/form-group-header/form-group-header.component.html","../../../../libs/platform/src/lib/form/form-group/pipes/field-group-row-value.pipe.ts","../../../../libs/platform/src/lib/form/form-group/form-group.component.ts","../../../../libs/platform/src/lib/form/form-group/form-group.component.html","../../../../libs/platform/src/lib/form/form-generator/pipes/get-ordered-form-controls.pipe.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator/form-generator.component.ts","../../../../libs/platform/src/lib/form/form-generator/form-generator/form-generator.component.html","../../../../libs/platform/src/lib/form/input/fdp-input.module.ts","../../../../libs/platform/src/lib/form/form-group/deprecated-form-group-compact.directive.ts","../../../../libs/platform/src/lib/form/form-group/fdp-form.module.ts","../../../../libs/platform/src/lib/form/select/option/option.component.ts","../../../../libs/platform/src/lib/form/select/select.module.ts","../../../../libs/platform/src/lib/form/radio-group/radio-group.module.ts","../../../../libs/platform/src/lib/form/text-area/text-area.module.ts","../../../../libs/platform/src/lib/form/switch/switch.module.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox.config.ts","../../../../libs/platform/src/lib/form/multi-combobox/commons/base-multi-combobox.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox.interface.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.html","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox/multi-combobox.component.ts","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox/multi-combobox.component.html","../../../../libs/platform/src/lib/form/multi-combobox/multi-combobox.module.ts","../../../../libs/platform/src/lib/form/multi-input/multi-input.module.ts","../../../../libs/platform/src/lib/form/form-generator/fdp-form-generator.module.ts","../../../../libs/platform/src/lib/form/input-group/constants.ts","../../../../libs/platform/src/lib/form/input-group/addon.component.ts","../../../../libs/platform/src/lib/form/input-group/addon-body.component.ts","../../../../libs/platform/src/lib/form/input-group/input.component.ts","../../../../libs/platform/src/lib/form/input-group/input-group.config.ts","../../../../libs/platform/src/lib/form/input-group/input-group.component.ts","../../../../libs/platform/src/lib/form/input-group/input-group.component.html","../../../../libs/platform/src/lib/form/input-group/input-group.module.ts","../../../../libs/platform/src/lib/form/platform-file-uploader/platform-file-uploader.component.ts","../../../../libs/platform/src/lib/form/platform-file-uploader/platform-file-uploader.component.html","../../../../libs/platform/src/lib/form/platform-file-uploader/platform-file-uploader.module.ts","../../../../libs/platform/src/lib/form/step-input/step-input.config.ts","../../../../libs/platform/src/lib/form/step-input/step-input.util.ts","../../../../libs/platform/src/lib/form/step-input/base.step-input.ts","../../../../libs/platform/src/lib/form/step-input/step-input-action-button.ts","../../../../libs/platform/src/lib/form/step-input/step-input-decrement.directive.ts","../../../../libs/platform/src/lib/form/step-input/step-input-increment.directive.ts","../../../../libs/platform/src/lib/form/step-input/step-input-control.directive.ts","../../../../libs/platform/src/lib/form/step-input/number/number-step-input.component.ts","../../../../libs/platform/src/lib/form/step-input/number/number-step-input.component.html","../../../../libs/platform/src/lib/form/step-input/step-input.module.ts","../../../../libs/platform/src/lib/form/time-picker/time-picker.component.ts","../../../../libs/platform/src/lib/form/time-picker/time-picker.component.html","../../../../libs/platform/src/lib/form/time-picker/time-picker.module.ts","../../../../libs/platform/src/lib/form/fundamental-ngx-platform-form.ts"],"sourcesContent":["import { FormStates } from '@fundamental-ngx/cdk/forms';\n\n/**\n * Returns form state based on priority.\n * @param states Error states of the form fields.\n * @param priorityStates Array of prioritized states.\n * @returns first found form state of `priorityStates`.\n */\nexport function getFormState(\n states: FormStates[],\n priorityStates: FormStates[] = ['error', 'warning', 'information', 'success', 'default']\n): FormStates {\n let priorityState: FormStates = 'default';\n\n priorityStates.some((state) => {\n const firstErrorState = states.find((formState) => formState === state);\n\n if (!firstErrorState) {\n return false;\n }\n\n priorityState = firstErrorState;\n return true;\n });\n\n return priorityState;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ColumnLayout } from '@fundamental-ngx/platform/shared';\n\nexport const FORM_GROUP_CHILD_FIELD_TOKEN = new InjectionToken<string>('FORM_GROUP_CHILD_FIELD_TOKEN');\n\nexport const DefaultHorizontalLabelLayout: ColumnLayout = {\n XL: 4,\n L: 4,\n M: 4,\n S: 12\n};\n\nexport const DefaultVerticalLabelLayout: ColumnLayout = {\n S: 12\n};\n\nexport const DefaultHorizontalFieldLayout: ColumnLayout = {\n XL: 8,\n L: 8,\n M: 8,\n S: 12\n};\n\nexport const DefaultVerticalFieldLayout: ColumnLayout = {\n S: 12\n};\n\nexport const DefaultGapLayout: ColumnLayout = {\n S: 0\n};\n","import { InjectionToken } from '@angular/core';\n\nexport const FDP_FORM_ERROR_DIRECTIVE = new InjectionToken('FdpFormErrorDirective');\n","import { ChangeDetectorRef, Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport {\n FormError,\n FormErrorDescription,\n FormErrorHeading,\n FormFieldErrorContext\n} from '@fundamental-ngx/platform/shared';\nimport { Subject } from 'rxjs';\nimport { FDP_FORM_ERROR_DIRECTIVE } from './tokens';\n\n@Directive({\n selector: '[fdpFormFieldError]',\n providers: [\n {\n provide: FDP_FORM_ERROR_DIRECTIVE,\n useExisting: FormFieldErrorDirective\n }\n ]\n})\nexport class FormFieldErrorDirective<T = any> implements FormError<T>, OnInit {\n /** Used to connect data with model for typings support. */\n @Input()\n fdpFormFieldErrorAs: T;\n\n /** Error name */\n @Input('fdpFormFieldError')\n error: string;\n\n /** Error type */\n @Input()\n fdpFormFieldErrorType: FormStates = 'error';\n\n /** @hidden */\n detectChanges$ = new Subject<void>();\n\n /** Error type. Defines which type to return. Either self, or from heading directive. */\n get type(): FormStates {\n return this._headingDirective?.fdpFormFieldErrorHeadingType ?? this.fdpFormFieldErrorType;\n }\n\n /** @hidden */\n private _headingDirective: FormErrorHeading | undefined;\n\n /** @hidden */\n private _descriptionDirective: FormErrorDescription | undefined;\n\n /** @hidden */\n private _detectTimeout: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n get _headingTemplateRef(): TemplateRef<FormFieldErrorContext<T>> {\n return this._headingDirective?.templateRef ?? this.templateRef;\n }\n\n /** @hidden */\n get _descriptionTemplateRef(): TemplateRef<FormFieldErrorContext<T>> | null {\n return this._descriptionDirective?.templateRef ?? null;\n }\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: FormFieldErrorDirective,\n ctx: FormFieldErrorContext<any>\n ): ctx is FormFieldErrorContext<any> {\n return true;\n }\n\n /** @hidden */\n constructor(\n public templateRef: TemplateRef<FormFieldErrorContext<T>>,\n private _viewContainer: ViewContainerRef,\n private _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n // We need to create view in order to initialize child directives immediately.\n this._createView();\n }\n\n /** Registers child heading directive. */\n registerHeading(directive: FormErrorHeading): void {\n this._headingDirective = directive;\n this._detectChanges();\n }\n\n /** Registers child description directive. */\n registerDescription(directive: FormErrorDescription): void {\n this._descriptionDirective = directive;\n this._detectChanges();\n }\n\n /** @hidden */\n private _createView(): void {\n this._viewContainer.createEmbeddedView(this.templateRef);\n this._viewContainer.detach();\n }\n\n /** @hidden */\n private _detectChanges(): void {\n // Since child directives can register itself almost instantly, we need to trigger detect changes only one time,\n // in order to bypass error with expected/actual directives count.\n clearTimeout(this._detectTimeout);\n this._detectTimeout = setTimeout(() => {\n this._cdr.detectChanges();\n this.detectChanges$.next();\n }, 5);\n }\n}\n","import { ColumnLayout, ColumnLayoutGridClass } from '@fundamental-ngx/platform/shared';\n\n/** @hidden */\nexport function normalizeColumnLayout(layout: ColumnLayout, defaultColumn = 12): Required<ColumnLayout> {\n layout['S'] = layout['S'] !== undefined ? layout['S'] : defaultColumn;\n layout['M'] = layout['M'] || layout['S'];\n layout['L'] = layout['L'] || layout['M'];\n layout['XL'] = layout['XL'] || layout['L'];\n\n return layout as Required<ColumnLayout>;\n}\n\n/** @hidden */\nexport function generateColumnClass(layout: ColumnLayout): string {\n return Object.entries(layout)\n .reduce((overall, value) => {\n overall.push(`fd-col-${ColumnLayoutGridClass[value[0]]}--${value[1]}`);\n return overall;\n }, [] as string[])\n .join(' ');\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'fdp-form-field-extras',\n template: '<ng-content></ng-content>',\n // \"display: flex\" is used in order to have margin included in control's dimensions\n styles: [':host { display: flex; white-space: normal; }'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormFieldControlExtrasComponent {}\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { FormInputMessageGroupComponent } from '@fundamental-ngx/core/form';\n\n/**\n * This extends core implementation to support richer extensibility and instead of relying\n * only on ng-content selector this will allow you to put any content as trigger.\n *\n * Let's think of u\n */\n@Component({\n selector: 'fdp-input-message-group',\n templateUrl: './input-message-group-with-template.component.html',\n styleUrls: ['./input-message-group-with-template.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class InputMessageGroupWithTemplate extends FormInputMessageGroupComponent {\n /**\n * Custom trigger element.\n */\n @ContentChild('triggerItem', { static: false })\n triggerItemTemplate: TemplateRef<any>;\n}\n","<fd-popover\n (isOpenChange)=\"openChanged($event)\"\n additionalBodyClass=\"fd-popover__body--input-message-group\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [fillControlMode]=\"fillControlMode\"\n [isOpen]=\"isOpen\"\n [placement]=\"placement\"\n [triggers]=\"['focusin', 'focusout']\"\n class=\"fd-form-input-message-group fd-popover--input-message-group\"\n>\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"triggerItemTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n</fd-popover>\n","import { FieldHintOptions } from '@fundamental-ngx/platform/shared';\n\nexport const defaultFormFieldHintOptions: Omit<FieldHintOptions, 'content'> = {\n placement: 'right',\n position: 'after',\n trigger: [\n { trigger: 'mouseenter', openAction: true, closeAction: false },\n { trigger: 'mouseleave', openAction: false, closeAction: true },\n { trigger: 'focusin', openAction: true, closeAction: false },\n { trigger: 'focusout', openAction: false, closeAction: true }\n ],\n glyph: 'hint',\n target: 'auto'\n};\n","import { InjectionToken } from '@angular/core';\nimport { Column, ColumnLayout, FieldHintOptions } from '@fundamental-ngx/platform/shared';\nimport { defaultFormFieldHintOptions } from './config/default-form-field-hint-options';\n\nexport const FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT = new InjectionToken<Omit<FieldHintOptions, 'content'>>(\n 'Form field default hint options',\n {\n factory: () => defaultFormFieldHintOptions\n }\n);\n\nexport interface HintLayoutConfig {\n hintOnInputBreakpoints: Array<keyof ColumnLayout>;\n hintPlaceMinSize: Column;\n}\n\nexport const FDP_FORM_FIELD_HINT_LAYOUT_CONFIG = new InjectionToken<HintLayoutConfig>(\n 'Configuration for setting default values for configuring how places for inline help are coming',\n {\n factory: () => ({\n hintOnInputBreakpoints: ['M', 'L', 'XL'],\n hintPlaceMinSize: 1\n })\n }\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ColumnLayout } from '@fundamental-ngx/platform/shared';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { normalizeColumnLayout } from '../helpers';\nimport { GRID_COLUMNS_NUMBER as maxColumnsPerRow } from '@fundamental-ngx/core/layout-grid';\nimport { FDP_FORM_FIELD_HINT_LAYOUT_CONFIG, HintLayoutConfig } from '../fdp-form.tokens';\n\ntype Layouts = {\n labelColumnLayout: ColumnLayout;\n fieldColumnLayout: ColumnLayout;\n gapColumnLayout: ColumnLayout;\n};\n\n/**\n * Should be used in component level. Ideally placed on container component,\n * so that every it's child FormField can have shared information about peers'\n * need about inline help place.\n */\n@Injectable()\nexport class FormFieldLayoutService {\n /**\n * Will notify if inline help place is needed. If any of the FormFields in group have\n * hintOptions config set the way that it might end up on 'input', then it will emit true\n */\n readonly needsInlineHelpPlace: Observable<boolean>;\n /** @hidden */\n private _needsInlineHelpPlace$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n private _elementsMap: Map<Record<string, any>, boolean> = new Map();\n\n /** @hidden */\n constructor(@Inject(FDP_FORM_FIELD_HINT_LAYOUT_CONFIG) private _hintLayoutConfig: HintLayoutConfig) {\n this.needsInlineHelpPlace = this._needsInlineHelpPlace$.pipe(distinctUntilChanged());\n }\n\n /**\n * Notify service about target component's requirement for the place for inline help\n */\n setNeedsInlineHelp(target: Record<string, any>, isNeeded: boolean): void {\n this._elementsMap.set(target, isNeeded);\n this._updateCombinedValue();\n }\n\n /**\n * Function will give place for hint in case it does not have it yet,\n * if combined needsInlineHelpPlace value is true\n */\n getFixedLayouts(layouts: Layouts): Layouts {\n const fieldColumnLayout = normalizeColumnLayout({ ...layouts.fieldColumnLayout });\n const labelColumnLayout = normalizeColumnLayout({ ...layouts.labelColumnLayout });\n const gapColumnLayout = normalizeColumnLayout({\n ...(layouts.gapColumnLayout ? layouts.gapColumnLayout : { S: 0 })\n });\n if (this._needsInlineHelpPlace$.value) {\n this._hintLayoutConfig.hintOnInputBreakpoints.forEach((sizeName) => {\n const shouldFitInOneLine =\n labelColumnLayout[sizeName] + fieldColumnLayout[sizeName] + gapColumnLayout[sizeName] <=\n maxColumnsPerRow;\n if (gapColumnLayout[sizeName] < this._hintLayoutConfig.hintPlaceMinSize) {\n gapColumnLayout[sizeName] = this._hintLayoutConfig.hintPlaceMinSize;\n }\n if (gapColumnLayout[sizeName] + fieldColumnLayout[sizeName] > maxColumnsPerRow) {\n const diff = gapColumnLayout[sizeName] + fieldColumnLayout[sizeName] - maxColumnsPerRow;\n fieldColumnLayout[sizeName] -= diff;\n }\n if (shouldFitInOneLine) {\n const maxAllocatedPlaceForFieldAndLabel = maxColumnsPerRow - gapColumnLayout[sizeName];\n while (\n labelColumnLayout[sizeName] + fieldColumnLayout[sizeName] >\n maxAllocatedPlaceForFieldAndLabel\n ) {\n fieldColumnLayout[sizeName] -= 1;\n }\n }\n });\n }\n return { fieldColumnLayout, labelColumnLayout, gapColumnLayout };\n }\n\n /**\n * Remove component from the combined value calculations\n */\n removeEntry(target: Record<string, any>): void {\n this._elementsMap.delete(target);\n this._updateCombinedValue();\n }\n\n /**\n * Will loop through all registered components and if any of them has need for\n * inline help place, then it will notify listeners about it and also will set\n * local variable\n * @hidden\n */\n private _updateCombinedValue(): void {\n for (const [, needed] of this._elementsMap) {\n if (needed) {\n return this._needsInlineHelpPlace$.next(true);\n }\n }\n this._needsInlineHelpPlace$.next(false);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Provider,\n QueryList,\n Self,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { FD_FORM_FIELD, FormFieldControl, FormStates } from '@fundamental-ngx/cdk/forms';\nimport { uniqBy } from 'lodash-es';\nimport { BehaviorSubject, combineLatest, filter, Observable, Subject, Subscription, tap } from 'rxjs';\nimport { map, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport {\n Column,\n ColumnLayout,\n FieldHintOptions,\n FormError,\n PlatformFormFieldControl,\n FormFieldErrorDirectiveContext,\n FormFieldGroup,\n FormGroupContainer,\n HintPlacement,\n LabelLayout,\n RESPONSIVE_BREAKPOINTS_CONFIG,\n ResponsiveBreakPointConfig,\n ResponsiveBreakpointsService,\n PlatformFormField,\n FieldHintInput,\n HintContent\n} from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { getFormState } from '../../helpers';\nimport {\n DefaultHorizontalFieldLayout,\n DefaultHorizontalLabelLayout,\n DefaultVerticalFieldLayout,\n DefaultVerticalLabelLayout,\n FORM_GROUP_CHILD_FIELD_TOKEN\n} from '../constants';\nimport { FormFieldErrorDirective } from '../form-field-error/form-field-error.directive';\nimport { generateColumnClass, normalizeColumnLayout } from '../helpers';\nimport { FormFieldControlExtrasComponent } from '../form-field-extras/form-field-extras.component';\nimport { InputMessageGroupWithTemplate } from '../../input-message-group-with-template/input-message-group-with-template.component';\nimport {\n FDP_FORM_FIELD_HINT_LAYOUT_CONFIG,\n FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT,\n HintLayoutConfig\n} from '../fdp-form.tokens';\nimport { FormFieldLayoutService } from '../services/form-field-layout.service';\nimport { defaultFormFieldHintOptions } from '../config/default-form-field-hint-options';\n\nlet defaultId = 0;\n\nconst formFieldProvider: Provider = {\n provide: FD_FORM_FIELD,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\nconst formGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\n/**\n * Form Field represent actual row and aggregates common behavior for the input field such as\n * error, label or hint.\n * Hint is also responsible for listening for FieldControl changes and trigger necessary\n * change detection\n *\n */\n@Component({\n selector: 'fdp-form-field',\n templateUrl: 'form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [formFieldProvider, formGroupChildProvider, FormFieldLayoutService]\n})\nexport class FormFieldComponent\n implements PlatformFormField, AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges\n{\n /** Form field label */\n @Input()\n label: string;\n\n /**\n * Suffix for ids of control elements inside this form field\n */\n @Input()\n id: string = (++defaultId).toString();\n\n /**\n * @deprecated use `hint.placement` input instead\n * Defines hint placement\n */\n @Input()\n hintPlacement: HintPlacement;\n\n /** Hint to be placed next to label */\n @Input()\n hint: Nullable<FieldHintInput>;\n\n /**\n * @deprecated\n * Use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties.\n * Define form field label placement\n */\n @Input()\n set labelLayout(value: LabelLayout) {\n if (isDevMode()) {\n console.warn(\n 'LabelLayout input property is deprecated. Please use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties instead'\n );\n }\n this._labelLayout = value;\n\n this.labelColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalLabelLayout : DefaultVerticalLabelLayout;\n this.fieldColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalFieldLayout : DefaultVerticalFieldLayout;\n }\n\n get labelLayout(): LabelLayout {\n return this._labelLayout;\n }\n\n /**\n * Indicates when form field label should not be displayed\n */\n @Input()\n noLabelLayout = false;\n\n /**\n * The list of validators applied to the form field.\n */\n @Input()\n validators: Array<ValidatorFn> = [Validators.nullValidator];\n\n /**\n * Rank is used for ordering.\n * First lower number, then - higher\n */\n @Input()\n rank: number;\n\n /**\n * Placeholder for the field\n */\n @Input()\n placeholder: string;\n\n /** Form Container column it belongs to */\n @Input()\n column: number;\n\n /** object for placing field in column in each screen layout */\n @Input()\n set columnLayout(layout: ColumnLayout | undefined) {\n if (!layout) {\n return;\n }\n this._columnLayout = layout;\n this._isColumnLayoutEnabled = true;\n this._setLayout();\n }\n\n get columnLayout(): ColumnLayout {\n return this._columnLayout;\n }\n\n /**\n * Defines label's column layout.\n */\n @Input()\n set labelColumnLayout(value: ColumnLayout | undefined) {\n if (!value) {\n return;\n }\n this._labelColumnLayout = normalizeColumnLayout(value);\n this._labelColumnLayoutClass = generateColumnClass(this._labelColumnLayout);\n this._labelColumnLayout$.next(this._labelColumnLayout);\n }\n\n get labelColumnLayout(): ColumnLayout {\n return this._labelColumnLayout;\n }\n\n /**\n * Defines field's column layout.\n */\n @Input()\n set fieldColumnLayout(value: ColumnLayout | undefined) {\n if (!value) {\n return;\n }\n\n this._fieldColumnLayout = normalizeColumnLayout(value);\n this._fieldColumnLayoutClass = generateColumnClass(this._fieldColumnLayout);\n this._fieldColumnLayout$.next(this._fieldColumnLayout);\n }\n\n get fieldColumnLayout(): ColumnLayout {\n return this._fieldColumnLayout;\n }\n\n /**\n * Defines gap column layout.\n */\n @Input()\n set gapColumnLayout(value: ColumnLayout | undefined) {\n if (!value) {\n return;\n }\n\n this._gapColumnLayout = normalizeColumnLayout(value);\n this._gapColumnLayoutClass = generateColumnClass(this._gapColumnLayout);\n this._gapColumnLayout$.next(this._gapColumnLayout);\n }\n\n get gapColumnLayout(): ColumnLayout {\n return this._gapColumnLayout;\n }\n\n /**\n * Translations template reference.\n * This is in most of the cases set from parent container (form-group)\n */\n @Input()\n i18Strings: TemplateRef<any>;\n\n /** Set when form field is a mandatory one. */\n @Input()\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n\n get required(): boolean {\n return this._required;\n }\n\n /**\n * Indicates if field is editable\n */\n @Input()\n set editable(value: BooleanInput) {\n const newVal = coerceBooleanProperty(value);\n if (this._editable !== newVal) {\n this._editable = newVal;\n this._updateControlProperties();\n }\n }\n\n get editable(): boolean {\n return this._editable;\n }\n\n /**\n * Form field custom width in columns must be between 1 - 12\n */\n @Input()\n set columns(value: Column) {\n this._columns = <Column>coerceNumberProperty(value);\n }\n\n get columns(): Column {\n return this._columns;\n }\n\n /**\n * marks field as disabled. used in reactive form approach.\n */\n @Input()\n disabled = false;\n\n /** Whether label text should be appended with colon. */\n @Input()\n colon = false;\n\n /**\n * Form Group Container to bind the Form-Field to.\n * This will override default value injected by constructor\n */\n @Input()\n formGroupContainer: FormGroupContainer;\n\n /** Emits whenever formFieldControl's state changes */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onChange: EventEmitter<string> = new EventEmitter<string>();\n\n /** Emits whenever column layout is changed */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onColumnChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * @hidden\n * Form field template reference\n */\n @ViewChild('renderer', { static: true })\n renderer: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(FormFieldControlExtrasComponent, { read: ElementRef })\n formFieldExtras?: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ContentChildren(FormFieldErrorDirective)\n private _errorDirectiveQuery: QueryList<FormError>;\n\n /** @hidden */\n @ViewChild('labelCol') labelCol?: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @ViewChild(InputMessageGroupWithTemplate, { read: ElementRef })\n inputMessageGroup: ElementRef<HTMLElement>;\n\n /** Combined Error directives from field itself and parent form container. */\n get errorDirectives(): FormError[] {\n return uniqBy([...this._errorDirectives, ...this._formGroupErrorDirectives], 'error');\n }\n\n /** @hidden */\n isHorizontal$: Observable<boolean>;\n\n /**\n * Child FormFieldControl\n */\n control: PlatformFormFieldControl | null;\n\n /** @hidden */\n _labelColumnLayoutClass: string;\n\n /** @hidden */\n _fieldColumnLayoutClass: string;\n\n /** @hidden */\n _gapColumnLayoutClass: string;\n\n /**\n * hint and hint placement coerced to the FieldHintOptions\n */\n hintOptions: FieldHintOptions = defaultFormFieldHintOptions as unknown as FieldHintOptions;\n\n /** @hidden */\n _errorDirectives: FormError[] = [];\n\n /** Grouped errors. */\n groupedErrors: FormFieldErrorDirectiveContext[] = [];\n\n /** Event emited when errors object being changed. */\n errorsChange$ = new Subject<void>();\n\n /**\n * @hidden\n * Optional FormControl\n */\n public formControl: FormControl;\n\n /** @hidden */\n protected _columns: Column = 6;\n\n /** @hidden */\n protected _editable = true;\n\n /** @hidden */\n protected _formGroup: FormGroup;\n\n /** @hidden */\n protected _required = false;\n\n /** @hidden */\n protected _destroyed$ = new Subject<void>();\n\n /** @hidden */\n private _isColumnLayoutEnabled = false;\n\n /** @hidden column number for different screen sizes */\n private _xlColumnNumber: number;\n\n /** @hidden */\n private _lgColumnNumber: number;\n\n /** @hidden */\n private _mdColumnNumber: number;\n\n /** @hidden */\n private _sColumnNumber = 1;\n\n /** @hidden */\n private _columnLayout: ColumnLayout;\n\n /** @hidden */\n private readonly _responsiveBreakPointConfig: ResponsiveBreakPointConfig;\n\n /** @hidden */\n private _labelLayout: LabelLayout;\n\n /** @hidden */\n private _labelColumnLayout: ColumnLayout;\n\n /** @hidden */\n private _fieldColumnLayout: ColumnLayout;\n /** @hidden */\n private _gapColumnLayout: ColumnLayout;\n\n /** @hidden */\n private _formGroupErrorDirectives: FormError[] = [];\n\n /** @hidden */\n private _formGroupErrorDirectivesSubscription: Subscription;\n\n /** @hidden */\n private _errorDirectivesCdr: Subscription;\n\n /** @hidden whether label and control are vertically aligned */\n private get _isHorizontalAlignment(): boolean {\n if (!this.inputMessageGroup || !this.labelCol) {\n return false;\n }\n const inputMessageGroupY = this.inputMessageGroup.nativeElement.getBoundingClientRect().y;\n const labelColRect = this.labelCol.nativeElement.getBoundingClientRect();\n const labelColBottomY = labelColRect.y + labelColRect.height;\n return labelColBottomY > inputMessageGroupY;\n }\n\n /**\n * @hidden\n * Sum of extra heights inside form control and formFieldExtras.\n * Label will be shifted by this number in order to be properly aligned with the control\n */\n get _controlExtrasHeightPx(): number | null {\n if (this.noLabelLayout || !this._isHorizontalAlignment) {\n // proceed only if 1. there's a label; 2. control has vertical alignment\n return null;\n }\n return (\n (this.formFieldExtras?.nativeElement.offsetHeight ?? 0) + (this.control?.extraContentHeightPx ?? 0) || null\n );\n }\n\n /** @hidden */\n private _labelColumnLayout$: BehaviorSubject<ColumnLayout>;\n /** @hidden */\n private _fieldColumnLayout$: BehaviorSubject<ColumnLayout>;\n /** @hidden */\n private _gapColumnLayout$: BehaviorSubject<ColumnLayout>;\n /** @hidden */\n private _needsInlineHelpPlaceSubscription?: Subscription;\n\n /** @hidden */\n get _groupHost(): FormGroupContainer | FormFieldGroup {\n return this.formFieldGroup ? this.formFieldGroup : this.formGroupContainer;\n }\n\n /**\n * Will be updated during onChanges and resize, resulting correct placement of the\n * hint respecting passed configs and given breakpoint of screen.\n */\n hintTarget?: string;\n\n /** @hidden */\n private _breakPointObserver: Observable<any>;\n\n /** @hidden */\n private _formFieldLayoutService: FormFieldLayoutService;\n /** @hidden */\n private readonly _defaultHintOptions: FieldHintOptions;\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() formGroupContainer: FormGroupContainer,\n @Optional() readonly formFieldGroup: FormFieldGroup,\n @Optional()\n @Inject(RESPONSIVE_BREAKPOINTS_CONFIG)\n readonly _defaultResponsiveBreakPointConfig: ResponsiveBreakPointConfig,\n readonly _responsiveBreakpointsService: ResponsiveBreakpointsService,\n @Inject(FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT) _providedHintOptions: FieldHintOptions,\n @Inject(FDP_FORM_FIELD_HINT_LAYOUT_CONFIG) private _hintLayoutConfig: HintLayoutConfig,\n @Self() _selfFormFieldLayoutService: FormFieldLayoutService,\n @Optional() @SkipSelf() _parentFormFieldLayoutService: FormFieldLayoutService\n ) {\n this._defaultHintOptions = {\n ...defaultFormFieldHintOptions,\n ..._providedHintOptions\n };\n this._formFieldLayoutService = _parentFormFieldLayoutService || _selfFormFieldLayoutService;\n this._labelColumnLayout$ = new BehaviorSubject(this._labelColumnLayout);\n this._fieldColumnLayout$ = new BehaviorSubject(this._fieldColumnLayout);\n this._gapColumnLayout$ = new BehaviorSubject(this._gapColumnLayout);\n // formGroupContainer can be injected only if current form-field is located\n // insight formGroupContainer content.\n // If this is not the case the formGroupContainer\n // will be undefined (known angular issue),\n // in such case formGroupContainer can be pointed explicitly using\n // component input annotation\n this.formGroupContainer = formGroupContainer;\n this._responsiveBreakPointConfig = _defaultResponsiveBreakPointConfig || new ResponsiveBreakPointConfig();\n this._breakPointObserver = this._responsiveBreakpointsService.observeBreakpointByConfig(\n this._responsiveBreakPointConfig\n );\n }\n\n /**\n * Sets initial values for label, field and gap columns\n */\n setDefaultColumnLayout(): void {\n // If layout already defined, no need to set default one.\n if (this.labelColumnLayout) {\n return;\n }\n this.listenToInlineHelpPlaceRequirementChanges(() => (this.labelColumnLayout ? this : this._groupHost));\n }\n\n /** @hidden */\n listenToInlineHelpPlaceRequirementChanges(getSource: () => any): void {\n if (this._needsInlineHelpPlaceSubscription) {\n this._needsInlineHelpPlaceSubscription.unsubscribe();\n this._needsInlineHelpPlaceSubscription = void 0;\n }\n const setLayouts = (source: any): void => {\n this.labelColumnLayout = source.labelColumnLayout;\n this.fieldColumnLayout = source.fieldColumnLayout;\n this.gapColumnLayout = source.gapColumnLayout;\n };\n this._needsInlineHelpPlaceSubscription = this._formFieldLayoutService.needsInlineHelpPlace\n .pipe(\n map(() => this._formFieldLayoutService.getFixedLayouts(getSource())),\n tap(setLayouts),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnInit(): void {\n // provides capability to make a field disabled. useful in reactive form approach.\n this.formControl =\n (this.formGroupContainer?.formGroup?.get(this.id) as FormControl) ??\n new FormControl({ value: null, disabled: this.disabled });\n\n if (this.columns && (this.columns < 1 || this.columns > 12)) {\n throw new Error('[columns] accepts numbers between 1 - 12');\n }\n\n if (this._isColumnLayoutEnabled) {\n this._breakPointObserver\n .pipe(takeUntil(this._destroyed$))\n .subscribe((breakPointName) => this._updateLayout(breakPointName));\n }\n\n this._addToFormGroup();\n\n this.isHorizontal$ = combineLatest([\n this._labelColumnLayout$.pipe(filter(Boolean), map(normalizeColumnLayout)),\n this._fieldColumnLayout$.pipe(filter(Boolean), map(normalizeColumnLayout)),\n this._gapColumnLayout$.pipe(map((g) => normalizeColumnLayout(g || { S: 0 })))\n ]).pipe(\n switchMap(([label, field, gap]) =>\n this._breakPointObserver.pipe(\n map((breakpointName) => label[breakpointName] + field[breakpointName] + gap[breakpointName] <= 12)\n )\n )\n );\n this.listenToInlineHelpPlaceRequirementChanges(() => this);\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hint || changes.hintPlacement) {\n this._updateHintOptions();\n this._formFieldLayoutService.setNeedsInlineHelp(\n this,\n (this.hintOptions.target === 'input' || this.hintOptions.target === 'auto') && !!this.hint\n );\n }\n if (changes.hint && changes.hint.firstChange) {\n this._breakPointObserver\n .pipe(\n tap((sizeName) => {\n if (this.hintOptions.target === 'auto') {\n this.hintTarget = this._hintLayoutConfig.hintOnInputBreakpoints.includes(sizeName)\n ? 'input'\n : 'label';\n } else {\n this.hintTarget = this.hintOptions.target;\n }\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._cd.markForCheck();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._assignErrorDirectives();\n\n this._errorDirectiveQuery.changes.pipe(takeUntil(this._destroyed$)).subscribe(() => {\n this._assignErrorDirectives();\n });\n this._updateControlProperties();\n this._validateErrorHandler();\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._formFieldLayoutService.removeEntry(this);\n this._removeFromFormGroup();\n this._destroyed$.next();\n this._destroyed$.complete();\n this._errorDirectivesCdr?.unsubscribe();\n this._formGroupErrorDirectivesSubscription?.unsubscribe();\n }\n\n /** @hidden */\n hasErrors(): boolean {\n const result = this._editable && !!this.control?.controlInvalid;\n return result;\n }\n\n /**\n * Register underlying form control\n * @param formFieldControl\n */\n registerFormFieldControl(formFieldControl: FormFieldControl): void {\n if (this.control) {\n throw Error('Form field can contain only one FormFieldControl');\n }\n\n this.control = formFieldControl as PlatformFormFieldControl;\n\n formFieldControl.stateChanges.pipe(startWith(null), takeUntil(this._destroyed$)).subscribe(() => {\n this._updateControlProperties();\n // need to call explicitly detectChanges() instead of markForCheck before the\n // modified validation state of the control passes over checked phase\n this.onChange.emit('stateChanges');\n this.groupErrors();\n this._cd.detectChanges();\n });\n\n // Refresh UI when value changes\n if (formFieldControl?.ngControl?.valueChanges) {\n formFieldControl.ngControl.valueChanges.pipe(takeUntil(this._destroyed$)).subscribe(() => {\n this.onChange.emit('valueChanges');\n this.groupErrors();\n this._cd.markForCheck();\n });\n }\n\n if (formFieldControl?.ngControl?.control) {\n const control = formFieldControl.ngControl.control;\n\n const hasRequiredValidator =\n this.validators.includes(Validators.required) || this.validators.includes(Validators.requiredTrue);\n\n if (this.required && !hasRequiredValidator) {\n this.validators.push(Validators.required);\n }\n\n if (hasRequiredValidator) {\n this.required = true;\n }\n\n // if form control is disabled, in reactive form approach\n if (this.disabled) {\n control.disable();\n }\n\n /**\n * There is a case when a \"form-group\" initial state is VALID,\n * and on the next loop a child form-filed extends it and make\n * the form-group INVALID.\n * In such case we get the error\n * \"ExpressionChangedAfterItHasBeenCheckedError. Previous value is ng-valid, current value is ng-invalid\".\n * To fix it we have to postpone adding form-field validators\n *\n */\n Promise.resolve().then(() => {\n control.setValidators(Validators.compose(this.validators));\n control.updateValueAndValidity({ emitEvent: false });\n });\n\n this._addControlToFormGroup(formFieldControl?.ngControl?.control);\n }\n\n this._cd.markForCheck();\n }\n\n /**\n * Unregister underlying form control\n * @param formFieldControl\n */\n unregisterFormFieldControl(formFieldControl: FormFieldControl): void {\n if (formFieldControl !== this.control) {\n return;\n }\n\n this.control = null;\n\n this._removeControlFromFormGroup();\n }\n\n /**\n * Groups\n */\n groupErrors(): void {\n // Queue task because firing it right away may cause error with showing empty message.\n setTimeout(() => {\n this.groupedErrors = [];\n const errors = this.control?.ngControl?.errors;\n if (!errors) {\n return [];\n }\n\n this.errorDirectives.forEach((directive) => {\n if (!errors[directive.error]) {\n return;\n }\n\n this.groupedErrors.push({\n directive,\n error: errors[directive.error]\n });\n });\n this.errorsChange$.next();\n this._cd.markForCheck();\n });\n }\n\n /**\n * Gets prioritized control state based on the error types it has.\n */\n getPriorityState(): FormStates {\n if (this.groupedErrors.length === 0) {\n return this.hasErrors() ? 'error' : 'default';\n }\n\n return getFormState(this.groupedErrors.map((error) => error.directive.type));\n }\n\n /**\n * Sets error directives.\n */\n setErrorDirectives(directives: QueryList<FormError>): void {\n this._formGroupErrorDirectivesSubscription?.unsubscribe();\n\n if (!directives) {\n return;\n }\n\n this._formGroupErrorDirectives = directives.toArray();\n\n this._formGroupErrorDirectivesSubscription = directives.changes\n .pipe(takeUntil(this._destroyed$))\n .subscribe(() => {\n this._formGroupErrorDirectives = directives.toArray();\n });\n }\n\n /**\n * Returns whether content of the provided hint is a string.\n * @hidden\n */\n isStringHint(hintOptions: HintContent): hintOptions is string {\n return typeof hintOptions === 'string';\n }\n\n /** @hidden */\n private _validateErrorHandler(): void {\n if (\n this._editable &&\n this.control &&\n this._hasValidators() &&\n !this.i18Strings &&\n this.errorDirectives.length === 0\n ) {\n throw new Error('Validation strings are required for the any provided validations.');\n }\n }\n\n /** @hidden */\n private _hasValidators(): boolean {\n return this.validators && this.validators.length > 1;\n }\n\n /**\n * @hidden\n * Add FormField to FormGroup\n */\n private _addToFormGroup(): void {\n if (!this.formGroupContainer || this.formFieldGroup) {\n return;\n }\n\n this.formGroupContainer.addFormField(this);\n }\n\n /**\n * @hidden\n * Remove FormField from FormGroup\n */\n private _removeFromFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.removeFormField(this);\n }\n\n /**\n * @hidden\n * Add FormControl from FormGroup\n */\n private _addControlToFormGroup(control: AbstractControl): void {\n if (!this.formGroupContainer || !!this.formFieldGroup?.formName) {\n return;\n }\n this.formGroupContainer.addFormControl(this.id, control);\n }\n\n /**\n * @hidden\n * Remove FormControl from FormGroup\n */\n private _removeControlFromFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.removeFormControl(this.id);\n }\n\n /**\n * @hidden\n * Need to be able to set these properties on every level.\n * - Global FormGroup Level as well each field\n *\n * Todo: use more elegant way to set these properties.\n */\n private _updateControlProperties(): void {\n if (this.control && this._editable) {\n this.control.id = this.id;\n this.control.required = this.required;\n\n if (this.placeholder) {\n this.control.placeholder = this.placeholder;\n }\n }\n }\n\n /** @hidden */\n private _setLayout(): void {\n try {\n const normalized = normalizeColumnLayout(this.columnLayout, 1);\n this.columnLayout = normalized;\n this._sColumnNumber = normalized['S'];\n this._mdColumnNumber = normalized['M'];\n this._lgColumnNumber = normalized['L'];\n this._xlColumnNumber = normalized['XL'];\n } catch (error) {\n this._isColumnLayoutEnabled = false;\n }\n }\n\n /** @hidden */\n private _updateLayout(currentBreakingPointName: string): void {\n if (this._isColumnLayoutEnabled) {\n switch (currentBreakingPointName) {\n case 'S':\n this.column = this._sColumnNumber;\n break;\n case 'M':\n this.column = this._mdColumnNumber;\n break;\n case 'L':\n this.column = this._lgColumnNumber;\n break;\n case 'XL':\n this.column = this._xlColumnNumber;\n break;\n default:\n this.column = this._xlColumnNumber;\n }\n }\n\n // emit column change, so form-group knows it and re-arranges the fields\n this.onColumnChange.emit(true);\n }\n\n /** @hidden */\n private _updateHintOptions(): void {\n // placement is here set up because hintPlacement is deprecated\n if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {\n this.hintOptions = {\n ...this._defaultHintOptions,\n placement: this.hintPlacement ? this.hintPlacement : this._defaultHintOptions.placement,\n content: this.hint\n };\n } else if (typeof this.hint === 'object') {\n this.hintOptions = {\n ...this._defaultHintOptions,\n placement: this.hintPlacement ? this.hintPlacement : this._defaultHintOptions.placement,\n ...this.hint\n };\n }\n }\n\n /** @hidden */\n private _assignErrorDirectives(): void {\n this._errorDirectivesCdr?.unsubscribe();\n this._errorDirectives = this._errorDirectiveQuery.toArray();\n this._errorDirectivesCdr = new Subscription();\n\n this._errorDirectives.forEach((directive) => {\n this._errorDirectivesCdr.add(\n directive.detectChanges$.subscribe(() => {\n this.groupErrors();\n this._cd.detectChanges();\n })\n );\n });\n }\n}\n","<ng-template #renderer>\n <div [horizontal]=\"true\" fd-form-item class=\"fd-row\">\n <div\n class=\"fd-col\"\n #labelCol\n [class]=\"_labelColumnLayoutClass\"\n *ngIf=\"!noLabelLayout\"\n [style.margin-bottom.px]=\"_controlExtrasHeightPx\"\n >\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </div>\n <ng-container *ngTemplateOutlet=\"withFormMessage\"></ng-container>\n <ng-container *ngTemplateOutlet=\"gapTemplate\"></ng-container>\n </div>\n <span aria-hidden=\"true\" style=\"display: none\" [id]=\"'fdp-form-hint-' + id\">\n <ng-container *ngIf=\"isStringHint(hintOptions.content); else hintTemplate\">\n {{ hintOptions.content }}\n </ng-container>\n <ng-template #hintTemplate>\n <ng-template [ngTemplateOutlet]=\"$any(hintOptions.content)\"></ng-template>\n </ng-template>\n </span>\n</ng-template>\n\n<ng-template #withFormMessage>\n <fdp-input-message-group\n class=\"fd-col\"\n [class]=\"_fieldColumnLayoutClass\"\n [attr.aria-labelledby]=\"'fdp-form-label-' + id\"\n >\n <!--\n Todo: we should extend this on FormGroup Level and have error trigger strategy that will be applied to\n all the field e.g.: [triggers]=\"['mouseenter', 'mouseleave']\"\n -->\n\n <ng-template #triggerItem>\n <ng-content></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"hasErrors() && groupedErrors.length > 0\">\n <fd-form-message *ngFor=\"let error of groupedErrors\" [type]=\"error.directive.type\">\n <ng-template\n [ngIf]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n <ng-container *ngIf=\"error.directive._headingTemplateRef && error.directive._descriptionTemplateRef\">\n <br />\n </ng-container>\n <ng-template\n [ngIf]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n </fd-form-message>\n </ng-container>\n\n <fd-form-message *ngIf=\"groupedErrors.length === 0 && hasErrors() && i18Strings\" type=\"error\">\n <ng-container *ngTemplateOutlet=\"i18Strings; context: { $implicit: control?.ngControl?.errors }\">\n </ng-container>\n </fd-form-message>\n </fdp-input-message-group>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"hintTarget === 'label'; else withoutHint\">\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [inlineHelpContent]=\"hintOptions.content\"\n [inlineHelpBodyPlacement]=\"hintOptions.placement || 'top'\"\n [inlineHelpPlacement]=\"hintOptions.position || 'after'\"\n [inlineHelpGlyph]=\"hintOptions.glyph || ''\"\n [inlineHelpTriggers]=\"hintOptions.trigger || []\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n [colon]=\"colon\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-container>\n <ng-template #withoutHint>\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [colon]=\"colon\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-template>\n</ng-template>\n\n<ng-template #gapTemplate>\n <ng-container *ngIf=\"hintTarget === 'input' && hintOptions.content; else withoutHint\">\n <div class=\"fd-col fd-form-field-inline-help-container\" [class]=\"_gapColumnLayoutClass\">\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"hintOptions.content\"\n [glyph]=\"hintOptions.glyph\"\n [placement]=\"hintOptions.placement || null\"\n [triggers]=\"hintOptions.trigger || []\"\n tabindex=\"0\"\n >\n </fd-icon>\n </span>\n </div>\n </ng-container>\n <ng-template #withoutHint>\n <div class=\"fd-col\" [class]=\"_gapColumnLayoutClass\"></div>\n </ng-template>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Provider,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_FORM_FIELD } from '@fundamental-ngx/cdk/forms';\n\nimport {\n ColumnLayout,\n FormFieldGroup,\n FormGroupContainer,\n HintOptions,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { FORM_GROUP_CHILD_FIELD_TOKEN } from '../constants';\n\nconst formFieldGroupProvider: Provider = {\n provide: FormFieldGroup,\n useExisting: forwardRef(() => FormFieldGroupComponent)\n};\n\nconst formGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormFieldGroupComponent)\n};\n\n@Component({\n selector: 'fdp-form-field-group',\n template: ` <ng-content></ng-content>`,\n styleUrls: ['./form-field-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [formFieldGroupProvider, formGroupChildProvider]\n})\nexport class FormFieldGroupComponent implements FormFieldGroup, OnInit, OnDestroy {\n /**\n * Group header title\n */\n @Input()\n label: string;\n\n /** Group's form name */\n @Input()\n formName: string;\n\n /**\n * Form Group Container to bind the Form-Field-Group to.\n * This will override default value injected by constructor\n */\n @Input()\n formGroupContainer: FormGroupContainer;\n\n /**\n * Defines label's column layout.\n */\n @Input()\n set labelColumnLayout(value: ColumnLayout | undefined) {\n if (value) {\n this._labelColumnLayout = value;\n }\n }\n get labelColumnLayout(): ColumnLayout {\n return this._labelColumnLayout;\n }\n /** @hidden */\n private _labelColumnLayout: ColumnLayout;\n\n /**\n * Defines field's column layout.\n */\n @Input()\n set fieldColumnLayout(value: ColumnLayout | undefined) {\n if (value) {\n this._fieldColumnLayout = value;\n }\n }\n get fieldColumnLayout(): ColumnLayout {\n return this._fieldColumnLayout;\n }\n /** @hidden */\n private _fieldColumnLayout: ColumnLayout;\n\n /**\n * Defines gap column layout.\n */\n @Input()\n set gapColumnLayout(value: ColumnLayout | undefined) {\n if (value) {\n this._gapColumnLayout = value;\n }\n }\n get gapColumnLayout(): ColumnLayout {\n return this._gapColumnLayout;\n }\n /** @hidden */\n private _gapColumnLayout: ColumnLayout;\n\n /**\n * Describes hint options for group header\n */\n @Input()\n hintOptions?: HintOptions;\n\n /**\n * Get form fields wrapped into form field group\n */\n @ContentChildren(FD_FORM_FIELD, { descendants: true })\n fields: QueryList<PlatformFormField>;\n\n /** @hidden */\n constructor(@Optional() formGroupContainer: FormGroupContainer) {\n this.formGroupContainer = formGroupContainer;\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._addToFormGroup();\n this._setDefaultLayout();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeFromFormGroup();\n }\n\n /** @hidden */\n private _setDefaultLayout(): void {\n // If layout already defined, no need to set default one.\n if (this.labelColumnLayout) {\n return;\n }\n\n this.labelColumnLayout = this.formGroupContainer?.labelColumnLayout;\n this.fieldColumnLayout = this.formGroupContainer?.fieldColumnLayout;\n this.gapColumnLayout = this.formGroupContainer?.gapColumnLayout;\n }\n\n /** @hidden */\n private _addToFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.addFormFieldGroup(this);\n }\n\n /** @hidden */\n private _removeFromFormGroup(): void {\n if (!this.formGroupContainer) {\n return;\n }\n this.formGroupContainer.removeFormFieldGroup(this);\n }\n}\n","import { AbstractControlOptions, AsyncValidatorFn, FormControl, FormGroup, ValidatorFn } from '@angular/forms';\n\nimport { DynamicAbstractControlOptions } from './interfaces/dynamic-abstract-control';\nimport { DynamicFormFieldGroup, PreparedDynamicFormFieldItem } from './interfaces/dynamic-form-item';\n\nexport type DynamicFormGroupControl = DynamicFormControl | DynamicFormControlGroup;\n\nexport interface DynamicFormGroupControls {\n [key: string]: DynamicFormGroupControl;\n}\n\nexport class DynamicFormControlGroup extends FormGroup {\n /** @hidden */\n public formItem: DynamicFormFieldGroup;\n /** @hidden */\n public type = 'group';\n /** @hidden */\n public override controls: DynamicFormGroupControls;\n\n /** @hidden */\n constructor(\n formItem: DynamicFormFieldGroup,\n controls: DynamicFormGroupControls,\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(controls, validatorOrOpts, asyncValidator);\n this.formItem = formItem;\n }\n}\n\nexport class DynamicFormControl extends FormControl {\n /** @hidden */\n public formItem: PreparedDynamicFormFieldItem;\n /** @hidden */\n public type = 'field';\n\n /**\n * @description Creates a new `DynamicFormControl` instance.\n *\n * @param formState Initializes the control with an initial value,\n * or an object that defines the initial value and disabled state.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n * @param formItem `DynamicFormItem` object\n *\n */\n constructor(formState: any, validatorOrOpts: DynamicAbstractControlOptions) {\n super(formState, validatorOrOpts);\n this.formItem = validatorOrOpts.dynamicFormItem;\n }\n}\n","import { forwardRef, InjectionToken, Provider } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { FD_FORM_FIELD } from '@fundamental-ngx/cdk/forms';\n\nimport { FORM_GROUP_CHILD_FIELD_TOKEN } from '../../form-group/constants';\nimport { FormFieldComponent } from '../../form-group/form-field/form-field.component';\nimport { DynamicFormFieldItem } from '../interfaces/dynamic-form-item';\nimport { FormGeneratorConfig } from '../interfaces/form-generator-module-config';\n\nexport const dynamicFormFieldProvider: Provider = {\n provide: FD_FORM_FIELD,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\nexport const dynamicFormGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormFieldComponent)\n};\n\nexport const FORM_GENERATOR_ITEM_CONFIG = new InjectionToken<DynamicFormFieldItem>('FormGeneratorItemConfig');\n\nexport const FORM_GENERATOR_CONFIG = new InjectionToken<FormGeneratorConfig>('FormGeneratorConfig');\n\nexport const defaultFormGeneratorConfig: FormGeneratorConfig = {\n controlNameSeparator: '|',\n ungroupedControlsName: 'ungrouped'\n};\n\nexport const defaultFormGeneratorConfigProvider: Provider = {\n provide: FORM_GENERATOR_CONFIG,\n useValue: defaultFormGeneratorConfig\n};\n\nexport const defaultFormGeneratorItemConfig: Partial<DynamicFormFieldItem> = {\n useMessageAsPlaceholder: true,\n required: false,\n validators: [Validators.nullValidator]\n};\n\nexport const defaultFormGeneratorItemConfigProvider: Provider = {\n provide: FORM_GENERATOR_ITEM_CONFIG,\n useValue: defaultFormGeneratorItemConfig\n};\n","import { Directive, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { PlatformFormField, SelectItem } from '@fundamental-ngx/platform/shared';\nimport { BaseDynamicFormFieldItem, PreparedDynamicFormFieldItem } from './interfaces/dynamic-form-item';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from './providers/providers';\n\nexport interface BaseDynamicFormGeneratorControlInterface {\n formItem: PreparedDynamicFormFieldItem;\n name: string;\n id: string;\n form: FormGroup;\n formField: PlatformFormField;\n}\n\n/**\n * Abstract class that used as a base for the Dynamic Form Generator components.\n */\n@Directive({\n providers: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport abstract class BaseDynamicFormGeneratorControl<T extends BaseDynamicFormFieldItem = BaseDynamicFormFieldItem>\n implements BaseDynamicFormGeneratorControlInterface\n{\n /**\n * @description @see DynamicFormItem.\n */\n @Input() formItem: PreparedDynamicFormFieldItem<T>;\n\n /**\n * @description Id of the control.\n */\n @Input() id: string;\n\n /**\n * @description Represents form control name.\n */\n @Input() name: string;\n\n /**\n * @description Reference to the @see FormGroup class.\n */\n @Input() form: FormGroup;\n\n /**\n * @description Reference to the @see FormFieldComponent.\n */\n @Input() formField: PlatformFormField;\n\n /** @description Inner form group name */\n @Input() formGroupName: string;\n\n /** @description Returns form item choices. */\n get choices(): SelectItem[] {\n return this.formItem.choices ?? [];\n }\n\n /** @description Returns form item placeholder. */\n get placeholder(): string {\n if (!this.formItem) {\n return '';\n }\n if (this.formItem?.placeholder) {\n return this.formItem?.placeholder;\n }\n return (this.formItem?.useMessageAsPlaceholder && this.formItem?.message) || '';\n }\n}\n","/**\n * @license\n * F. Kolar\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\n\nconst VALID_INPUT_TYPES = ['text', 'number', 'email', 'password'];\n\nexport type InputType = 'text' | 'number' | 'email' | 'password';\n\n/**\n * Input field implementation to be compliant with our FormGroup/FormField design and also to\n * achieve certain this in Angular this component is re-using several ideas from MatDesign\n *\n */\n@Component({\n selector: 'fdp-input',\n templateUrl: 'input.component.html',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: InputComponent, multi: true }]\n})\nexport class InputComponent extends BaseInput implements OnInit, AfterViewInit {\n /** Input type */\n @Input()\n type: InputType = 'text';\n\n /**\n * @hidden\n * This `required` field is used internally by other components such as Input Group.\n * Input group will not be able to set required value to input, until `required` is input through the`@Input` property.\n */\n @Input()\n required: boolean;\n\n /** return the value in the text box */\n @Input()\n set value(value: any) {\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** Emits event on focus change */\n @Output() focusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden */\n get inputElementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n if (!this.type || VALID_INPUT_TYPES.indexOf(this.type) === -1) {\n throw new Error(` Input type ${this.type} is not supported`);\n }\n }\n\n /** @hidden */\n _onFocus(): void {\n this._onFocusChanged(true);\n // propagate event\n this.focusChange.emit(true);\n }\n\n /** @hidden */\n _onBlur(): void {\n this._onFocusChanged(false);\n // propagate event\n this.focusChange.emit(false);\n }\n}\n","<!--\n Does it make sense to have some other state than error?\n-->\n<input\n #inputElementRef\n fd-form-control\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{ standalone: true }\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [state]=\"state\"\n [readOnly]=\"readonly\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n/>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\nimport { InputDynamicFormFieldItem } from '../../interfaces/dynamic-form-item';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-input',\n templateUrl: './dynamic-form-generator-input.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorInputComponent extends BaseDynamicFormGeneratorControl<InputDynamicFormFieldItem> {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\" *ngIf=\"formField\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-input\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [type]=\"formItem.controlType || 'text'\"\n [formControlName]=\"name\"\n ></fdp-input>\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { FdCheckboxValues, CheckboxComponent as FdCheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\n\n/** Change event object emitted by Platform Checkbox. */\nexport class PlatformCheckboxChange {\n /** The source Checkbox of the event. */\n source: CheckboxComponent;\n /**\n * The new `checked` value of the checkbox.\n * possible value: true/false and array of checkbox values.\n */\n checked: any;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fdp-checkbox',\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => CheckboxComponent), multi: true }]\n})\nexport class CheckboxComponent extends BaseInput implements AfterViewInit {\n /**\n * Checkbox tooltip\n */\n @Input()\n title: string;\n\n /** Sets label for checkbox. */\n @Input()\n label: string;\n\n /** true when checkbox has indeterminate state */\n @Input()\n tristate = false;\n\n /** @deprecated */\n @Input()\n set isBinary(value: boolean) {\n if (isDevMode()) {\n console.warn(\n '\"isBinary\" is deprecated and has no effect anymore \\n' +\n 'Checkbox is binary by default. Use \"tristate\" input if you need to have indeterminate checkbox.'\n );\n }\n }\n\n // this is undesired to have \"checked\" input instead of \"value\"\n // but it was done this way initially and we have to keep this in order to not break anything\n /**\n * Checked state of the checkbox control.\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('checked')\n set value(selectValue: any) {\n this.setValue(selectValue);\n }\n get value(): any {\n return this.getValue();\n }\n\n /** when true indeterminate state can be selected */\n @Input()\n tristateSelectable = false;\n\n /** value for checkbox control when it's state is checked. */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value')\n set checkboxTrueValue(trueValue: any) {\n if (isDevMode()) {\n console.warn('\"value\" input is deprecated. Use \"values\" instead');\n }\n this.values = this.values ? { ...this.values, trueValue } : { trueValue };\n }\n\n /** Values returned by control. */\n @Input()\n values: FdCheckboxValues;\n\n /** Whether checkbox should be rendered standalone (without any text). */\n @Input()\n standalone = false;\n\n /**\n * Emitting checked event for non-form checkbox\n */\n @Output()\n readonly checkedChange = new EventEmitter<any>();\n\n /**\n * @deprecated use \"checkedChange\" instead\n * Emitting checkbox change event\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n readonly change: EventEmitter<PlatformCheckboxChange> = new EventEmitter<PlatformCheckboxChange>();\n\n /**\n * @deprecated rely on checkbox state directly instead\n * Event emitted when the checkbox's `indeterminate` value changes.\n */\n @Output()\n readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * @hidden\n * is needed for the checkbox group to access component values\n */\n @ViewChild(FdCheckboxComponent)\n coreCheckbox: FdCheckboxComponent;\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n protected _changeDetector: ChangeDetectorRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0\n ) {\n super(_changeDetector, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n // necessary to fulfill baseInput check.\n // case: fdp-checkbox passed in declarative fdp-checkbox-group without id and name.\n this.name = `fdp-checkbox-${nextUniqueId++}`;\n this.tabIndexValue = tabIndexValue;\n }\n\n /** update controller on checkbox state change */\n public onModelChange(value: any): void {\n this.value = value;\n this._emitChangeEvent();\n this.stateChanges.next('checkbox: onModelChange');\n }\n\n /**\n * Method to emit change event\n */\n private _emitChangeEvent(): void {\n this.checkedChange.emit(this.value);\n\n const event = new PlatformCheckboxChange();\n event.source = this;\n event.checked = this.value;\n this.change.emit(event);\n this.indeterminateChange.emit(this.value === this.coreCheckbox?.values.thirdStateValue);\n }\n}\n","<div fd-form-item>\n <fd-checkbox\n [inputId]=\"id\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [label]=\"label\"\n [tristate]=\"tristate\"\n [values]=\"values\"\n [tristateSelectable]=\"tristateSelectable\"\n [state]=\"state\"\n [title]=\"title\"\n [required]=\"required\"\n [ariaLabel]=\"ariaLabel || null\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaDescribedBy]=\"ariaDescribedBy\"\n [ngModel]=\"value\"\n [standalone]=\"standalone\"\n (ngModelChange)=\"onModelChange($event)\"\n (focusChange)=\"_onFocusChanged($event)\"\n >\n <ng-content></ng-content>\n </fd-checkbox>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { RangeSelector } from '@fundamental-ngx/cdk/utils';\nimport { SelectionModel } from '@angular/cdk/collections';\n\nimport {\n InLineLayoutCollectionBaseInput,\n RESPONSIVE_BREAKPOINTS_CONFIG,\n ResponsiveBreakPointConfig,\n ResponsiveBreakpointsService,\n coerceArraySafe,\n SelectItem,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\nlet warnedAboutChecked = false;\nconst warnAboutChecked = (): void => {\n if (isDevMode() && !warnedAboutChecked) {\n console.warn('The fdp-checkbox-group[checked] property is deprecated. Use fdp-checkbox-group[value] instead');\n warnedAboutChecked = true;\n }\n};\n\n/**\n * Checkbox group implementation based on the\n * https://github.com/SAP/fundamental-ngx/wiki/Platform:-CheckboxGroup-Technical-Design\n * documents.\n */\n@Component({\n selector: 'fdp-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => CheckboxGroupComponent), multi: true }]\n})\nexport class CheckboxGroupComponent extends InLineLayoutCollectionBaseInput {\n /**\n * value for selected checkboxes.\n */\n @Input()\n set value(selectedValue: any[]) {\n this.setValue(selectedValue);\n this._updateSelectionModelByValue();\n }\n get value(): any[] {\n return this.getValue();\n }\n\n /**\n * To Display multiple checkboxes in a line\n */\n @Input()\n set isInline(inline: boolean) {\n this._inlineCurrentValue$.next(inline);\n }\n get isInline(): boolean {\n return this._inlineCurrentValue$.value;\n }\n\n /**\n * @deprecated\n * Establishes two way binding, when checkbox group used outside form.\n */\n @Input()\n set checked(checkedValues: string[]) {\n warnAboutChecked();\n this.value = checkedValues;\n }\n get checked(): string[] {\n warnAboutChecked();\n return this.value;\n }\n\n /** Children checkboxes passed as content */\n @ContentChildren(CheckboxComponent)\n contentCheckboxes: QueryList<CheckboxComponent>;\n\n /** Children checkboxes created from passed list values. */\n @ViewChildren(CheckboxComponent)\n viewCheckboxes: QueryList<CheckboxComponent>;\n\n /** Emits checked change event */\n @Output()\n readonly valueChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n /**\n * @deprecated - use \"valueChange\" instead\n * Emits checked change event\n */\n @Output()\n readonly checkedChange = this.valueChange;\n\n /** @hidden */\n private readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n readonly _selectionModel = new SelectionModel(true);\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n readonly _responsiveBreakpointsService: ResponsiveBreakpointsService,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional()\n @SkipSelf()\n @Host()\n @Inject(FD_FORM_FIELD_CONTROL)\n @Inject(FD_FORM_FIELD_CONTROL)\n formControl: PlatformFormFieldControl,\n @Optional()\n @Inject(RESPONSIVE_BREAKPOINTS_CONFIG)\n readonly _defaultResponsiveBreakPointConfig: ResponsiveBreakPointConfig\n ) {\n super(\n cd,\n elementRef,\n _responsiveBreakpointsService,\n ngControl,\n controlContainer,\n ngForm,\n formField,\n formControl,\n _defaultResponsiveBreakPointConfig\n );\n }\n\n /**\n * @hidden\n * @param selectionState actual value of the checkbox\n * @param checkboxTrueValue thuthy value to compare the \"selectionState\" with\n */\n onModelChanged(selectionState: any, checkboxTrueValue: any): void {\n const isSelected = selectionState === checkboxTrueValue;\n if (isSelected) {\n this._selectionModel.select(checkboxTrueValue);\n } else {\n this._selectionModel.deselect(checkboxTrueValue);\n }\n this._setValueBySelectionModel();\n this.onTouched();\n this.valueChange.emit(this.value);\n }\n\n /** @hidden */\n onCheckboxClick(index: number, source: 'contentChildren' | 'list', event?: MouseEvent): void {\n // this handler will be invoked after \"valueChange\"\n const queryList = source === 'list' ? this.viewCheckboxes : this.contentCheckboxes;\n const target = queryList.get(index);\n\n const isChecked = this._selectionModel.isSelected(target?.values.trueValue);\n this._rangeSelector.onRangeElementToggled(index, event);\n\n if (!this._rangeSelector.lastRangeSelectionState?.isRangeSelection) {\n // no need to proceed, if it's not a range selection - current checkbox is already updated\n return;\n }\n\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const checkbox = queryList.get(idx);\n if (checkbox?.disabled) {\n return;\n }\n const checkboxValue = checkbox?.values.trueValue;\n if (isChecked) {\n this._selectionModel.select(checkboxValue);\n } else {\n this._selectionModel.deselect(checkboxValue);\n }\n });\n this._setValueBySelectionModel();\n this.valueChange.emit(this.value);\n }\n\n /** @hidden */\n writeValue(selectedValue: any): void {\n super.writeValue(coerceArraySafe(selectedValue));\n this._updateSelectionModelByValue();\n }\n\n /** @inheritdoc */\n protected setValue(value: any, emitOnChange = true): void {\n super.setValue(coerceArraySafe(value), emitOnChange);\n }\n\n /**\n * access display value for objects, acts as checkbox label.\n */\n public getDisplayValue(item: any): string {\n return this.displayValue(item);\n }\n\n /**\n * access lookup value for objects, acts as checkbox value.\n */\n public getLookupValue(item: any): string {\n return this.lookupValue(item);\n }\n\n /** @hidden */\n public getListItemDisabledValue(item: CheckboxGroupComponent['list'][number]): boolean {\n return this.disabled || !!(<SelectItem>item)?.disabled;\n }\n\n /** @hidden */\n private _setValueBySelectionModel(): void {\n super.setValue(this._selectionModel.selected);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n private _updateSelectionModelByValue(): void {\n this._selectionModel.clear();\n this.value.forEach((v) => this._selectionModel.select(v));\n this._cd.markForCheck();\n }\n}\n","<fd-form-group\n [isInline]=\"isInline\"\n role=\"group\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n>\n <ng-container *ngIf=\"!list\">\n <ng-container *ngFor=\"let checkbox of contentCheckboxes; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxtmpt;\n context: {\n id: id + i,\n idx: i,\n source: 'contentChildren',\n name: name,\n checkboxValue: checkbox.coreCheckbox?.values?.trueValue,\n labeltext: checkbox.label,\n disabled: disabled || checkbox.disabled,\n ariaLabel: checkbox.ariaLabel,\n ariaLabelledBy: checkbox.ariaLabelledBy,\n ariaDescribedBy: checkbox.ariaDescribedBy,\n title: checkbox.title\n }\n \"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"list\">\n <ng-container *ngTemplateOutlet=\"listvalues\"></ng-container>\n </ng-container>\n</fd-form-group>\n\n<ng-template #listvalues>\n <ng-container *ngFor=\"let item of list; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxtmpt;\n context: {\n id: id + i,\n idx: i,\n source: 'list',\n name: name,\n checkboxValue: getLookupValue(item),\n labeltext: getDisplayValue(item),\n disabled: getListItemDisabledValue(item)\n }\n \"\n >\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template\n #checkboxtmpt\n let-id=\"id\"\n let-idx=\"idx\"\n let-source=\"source\"\n let-name=\"name\"\n let-checkboxValue=\"checkboxValue\"\n let-labeltext=\"labeltext\"\n let-checkboxDisabled=\"disabled\"\n let-ariaLabel=\"ariaLabel\"\n let-ariaLabelledBy=\"ariaLabelledBy\"\n let-ariaDescribedBy=\"ariaDescribedBy\"\n let-title=\"title\"\n>\n <fdp-checkbox\n [id]=\"id\"\n [name]=\"name\"\n [values]=\"{ trueValue: checkboxValue }\"\n [label]=\"labeltext\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaDescribedBy]=\"ariaDescribedBy\"\n [title]=\"title\"\n [disabled]=\"checkboxDisabled\"\n [state]=\"state\"\n [ngModel]=\"_selectionModel.isSelected(checkboxValue) ? checkboxValue : false\"\n (ngModelChange)=\"onModelChanged($event, checkboxValue)\"\n (click)=\"onCheckboxClick(idx, source, $event)\"\n >\n </fdp-checkbox>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-checkbox',\n templateUrl: './dynamic-form-generator-checkbox.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorCheckboxComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-checkbox-group\n [id]=\"id\"\n [isInline]=\"formItem.guiOptions?.inline || false\"\n [inlineLayout]=\"formItem.guiOptions?.inlineLayout\"\n [name]=\"name\"\n [list]=\"choices\"\n [formControlName]=\"name\"\n ></fdp-checkbox-group>\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FocusableOption } from '@angular/cdk/a11y';\n\nimport { RadioButtonComponent as CoreRadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'fdp-radio-button',\n templateUrl: './radio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioButtonComponent extends BaseInput implements AfterViewInit, FocusableOption {\n /** sets radio button tooltip */\n @Input()\n title: string;\n\n /**\n * Includes the Radio in the page tab sequence.\n */\n @Input()\n tabIndex = -1;\n\n /** value for Radio button */\n @Input()\n set value(newValue: any) {\n this._value = newValue;\n }\n get value(): any {\n return super.getValue();\n }\n\n /**\n * @deprecated\n * set state of individual radio.Used by RBG to set radio states\n */\n @Input()\n set stateType(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get stateType(): FormStates {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /** used for radio button creation if list value present */\n @Input()\n forceRender = false;\n\n /** reference of template */\n @ViewChild('renderer')\n renderer: TemplateRef<any>;\n\n /** @hidden */\n _currentValue: any;\n\n /** @hidden Radio checked status */\n _isChecked = false;\n\n /** click event to emit */\n @Output()\n readonly checked: EventEmitter<RadioButtonComponent> = new EventEmitter();\n\n /** Access radio button child element passed as content of radio button group */\n @ViewChild(CoreRadioButtonComponent, { static: false })\n private coreRadioButton: CoreRadioButtonComponent;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n // @hidden have to set default initial values as base class has check and throws error\n this.id = `fdp-radio-id-${uniqueId}`;\n this.name = `fdp-radio-name-${uniqueId}`;\n uniqueId++;\n }\n\n /** @hidden Controlvalue accessor */\n writeValue(value: any): void {\n this._valueChange(value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n _valueChange(value: any, emitEvent = false): void {\n if (this.disabled) {\n emitEvent = false;\n }\n\n this._currentValue = value;\n this._isChecked = this._currentValue === super.getValue();\n if (this._isChecked && emitEvent) {\n this.checked.emit(this);\n }\n this.tabIndex = this._isChecked ? 0 : -1;\n this._cd.detectChanges();\n if (emitEvent) {\n this.onChange(value);\n this.onTouched();\n }\n }\n\n /** method for cdk FocusKeymanager */\n focus(): void {\n this.coreRadioButton?.inputElement.nativeElement.focus();\n }\n\n /** method to select radio button */\n select(): void {\n this._valueChange(super.getValue());\n }\n\n /** method to uncheck radio button */\n unselect(): void {\n this._valueChange(undefined);\n }\n\n /** Setting tabIndex for radio accessibility */\n setTabIndex(index: 0 | -1): void {\n this.tabIndex = index;\n this._cd.markForCheck();\n }\n}\n","<ng-template #renderer>\n <fd-radio-button\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [tabIndex]=\"_isChecked ? 0 : tabIndex\"\n [title]=\"title\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaDescribedBy]=\"ariaDescribedBy\"\n [ngModel]=\"_currentValue\"\n (ngModelChange)=\"_valueChange($event, true)\"\n >\n <ng-content></ng-content>\n </fd-radio-button>\n</ng-template>\n\n<ng-container *ngIf=\"forceRender\">\n <ng-container *ngTemplateOutlet=\"renderer\"></ng-container>\n</ng-container>\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { merge, Subject } from 'rxjs';\n\nimport {\n PlatformFormFieldControl,\n InLineLayoutCollectionBaseInput,\n PlatformFormField,\n RESPONSIVE_BREAKPOINTS_CONFIG,\n ResponsiveBreakPointConfig,\n ResponsiveBreakpointsService,\n SelectItem\n} from '@fundamental-ngx/platform/shared';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\n\nimport { RadioButtonComponent } from './radio/radio.component';\n\n/**\n * Radio group implementation based on the\n * https://github.com/SAP/fundamental-ngx/wiki/Platform:-RadioGroup-Technical-Design\n * documents.\n */\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fdp-radio-group',\n templateUrl: './radio-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => RadioGroupComponent), multi: true }]\n})\nexport class RadioGroupComponent\n extends InLineLayoutCollectionBaseInput\n implements AfterViewInit, AfterContentChecked, OnDestroy\n{\n /** Value of selected radio button */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('selected')\n set value(newValue: any) {\n super.setValue(newValue);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** To Display Radio buttons in a line */\n @Input()\n set isInline(inline: boolean) {\n this._inlineCurrentValue$.next(inline);\n }\n get isInline(): boolean {\n return this._inlineCurrentValue$.value;\n }\n\n /** None value radio button created */\n @Input()\n hasNoValue = false;\n\n /** Label for None value radio button */\n @Input()\n noValueLabel = 'None';\n\n /** Children radio buttons part of Group radio button, passed as content */\n @ContentChildren(RadioButtonComponent)\n contentRadioButtons: QueryList<RadioButtonComponent>;\n\n /** Children radio buttons part of Group radio button, created from list of values */\n @ViewChildren(RadioButtonComponent)\n viewRadioButtons: QueryList<RadioButtonComponent>;\n\n /** Selected radio button change event raised */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n change: EventEmitter<RadioButtonComponent> = new EventEmitter<RadioButtonComponent>();\n\n /** @hidden */\n private _activeItemSet = false;\n\n /** @hidden The currently selected radio button. Should match value. */\n private _selected: RadioButtonComponent | null = null;\n\n /** @hidden */\n private _destroy$ = new Subject<boolean>();\n\n /** @hidden FocusKeyManager instance */\n private _keyboardEventsManager: FocusKeyManager<RadioButtonComponent>;\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n readonly _responsiveBreakpointsService: ResponsiveBreakpointsService,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Optional()\n @Inject(RESPONSIVE_BREAKPOINTS_CONFIG)\n readonly _defaultResponsiveBreakPointConfig: ResponsiveBreakPointConfig\n ) {\n super(\n _cd,\n elementRef,\n _responsiveBreakpointsService,\n ngControl,\n controlContainer,\n ngForm,\n formField,\n formControl,\n _defaultResponsiveBreakPointConfig\n );\n this.id = `radio-group-${nextUniqueId++}`;\n }\n\n /** Control Value Accessor */\n writeValue(value: any): void {\n super.writeValue(value);\n this.contentRadioButtons?.forEach((b) => this._selectUnselect(b));\n this.viewRadioButtons?.forEach((b) => this._selectUnselect(b));\n }\n\n /** Access display value for objects, acts as checkbox label. */\n getDisplayValue(item: any): string {\n return this.displayValue(item);\n }\n\n /**\n * Called on button click for view radio button, created from list of values\n * @param event\n */\n selected(event: RadioButtonComponent): void {\n this._selectedValueChanged(event);\n }\n\n /** @hidden Selecting default button as provided as input */\n ngAfterContentChecked(): void {\n if (!this._validateRadioButtons()) {\n throw new Error('fdp-radio-button-group must contain a fdp-radio-button');\n }\n this.contentRadioButtons.forEach((button) => (button.state = this.state));\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n * Initialize properties once fd-radio-buttons are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterViewInit(): void {\n setTimeout(() => {\n this._initialSetup(this.contentRadioButtons);\n this._initialSetup(this.viewRadioButtons);\n });\n super.ngAfterViewInit();\n }\n\n /** @hidden Destroys event subscription. */\n ngOnDestroy(): void {\n this._destroy$.next(true);\n this._destroy$.complete();\n this._keyboardEventsManager?.destroy();\n }\n\n /** @hidden */\n _getListItemDisabledValue(item: RadioGroupComponent['list'][number]): boolean {\n return this.disabled || (typeof item === 'object' && !!(<SelectItem>item).disabled);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent): void {\n event.stopImmediatePropagation();\n if (this._keyboardEventsManager) {\n // sets Active item. so arrow key starts after the active item.\n // Need to do only once, when one radio is already selected\n if (this._selected && !this._activeItemSet) {\n this._keyboardEventsManager.setActiveItem(this._selected);\n this._activeItemSet = true;\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n // passing the event to key manager so we get a change fired\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n }\n\n /** @hidden */\n private _initialSetup(radioButtons: QueryList<RadioButtonComponent>): void {\n if (!radioButtons || radioButtons?.length === 0) {\n return;\n }\n\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(radioButtons).withWrap().withHorizontalOrientation('ltr');\n\n radioButtons.changes\n .pipe(\n startWith(radioButtons),\n switchMap(() => {\n let firstEnabledButtonIndex = -1;\n const checkedEvents = radioButtons.map((button, i) => {\n if (this.list) {\n button.state = this.state;\n } else {\n this._setProperties(button);\n }\n\n this._selectUnselect(button);\n\n // finding first enabled button to set tabIndex=0\n if (!button.disabled && !this._disabled && firstEnabledButtonIndex < 0) {\n firstEnabledButtonIndex = i;\n }\n\n return button.checked.asObservable();\n });\n\n // accessibility requirement\n if (!this._selected && radioButtons && firstEnabledButtonIndex > -1) {\n radioButtons.toArray()[firstEnabledButtonIndex].setTabIndex(0);\n }\n return merge(...checkedEvents);\n }),\n takeUntil(this._destroy$)\n )\n .subscribe((ev) => this._selectedValueChanged(ev));\n }\n\n /**\n * @hidden\n * Selects given button, if value matches\n * @param button\n */\n private _selectUnselect(button: RadioButtonComponent): void {\n if (button.value !== this.value) {\n button.unselect();\n\n return;\n }\n\n // selected button\n if (this._selected !== button) {\n this._selected = button;\n }\n\n if (!button._isChecked) {\n button.select();\n }\n }\n\n /** @hidden Called every time a radio button is clicked, In content child as well as viewchild */\n private _selectedValueChanged(button: RadioButtonComponent): void {\n if (this._selected !== button) {\n this._resetTabIndex(button);\n\n if (this._selected) {\n this._selected.unselect();\n }\n\n this._selected = button;\n button.select();\n }\n\n this.value = button.value;\n this.change.emit(button);\n this.onTouched();\n }\n\n /** @hidden resets tabIndex for first radio in radio group. for accessibility tabIndex was set */\n private _resetTabIndex(selectedRadio: RadioButtonComponent): void {\n if (this.viewRadioButtons || this.contentRadioButtons) {\n const radios = this.viewRadioButtons.length > 0 ? this.viewRadioButtons : this.contentRadioButtons;\n radios.forEach((radio) => {\n if (radio !== selectedRadio && radio.tabIndex === 0) {\n radio.tabIndex = -1;\n }\n });\n }\n }\n\n /**\n * @hidden\n * @param button Set initial values, used while content children creation\n */\n private _setProperties(button: RadioButtonComponent): void {\n if (button) {\n button.name = this.name;\n button.state = this.state;\n button.disabled = button.disabled ? button.disabled : this._disabled;\n }\n }\n\n /** @hidden Make sure we have expected child. */\n private _validateRadioButtons(): boolean {\n return (\n this.contentRadioButtons.filter((item) => !(item instanceof RadioButtonComponent || item['renderer']))\n .length === 0\n );\n }\n}\n","<fd-form-group\n [isInline]=\"isInline\"\n role=\"radiogroup\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-orientation]=\"isInline ? 'horizontal' : 'vertical'\"\n [attr.aria-required]=\"required\"\n>\n <ng-container *ngIf=\"!list\">\n <ng-container *ngFor=\"let radio of contentRadioButtons\">\n <div fd-form-item>\n <ng-container\n *ngTemplateOutlet=\"\n radio?.renderer || null;\n context: {\n name: name,\n value: radio.value,\n state: state,\n disabled: disabled || radio.disabled,\n ariaLabel: radio.ariaLabel,\n ariaLabelledBy: radio.ariaLabelledBy,\n ariaDescribedBy: radio.ariaDescribedBy,\n title: radio.title\n }\n \"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"list\">\n <ng-container *ngTemplateOutlet=\"listvalues\"></ng-container>\n </ng-container>\n</fd-form-group>\n\n<ng-template #listvalues>\n <ng-container *ngIf=\"hasNoValue\">\n <div fd-form-item>\n <fdp-radio-button [name]=\"name\" value=\"None\" [state]=\"state\" [disabled]=\"disabled\" [forceRender]=\"true\">\n {{ noValueLabel }}\n </fdp-radio-button>\n </div>\n </ng-container>\n <ng-container *ngFor=\"let item of list\">\n <div fd-form-item>\n <fdp-radio-button\n [name]=\"name\"\n [value]=\"lookupValue(item)\"\n [state]=\"state\"\n [disabled]=\"_getListItemDisabledValue(item)\"\n [forceRender]=\"true\"\n >\n {{ getDisplayValue(item) }}\n </fdp-radio-button>\n </div>\n </ng-container>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-radio',\n templateUrl: './dynamic-form-generator-radio.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorRadioComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-radio-group\n [id]=\"id\"\n [isInline]=\"formItem.guiOptions?.inline || false\"\n [inlineLayout]=\"formItem.guiOptions?.inlineLayout\"\n [name]=\"name\"\n [list]=\"choices\"\n [formControlName]=\"name\"\n ></fdp-radio-group>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Default options for platform Text Area\n */\n@Injectable({ providedIn: 'root' })\nexport class TextAreaConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<TextAreaConfig>): () => TextAreaConfig {\n const useFactory = (): TextAreaConfig => Object.assign(new TextAreaConfig(), obj);\n return useFactory;\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n HostListener,\n Inject,\n Input,\n isDevMode,\n OnInit,\n Optional,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { BACKSPACE, DELETE } from '@angular/cdk/keycodes';\n\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { TextAreaConfig } from './text-area.config';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nconst VALID_WRAP_TYPES = ['hard', 'soft', 'off'];\n\nexport type WrapType = 'hard' | 'soft' | 'off';\n\n/**\n * Textarea field implementation that is compliant with Platform's FormGroup/FormField design\n *\n */\n@Component({\n selector: 'fdp-textarea',\n templateUrl: 'text-area.component.html',\n styleUrls: ['text-area.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: FD_FORM_FIELD_CONTROL,\n useExisting: TextAreaComponent,\n multi: true\n }\n ]\n})\nexport class TextAreaComponent extends BaseInput implements AfterViewChecked, OnInit, AfterViewInit {\n /**\n * The height to which the textarea will grow when `growing` is set.\n */\n @Input()\n height: Nullable<string>;\n\n /**\n * The number of rows that will be visible when `growing` is set.\n * If both `growingMaxLines` and `height` are provided, `height` value takes precedence.\n */\n @Input()\n growingMaxLines: Nullable<number>;\n\n /**\n * The textarea `cols` attribute wrapped- the number of letters visible per line.\n * If width is set to auto, this attribute has no effect.\n */\n @Input()\n cols: number;\n\n /**\n * The textarea `wrap` attribute - can be one of three: 'off', 'hard' or 'soft'.\n */\n @Input()\n wrapType: WrapType = 'soft';\n\n /**\n * Whether the textarea is readonly\n */\n @Input()\n readonly: boolean;\n\n /** The maximum number of characters allowed to enter.\n * If `showExceededText` is false, `maxLength` has native textarea's behavior of disallowing typing beyond `maxLength`.\n * If `showExceededText` is true, user is allowed to type beyond `maxLength`, but error states and counter messages showing\n * the exceeded count is displayed.\n */\n @Input()\n maxLength: number;\n\n /**\n * Whether counter message should be shown.\n * If `showExceededText` is false, no state changes or error messages are shown. User is simply not allowed to type\n * beyond the `maxLength` characters.\n */\n @Input()\n showExceededText = false;\n\n /**\n * Whether this textarea can grow.\n */\n @Input()\n growing = false;\n\n /**\n * @deprecated\n * set state of individual checkbox. Used by CBG to set checkbox states */\n @Input()\n set stateType(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get stateType(): FormStates {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /**\n * The textarea's value\n */\n @Input()\n set value(value: any) {\n if (value) {\n super.setValue(value);\n } else {\n // when custom value not set, we should set/reset counter to maxlength value when it becomes undefined\n this.exceededCharCount = this.maxLength ? this.maxLength : 0;\n // reset state by resetting value\n super.setValue('');\n }\n }\n get value(): any {\n return super.getValue();\n }\n\n /** @hidden */\n @ViewChild('counter')\n _textareaCounter?: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n hasTextExceeded = false;\n\n /** @hidden excess character count */\n exceededCharCount = 0;\n\n /** @hidden a string placeholder that toggles between 'remaining' and 'excess' for the select ICU expression */\n counterExcessOrRemaining = 'remaining';\n\n /** @hidden flag to check if there is an initial value set */\n isValueCustomSet = false;\n\n /** @hidden */\n /** to keep track of number of characters in the textarea */\n private _textAreaCharCount = 0;\n\n /** @hidden */\n private _isPasted = false;\n\n /** for i18n counter message translation */\n private readonly remainingText = 'remaining';\n /** for i18n counter message translation */\n private readonly excessText = 'excess';\n\n /**\n * @hidden\n * @see PlatformFormFieldControl.extraContentHeightPx\n */\n get extraContentHeightPx(): number | undefined {\n return this._textareaCounter?.nativeElement.offsetHeight;\n }\n\n /** @hidden */\n private get _shouldTrackTextLimit(): boolean {\n return this.maxLength > 0 && !this.showExceededText;\n }\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n protected _textAreaConfig: TextAreaConfig\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (!this.wrapType || VALID_WRAP_TYPES.indexOf(this.wrapType) === -1) {\n throw new Error(`Textarea wrap type ${this.wrapType} is not supported`);\n }\n // if not custom set, set counter to max length value, else it calculates remaining/exceeded characters.\n if (!this.value) {\n this.exceededCharCount = this.maxLength || 0;\n } else {\n this.isValueCustomSet = true;\n }\n super.ngOnInit();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n // set max height\n this._setMaxHeight();\n\n // don't set any error state if we are not showing counter message\n if (!this._shouldTrackTextLimit) {\n this.state = undefined;\n }\n\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngAfterViewChecked(): void {\n // when value is custom set(initial value is present), the heights don't get\n // set to show the full text in the ngAfterViewInit immediately. therefore, we call autoGrowTextArea in\n // ngAfterViewChecked and detect changes again.\n if (this.value && this.isValueCustomSet) {\n this.autoGrowTextArea(); // if applicable, grow the textarea when value is custom set\n this.stateChanges.next('textarea: ngAfterViewChecked');\n }\n }\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n super.writeValue(value ?? '');\n this.updateCounterInteractions();\n this.stateChanges.next('textarea: writeValue');\n }\n\n /** update the counter message and related interactions */\n updateCounterInteractions(): void {\n this._textAreaCharCount = this.value?.length ?? 0;\n\n if (this.maxLength) {\n // newly added to avoid unnecessary iteration, remove if issue found\n this.validateLengthOnCustomSet();\n }\n }\n\n /** if exceeded maxlength when set as a value in code, highlight the exceeded text. */\n validateLengthOnCustomSet(): void {\n if (this._textAreaCharCount > this.maxLength) {\n if (this._isPasted) {\n this._targetElement.focus();\n this._targetElement.setSelectionRange(this.maxLength, this._textAreaCharCount);\n }\n\n this.counterExcessOrRemaining = this.excessText;\n this.exceededCharCount = this._textAreaCharCount - this.maxLength;\n } else {\n this.counterExcessOrRemaining = this.remainingText;\n this.exceededCharCount = this.maxLength - this._textAreaCharCount;\n }\n\n this._isPasted = false;\n }\n\n /** handle exceeded maxlength case when text is pasted */\n handlePasteInteraction(): void {\n this._isPasted = true;\n\n // Wrapped in timeout to make selecting range working\n setTimeout(() => this.updateCounterInteractions());\n }\n\n /** handle auto growing of textarea */\n autoGrowTextArea(): void {\n if (this.growing) {\n this._targetElement.style.height = 'inherit';\n const textareaTotalHeight = this._getTextareaTotalHeight();\n const maxHeight = parseInt(this._targetElement.style.maxHeight as string, 10);\n if (maxHeight) {\n if (textareaTotalHeight <= maxHeight) {\n this._targetElement.style.height = textareaTotalHeight + 'px';\n } else {\n if (this.height) {\n this._targetElement.style.height = this.height;\n } else {\n this._targetElement.style.height = maxHeight + 'px';\n }\n }\n } else {\n // no bound max height, keep growing\n this._targetElement.style.height = textareaTotalHeight + 'px';\n }\n }\n }\n\n /**\n * get line height of textarea\n */\n getTextareaLineHeight(): number {\n // Get the computed styles for the element\n if (this._targetElement) {\n const computed = window.getComputedStyle(this._targetElement);\n\n // Calculate the height\n return parseInt(computed.getPropertyValue('line-height'), 10);\n }\n return 20; // default line height if nothing is defined\n }\n\n /** when backpress or delete key is pressed when showExceededText field is not set, simply remove excess characters,\n /* else handle autogrow case\n */\n @HostListener('keyup', ['$event'])\n handleBackPress(event: KeyboardEvent): void {\n // if not showing exceeded text message/interactions or growing, and custom value set\n if (this.growing) {\n this.autoGrowTextArea();\n this.isValueCustomSet = false; // set it to false first time it comes here\n }\n if (this._shouldTrackTextLimit && KeyUtil.isKeyCode(event, [DELETE, BACKSPACE])) {\n // for the custom value set and showExceededText=false case, on any key press, remove excess characters\n if (this.value) {\n this._textAreaCharCount = this.value.length;\n if (this._textAreaCharCount > this.maxLength) {\n // remove excess characters\n this.value = this.value.substring(0, this.maxLength);\n this.isValueCustomSet = false; // since value is now changed, it is no longer custom set\n }\n }\n }\n }\n\n /**\n * get the updated state when character count breaches `maxLength`\n */\n getUpdatedState(): FormStates {\n if (this._getContentLength() > this.maxLength) {\n this.hasTextExceeded = true; // set flag for error message to also change accordingly\n this.counterExcessOrRemaining = this.excessText;\n\n return this.state;\n }\n this.hasTextExceeded = false;\n this.counterExcessOrRemaining = this.remainingText;\n\n return this.state; // return any other errors found by parent form field\n }\n\n /** @hidden Native element */\n get _targetElement(): HTMLTextAreaElement {\n return this._elementRef?.nativeElement;\n }\n\n /** @hidden get the length of the textarea content */\n private _getContentLength(): number {\n let contentLength;\n if (this._targetElement) {\n contentLength = this._targetElement.value.length;\n }\n if (this.value) {\n contentLength = this.value.length;\n }\n return contentLength;\n }\n\n /** @hidden get the total height including borders and scroll height */\n private _getTextareaTotalHeight(): number {\n // Get the computed styles for the element\n const computed = window.getComputedStyle(this._targetElement);\n // Calculate the height\n const height =\n parseInt(computed.getPropertyValue('border-top-width'), 10) +\n this._targetElement.scrollHeight +\n parseInt(computed.getPropertyValue('border-bottom-width'), 10);\n\n return height;\n }\n\n /** @hidden set initial max height **/\n private _setMaxHeight(): void {\n if (this.growing && this._targetElement) {\n if (this.growingMaxLines) {\n this._targetElement.style.maxHeight = this.growingMaxLines * this.getTextareaLineHeight() + 'px';\n }\n if (this.height) {\n this._targetElement.style.maxHeight = this.height;\n }\n } else {\n if (this.growingMaxLines) {\n // nothing to do here. rows attribute takes care.\n }\n if (this.height) {\n this._targetElement.style.height = this.height;\n }\n }\n }\n}\n","<textarea\n #inputElementRef\n fd-form-control\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [rows]=\"growing ? 2 : height ? 2 : growingMaxLines\"\n [cols]=\"cols\"\n [wrap]=\"wrapType\"\n [maxlength]=\"!showExceededText ? maxLength : null\"\n [(ngModel)]=\"value\"\n [state]=\"getUpdatedState()\"\n (paste)=\"handlePasteInteraction()\"\n (blur)=\"_onFocusChanged(false)\"\n (focus)=\"_onFocusChanged(true)\"\n></textarea>\n\n<!-- ICU recommends full text in format -->\n<div\n class=\"fd-textarea-counter\"\n *ngIf=\"showExceededText\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [attr.id]=\"id + '-counter'\"\n #counter\n>\n <!-- render spaces instead of the actual value while translation string is loading in order to avoid content jumps -->\n <ng-container *ngIf=\"counterExcessOrRemaining === 'excess'; else charactersRemaining\">\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersOverTheLimitSingular'\n : 'platformTextarea.counterMessageCharactersOverTheLimitPlural'\n ) | fdTranslate: { count: exceededCharCount }:'&nbsp;&nbsp;'\n \"\n ></span>\n </ng-container>\n <ng-template #charactersRemaining>\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersRemainingSingular'\n : 'platformTextarea.counterMessageCharactersRemainingPlural'\n ) | fdTranslate: { count: exceededCharCount }:'&nbsp;&nbsp;'\n \"\n ></span>\n </ng-template>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-editor',\n templateUrl: './dynamic-form-generator-editor.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorEditorComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-textarea [id]=\"id\" [placeholder]=\"placeholder\" [name]=\"name\" [formControlName]=\"name\"></fdp-textarea>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { PlatformConfig } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class SelectConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<SelectConfig>): (platformConfig: PlatformConfig) => SelectConfig {\n const useFactory = (platformConfig: PlatformConfig): SelectConfig =>\n Object.assign(new SelectConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ENTER } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\n\nimport { fromEvent, Observable, Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, SingleDropdownValueControl } from '@fundamental-ngx/cdk/forms';\nimport { ContentDensityService, FocusEscapeDirection, KeyUtil, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ListComponent } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport {\n CollectionBaseInput,\n isJsObject,\n isOptionItem,\n isString,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\nimport { TextAlignment } from '../../combobox';\nimport { SelectConfig } from '../select.config';\nimport { SelectOptionItem } from './../models/select.models';\n\nexport type FdpSelectData<T> = SelectOptionItem[] | Observable<T[]> | T[];\n\n/**\n * @deprecated\n * `FdpSelectionChangeEvent` will be removed in future versions in favour of plain value emission\n */\nexport class FdpSelectionChangeEvent {\n /**\n * Select selection change event\n * @param payload selected value\n */\n constructor(\n public payload: any // Contains selected item\n ) {}\n}\n\n@Directive()\nexport abstract class BaseSelect\n extends CollectionBaseInput\n implements SingleDropdownValueControl, AfterViewInit, OnDestroy\n{\n /** Provides maximum default height for the optionPanel */\n @Input()\n maxHeight = '250px';\n\n /** Whether the select should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Tells the select if we need to group items */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation) */\n @Input()\n groupKey?: string;\n\n /** The field to show data in secondary column */\n @Input()\n secondaryKey?: string;\n\n /** Show the second column (Applicable for two columns layout) */\n @Input()\n showSecondaryText = false;\n\n /** Glyph to add icon in the select component. */\n @Input()\n glyph = 'slim-arrow-down';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Trigger value */\n @Input()\n triggerValue: string;\n\n /**\n * Preset options for the select body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /** Horizontally align text inside the second column (Applicable for two columns layout) */\n @Input()\n secondaryTextAlignment: TextAlignment = 'right';\n\n /**\n * Max width of list container\n * */\n @Input()\n width: string;\n\n /** Whether the select component is readonly. */\n @Input()\n readonly = false;\n\n /** Placeholder for the select. Appears in the\n * triggerbox if no option is selected. */\n @Input()\n placeholder: string;\n\n /** Whether close the popover on outside click. */\n @Input()\n closeOnOutsideClick = true;\n\n /** Custom template used to build control body. */\n @Input()\n controlTemplate: TemplateRef<any> | undefined;\n\n /** Binds to control aria-labelledBy attribute */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets control aria-label attribute value */\n @Input()\n ariaLabel = null;\n\n /** Select Input Mobile Configuration */\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true };\n\n /**\n * String rendered as first value in the popup which let the user to make 'no selection' from\n * available list of values. When this option is active and use make this selection we save a\n * NULL value\n */\n @Input()\n noValueLabel: string;\n\n /** Whether not to wrap text */\n @Input()\n noWrapText = false;\n\n /** Turns on/off Adjustable Width feature */\n @Input()\n autoResize = false;\n\n /** First Column ratio */\n @Input()\n set firstColumnRatio(value: number) {\n this._firstColumnRatio = coerceNumberProperty(value);\n }\n\n get firstColumnRatio(): number {\n return this._firstColumnRatio;\n }\n\n /** Secoond Column ratio */\n @Input()\n set secondColumnRatio(value: number) {\n this._secondColumnRatio = coerceNumberProperty(value);\n }\n\n get secondColumnRatio(): number {\n return this._secondColumnRatio;\n }\n\n /**\n * Min width of list container\n *\n * */\n @Input()\n minWidth?: number;\n\n /**\n * Max width of list container\n * */\n @Input()\n maxWidth?: number;\n\n /**\n * Action to perform when user shifts focus from the dropdown.\n * - `close` will close the dropdown preserving previously selected value.\n * - `closeAndSelect` will close the dropdown and select last focused dropdown item.\n */\n @Input()\n tabOutStrategy: 'close' | 'closeAndSelect' = 'close';\n\n /** Data for suggestion list */\n @Input()\n set list(value: any) {\n if (value) {\n this._optionItems = this._convertToOptionItems(value);\n }\n }\n get list(): any {\n return this._optionItems;\n }\n\n /** @hidden */\n get canClose(): boolean {\n return !(this.mobile && this.mobileConfig.approveButtonText);\n }\n\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<FdpSelectionChangeEvent>();\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /** Custom Option item Template\n * * @hidden\n * */\n _optionItemTemplate: TemplateRef<any>;\n\n /**\n * Custom Secondary item Template\n * @hidden\n * */\n _secondaryItemTemplate: TemplateRef<any>;\n\n /**\n * Custom Selected option item Template\n * @hidden\n * */\n _selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n _contentDensityService: ContentDensityService;\n\n /**\n * List of option items\n * @hidden\n * */\n _optionItems: SelectOptionItem[];\n\n /** @hidden */\n _subscriptions = new Subscription();\n\n /** @hidden */\n private _searchInputElement: ElementRef;\n\n /** Whether the select is opened. */\n private _isOpen = false;\n\n /**\n * Need for opening mobile version\n *\n * @hidden\n */\n private _openChange = new Subject<boolean>();\n\n /** @hidden */\n private _dsSubscription?: Subscription;\n\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n\n /** @hidden */\n private _firstColumnRatio: number;\n\n /** @hidden */\n private _secondColumnRatio: number;\n\n /** @hidden */\n protected constructor(\n readonly cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n protected selectConfig: SelectConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n this._subscriptions.unsubscribe();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n\n /** Is empty search field */\n get isEmptyValue(): boolean {\n return this.value.trim().length === 0;\n }\n\n /** @hidden */\n protected setValue(newValue: any, emitOnChange = true): void {\n if (newValue !== this._value) {\n this.writeValue(newValue);\n if (emitOnChange) {\n this.onChange(this.value);\n this.onTouched();\n this.selectionChange.emit({ payload: this.value });\n }\n this.cd.markForCheck();\n }\n }\n\n /** @hidden\n * Close list * */\n close(event: MouseEvent | null = null, forceClose: boolean = false): void {\n if (event) {\n const target = event.target as HTMLInputElement;\n if (target && target.id === this.id) {\n return;\n }\n }\n\n if (this._isOpen && (forceClose || this.canClose)) {\n this._isOpen = false;\n this._openChange.next(this._isOpen);\n this.cd.markForCheck();\n this.onTouched();\n }\n }\n\n /** @hidden */\n showList(isOpen: boolean): void {\n if (this._isOpen !== isOpen) {\n this._isOpen = isOpen;\n this.onTouched();\n this._openChange.next(isOpen);\n }\n\n this.cd.detectChanges();\n }\n\n /** @hidden */\n handlePressEnter(event: KeyboardEvent, value: SelectOptionItem): void {\n if (!KeyUtil.isKeyCode(event, ENTER)) {\n return;\n }\n\n this.setValue(value);\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this._searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = this._element.getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = window.innerWidth - scrollBarWidth - rect.left;\n this.minWidth = rect.width - 2;\n }\n\n /**\n * Convert original data to OptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): SelectOptionItem[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as SelectOptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to OptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): SelectOptionItem[] {\n if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Secondary OptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): SelectOptionItem[] {\n const selectItems: SelectOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n secondaryText: this.objectGet(value, this.secondaryKey),\n value: this.lookupValue(value)\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to OptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: string[]): SelectOptionItem[] {\n const selectItems: SelectOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({ label: value, value });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to OptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): SelectOptionItem[] {\n const selectItems: SelectOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n value\n });\n }\n\n return selectItems;\n }\n\n /** @hidden\n * Assign custom templates\n * */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case '_optionItemTemplate':\n this._optionItemTemplate = template.templateRef;\n break;\n case '_secondaryItemTemplate':\n this._secondaryItemTemplate = template.templateRef;\n break;\n case '_selectedItemTemplate':\n this._selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { SelectComponent as CoreSelect } from '@fundamental-ngx/core/select';\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { BaseSelect } from '../commons/base-select';\nimport { SelectConfig } from '../select.config';\n\n@Component({\n selector: 'fdp-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SelectComponent, multi: true }]\n})\nexport class SelectComponent extends BaseSelect implements AfterViewInit, AfterViewChecked {\n /**\n * @deprecated\n * Holds the control state of select\n */\n @Input()\n set selectState(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"selectState\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get selectState(): FormStates {\n if (isDevMode()) {\n console.warn('\"selectState\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /**\n * Directly sets value to the component that at the ends up at writeValue as well fires\n * change detections\n */\n @Input()\n set value(newValue: any) {\n this.setValue(newValue);\n }\n get value(): any {\n return this._value;\n }\n\n /** Should select be inlined. */\n @Input()\n inline = true;\n\n /** @hidden */\n @ViewChild(CoreSelect, { static: true })\n select: CoreSelect;\n\n /** @hidden */\n constructor(\n readonly cd: ChangeDetectorRef,\n readonly elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n readonly _dynamicComponentService: DynamicComponentService,\n readonly _selectConfig: SelectConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, _selectConfig, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n // set columns ratio for 2\n if (this.firstColumnRatio && this.secondColumnRatio) {\n this._setColumnsRatio(this.firstColumnRatio, this.secondColumnRatio);\n }\n\n // set width to avoid resize\n if (this.width) {\n const controlItem = this.elementRef.nativeElement.querySelector('.fd-select__text-content') as HTMLElement;\n controlItem.style.width = this.width;\n }\n\n // setting option items\n this.select._options.forEach((option) => {\n const optionItem = option._getHtmlElement();\n\n // set maxWidth default is 40rem\n if (this.maxWidth) {\n optionItem.setAttribute('style', 'max-width: ' + this.maxWidth + 'px');\n }\n // by default text will be overlapped, below it will help to truncate\n if (this.noWrapText) {\n const listTitle = optionItem.querySelector('.fd-list__title');\n if (listTitle) {\n const listTitleInnerHTML = listTitle.innerHTML;\n listTitle.setAttribute('title', listTitleInnerHTML);\n listTitle.setAttribute('aria-label', listTitleInnerHTML);\n listTitle.classList.add('fd-list__title--no-wrap');\n }\n }\n });\n }\n\n /** @hidden */\n ngAfterViewChecked(): void {\n this._cd.detectChanges();\n }\n\n /**\n * Define is selected item selected\n * @hidden\n */\n _isSelectedOptionItem(selectedItem: any): boolean {\n return this.value === this.lookupValue(selectedItem);\n }\n\n /** @hidden */\n _onSelection(value: any): void {\n this.setValue(value);\n }\n\n /** @hidden */\n private _setColumnsRatio(firstColumnRatio: number, secondColumnRatio: number): void {\n const totalProportions = firstColumnRatio + secondColumnRatio;\n const firstColumnProportion = Math.round((firstColumnRatio / totalProportions) * 100);\n const secondColumnProportion = 100 - firstColumnProportion;\n\n // setting option items\n this.select._options.forEach((option) => {\n const optionItem = option._getHtmlElement();\n const titleElement = <HTMLElement>optionItem.querySelector('[fd-list-title]');\n this._setOptionAttribute(titleElement, firstColumnProportion);\n\n const secondaryElement = <HTMLElement>optionItem.querySelector('[fd-list-secondary]');\n this._setOptionAttribute(secondaryElement, secondColumnProportion);\n });\n }\n\n /** @hidden */\n private _setOptionAttribute(element: HTMLElement, proportion: number): void {\n element.setAttribute('style', 'width: ' + proportion + '%; max-width: ' + proportion + '%');\n }\n}\n","<fd-select\n [placeholder]=\"placeholder\"\n [glyph]=\"glyph\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n [controlTemplate]=\"controlTemplate\"\n [appendTo]=\"appendTo\"\n [fillControlMode]=\"fillControlMode\"\n [maxHeight]=\"maxHeight\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.tooltip]=\"value\"\n [attr.aria-readonly]=\"readonly\"\n [attr.role]=\"'listbox'\"\n [value]=\"value\"\n [state]=\"state\"\n [stateMessage]=\"stateMessage\"\n [mobile]=\"mobile\"\n [mobileConfig]=\"mobileConfig\"\n [inline]=\"inline\"\n [(ngModel)]=\"value\"\n [tabOutStrategy]=\"tabOutStrategy\"\n (valueChange)=\"_onSelection($event)\"\n>\n <ng-content></ng-content>\n <li fd-option *ngIf=\"noValueLabel\" [disabled]=\"false\" [value]=\"null\">\n {{ noValueLabel }}\n </li>\n <li\n fd-option\n *ngFor=\"let item of _optionItems; index as index\"\n [disabled]=\"!!item.disabled\"\n [value]=\"item.value\"\n [attr.aria-labelledby]=\"ariaLabel\"\n [attr.aria-disabled]=\"disabled\"\n >\n <fd-icon *ngIf=\"item.icon\" [glyph]=\"item.icon\" class=\"fd-template-icon icon-margin\"></fd-icon>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: item, index: index }\"\n ></ng-container>\n <ng-container\n secondary\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: item }\"\n ></ng-container>\n </li>\n</fd-select>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"_isSelectedOptionItem(optionItem) && !!_selectedItemTemplate\"\n [ngTemplateOutlet]=\"_selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(_isSelectedOptionItem(optionItem) && _selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!_optionItemTemplate\">\n <span [innerHTML]=\"optionItem.label\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"_optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"_optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!_secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [innerHTML]=\"optionItem.secondaryText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"_secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"_secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\nimport { SelectDynamicFormFieldItem } from '../../interfaces/dynamic-form-item';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-select',\n templateUrl: './dynamic-form-generator-select.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorSelectComponent extends BaseDynamicFormGeneratorControl<SelectDynamicFormFieldItem> {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-select\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [inline]=\"formItem.guiOptions?.inline !== false\"\n [name]=\"name\"\n [list]=\"formItem.choices\"\n [formControlName]=\"name\"\n [secondaryKey]=\"formItem.secondaryKey\"\n [showSecondaryText]=\"formItem.showSecondaryText ? formItem.showSecondaryText : false\"\n [secondaryTextAlignment]=\"formItem.secondaryTextAlignment ? formItem.secondaryTextAlignment : 'right'\"\n [controlTemplate]=\"formItem.controlTemplate\"\n ></fdp-select>\n </ng-container>\n</ng-container>\n","import { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n isDevMode,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\n\nimport { CalendarType, CalendarYearGrid, DateRange, DaysOfWeek, FdCalendarView } from '@fundamental-ngx/core/calendar';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { DatePickerComponent as FdDatePickerComponent } from '@fundamental-ngx/core/date-picker';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport { PlatformFormFieldControl, BaseInput, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/**\n * The Platform date picker component is a wrapper around fd-date-picker using platform form.\n * It is able to provide form field functionalities as well along with fd-date-picker functions.\n *\n * <fdp-form-group #ffg [formGroup]=\"datePickerForm\">\n * <fdp-form-field #ffl1 id=\"birthday\">\n * <fdp-date-picker name=\"birthday\" type=\"single\" [formControl]=\"ffl1.formControl\"></fdp-date-picker>\n * </fdp-form-field>\n * </fdp-form-group>\n *\n */\n\n@Component({\n selector: 'fdp-date-picker',\n templateUrl: './date-picker.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformDatePickerComponent, multi: true }],\n host: {\n '(blur)': 'onTouched()'\n }\n})\nexport class PlatformDatePickerComponent<D> extends BaseInput {\n /**\n * date-picker value set as controller value\n */\n @Input()\n set value(value: DateRange<D> | D) {\n super.setValue(value);\n }\n get value(): DateRange<D> | D {\n return super.getValue();\n }\n\n /** below code taken from core/date-picker */\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n type: CalendarType = 'single';\n\n /** The currently selected CalendarDay model */\n @Input()\n selectedDate: D;\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D> = { start: null, end: null };\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected on Day View.\n */\n @Input()\n rangeHoverEffect = false;\n\n /** Whether to validate the date picker input. */\n @Input()\n useValidation = true;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core date picker)\n * Aria label for the date picker input.\n */\n @Input()\n dateInputLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core date picker)\n * Aria label for the datepicker input.\n */\n @Input()\n dateRangeInputLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core date picker)\n * Aria label for the button to show/hide the calendar.\n */\n @Input()\n displayCalendarToggleLabel: string;\n\n /** Enables Today-Selection-Button if true */\n @Input()\n showTodayButton = false;\n\n /** Label for Today-Selection-Button */\n @Input()\n todayButtonLabel = 'Today';\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = 'day';\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Defines if date picker should be closed after date choose */\n @Input()\n closeOnDateChoose = true;\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates) {\n super.state = state;\n }\n get state(): FormStates {\n if (this.fdDatePickerComponent?._isInvalidDateInput || !this._datePickerValid) {\n return 'error';\n }\n\n return super.state;\n }\n\n /**\n * @deprecated\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set datepickerState(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"datepickerState\" is deprecated. Use \"state\" instead');\n }\n this.state = state;\n }\n get datepickerState(): FormStates {\n if (isDevMode()) {\n console.warn('\"datepickerState\" is deprecated. Use \"state\" instead');\n }\n return this.state;\n }\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__special-day--{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5,\n yearMapping: (num: number) => num.toString()\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3,\n yearMapping: (num: number) => num.toString()\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether the date picker is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Should date picker be inlined. */\n @Input()\n inline = true;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input()\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Fired when a new date is selected. */\n @Output()\n readonly selectedDateChange = new EventEmitter<Nullable<D>>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange = new EventEmitter<FdCalendarView>();\n\n /** @hidden */\n private _datePickerValid = true;\n\n /**\n * @hidden core date-picker as child\n */\n @ViewChild(FdDatePickerComponent)\n fdDatePickerComponent: FdDatePickerComponent<D>;\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param value\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n * @param value\n */\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n disableRangeStartFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n * @param value\n */\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n disableRangeEndFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n constructor(\n protected _changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @Self() public ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n super(_changeDetectorRef, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n /** @hidden */\n writeValue(value: D | DateRange<D> | null): void {\n super.writeValue(value);\n this._changeDetectorRef.detectChanges();\n }\n\n /**\n * validates date on date change.\n * @param value D | DateRange<D>\n */\n handleDateChange(value: D | DateRange<D>): void {\n this.value = value;\n\n if (this.type === 'single' && !this.value && !this.allowNull) {\n this._datePickerValid = false;\n } else if (this.type === 'range' && !this.allowNull) {\n const dateRange = this.value as DateRange<D>;\n this._datePickerValid = !!dateRange.start;\n } else {\n this._datePickerValid = true;\n }\n\n this.stateChanges.next('date picker: handleDateInputChange');\n\n if (this.type === 'single') {\n this.handleSelectedDateChange(this.selectedDate);\n } else if (this.type === 'range') {\n this.handleSelectedRangeDateChange(this.selectedRangeDate);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method that handles changes when popover is opened or closed.\n */\n handleOpenChange = (open: boolean): void => {\n this.isOpenChange.emit(open);\n };\n\n /** @hidden */\n handleSelectedDateChange = (fdDate: Nullable<D>): void => {\n this.selectedDateChange.emit(fdDate);\n };\n\n /** @hidden */\n handleSelectedRangeDateChange = (fdRangeDate: DateRange<D>): void => {\n this.selectedRangeDateChange.emit(fdRangeDate);\n };\n\n /** @hidden */\n handleActiveViewChange = (fdCalendarView: FdCalendarView): void => {\n this.activeViewChange.emit(fdCalendarView);\n };\n}\n\n/** @hidden */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdpDatePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDateModule, or provide a ` +\n `custom implementation.`\n );\n}\n","<fd-date-picker\n [inputId]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [type]=\"type\"\n [state]=\"state\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [selectedDate]=\"selectedDate\"\n [showTodayButton]=\"showTodayButton\"\n [todayButtonLabel]=\"todayButtonLabel\"\n [selectedRangeDate]=\"selectedRangeDate\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [useValidation]=\"useValidation\"\n [dateInputLabel]=\"dateInputLabel\"\n [dateRangeInputLabel]=\"dateRangeInputLabel\"\n [displayCalendarToggleLabel]=\"displayCalendarToggleLabel\"\n [allowNull]=\"allowNull\"\n [activeView]=\"activeView\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [disabled]=\"disabled\"\n [closeOnDateChoose]=\"closeOnDateChoose\"\n [buttonFocusable]=\"buttonFocusable\"\n [specialDaysRules]=\"specialDaysRules\"\n [yearGrid]=\"yearGrid\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [markWeekends]=\"markWeekends\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [isOpen]=\"isOpen\"\n [disableFunction]=\"disableFunction\"\n [disableRangeStartFunction]=\"disableRangeStartFunction\"\n [disableRangeEndFunction]=\"disableRangeEndFunction\"\n [inline]=\"inline\"\n [processInputOnBlur]=\"processInputOnBlur\"\n [preventScrollOnFocus]=\"preventScrollOnFocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"handleDateChange($event)\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n (selectedDateChange)=\"handleSelectedDateChange($event)\"\n (selectedRangeDateChange)=\"handleSelectedRangeDateChange($event)\"\n>\n <ng-content></ng-content>\n</fd-date-picker>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-datepicker',\n templateUrl: './dynamic-form-generator-datepicker.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorDatepickerComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-date-picker\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [formControlName]=\"name\"\n [inline]=\"formItem.guiOptions?.inline !== false\"\n [allowNull]=\"false\"\n ></fdp-date-picker>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Default options for platform Switch\n */\n@Injectable({ providedIn: 'root' })\nexport class SwitchConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<SwitchConfig>): () => SwitchConfig {\n const useFactory = (): SwitchConfig => Object.assign(new SwitchConfig(), obj);\n return useFactory;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n Optional,\n Output,\n Self,\n SkipSelf\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { SwitchConfig } from './switch.config';\n\n/** Switch change event instance */\nexport class SwitchChangeEvent {\n /** The source Switch of the event. */\n source: SwitchComponent;\n /** The new `payload` value of the switch. */\n payload: boolean;\n}\n\n@Component({\n selector: 'fdp-switch',\n templateUrl: './switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }]\n})\nexport class SwitchComponent extends BaseInput {\n /** aria-label attribute of the inner input element. */\n @Input()\n ariaLabel = 'Switch input';\n\n /** aria-labelledby attribute of the inner input element. */\n @Input()\n ariaLabelledby: string | null = null;\n\n /** Whether the switch is semantic */\n @Input()\n semantic = false;\n\n /**\n * Event fired when the state of the switch changes.\n * *$event* can be used to retrieve the new state of the switch.\n */\n @Output()\n readonly switchChange: EventEmitter<SwitchChangeEvent> = new EventEmitter<SwitchChangeEvent>();\n\n /** value for switch control */\n set value(selectValue: any) {\n this.setValue(selectValue);\n }\n get value(): any {\n return this.getValue();\n }\n\n /** @hidden\n * tracking switch current value\n */\n switchCurrentValue = false;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n protected _switchConfig: SwitchConfig\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** update controller on switch state change */\n onValueChange(modelValue: boolean): void {\n this._updateModel(modelValue);\n this.onTouched();\n this.stateChanges.next('switch: onValueChange');\n }\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n this.switchCurrentValue = value;\n super.writeValue(value);\n }\n\n /** @hidden\n * update model\n */\n private _updateModel(modelValue: boolean): void {\n this._emitChangeEvent(modelValue);\n }\n\n /** @hidden\n * Method to emit change event\n */\n private _emitChangeEvent(modelValue: boolean): void {\n const event = new SwitchChangeEvent();\n event.source = this;\n event.payload = modelValue;\n\n // setting value, it will call setValue()\n this.value = modelValue;\n this.switchChange.emit(event);\n }\n}\n","<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledby]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-switch',\n templateUrl: './dynamic-form-generator-switch.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorSwitchComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-switch\n [id]=\"id\"\n [name]=\"name\"\n [semantic]=\"formItem.guiOptions?.additionalData?.semantic\"\n [formControlName]=\"name\"\n ></fdp-switch>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { DataProvider, PlatformConfig, MatchingStrategy } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Multi-Input\n */\n@Injectable({ providedIn: 'root' })\nexport class MultiInputConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<MultiInputConfig>): (platformConfig: PlatformConfig) => MultiInputConfig {\n const useFactory = (platformConfig: PlatformConfig): MultiInputConfig =>\n Object.assign(new MultiInputConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\nimport { combineLatest, fromEvent, isObservable, Observable, Subject, Subscription } from 'rxjs';\nimport { takeUntil, startWith } from 'rxjs/operators';\n\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { ContentDensity, FocusEscapeDirection, KeyUtil, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { FdpListComponent, ListComponent } from '@fundamental-ngx/platform/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport {\n CollectionBaseInput,\n PlatformFormFieldControl,\n isDataSource,\n isFunction,\n isJsObject,\n isOptionItem,\n isString,\n MatchingBy,\n MatchingStrategy,\n MultiInputOption,\n ArrayMultiInputDataSource,\n ObservableMultiInputDataSource,\n MultiInputDataSource,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { TextAlignment } from '../combobox';\nimport { MultiInputConfig } from './multi-input.config';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nexport type FdpMultiInputDataSource<T> = MultiInputDataSource<T> | Observable<T[]> | T[];\n\n@Directive()\nexport abstract class BaseMultiInput extends CollectionBaseInput implements AfterViewInit, OnChanges, OnDestroy {\n /** Provides maximum height for the optionPanel */\n @Input()\n maxHeight = '250px';\n\n /** Datasource for suggestion list */\n @Input()\n set dataSource(value: FdpMultiInputDataSource<any>) {\n if (value) {\n this._initializeDataSource(value);\n }\n }\n get dataSource(): FdpMultiInputDataSource<any> {\n return this._dataSource;\n }\n\n /** Whether the autocomplete should be enabled; Enabled by default */\n @Input()\n autoComplete = true;\n\n /**\n * Todo: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the Multi Input should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Multi Input Mobile Configuration, it's applied only, when mobile is enabled */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /**\n * Whether AddOn Button should be focusable\n * @default false\n */\n @Input()\n buttonFocusable = false;\n\n /** Tells the multi input if we need to group items */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation) */\n @Input()\n groupKey?: string;\n\n /** The field to show data in secondary column */\n @Input()\n description?: string;\n\n /** The field to show avatar image data in secondary column */\n @Input()\n avatarsrc?: string;\n\n /** Show the second column (Applicable for two columns layout) */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (Applicable for two columns layout) */\n @Input()\n secondaryTextAlignment: TextAlignment = 'right';\n\n /** Turns on/off Adjustable Width feature */\n @Input()\n autoResize = false;\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Value of the multi input */\n @Input()\n set value(value: any) {\n const selectedItems = Array.isArray(value) ? value : [value];\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** @hidden Emits event when the menu is opened/closed */\n @Output()\n readonly isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is started. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onDataRequested = new EventEmitter<void>();\n\n /** Event emitted when data loading is finished. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onDataReceived = new EventEmitter<void>();\n\n /** Event emitted when the search term changes. Use *$event* to access the new term. */\n @Output()\n readonly searchTermChange: EventEmitter<string> = new EventEmitter<string>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n readonly addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** @hidden */\n @ViewChild(FdpListComponent)\n listComponent: ListComponent<MultiInputOption>;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /** @hidden\n * Custom Option item Template\n * */\n optionItemTemplate: TemplateRef<any>;\n\n /** @hidden\n * Custom Group Header item Template\n * */\n groupItemTemplate: TemplateRef<any>;\n\n /** @hidden\n * Custom Secondary item Template\n * */\n secondaryItemTemplate: TemplateRef<any>;\n\n /** @hidden\n * Custom Selected option item Template\n * */\n selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n searchInputElement: ElementRef;\n\n /** @hidden */\n _contentDensity: ContentDensity = this.multiInputConfig.contentDensity;\n\n /** @hidden */\n abstract controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n abstract listTemplate: TemplateRef<any>;\n\n /** input text of the input. */\n inputText: string;\n\n /** Whether the Multi Input is opened. */\n isOpen = false;\n\n /** @hidden */\n get canClose(): boolean {\n return !(this.mobile && this.mobileConfig.approveButtonText);\n }\n\n /** @hidden\n * List of matched suggestions\n * */\n _suggestions: MultiInputOption[];\n\n /** @hidden\n * List of matched suggestions\n * */\n _newSuggestions: MultiInputOption[];\n\n /** @hidden\n * Max width of list container\n * */\n maxWidth?: number;\n\n /** @hidden\n * Min width of list container\n * */\n minWidth?: number;\n\n /**\n * Need for opening mobile version\n *\n * @hidden\n */\n openChange = new Subject<boolean>();\n\n /** @hidden emits whenever there're changes to the inputs, that affect the data creation from data source */\n private readonly _updateDataSourceValues$ = new Subject<void>();\n\n /** @hidden */\n protected _dataSource: FdpMultiInputDataSource<any>;\n\n /** @hidden */\n private _matchingStrategy: MatchingStrategy = this.multiInputConfig.matchingStrategy;\n /** @hidden */\n private _dsSubscription?: Subscription;\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n /** Keys, that won't trigger the popover's open state, when dispatched on search input */\n private readonly _nonOpeningKeys: number[] = [\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT,\n BACKSPACE\n ];\n\n /** @hidden */\n private _displayFn = (value: any): string => this.displayValue(value);\n\n /** @hidden */\n private _secondaryFn = (value: any): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n } else if (isJsObject(value) && this.description) {\n const currentItem = this.objectGet(value, this.description);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return value;\n }\n };\n\n /** @hidden */\n protected constructor(\n readonly cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n protected multiInputConfig: MultiInputConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('group' in changes || 'groupKey' in changes) {\n this._updateDataSourceValues$.next();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiInputDataSource<any>).close();\n }\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n * Define is this item selected\n */\n abstract isSelectedOptionItem(selectedItem: MultiInputOption): boolean;\n\n /**\n * @hidden\n * Emit select OptionItem\n * */\n abstract selectOptionItem(item: MultiInputOption): void;\n\n /**\n * @hidden\n * Define value as selected\n * */\n abstract setAsSelected(item: MultiInputOption[]): void;\n\n /**\n * @hidden\n * Mathod for marking list option as selected.\n */\n abstract _markListItemsAsSelected(): void;\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n const selectedItems = Array.isArray(value) ? value : [value];\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.writeValue(value);\n }\n\n /** @hidden */\n _popoverOpenChangeHandle(isOpen: boolean): void {\n if (!isOpen) {\n this.close();\n }\n }\n\n /** Opens the select popover body. */\n open(): void {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this.openChange.next(this.isOpen);\n this._cd.markForCheck();\n setTimeout(() => {\n this._markListItemsAsSelected();\n if (this.inputText) {\n return;\n }\n });\n }\n /** Closes the select popover body. */\n close(): void {\n this.isOpen = false;\n this.inputText = '';\n this.searchTermChanged();\n if (!this.mobile) {\n this.searchInputElement.nativeElement.focus();\n }\n this.isOpenChange.emit(false);\n this.openChange.next(false);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n convertObjectToMultiInputOption(items: any[]): MultiInputOption[] {\n return this._convertObjectsToOptionItems(items);\n }\n\n /** @hidden */\n searchTermChanged(text: string = this.inputText): void {\n if (text) {\n this.open();\n }\n const map = new Map();\n map.set('query', text);\n map.set('limit', 12);\n this.ds?.match(map);\n\n this.searchTermChange.emit(text);\n\n this.cd.detectChanges();\n }\n\n /** @hidden */\n showList(isOpen: boolean): void {\n if (this.isOpen !== isOpen) {\n if (isOpen) {\n this.open();\n } else {\n this.searchTermChanged('');\n this.close();\n }\n }\n }\n\n /** @hidden */\n handleOptionItem(value: MultiInputOption): void {\n if (value) {\n this.selectOptionItem(value);\n }\n }\n\n /** @hidden */\n handlePressEnter(event: KeyboardEvent, value: MultiInputOption): void {\n if (!KeyUtil.isKeyCode(event, ENTER)) {\n return;\n }\n\n this.handleOptionItem(value);\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n onInputKeydownHandler(event: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, TAB) && this.isOpen) {\n this.close();\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this.showList(true);\n }\n\n if (this.isOpen) {\n this.listComponent?._setCurrentActiveItemIndex(0);\n this.listComponent?.listItems.first.focus();\n } else {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this.showList(false);\n } else if (!event.ctrlKey && !KeyUtil.isKeyCode(event, this._nonOpeningKeys)) {\n this.showList(true);\n }\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this.searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n protected get ds(): MultiInputDataSource<any> {\n return this.dataSource as MultiInputDataSource<any>;\n }\n\n /** @hidden\n * Method that picks other value moved from current one by offset, called only when Multi Input is closed */\n private _chooseOtherItem(offset: number): void {\n const index: number = this._suggestions.findIndex((value) => value.label === this.inputText);\n\n if (this._suggestions[index + offset]) {\n this.handleOptionItem(this._suggestions[index + offset]);\n }\n }\n\n /** @hidden */\n private _initializeDataSource(ds: FdpMultiInputDataSource<any>): void {\n this._suggestions = [];\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiInputDataSource<any>).close();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = undefined;\n }\n }\n // Convert whatever comes in as DataSource so we can work with it identically\n this._dataSource = this._openDataStream(ds);\n }\n\n /** @hidden */\n private _openDataStream(ds: FdpMultiInputDataSource<any>): MultiInputDataSource<any> {\n const initDataSource = this._toDataStream(ds);\n\n if (initDataSource === undefined) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n /**\n * This is single point of data entry to the component. We dont want to set data on different\n * places. If any new data comes in either you do a search and you want to pass initial data\n * its here.\n */\n this._dsSubscription = new Subscription();\n const dsSub = combineLatest([initDataSource.open(), this._updateDataSourceValues$.pipe(startWith(null))])\n .pipe(takeUntil(this._destroyed))\n .subscribe(([data]) => {\n this._suggestions = this._convertToOptionItems(data);\n this.stateChanges.next('initDataSource.open().');\n\n this.cd.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n\n this._dsSubscription.add(initDataSource.onDataRequested().subscribe(this.onDataRequested));\n this._dsSubscription.add(initDataSource.onDataReceived().subscribe(this.onDataReceived));\n\n initDataSource.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.description) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n initDataSource.dataProvider.setMatchingBy(matchingBy);\n initDataSource.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n map.set('limit', 12);\n initDataSource.match(map);\n\n return initDataSource;\n }\n\n /** @hidden */\n private _toDataStream(source: FdpMultiInputDataSource<any>): MultiInputDataSource<any> | undefined {\n if (isDataSource(source)) {\n return source as MultiInputDataSource<any>;\n }\n\n if (Array.isArray(source)) {\n // default implementation to work on top of arrays\n return new ArrayMultiInputDataSource<any>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableMultiInputDataSource<any>(source);\n }\n\n return undefined;\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = (this._element.querySelector('fd-input-group') as HTMLElement).getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = window.innerWidth - scrollBarWidth - rect.left;\n this.minWidth = rect.width - 2;\n }\n\n /**\n * Convert original data to OptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): MultiInputOption[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as MultiInputOption[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to OptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): MultiInputOption[] {\n if (this.group && this.groupKey) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.description) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n private _convertObjectsToGroupOptionItems<K>(items: K[]): MultiInputOption[] {\n const group: { [key: string]: K[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = this.groupKey && item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: MultiInputOption = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.description) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n return selectItem;\n });\n }\n\n /**\n * Convert object[] data to Secondary OptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): MultiInputOption[] {\n const selectItems: MultiInputOption[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n avatarSrc: this.avatarsrc ? this.objectGet(value, this.avatarsrc) : null,\n description: this.description ? this.objectGet(value, this.description) : null,\n value\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to OptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: any[]): MultiInputOption[] {\n const selectItems: MultiInputOption[] = [];\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({ label: value, value });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to OptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): MultiInputOption[] {\n const selectItems: MultiInputOption[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n value\n });\n }\n\n return selectItems;\n }\n\n /** @hidden\n * Assign custom templates\n * */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const MULTIINPUT_COMPONENT = new InjectionToken<string[]>('PlatformMultiInputInterface');\n\nexport interface PlatformMultiInputInterface extends MobileMode {\n _selected: any[];\n openChange: Subject<boolean>;\n\n _dialogApprove(): void;\n _dialogDismiss(selectedBackup: any[]): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MULTIINPUT_COMPONENT, PlatformMultiInputInterface } from '../multi-input.interface';\n\n@Component({\n selector: 'fdp-multi-input-mobile',\n templateUrl: './multi-input-mobile.component.html',\n styleUrls: ['./multi-input-mobile.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class PlatformMultiInputMobileComponent\n extends MobileModeBase<PlatformMultiInputInterface>\n implements OnInit, OnDestroy\n{\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n private _selectedBackup: any[];\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n @Inject(MULTIINPUT_COMPONENT) multiInputComponent: PlatformMultiInputInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, multiInputComponent, MobileModeControl.MULTI_INPUT, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiInputOpenChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.onDestroy();\n }\n\n /** @hidden */\n _handleApprove(): void {\n this.dialogRef.close();\n this._component._dialogApprove();\n }\n\n /** @hidden */\n _handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component._dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n private _listenOnMultiInputOpenChange(): void {\n this._component.openChange\n .pipe(distinctUntilChanged(), takeUntil(this._onDestroy$))\n .subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n this._handleApprove();\n return;\n }\n\n this._selectedBackup = [...this._component._selected];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n escKeyCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-dialog-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"_handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"fdp-multi-dialog-input\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { PlatformMultiInputMobileComponent } from './multi-input-mobile.component';\n\n@NgModule({\n declarations: [PlatformMultiInputMobileComponent],\n imports: [CommonModule, BarModule, DialogModule, ButtonModule],\n exports: [PlatformMultiInputMobileComponent]\n})\nexport class PlatformMultiInputMobileModule {}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { OptionItem } from '@fundamental-ngx/platform/shared';\n\nexport interface AutoCompleteEvent {\n term: string;\n forceClose: boolean;\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fdp-auto-complete]'\n})\nexport class AutoCompleteDirective {\n /** Values that will fill missing text in the input. */\n @Input()\n options: OptionItem[];\n\n /**\n * Input text, that is taken from ngModel of formControl,\n * there has to be difference between native input value and model value\n */\n @Input()\n inputText: string;\n\n /** Check is directive use in mobile view to prevent additional blur events */\n @Input()\n mobile: boolean;\n\n /** Event thrown, when the auto ahead text is accepted */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onComplete: EventEmitter<AutoCompleteEvent> = new EventEmitter<AutoCompleteEvent>();\n\n /** @hidden */\n private readonly _completeKeys: number[] = [ENTER];\n\n /** @hidden */\n private readonly _fillKeys: number[] = [LEFT_ARROW, RIGHT_ARROW];\n\n /** @hidden */\n private readonly _stopKeys: number[] = [BACKSPACE, DELETE, ESCAPE];\n\n /** @hidden */\n private _oldValue: string;\n\n /** @hidden */\n private _lastKeyUpEvent: KeyboardEvent;\n\n /** @hidden */\n private get _element(): HTMLInputElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef<HTMLInputElement>) {}\n\n /** @hidden */\n @HostListener('blur')\n handleBlur(): void {\n if (Boolean(this.inputText) && !this.mobile) {\n this._element.value = this.inputText;\n }\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._element.value = this.inputText;\n } else if (KeyUtil.isKeyCode(event, this._completeKeys)) {\n this._sendCompleteEvent(true);\n } else if (KeyUtil.isKeyCode(event, this._fillKeys)) {\n this._sendCompleteEvent(false);\n } else if (!this._isControlKey(event) && this.inputText) {\n /** Prevention from triggering typeahead, when having crtl/cmd + keys */\n if (!this._triggerTypeAhead()) {\n return;\n }\n\n this._oldValue = this.inputText;\n const item = this._searchByStrategy();\n\n if (item) {\n this._typeahead(item.label);\n }\n }\n\n this._lastKeyUpEvent = event;\n }\n\n /** @hidden */\n private _typeahead(displayedValue: string): void {\n const selectionStartIndex = this.inputText.length;\n this._element.value = displayedValue;\n\n this._setSelectionRange(selectionStartIndex, displayedValue.length);\n }\n\n /** @hidden */\n private _setSelectionRange(selectionStart: number, selectionEnd: number): void {\n const direction = this._element.selectionDirection;\n\n this._element.setSelectionRange(selectionStart, selectionEnd, direction ?? undefined);\n }\n\n /** @hidden */\n private _isControlKey(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, CONTROL) || event.ctrlKey;\n }\n\n /** @hidden */\n private _triggerTypeAhead(): boolean {\n return !(\n this._lastKeyUpEvent &&\n KeyUtil.isKeyCode(this._lastKeyUpEvent, CONTROL) &&\n this.inputText === this._oldValue\n );\n }\n\n /** @hidden */\n private _sendCompleteEvent(forceClose: boolean): void {\n this.onComplete.emit({\n term: this._element.value,\n forceClose\n });\n\n if (this.inputText !== this._oldValue) {\n const inputTextLength = this.inputText.length;\n this._element.setSelectionRange(inputTextLength, inputTextLength);\n }\n }\n\n /** @hidden */\n private _searchByStrategy(): OptionItem | undefined {\n const [firstItem] = this.options;\n if (!firstItem) {\n return;\n }\n\n if (firstItem.isGroup) {\n let matchedSelectItem: OptionItem | undefined;\n\n for (const option of this.options) {\n if (!option.children) {\n continue;\n }\n matchedSelectItem = this._findByStrategyStartsWith(option.children, this.inputText);\n\n if (matchedSelectItem) {\n break;\n }\n }\n\n if (matchedSelectItem) {\n return matchedSelectItem;\n }\n }\n\n return this._findByStrategyStartsWith(this.options, this.inputText);\n }\n\n /** @hidden */\n private _findByStrategyStartsWith(options: OptionItem[], inputText: string): OptionItem | undefined {\n return options.find((option) => option.label.toLocaleLowerCase().startsWith(inputText.toLocaleLowerCase()));\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Injector,\n Input,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { DOWN_ARROW, ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { TokenizerComponent } from '@fundamental-ngx/core/token';\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport {\n DATA_PROVIDERS,\n DataProvider,\n PlatformFormFieldControl,\n MultiInputDataSource,\n MultiInputOption,\n isFunction,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { BaseListItem, ListComponent, ModifyItemEvent, SelectionType } from '@fundamental-ngx/platform/list';\n\nimport { InputType } from '../input/input.component';\nimport { AutoCompleteEvent } from '../auto-complete/auto-complete.directive';\nimport { BaseMultiInput } from './base-multi-input';\nimport { PlatformMultiInputMobileComponent } from './multi-input-mobile/multi-input-mobile.component';\nimport { PlatformMultiInputMobileModule } from './multi-input-mobile/multi-input-mobile.module';\nimport { MULTIINPUT_COMPONENT } from './multi-input.interface';\nimport { MultiInputConfig } from './multi-input.config';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport equal from 'fast-deep-equal';\nimport { FD_LANGUAGE, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { firstValueFrom, Observable } from 'rxjs';\n\nlet uniqueHiddenLabel = 0;\n\nexport class MultiInputSelectionChangeEvent {\n /**\n * Multi Input selection change event\n * @param source Multi Input component\n * @param payload Selected value\n */\n constructor(\n public source: PlatformMultiInputComponent,\n public payload: any // Contains selected item\n ) {}\n}\n\n@Component({\n selector: 'fdp-multi-input',\n templateUrl: './multi-input.component.html',\n styleUrls: ['./multi-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => PlatformMultiInputComponent),\n multi: true\n },\n contentDensityObserverProviders()\n ]\n})\nexport class PlatformMultiInputComponent extends BaseMultiInput implements OnInit, AfterViewInit {\n /** @hidden */\n protected tokenCountHiddenLabel = `fdp-multi-input-token-count-id-${uniqueHiddenLabel++}`;\n\n /** token count hidden label */\n @Input()\n tokenHiddenId: string = this.tokenCountHiddenLabel;\n\n /** type Represent the type of input used for the multi Input */\n @Input()\n type: InputType;\n\n /** boolean type represents the focus set for the respective multi input */\n @Input()\n autofocus = false;\n\n /** */\n @Input()\n glyphAriaLabel: string;\n\n /** @hidden */\n @ViewChild(ListComponent)\n listTemplateDD: ListComponent<MultiInputOption>;\n\n /** Selected values from the list items. */\n _selected: any[] = [];\n\n /** Selected items of the multi input. */\n @Input()\n set selected(selectedValue: any[]) {\n this.value = selectedValue;\n }\n get selected(): any[] {\n return this._selected;\n }\n\n /**\n *\n */\n @Input()\n selectionMode: SelectionType = 'none';\n\n /** Whether the list in byline mode. */\n @Input()\n hasByLine = false;\n\n /** @hidden */\n selectedValue?: MultiInputOption;\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** @hidden Whether the input is disabled. */\n protected _disabled = false;\n\n /** Whether the multi input is disabled. */\n @Input()\n set disabled(value) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * `equal` will apply a width to the body equivalent to the width of the control.\n * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /**\n * The trigger events that will open/close the options popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n @Input()\n triggers: string[] = [];\n\n /** Whether the combobox should close, when a click is performed outside its boundaries. True by default */\n @Input()\n closeOnOutsideClick = true;\n\n /** Callback function when add-on button clicked. */\n @Input()\n addOnButtonClickFn: () => void;\n\n /** Event emitted when item is selected. */\n @Output()\n readonly selectionChange = new EventEmitter<MultiInputSelectionChangeEvent>();\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n tokenizer: TokenizerComponent;\n\n /** @hidden */\n @ViewChild('controlTemplate')\n controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChildren(BaseListItem)\n private readonly _listItems: QueryList<BaseListItem>;\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n constructor(\n /** @hidden */\n readonly cd: ChangeDetectorRef,\n /** @hidden */\n readonly elementRef: ElementRef,\n /** @hidden */\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n /** @hidden */\n @Optional() @Self() readonly ngForm: NgForm,\n /** @hidden */\n @Optional() readonly dialogConfig: DialogConfig,\n /** @hidden */\n readonly _dynamicComponentService: DynamicComponentService,\n /** @hidden */\n private readonly _viewContainerRef: ViewContainerRef,\n /** @hidden */\n private readonly _injector: Injector,\n /** @hidden */\n @Optional() @Inject(DATA_PROVIDERS) private _providers: Map<string, DataProvider<any>>,\n /** @hidden */\n readonly _multiInputConfig: MultiInputConfig,\n /** @hidden */\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n /** @hidden */\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n readonly contentDensityObserver: ContentDensityObserver,\n /** @hidden */\n @Inject(FD_LANGUAGE) private readonly _language: Observable<FdLanguage>\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n dialogConfig,\n _multiInputConfig,\n formField,\n formControl\n );\n }\n\n /** Display function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs a string.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details. */\n @Input()\n displayFn = (str: string): string => str;\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n\n const providers = this._providers?.size === 0 ? this._multiInputConfig.providers : this._providers;\n // if we have both prefer dataSource\n if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) {\n this.dataSource = new MultiInputDataSource(providers.get(this.entityClass)!);\n }\n\n this._getAriaLabel();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n\n this.tokenizer._showOverflowPopover = false;\n }\n\n /** @hidden Method to emit change event */\n emitChangeEvent<T>(modelValue: T): void {\n const event = new MultiInputSelectionChangeEvent(this, modelValue);\n\n this.selectionChange.emit(event);\n }\n\n /** @hidden */\n _checkboxSelected(value: any, event: ModifyItemEvent): void {\n const isSelected = event.source._selected;\n const index = this.selected.findIndex((selectvalue) => equal(selectvalue, value));\n\n if (isSelected && index > -1) {\n return;\n }\n\n this.addToArray(value, false);\n }\n\n /** @hidden */\n addToArray(value: any, focusOnInput = true): void {\n const index = this.selected.findIndex((selectvalue) => equal(selectvalue, value));\n if (index === -1) {\n this.selected.push(value);\n } else {\n this.selected.splice(index, 1);\n }\n if (!this.mobile && focusOnInput) {\n this.close();\n }\n this._updateModel(this.selected);\n if (focusOnInput) {\n this.searchInputElement.nativeElement.focus();\n }\n this.emitChangeEvent(value ? this.selected : null);\n this._cd.detectChanges();\n }\n\n /** @hidden */\n addOnButtonClick(event: Event): void {\n if (!this.openDropdownOnAddOnClicked && this.isOpen) {\n this.showList(false);\n } else if (this.openDropdownOnAddOnClicked) {\n this.showList(!this.isOpen);\n this.searchInputElement?.nativeElement.focus();\n }\n\n this.addOnButtonClicked.emit(event);\n\n if (isFunction(this.addOnButtonClickFn)) {\n this.addOnButtonClickFn();\n return;\n }\n }\n\n /** @hidden */\n onInputGroupClicked(): void {\n if (this.mobile && !this.isOpen) {\n this.open();\n }\n }\n\n /** @hidden */\n moreClicked(): void {\n this.open();\n this._suggestions = this.selected;\n this._cd.markForCheck();\n }\n\n /** @hidden */\n deleteToken(selectedValue: MultiInputOption): void {\n if (this.tokenizer.tokenList.length > 0) {\n this.tokenizer.tokenList.forEach((token) => {\n if (token.tokenWrapperElement.nativeElement.textContent === selectedValue.label) {\n this.selected.splice(this.selected.indexOf(selectedValue), 1);\n }\n });\n }\n this._updateModel(this.selected);\n this.searchInputElement.nativeElement.focus();\n this.close();\n this._cd.markForCheck();\n }\n\n /** @hidden */\n removeToken(token: any): void {\n this.selected.splice(this.selected.indexOf(token), 1);\n this.emitChangeEvent(token ? this.selected : null);\n this.searchInputElement.nativeElement.focus();\n if (this.selected.length === 0) {\n this._selected = [];\n }\n this._updateModel(this.selected);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n removeSelectedTokens(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n if (this.isOpen) {\n this.listComponent._setCurrentActiveItemIndex(0);\n this.listTemplateDD.listItems.first.focus();\n } else {\n this.showList(!this.isOpen);\n this.searchInputElement.nativeElement.focus();\n }\n }\n if (KeyUtil.isKeyCode(event, [ESCAPE])) {\n this.showList(false);\n }\n this._cd.markForCheck();\n }\n\n /** @hidden Define is selected item selected */\n isSelectedOptionItem(selectedItem: any): boolean {\n return (\n (this.lookupKey && this.lookupValue(this.selected) === this.lookupValue(selectedItem)) ||\n this.displayValue(this.selected) === this.displayValue(selectedItem)\n );\n }\n\n /** @hidden Method to set selected item */\n selectOptionItem(item: MultiInputOption): void {\n if (this.mobile) {\n this.selectedValue = item;\n this.inputText = item.label;\n this.cd.detectChanges();\n\n return;\n }\n\n this.inputText = item.label;\n this._checkAndUpdate(item);\n this.showList(false);\n }\n\n /** @hidden Method to set as selected */\n setAsSelected(item: MultiInputOption[]): void {\n this._selected = item;\n this.inputText = '';\n this._markListItemsAsSelected();\n }\n\n /**\n * @hidden\n * Mathod for marking items in dropdown as selected.\n */\n _markListItemsAsSelected(): void {\n this._listItems?.forEach((listItem) => {\n const isSelected = !!this._selected.find((value) => equal(value.value, listItem.value));\n listItem.setSelected(isSelected);\n });\n }\n\n /** @hidden */\n _onAutoComplete(event: AutoCompleteEvent): void {\n if (!event.forceClose || !this._suggestions) {\n return;\n }\n\n const [item] = this.isGroup ? this._suggestions[0]?.children || [] : this._suggestions;\n if (item && item.label === event.term) {\n this.addToArray(item);\n }\n }\n\n /** @hidden */\n _onKeydownEnter(event: Event): void {\n if (this.inputText) {\n event.preventDefault();\n }\n }\n\n /** @hidden Handle dialog dismissing, closes popover and sets backup data. */\n _dialogDismiss(selected: any[]): void {\n this._selected = selected;\n this.showList(false);\n }\n\n /** @hidden Handle dialog approval, closes popover and propagates data changes. */\n _dialogApprove(): void {\n this.onChange(this.selected);\n this._updateModel(this.selected);\n this.showList(false);\n }\n\n /** @hidden if not selected update model */\n private _checkAndUpdate(modelValue: MultiInputOption): void {\n if (this.isSelectedOptionItem(modelValue)) {\n return;\n }\n\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n /** @hidden */\n private _getSelectedOptionItem(text: string): MultiInputOption | undefined {\n if (!this.isGroup) {\n return this._suggestions.find((item) => item.label === text);\n }\n\n return this._suggestions\n .reduce((result: MultiInputOption[], item: MultiInputOption) => {\n item.children && result.push(...item.children);\n\n return result;\n }, [])\n .find((item) => item.label === text);\n }\n\n /** @hidden Update model */\n private _updateModel(value: any): void {\n // setting value, it will call setValue()\n this.value = value;\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTIINPUT_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n await this._dynamicComponentService.createDynamicModule(\n { listTemplate: this.listTemplate, controlTemplate: this.controlTemplate },\n PlatformMultiInputMobileModule,\n PlatformMultiInputMobileComponent,\n this._viewContainerRef,\n injector\n );\n }\n\n /** @hidden */\n private async _getAriaLabel(): Promise<void> {\n const lang = await firstValueFrom(this._language);\n this.ariaLabel = this._translationResolver.resolve(lang, 'coreMultiInput.multiInputAriaLabel');\n }\n}\n","<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"isOpen ? _suggestions : []\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [interceptTabKey]=\"false\"\n (keydown.tab)=\"close()\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatarSrc]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-multi-input',\n templateUrl: './dynamic-form-generator-multi-input.component.html',\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorMultiInputComponent extends BaseDynamicFormGeneratorControl {\n /** @hidden */\n constructor() {\n super();\n }\n}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [formControlName]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [name]=\"name\"\n [dataSource]=\"choices\"\n displayKey=\"label\"\n lookupKey=\"label\"\n [autofocus]=\"true\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { BaseDynamicFormGeneratorControl } from '../../base-dynamic-form-generator-control';\nimport { dynamicFormFieldProvider, dynamicFormGroupChildProvider } from '../../providers/providers';\nimport { ObjectStatusDynamicFormFieldItem } from '../../interfaces/dynamic-form-item';\n\n@Component({\n selector: 'fdp-dynamic-form-generator-object-status',\n templateUrl: './dynamic-form-generator-object-status.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class DynamicFormGeneratorObjectStatusComponent extends BaseDynamicFormGeneratorControl<ObjectStatusDynamicFormFieldItem> {}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-object-status\n [label]=\"formItem.default\"\n [status]=\"formItem.guiOptions?.status\"\n [glyph]=\"formItem.guiOptions?.icon\"\n ></fdp-object-status>\n </ng-container>\n</ng-container>\n","import { DynamicFormGeneratorInputComponent } from '../controls/dynamic-form-generator-input/dynamic-form-generator-input.component';\nimport { DynamicFormGeneratorCheckboxComponent } from '../controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component';\nimport { DynamicFormGeneratorRadioComponent } from '../controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component';\nimport { DynamicFormGeneratorEditorComponent } from '../controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component';\nimport { DynamicFormGeneratorSelectComponent } from '../controls/dynamic-form-generator-select/dynamic-form-generator-select.component';\nimport { FormComponentDefinition } from '../interfaces/form-component-definition';\nimport { DynamicFormGeneratorDatepickerComponent } from '../controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component';\nimport { DynamicFormGeneratorSwitchComponent } from '../controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component';\nimport { DynamicFormGeneratorMultiInputComponent } from '../controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component';\nimport { DynamicFormGeneratorObjectStatusComponent } from '../controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component';\n\nexport const DEFAULT_COMPONENTS_LIST: FormComponentDefinition[] = [\n {\n types: ['input', 'email', 'number', 'password'],\n component: DynamicFormGeneratorInputComponent\n },\n {\n types: ['checkbox'],\n component: DynamicFormGeneratorCheckboxComponent\n },\n {\n types: ['radio', 'confirm'],\n component: DynamicFormGeneratorRadioComponent\n },\n {\n types: ['editor', 'textarea'],\n component: DynamicFormGeneratorEditorComponent\n },\n {\n types: ['select', 'list'],\n component: DynamicFormGeneratorSelectComponent\n },\n {\n types: ['datepicker'],\n component: DynamicFormGeneratorDatepickerComponent\n },\n {\n types: ['switch'],\n component: DynamicFormGeneratorSwitchComponent\n },\n {\n types: ['multi-input'],\n component: DynamicFormGeneratorMultiInputComponent\n },\n {\n types: ['object-status'],\n component: DynamicFormGeneratorObjectStatusComponent\n }\n];\n","import { Injectable, Type } from '@angular/core';\nimport { FormComponentDefinition } from './interfaces/form-component-definition';\nimport { DEFAULT_COMPONENTS_LIST } from './config/default-components-list';\nimport { BaseDynamicFormGeneratorControl } from './base-dynamic-form-generator-control';\n\n/**\n * Since form generator service most probably will be provided by parent component,\n * so that forms map does not interfere with other form generators,\n * Components Accessor is a separate service with a global scope, which can be also provided per component.\n */\n@Injectable()\nexport class FormGeneratorComponentsAccessorService {\n /**\n * @hidden\n */\n private _formComponentDefinitions: FormComponentDefinition[] = DEFAULT_COMPONENTS_LIST;\n\n /**\n * @description Adds custom component to the list of available components for the form generator items.\n * @param component Angular component.\n * @param types types of the form item.\n */\n addComponent(component: Type<BaseDynamicFormGeneratorControl>, types: string[]): boolean {\n const bestMatchComponentIndex = this._formComponentDefinitions.findIndex((c) =>\n c.types?.every((t) => types.includes(t))\n );\n\n if (bestMatchComponentIndex > -1) {\n this._formComponentDefinitions[bestMatchComponentIndex].component = component;\n return true;\n }\n\n // Try to find component in types key. There might be some unique cases when new component might replace multiple.\n const existingComponents = this._formComponentDefinitions.filter((c) =>\n c.types?.filter((t) => types.includes(t))\n );\n\n existingComponents.forEach((existingComponent, index) => {\n existingComponent.types = existingComponent.types?.filter((t) => !types.includes(t));\n this._formComponentDefinitions[index] = existingComponent;\n });\n\n this._formComponentDefinitions.push({\n types,\n component\n });\n\n return true;\n }\n\n /**\n * @description Returns best-matched component based on provided `type` argument\n * @param type form item type\n * @returns @see FormComponentDefinition Component definition for the form item\n */\n getComponentDefinitionByType(type: string): FormComponentDefinition | undefined {\n return this._formComponentDefinitions.find((c) => c.types?.includes(type));\n }\n}\n","export const DEFAULT_VALIDATION_ERRORS = {\n required: 'This field is required',\n validator: 'This field is invalid'\n};\n","import { Inject, Injectable, OnDestroy, Optional, SkipSelf, Type } from '@angular/core';\nimport { AsyncValidatorFn, FormBuilder, Validators } from '@angular/forms';\nimport { isFunction, selectStrategy } from '@fundamental-ngx/cdk/utils';\nimport { cloneDeep, merge } from 'lodash-es';\n\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport { DynamicFormControl, DynamicFormControlGroup, DynamicFormGroupControl } from './dynamic-form-control';\nimport { FormGeneratorComponentsAccessorService } from './form-generator-components-accessor.service';\nimport {\n DynamicFormFieldItem,\n DynamicFormItem,\n DynamicFormItemChoiceTypes,\n DynamicFormValue,\n PreparedDynamicFormFieldItem\n} from './interfaces/dynamic-form-item';\nimport { FormComponentDefinition } from './interfaces/form-component-definition';\nimport { DEFAULT_VALIDATION_ERRORS } from './config/default-validation-errors';\nimport { BaseDynamicFormGeneratorControl } from './base-dynamic-form-generator-control';\nimport { DynamicFormGroup } from './interfaces/dynamic-form-group';\nimport { FormGeneratorConfig } from './interfaces/form-generator-module-config';\nimport { defaultFormGeneratorConfig, FORM_GENERATOR_CONFIG, FORM_GENERATOR_ITEM_CONFIG } from './providers/providers';\n\n/**\n * @description Form generator service\n */\n@Injectable()\nexport class FormGeneratorService implements OnDestroy {\n /**\n * Map of generated forms to access later.\n */\n readonly forms: Map<string, DynamicFormGroup> = new Map<string, DynamicFormGroup>();\n\n /**\n * Predefined validation error messages.\n */\n validationErrorHints = DEFAULT_VALIDATION_ERRORS;\n\n /** @hidden */\n private readonly _config: FormGeneratorConfig = defaultFormGeneratorConfig;\n\n /**\n * @hidden\n * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _fb: FormBuilder,\n private _componentsAccessor: FormGeneratorComponentsAccessorService,\n @Optional()\n @SkipSelf()\n @Inject(FORM_GENERATOR_ITEM_CONFIG)\n private _defaultItemConfig: Partial<DynamicFormFieldItem>,\n @Optional()\n @SkipSelf()\n @Inject(FORM_GENERATOR_CONFIG)\n private _providedConfig: Partial<FormGeneratorConfig>\n ) {\n this._config = merge(cloneDeep(this._config), cloneDeep(this._providedConfig));\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * @description Generates `FormGroup` class with the list of `DynamicFormControl` control classes\n * defined in `formItems` argument.\n * @param formName Form name.\n * @param formItems the list of form items which used for form control generation.\n * @returns `FormGroup` class with the list of `DynamicFormControl` control classes.\n */\n async generateForm(formName: string, formItems: DynamicFormItem[]): Promise<DynamicFormGroup> {\n const form = this._fb.group({}) as DynamicFormGroup;\n\n const defaultFormGroup = new DynamicFormControlGroup(\n {\n name: this._config.ungroupedControlsName\n },\n {}\n );\n\n formItems = this._transformFormItems(formItems);\n\n formItems.forEach((formItem) => {\n if (!this.isFormFieldItem(formItem)) {\n if (!formItem.items?.length) {\n return;\n }\n\n const group = new DynamicFormControlGroup(formItem, {});\n\n formItem.items.forEach((groupFormItem) => {\n const groupFormControl = this._generateDynamicFormItem(\n groupFormItem as PreparedDynamicFormFieldItem,\n form\n );\n\n if (!groupFormControl) {\n return;\n }\n\n group.addControl(groupFormItem.name, groupFormControl);\n\n groupFormControl.updateValueAndValidity({ emitEvent: false });\n });\n\n form.addControl(formItem.name, group);\n return;\n }\n\n const formControl = this._generateDynamicFormItem(formItem as PreparedDynamicFormFieldItem, form);\n\n if (!formControl) {\n return;\n }\n\n defaultFormGroup.addControl(formItem.name, formControl);\n\n defaultFormGroup.formItem.items = [...[formItem]];\n\n formControl.updateValueAndValidity({ emitEvent: false });\n });\n\n const formControlNames = Object.keys(defaultFormGroup.controls);\n\n form.addControl(this._config.ungroupedControlsName, defaultFormGroup);\n\n // After we created initial form, we need to get dynamic labels, choices and value\n for (const key of formControlNames) {\n const formItem = formItems.find((fi) => fi.name === key);\n\n if (!this.isFormFieldItem(formItem)) {\n continue;\n }\n\n const [[message, placeholder, defaultValue], choices] = await Promise.all([\n this._getFormItemProperties<[string, string, any]>(formItem, defaultFormGroup, [\n 'message',\n 'placeholder',\n 'default'\n ]),\n this._getFormItemChoices(formItem, defaultFormGroup)\n ]);\n\n formItem.message = message;\n formItem.placeholder = placeholder;\n formItem.default = defaultValue;\n formItem.choices = choices;\n\n // Update form value since it might be changed\n defaultFormGroup.controls[formItem.name].setValue(formItem.default);\n\n defaultFormGroup.controls[key].formItem = formItem as PreparedDynamicFormFieldItem;\n }\n\n this.forms.set(formName, form);\n\n return form;\n }\n\n /**\n * @description Returns form value with applied filters and transformers.\n * @param form Form generator form\n * @param renderValue Whether or not form value will be used for rendering purposes.\n * @returns form value object.\n */\n async getFormValue(\n form: DynamicFormGroup | DynamicFormControlGroup,\n renderValue = false\n ): Promise<DynamicFormValue> {\n await this._triggerFieldsOnchange(form);\n\n const formValue = cloneDeep(form.value);\n\n for (const [i, control] of Object.entries(form.controls)) {\n const formItem = control.formItem;\n\n if (!this.isFormFieldItem(formItem)) {\n formValue[i] = await this.getFormValue(control as DynamicFormControlGroup, renderValue);\n continue;\n }\n\n if (formItem.shouldShow === false) {\n delete formValue[i];\n continue;\n }\n\n if (formItem.transformer) {\n const obj = formItem.transformer(formValue[i], formValue, formItem);\n formValue[i] = await this._getFunctionValue(obj);\n }\n\n if (renderValue && formItem.valueRenderer) {\n const obj = formItem.valueRenderer(formValue[i], formValue, formItem);\n formValue[i] = await this._getFunctionValue(obj);\n }\n\n if (renderValue && formItem['controlType'] === 'password') {\n formValue[i] = this._formatPasswordValue(formValue[i]);\n }\n }\n\n return this._getFormValueWithoutUngrouped(formValue);\n }\n\n /**\n * @description Adds custom component to the list of available components for the form generator items.\n * @param component Angular component.\n * @param types types of the form item.\n */\n addComponent(component: Type<BaseDynamicFormGeneratorControl>, types: string[]): boolean {\n return this._componentsAccessor.addComponent(component, types);\n }\n\n /**\n * @description Returns best-matched component based on provided `type` argument\n * @param type form item type\n * @returns @see FormComponentDefinition Component definition for the form item\n */\n getComponentDefinitionByType(type: string): FormComponentDefinition | undefined {\n return this._componentsAccessor.getComponentDefinitionByType(type);\n }\n\n /**\n * @returns Object of available errors, where key is an error type,\n * and it's value is a display text.\n */\n getValidationErrorHints(key: string): string {\n return this.validationErrorHints[key];\n }\n\n /**\n * @description Adds custom error hint defined by user.\n * @param type error type from validator.\n * @param value display text.\n */\n addValidationErrorHint(type: string, value: string): void {\n this.validationErrorHints[type] = value;\n }\n\n /**\n * @description Checks if some items of the form should be hidden,\n * or visible based on `when` method result.\n * @param form\n * @returns `Set` where key is item name, and boolean value if field needs to be shown.\n */\n async checkVisibleFormItems(form: DynamicFormGroup): Promise<{ [key: string]: boolean }> {\n const formValue = this._getFormValueWithoutUngrouped(cloneDeep(form.value));\n return await this._checkFormControlsVisibility(form, formValue);\n }\n\n /**\n * Is current form item is a field item.\n * @param item form item.\n * @returns is current form item is a field.\n */\n isFormFieldItem(item: any): item is DynamicFormFieldItem {\n return !!(item as DynamicFormFieldItem).type;\n }\n\n /**\n * Method for searching a form control inside form group. Can also search inside ungrouped form group.\n * @param form Form group.\n * @param controlNames Name of the form control.\n * @returns Found form control.\n */\n getFormControl(form: DynamicFormGroup, ...controlNames: string[]): DynamicFormGroupControl {\n controlNames = controlNames.reduce((names: string[], name) => {\n names = [...names, ...name.split(this._config.controlNameSeparator)];\n\n return names;\n }, []);\n\n let control = form?.get(controlNames);\n\n // If no control found, try to find it in ungrouped group\n if (!control) {\n control = form?.get([this._config.ungroupedControlsName, ...controlNames]);\n }\n\n return control as DynamicFormGroupControl;\n }\n\n /** Resets the form to it's initial state. */\n resetForm(form: DynamicFormGroup): void {\n for (const control of Object.values(form.controls)) {\n if (control instanceof DynamicFormControlGroup) {\n this.resetForm(control);\n return;\n }\n // Get default value\n control.setValue(control.formItem.default);\n }\n }\n\n /** @hidden */\n _getFormValueWithoutUngrouped(value: any): any {\n if (value[this._config.ungroupedControlsName]) {\n const ungroupedGroupValue: Record<string, any> = value[this._config.ungroupedControlsName];\n for (const [fieldName, fieldValue] of Object.entries(ungroupedGroupValue)) {\n value[fieldName] = fieldValue;\n }\n }\n delete value[this._config.ungroupedControlsName];\n\n return value;\n }\n\n /** @hidden */\n private _assignFormItemValidators(\n formItem: PreparedDynamicFormFieldItem,\n form: DynamicFormGroup\n ): PreparedDynamicFormFieldItem {\n let validator: AsyncValidatorFn | null = null;\n\n if (isFunction(formItem.validate)) {\n validator = async (control) => {\n const obj = formItem.validate!(control.value, this._getFormValueWithoutUngrouped(form));\n\n const result = await this._getFunctionValue(obj);\n\n const returnObj = {};\n\n returnObj[`${(<DynamicFormControl>control).formItem.name}Validator`] =\n typeof result === 'boolean' ? true : result;\n\n return result === null ? result : returnObj;\n };\n\n formItem.asyncValidators = formItem.asyncValidators || [];\n formItem.asyncValidators =\n typeof formItem.asyncValidators === 'function' ? [formItem.asyncValidators] : formItem.asyncValidators;\n\n formItem.asyncValidators.push(validator);\n }\n\n formItem.validators = formItem.validators || [Validators.nullValidator];\n\n formItem.required = formItem.required || formItem.validators.includes(Validators.required);\n\n return formItem;\n }\n\n /** @hidden */\n private _generateDynamicFormItem(\n formItem: PreparedDynamicFormFieldItem,\n form: DynamicFormGroup\n ): DynamicFormControl | undefined {\n const formItemComponentType = this.getComponentDefinitionByType(formItem.type);\n\n if (!formItemComponentType) {\n console.warn(`Form item '${formItem.name}' with type '${formItem.type}' has no defined component.\n Please use 'addComponent' method in ${FormGeneratorService.name} to define appropriate relations.`);\n\n return;\n }\n\n formItem = this._assignFormItemValidators(formItem, form);\n\n const formControl = new DynamicFormControl(formItem.default, {\n validators: formItem.validators,\n asyncValidators: formItem.asyncValidators,\n dynamicFormItem: formItem,\n updateOn: 'change'\n });\n\n if (isFunction(formItem.onchange)) {\n formControl.valueChanges.pipe(debounceTime(50), takeUntil(this._onDestroy$)).subscribe(async (value) => {\n const obj = formItem.onchange!(value, this.forms, formControl);\n\n await this._getFunctionValue(obj);\n });\n }\n\n formControl.updateValueAndValidity({ emitEvent: false });\n\n return formControl;\n }\n\n /** @hidden */\n private async _checkFormControlsVisibility(\n form: DynamicFormGroup | DynamicFormControlGroup,\n formValue: any\n ): Promise<{ [key: string]: boolean }> {\n let shouldShowFields: { [key: string]: boolean } = {};\n form = form instanceof DynamicFormControlGroup ? form : form;\n\n for (const [key, control] of Object.entries(form.controls)) {\n const formItem = control.formItem;\n\n if (!this.isFormFieldItem(formItem)) {\n const groupVisibleItems = await this._checkFormControlsVisibility(\n control as DynamicFormControlGroup,\n formValue\n );\n\n shouldShowFields = Object.assign(shouldShowFields, groupVisibleItems);\n continue;\n }\n\n if (!formItem.when) {\n shouldShowFields[key] = true;\n continue;\n }\n\n const obj = formItem.when(formValue, this.forms, control);\n shouldShowFields[key] = await this._getFunctionValue(obj);\n }\n\n return shouldShowFields;\n }\n\n /**\n * @hidden\n * @param formItem\n * @param form\n * @param key\n * @returns\n */\n private async _getFormItemPropertyValue<T = string>(\n formItem: DynamicFormFieldItem,\n form: DynamicFormGroup,\n key: keyof DynamicFormFieldItem\n ): Promise<T> {\n let value = formItem[key];\n\n if (typeof value === 'function') {\n const obj = value(this._getFormValueWithoutUngrouped(form));\n\n value = await this._getFunctionValue(obj);\n }\n\n return (await this._getFunctionValue(value)) as T;\n }\n\n /** @hidden */\n private async _getFormItemProperties<TTypes extends any[] = any[]>(\n formItem: DynamicFormFieldItem,\n form: DynamicFormGroup,\n keys: string[]\n ): Promise<TTypes> {\n const promises: Promise<any>[] = [];\n keys.forEach((key) => {\n promises.push(this._getFormItemPropertyValue(formItem, form, key));\n });\n return (await Promise.all(promises)) as TTypes;\n }\n\n /**\n * @hidden\n * @param formItem\n * @param form\n * @returns\n */\n private async _getFormItemChoices(formItem: DynamicFormFieldItem, form: DynamicFormGroup): Promise<SelectItem[]> {\n const defaultChoices = await this._getFormItemPropertyValue<DynamicFormItemChoiceTypes[]>(\n formItem,\n form,\n 'choices'\n );\n\n if (!defaultChoices) {\n return [];\n }\n\n return defaultChoices.map((c: string | number | SelectItem) =>\n typeof c === 'object' ? c : ({ label: c, value: c } as SelectItem)\n ) as SelectItem[];\n }\n\n /**\n * @hidden\n * @description Returns value from Promise-like, Observable-like, simple function or just some object.\n * @param obj\n * @returns\n */\n private async _getFunctionValue(obj: any): Promise<any> {\n const strategy = selectStrategy(obj);\n\n let result: any;\n\n await strategy.createSubscription(obj, (value: any) => {\n result = value;\n });\n\n if (isFunction(result)) {\n await this._getFunctionValue(result);\n }\n\n return result;\n }\n\n /** @hidden */\n private _formatPasswordValue(password: string): string {\n return '*'.repeat(password?.length);\n }\n\n /** @hidden */\n private _getMergedFormFieldItemConfig(formItem: DynamicFormFieldItem): DynamicFormFieldItem {\n return merge(cloneDeep(this._defaultItemConfig), formItem);\n }\n\n /** @hidden */\n private _transformFormItems(formItems: DynamicFormItem[]): DynamicFormItem[] {\n formItems.forEach((item, index) => {\n if (!this.isFormFieldItem(item)) {\n return;\n }\n\n formItems[index] = this._getMergedFormFieldItemConfig(item);\n });\n\n return formItems;\n }\n\n /** @hidden */\n private async _triggerFieldsOnchange(form: DynamicFormGroup | DynamicFormControlGroup): Promise<void> {\n for (const control of Object.values(form.controls)) {\n const formItem = control.formItem;\n\n if (!this.isFormFieldItem(formItem)) {\n await this._triggerFieldsOnchange(control as DynamicFormControlGroup);\n continue;\n }\n\n if (formItem.onchange) {\n const obj = formItem.onchange(control.value as any, this.forms, control as DynamicFormControl);\n await this._getFunctionValue(obj);\n }\n }\n }\n}\n","import { Directive, Inject, Input, Optional, TemplateRef } from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { FormError, FormErrorHeading, FormFieldErrorContext } from '@fundamental-ngx/platform/shared';\nimport { FDP_FORM_ERROR_DIRECTIVE } from './tokens';\n\n@Directive({\n selector: '[fdpFormFieldErrorHeading]'\n})\nexport class FormFieldErrorHeadingDirective<T = any> implements FormErrorHeading {\n /** Used to connect data with model for typings support. */\n @Input()\n fdpFormFieldErrorHeadingAs: T;\n\n /** Error type. */\n @Input()\n fdpFormFieldErrorHeadingType: FormStates | undefined;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: FormFieldErrorHeadingDirective,\n ctx: FormFieldErrorContext<any>\n ): ctx is FormFieldErrorContext<any> {\n return true;\n }\n\n /** @hidden */\n constructor(\n public templateRef: TemplateRef<FormFieldErrorContext<T>>,\n @Optional() @Inject(FDP_FORM_ERROR_DIRECTIVE) private _formFieldErrorDirective: FormError\n ) {\n this._formFieldErrorDirective?.registerHeading(this);\n }\n}\n","import { Directive, Inject, Input, Optional, TemplateRef } from '@angular/core';\nimport { FormError, FormErrorDescription, FormFieldErrorContext } from '@fundamental-ngx/platform/shared';\nimport { FDP_FORM_ERROR_DIRECTIVE } from './tokens';\n\n@Directive({\n selector: '[fdpFormFieldErrorDescription]'\n})\nexport class FormFieldErrorDescriptionDirective<T = any> implements FormErrorDescription {\n /** Used to connect data with model for typings support. */\n @Input()\n fdpFormFieldErrorDescriptionAs: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: FormFieldErrorDescriptionDirective,\n ctx: FormFieldErrorContext<any>\n ): ctx is FormFieldErrorContext<any> {\n return true;\n }\n\n /** @hidden */\n constructor(\n public templateRef: TemplateRef<FormFieldErrorContext<T>>,\n @Optional() @Inject(FDP_FORM_ERROR_DIRECTIVE) private _formFieldErrorDirective: FormError\n ) {\n this._formFieldErrorDirective?.registerDescription(this);\n }\n}\n","import { Directive, Inject, Injector, Input, OnInit, Optional, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { PreparedDynamicFormFieldItem } from './interfaces/dynamic-form-item';\nimport { BaseDynamicFormGeneratorControl } from './base-dynamic-form-generator-control';\nimport { FormGeneratorService } from './form-generator.service';\nimport {\n CONTENT_DENSITY_DIRECTIVE,\n ContentDensityGlobalKeyword,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { Observable, of } from 'rxjs';\n\n/**\n * Dynamic form control directive represents a renderer of the dynamic components\n * based on the information provided in `formItem` input\n */\n@Directive({\n selector: '[fdpDynamicFormControl]'\n})\nexport class DynamicFormControlDirective implements OnInit {\n /**\n * @description @see DynamicFormItem\n */\n @Input() formItem: PreparedDynamicFormFieldItem;\n\n /**\n * @description Represents form control id.\n */\n @Input()\n id: string;\n\n /**\n * @description Represents form control name.\n */\n @Input() name: string;\n\n /**\n * @description Reference to the @see FormGroup class.\n */\n @Input() form: FormGroup;\n\n /** Form group name path */\n @Input() formGroupNamePath: string;\n\n /**\n * @description Reference to the @see FormFieldComponent\n */\n @Input() formField: PlatformFormField;\n\n /**\n * Control field instance.\n */\n formFieldControl: PlatformFormFieldControl;\n\n /** @hidden */\n constructor(\n private readonly _formGeneratorService: FormGeneratorService,\n private readonly _vcRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() @Inject(CONTENT_DENSITY_DIRECTIVE) private contentDensityDirective: Observable<ContentDensityMode>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n const foundComponent = this._formGeneratorService.getComponentDefinitionByType(this.formItem.type);\n\n if (!foundComponent) {\n return;\n }\n\n this._vcRef.clear();\n\n const componentRef = this._vcRef.createComponent<BaseDynamicFormGeneratorControl>(foundComponent.component, {\n injector: Injector.create({\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useFactory: () => {\n if (this.formItem?.guiOptions?.contentDensity) {\n return of(this.formItem.guiOptions.contentDensity);\n }\n if (this.contentDensityDirective) {\n return this.contentDensityDirective;\n }\n return of(ContentDensityGlobalKeyword);\n }\n }\n ],\n parent: this._injector\n })\n });\n\n componentRef.instance.formItem = this.formItem;\n componentRef.instance.id = this.id; // This is also done from fdp-form-field\n componentRef.instance.name = this.name;\n componentRef.instance.form = this.form;\n componentRef.instance.formField = this.formField;\n componentRef.instance.formGroupName = this.formGroupNamePath;\n\n this.formFieldControl = componentRef.instance as unknown as PlatformFormFieldControl;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n OnInit,\n Provider,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_FORM_FIELD } from '@fundamental-ngx/cdk/forms';\nimport { FieldHintOptions, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { FORM_GROUP_CHILD_FIELD_TOKEN } from '../../form-group/constants';\nimport { FormFieldComponent } from '../../form-group/form-field/form-field.component';\nimport { DynamicFormControl } from '../dynamic-form-control';\nimport { FormGeneratorService } from '../form-generator.service';\nimport { DynamicFormGroup } from '../interfaces/dynamic-form-group';\nimport { DynamicFormItemValidationObject } from '../interfaces/dynamic-form-item';\n\nconst formFieldProvider: Provider = {\n provide: FD_FORM_FIELD,\n useExisting: forwardRef(() => FormGeneratorFieldComponent)\n};\n\nconst formGroupChildProvider: Provider = {\n provide: FORM_GROUP_CHILD_FIELD_TOKEN,\n useExisting: forwardRef(() => FormGeneratorFieldComponent)\n};\n\n@Component({\n selector: 'fdp-form-generator-field',\n templateUrl: './form-generator-field.component.html',\n providers: [formFieldProvider, formGroupChildProvider],\n encapsulation: ViewEncapsulation.None\n})\nexport class FormGeneratorFieldComponent implements OnInit {\n /**\n * Form control.\n */\n @Input() field: DynamicFormControl;\n\n /**\n * Form generator's form.\n */\n @Input() form: DynamicFormGroup;\n\n /**\n * Translations template reference.\n */\n @Input() i18n: TemplateRef<any>;\n\n /**\n * Form control name\n */\n @Input() formFieldName: string;\n\n /**\n * Path of the form group.\n */\n @Input() formGroupNamePath: string;\n\n /**\n * Rank is used for ordering.\n * The lower number the higher priority.\n */\n @Input() rank: number;\n\n /**\n * Whether this field should be visible.\n */\n @Input() shouldShow: boolean;\n\n /**\n * Describes hint options for field label\n */\n @Input() hintOptions?: FieldHintOptions;\n\n /**\n * Form field component.\n */\n @ViewChild(forwardRef(() => FormFieldComponent)) fieldRenderer: PlatformFormField;\n\n /** @hidden */\n get _placeholder(): string {\n if (!this.field) {\n return '';\n }\n if (this.field.formItem?.placeholder) {\n return this.field.formItem?.placeholder as string;\n }\n if (this.field.formItem?.useMessageAsPlaceholder) {\n return this.field.formItem?.message as string;\n }\n return '';\n }\n\n /** @hidden */\n _errorModels: { type: string; value: any }[] = [];\n\n /** @hidden */\n constructor(private _fgService: FormGeneratorService, private _cdr: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._errorModels = this._getErrors();\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _getErrors(): { type: string; value: any }[] {\n const registeredErrors = this._fgService.validationErrorHints;\n\n const returnErrors: { type: string; value: any }[] = [\n {\n type: `${this.field.formItem.name}Validator`,\n value: null\n }\n ];\n\n Object.entries(registeredErrors).forEach((type) => {\n const [errorType, errorValue] = type;\n\n returnErrors.push({\n type: errorType,\n value: errorValue\n });\n });\n\n return returnErrors;\n }\n\n /** @hidden */\n _isAdvancedError(error: any): error is DynamicFormItemValidationObject {\n return error.heading && error.description && error.type;\n }\n}\n","<fdp-form-field\n [hint]=\"hintOptions\"\n [placeholder]=\"_placeholder\"\n [id]=\"field.formItem.id || formFieldName\"\n [column]=\"field.formItem.guiOptions?.column || 1\"\n [columnLayout]=\"field.formItem.guiOptions?.columnLayout\"\n [colon]=\"field.formItem.guiOptions?.appendColon === true\"\n [label]=\"field.formItem.message\"\n [validators]=\"field.formItem.validators || []\"\n [required]=\"field.formItem.required\"\n [rank]=\"rank\"\n [labelColumnLayout]=\"field.formItem.guiOptions?.labelColumnLayout\"\n [fieldColumnLayout]=\"field.formItem.guiOptions?.fieldColumnLayout\"\n [gapColumnLayout]=\"field.formItem.guiOptions?.gapColumnLayout\"\n [noLabelLayout]=\"field.formItem.guiOptions?.noLabelLayout || false\"\n [formGroup]=\"form\"\n #formField\n>\n <ng-container *ngFor=\"let error of _errorModels\">\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n <ng-container *ngIf=\"_isAdvancedError(directiveError)\">\n <ng-container *ngIf=\"directiveError.heading\">\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"directiveError.description\">\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!_isAdvancedError(directiveError)\">\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n </ng-container>\n </span>\n </ng-container>\n <ng-container\n [formField]=\"formField\"\n [form]=\"form\"\n [formGroupNamePath]=\"formGroupNamePath\"\n fdpDynamicFormControl\n [id]=\"field.formItem.id || formFieldName\"\n [name]=\"formFieldName\"\n [formItem]=\"field.formItem\"\n >\n </ng-container>\n</fdp-form-field>\n","import { TemplateRef } from '@angular/core';\n\nimport { PlatformFormField, HintOptions } from '@fundamental-ngx/platform/shared';\nimport { FormFieldComponent } from './form-group/form-field/form-field.component';\nimport { FormFieldGroupComponent } from './form-group/form-field-group/form-field-group.component';\nimport { FormGeneratorFieldComponent } from './form-generator/form-generator-field/form-generator-field.component';\n\nexport interface FieldColumn {\n [key: number]: Array<Field>;\n}\n\n/** @hidden */\nexport function isFieldChild(child: unknown): child is PlatformFormField {\n return child instanceof FormFieldComponent;\n}\n\n/** @hidden */\nexport function isFieldGroupWrapperChild(child: unknown): child is FormGeneratorFieldComponent {\n return child instanceof FormGeneratorFieldComponent;\n}\n\n/** @hidden */\nexport function isFieldGroupChild(child: unknown): child is FormFieldGroupComponent {\n return child instanceof FormFieldGroupComponent;\n}\n\n/** @hidden */\nexport function getFormField(field: PlatformFormField | FormGeneratorFieldComponent): PlatformFormField {\n return isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;\n}\n\n/** @hidden */\nexport function getField(field: PlatformFormField): Field {\n field = isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;\n\n return new Field(field.id, field.rank, field.renderer, field.column);\n}\n\nexport class Field {\n /** @hidden */\n constructor(\n public name?: string,\n public rank?: number,\n public renderer?: TemplateRef<any>,\n public column?: number\n ) {}\n}\n\nexport class FieldGroup {\n /** @hidden */\n constructor(public label: string, public fields: FieldColumn, public hintOptions?: HintOptions) {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AutoCompleteDirective } from './auto-complete.directive';\n\n@NgModule({\n declarations: [AutoCompleteDirective],\n imports: [CommonModule],\n exports: [AutoCompleteDirective]\n})\nexport class PlatformAutoCompleteModule {}\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CheckboxModule } from '@fundamental-ngx/core/checkbox';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from './checkbox.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { FormItemModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [\n CommonModule,\n FormsModule,\n CheckboxModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n FormItemModule,\n ContentDensityModule\n ],\n exports: [CheckboxComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformCheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FormGroupModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { CheckboxGroupComponent } from './checkbox-group.component';\nimport { PlatformCheckboxModule } from '../checkbox/checkbox.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n imports: [\n CommonModule,\n PlatformCheckboxModule,\n FormsModule,\n FormGroupModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [CheckboxGroupComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n declarations: [CheckboxGroupComponent]\n})\nexport class PlatformCheckboxGroupModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { DataProvider, PlatformConfig, MatchingStrategy } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class ComboboxConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<ComboboxConfig>): (platformConfig: PlatformConfig) => ComboboxConfig {\n const useFactory = (platformConfig: PlatformConfig): ComboboxConfig =>\n Object.assign(new ComboboxConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const COMBOBOX_COMPONENT = new InjectionToken<string[]>('ComboboxInterface');\n\n/**\n * Combobox Interface to have typing and avoid circular dependency between\n * ComboboxComponent <==> ComboboxMobileComponent\n */\nexport interface ComboboxInterface extends MobileMode {\n inputText: string;\n openChange: Subject<boolean>;\n\n dialogApprove(): void;\n dialogDismiss(backup: string): void;\n detectChanges(): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { COMBOBOX_COMPONENT, ComboboxInterface } from '../../combobox.interface';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-combobox-mobile',\n templateUrl: './combobox-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ComboboxMobileComponent extends MobileModeBase<ComboboxInterface> implements OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n private _selectedBackup: string;\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n @Inject(COMBOBOX_COMPONENT) comboboxComponent: ComboboxInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, comboboxComponent, MobileModeControl.COMBOBOX, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiInputOpenChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.onDestroy();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n return;\n }\n\n this._selectedBackup = this._component.inputText;\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiInputOpenChange(): void {\n this._component.openChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement\n });\n\n // Have to fire \"detectChanges\" to fix \"ExpressionChangedAfterItHasBeenCheckedError\"\n this.dialogRef.afterLoaded.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this._component.detectChanges();\n });\n\n const refSub = this.dialogRef.afterClosed.subscribe({\n error: (type) => {\n if (type === 'escape') {\n this._component.dialogDismiss(this._selectedBackup);\n refSub.unsubscribe();\n }\n }\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { ComboboxMobileComponent } from './combobox/combobox-mobile.component';\n\n@NgModule({\n declarations: [ComboboxMobileComponent],\n imports: [BarModule, DialogModule, ButtonModule, CommonModule],\n exports: [ComboboxMobileComponent]\n})\nexport class PlatformComboboxMobileModule {}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n NUMPAD_EIGHT,\n NUMPAD_FIVE,\n NUMPAD_FOUR,\n NUMPAD_NINE,\n NUMPAD_ONE,\n NUMPAD_SEVEN,\n NUMPAD_SIX,\n NUMPAD_THREE,\n NUMPAD_TWO,\n NUMPAD_ZERO,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { Observable, Subject, Subscription, fromEvent, isObservable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ContentDensity, FocusEscapeDirection, KeyUtil, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { ListComponent } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport {\n ArrayComboBoxDataSource,\n CollectionBaseInput,\n ComboBoxDataSource,\n MatchingBy,\n MatchingStrategy,\n ObservableComboBoxDataSource,\n OptionItem,\n PlatformFormField,\n PlatformFormFieldControl,\n coerceArraySafe,\n isDataSource,\n isFunction,\n isJsObject,\n isOptionItem,\n isString\n} from '@fundamental-ngx/platform/shared';\n\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, SingleDropdownValueControl } from '@fundamental-ngx/cdk/forms';\nimport { AutoCompleteEvent } from '../../auto-complete/auto-complete.directive';\nimport { ComboboxConfig } from '../combobox.config';\n\nexport type TextAlignment = 'left' | 'right';\nexport type FdpComboBoxDataSource<T> = ComboBoxDataSource<T> | Observable<T[]> | T[];\n\n@Directive()\nexport abstract class BaseCombobox\n extends CollectionBaseInput\n implements AfterViewInit, SingleDropdownValueControl, OnDestroy\n{\n /** Provides maximum height for the optionPanel */\n @Input()\n maxHeight = '250px';\n\n /** Datasource for suggestion list */\n @Input()\n set dataSource(value: FdpComboBoxDataSource<any>) {\n if (value) {\n this._initializeDataSource(value);\n }\n }\n get dataSource(): FdpComboBoxDataSource<any> {\n return this._dataSource;\n }\n\n /** Whether the autocomplete should be enabled; Enabled by default */\n @Input()\n autoComplete = true;\n\n /**\n * Todo: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the combobox should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Multi Input Mobile Configuration, it's applied only, when mobile is enabled */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Tells the combo if we need to group items */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation) */\n @Input()\n groupKey?: string;\n\n /** The field to show data in secondary column */\n @Input()\n secondaryKey?: string;\n\n /** Show the second column (Applicable for two columns layout) */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (Applicable for two columns layout) */\n @Input()\n secondaryTextAlignment: TextAlignment;\n\n /** Turns on/off Adjustable Width feature */\n @Input()\n autoResize = false;\n\n /** Value of the combobox */\n @Input()\n set value(value: any) {\n const selectedItems = coerceArraySafe(value);\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * `equal` will apply a width to the body equivalent to the width of the control.\n * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = false;\n\n /**\n * The trigger events that will open/close the options popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n @Input()\n triggers: string[] = [];\n\n /** Whether the combobox should close, when a click is performed outside its boundaries. True by default */\n @Input()\n closeOnOutsideClick = true;\n\n /** Whether list item options should be rendered as byline. */\n @Input()\n byline = false;\n\n /**\n * Action to perform when user shifts focus from the dropdown.\n * - `close` will close the dropdown preserving previously selected value.\n * - `closeAndSelect` will close the dropdown and select last focused dropdown item.\n */\n @Input()\n tabOutStrategy: 'close' | 'closeAndSelect' = 'closeAndSelect';\n\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataRequested = new EventEmitter<void>();\n\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataReceived = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /** @hidden Custom Option item Template */\n optionItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden Custom Group Header item Template */\n groupItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden Custom Secondary item Template */\n secondaryItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden Custom Selected option item Template */\n selectedItemTemplate: TemplateRef<HTMLElement>;\n\n /** @hidden */\n searchInputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n _contentDensity: ContentDensity = this.comboboxConfig.contentDensity;\n\n /** Input text of the input. */\n set inputText(value: string) {\n this._inputTextValue = value;\n\n this.onTouched();\n }\n get inputText(): string {\n return this._inputTextValue || '';\n }\n\n /** Whether the combobox is opened. */\n isOpen = false;\n\n /** Whether a combobox can be closed */\n get canClose(): boolean {\n return !(this.mobile && this.mobileConfig.approveButtonText);\n }\n\n /** @hidden List of matched suggestions */\n _suggestions: OptionItem[];\n\n /** @hidden Max width of list container */\n maxWidth?: number;\n\n /** @hidden Min width of list container */\n minWidth?: number;\n\n /** @hidden Need for opening mobile version */\n openChange = new Subject<boolean>();\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** Is suggestions list empty */\n get isSuggestionsListEmpty(): boolean {\n return this._suggestions.length === 0;\n }\n\n /** @hidden */\n protected _dataSource: FdpComboBoxDataSource<any>;\n\n /** @hidden */\n _flatSuggestions: OptionItem[];\n\n /** @hidden */\n private _inputTextValue: string;\n\n /** @hidden */\n private _matchingStrategy: MatchingStrategy = this.comboboxConfig.matchingStrategy;\n\n /** @hidden */\n private _dsSubscription?: Subscription;\n\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n\n /** Keys, that won't trigger the popover's open state, when dispatched on search input */\n private readonly _nonOpeningKeys: number[] = [\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT\n ];\n\n /** Keys, that are numbers from number keypad */\n private readonly _numberPadNumberKeys: number[] = [\n NUMPAD_ZERO,\n NUMPAD_ONE,\n NUMPAD_TWO,\n NUMPAD_THREE,\n NUMPAD_FOUR,\n NUMPAD_FIVE,\n NUMPAD_SIX,\n NUMPAD_SEVEN,\n NUMPAD_SEVEN,\n NUMPAD_EIGHT,\n NUMPAD_NINE\n ];\n\n /** @hidden */\n private _displayFn = (value: any): string => this.displayValue(value);\n\n /** @hidden */\n private _secondaryFn = (value: any): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n }\n\n if (isJsObject(value) && this.secondaryKey) {\n const currentItem = this.objectGet(value, this.secondaryKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n }\n\n return value;\n };\n\n /** @hidden */\n protected constructor(\n readonly cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n protected comboboxConfig: ComboboxConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as ComboBoxDataSource<any>).close();\n }\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n\n /** @hidden Method to emit change event */\n abstract emitChangeEvent<K>(value: K): void;\n\n /** @hidden Define is this item selected */\n abstract isSelectedOptionItem(selectedItem: OptionItem): boolean;\n\n /** @hidden Emit select OptionItem */\n abstract selectOptionItem(item: OptionItem): void;\n\n /** @hidden Define value as selected */\n abstract setAsSelected(item: OptionItem[]): void;\n\n /** Is empty search field */\n get isEmptyValue(): boolean {\n return this.inputText.trim().length === 0;\n }\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n const selectedItems = coerceArraySafe(value);\n this.setAsSelected(this._convertToOptionItems(selectedItems));\n super.writeValue(value);\n }\n\n /** @hidden */\n searchTermChanged(text: string): void {\n if (this.inputText === text) {\n return;\n }\n this.inputText = text;\n\n const map = new Map();\n map.set('query', text);\n map.set('limit', 12);\n\n this.ds.match(map);\n }\n\n /** @hidden */\n isOpenChangeHandle(isOpen: boolean): void {\n if (this.isOpen === isOpen) {\n return;\n }\n\n this.isOpen = isOpen;\n this.onTouched();\n this.openChange.next(isOpen);\n\n this.cd.detectChanges();\n }\n\n /** @hidden */\n handleOptionItem(value: OptionItem): void {\n if (value) {\n this.selectOptionItem(value);\n }\n\n this.searchInputElement.nativeElement.focus();\n }\n\n /** @hidden */\n handlePressEnter(event: KeyboardEvent, value: OptionItem): void {\n if (!KeyUtil.isKeyCode(event, ENTER)) {\n return;\n }\n\n this.handleOptionItem(value);\n }\n\n /**\n * Handle Click on Button\n * @hidden\n */\n onPrimaryButtonClick(): void {\n // if it's mobile mode ignore this click\n if (this.mobile) {\n return;\n }\n\n this.isOpenChangeHandle(!this.isOpen);\n\n if (this.isOpen) {\n this.searchInputElement?.nativeElement.focus();\n }\n }\n\n /**\n * Handle click on input group in mobile mode\n * @hidden\n */\n openInMobileMode(): void {\n // if it's already opened just ignore this click\n // if it's not mobile mode just ignore this click\n if (this.isOpen || !this.mobile) {\n return;\n }\n\n // otherwise show options\n this.isOpenChangeHandle(true);\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n onInputKeydownHandler(event: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, TAB)) {\n this._close();\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this.isOpenChangeHandle(true);\n }\n\n if (this.isOpen && this.listComponent) {\n this.listComponent.setItemActive(0);\n } else if (!this.isOpen) {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this.isOpenChangeHandle(false);\n } else if (!event.ctrlKey && !KeyUtil.isKeyCode(event, this._nonOpeningKeys)) {\n if (!KeyUtil.isKeyCode(event, this._numberPadNumberKeys)) {\n this.isOpenChangeHandle(true);\n }\n const acceptedKeys =\n !KeyUtil.isKeyCode(event, BACKSPACE) &&\n !KeyUtil.isKeyType(event, 'alphabetical') &&\n !KeyUtil.isKeyType(event, 'numeric') &&\n !KeyUtil.isKeyCode(event, this._numberPadNumberKeys);\n\n if (this.isEmptyValue && acceptedKeys) {\n this.listComponent?.setItemActive(0);\n }\n }\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this.searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _onCompleteTerm(event: AutoCompleteEvent): void {\n if (event.forceClose) {\n this.toggleSelectionByInputText(event.term);\n this.isOpenChangeHandle(false);\n }\n }\n\n /** @hidden */\n toggleSelectionByInputText(text = this.inputText): void {\n let optionItem = this._getSelectItemByInputValue(text);\n if (!optionItem) {\n optionItem = {\n label: text,\n value: text\n };\n }\n\n this.selectOptionItem(optionItem);\n }\n\n /** @hidden */\n _close(): void {\n if (this.tabOutStrategy === 'closeAndSelect') {\n const focusedItem = this.listComponent.getActiveItem();\n if (focusedItem) {\n this.handleOptionItem(focusedItem.value);\n return;\n }\n }\n this.inputText = this.value ? this.inputText : '';\n this.searchInputElement.nativeElement.focus();\n this.isOpenChangeHandle(false);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n protected _getSelectItemByInputValue(displayValue: string): OptionItem | undefined {\n return this._flatSuggestions.find((value) => value.label === displayValue);\n }\n\n /** @hidden */\n protected get ds(): ComboBoxDataSource<any> {\n return this.dataSource as ComboBoxDataSource<any>;\n }\n\n /** @hidden Map grouped values to array. */\n protected _flatGroups(items: OptionItem[]): OptionItem[] {\n return items.reduce((result: OptionItem[], item: OptionItem) => result.concat(item.children ?? []), []);\n }\n\n /**\n * @hidden\n * Method that picks other value moved from current one by offset, called only when combobox is closed\n */\n private _chooseOtherItem(offset: number): void {\n const activeValue = this._getSelectItemByValue(this.inputText);\n const index: number = this._suggestions.findIndex((value) => value === activeValue);\n\n if (this._suggestions[index + offset]) {\n this.handleOptionItem(this._suggestions[index + offset]);\n }\n }\n\n /** @hidden */\n private _getSelectItemByValue(displayValue: string): OptionItem | undefined {\n return this._suggestions.find((value) => value.label === displayValue);\n }\n\n /** @hidden */\n private async _initializeDataSource(ds: FdpComboBoxDataSource<any>): Promise<void> {\n this._suggestions = [];\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as ComboBoxDataSource<any>).close();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = undefined;\n }\n }\n\n // initializing data source in the seperate microtask to let all config options to be set before it\n // for example, \"isGroup\" input is needed for initialization logic and it might not be set at this point\n await Promise.resolve();\n // Convert whatever comes in as DataSource so we can work with it identically\n this._dataSource = this._openDataStream(ds);\n }\n\n /** @hidden */\n private _openDataStream(ds: FdpComboBoxDataSource<any>): ComboBoxDataSource<any> {\n const initDataSource = this._toDataStream(ds);\n\n if (initDataSource === undefined) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n this._dsSubscription = new Subscription();\n /**\n * This is single point of data entry to the component. We dont want to set data on different\n * places. If any new data comes in either you do a search and you want to pass initial data\n * its here.\n */\n const dsSub = initDataSource\n .open()\n .pipe(takeUntil(this._destroyed))\n .subscribe((data) => {\n this._suggestions = this._convertToOptionItems(data);\n this._flatSuggestions = this.isGroup ? this._flatGroups(this._suggestions) : this._suggestions;\n\n this.stateChanges.next('initDataSource.open().');\n\n this.cd.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n\n this._dsSubscription.add(initDataSource.onDataRequested().subscribe(this.onDataRequested));\n this._dsSubscription.add(initDataSource.onDataReceived().subscribe(this.onDataReceived));\n\n initDataSource.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.secondaryKey) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n initDataSource.dataProvider.setMatchingBy(matchingBy);\n initDataSource.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n map.set('limit', 12);\n initDataSource.match(map);\n\n return initDataSource;\n }\n\n /** @hidden */\n private _toDataStream(source: FdpComboBoxDataSource<any>): ComboBoxDataSource<any> | undefined {\n if (isDataSource(source)) {\n return source as ComboBoxDataSource<any>;\n }\n\n if (Array.isArray(source)) {\n // default implementation to work on top of arrays\n return new ArrayComboBoxDataSource<any>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableComboBoxDataSource<any>(source);\n }\n\n return undefined;\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const gap = 5;\n const { offsetWidth, clientWidth } = document.body;\n const { width, left } = (this._element.querySelector('fd-input-group') as HTMLElement).getBoundingClientRect();\n const scrollBarWidth = offsetWidth - clientWidth;\n\n this.maxWidth = this.autoResize ? window.innerWidth - scrollBarWidth - left - gap : this.minWidth;\n this.minWidth = width - 2;\n\n this._cd.detectChanges();\n }\n\n /**\n * Convert original data to OptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): OptionItem[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as OptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to OptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): OptionItem[] {\n if (this.group && this.groupKey) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n private _convertObjectsToGroupOptionItems<K>(items: K[]): OptionItem[] {\n const group: { [key: string]: K[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = this.groupKey && item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: OptionItem = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.secondaryKey) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n\n return selectItem;\n });\n }\n\n /**\n * Convert object[] data to Secondary OptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): OptionItem[] {\n const selectItems: OptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n secondaryText: this.objectGet(value, this.secondaryKey),\n value\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to OptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: any[]): OptionItem[] {\n const selectItems: OptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({ label: value, value });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to OptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): OptionItem[] {\n const selectItems: OptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n value\n });\n }\n\n return selectItems;\n }\n\n /** @hidden Assign custom templates */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Injector,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport {\n ComboBoxDataSource,\n DATA_PROVIDERS,\n DataProvider,\n OptionItem,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\n\nimport { PlatformComboboxMobileModule } from '../combobox-mobile/combobox-mobile.module';\nimport { ComboboxMobileComponent } from '../combobox-mobile/combobox/combobox-mobile.component';\nimport { ComboboxConfig } from '../combobox.config';\nimport { COMBOBOX_COMPONENT, ComboboxInterface } from '../combobox.interface';\nimport { BaseCombobox } from '../commons/base-combobox';\n\nexport class ComboboxSelectionChangeEvent {\n /**\n * Combobox selection event\n * @param source Combobox component\n * @param payload Selected option\n */\n constructor(\n public source: ComboboxComponent,\n public payload: any // Contains selected item\n ) {}\n}\n\n@Component({\n selector: 'fdp-combobox',\n templateUrl: './combobox.component.html',\n styleUrls: ['./combobox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ComboboxComponent, multi: true },\n contentDensityObserverProviders()\n ]\n})\nexport class ComboboxComponent extends BaseCombobox implements ComboboxInterface, OnInit, AfterViewInit {\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<ComboboxSelectionChangeEvent>();\n /** @hidden */\n @ViewChild('searchInputElement')\n searchInputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('controlTemplate')\n controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n _selectedElement?: OptionItem;\n\n /** @hidden */\n constructor(\n readonly cd: ChangeDetectorRef,\n readonly elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() readonly controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n readonly _dynamicComponentService: DynamicComponentService,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() @Inject(DATA_PROVIDERS) private providers: Map<string, DataProvider<any>>,\n readonly _comboboxConfig: ComboboxConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n dialogConfig,\n _comboboxConfig,\n formField,\n formControl\n );\n }\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n const providers = this.providers?.size === 0 ? this._comboboxConfig.providers : this.providers;\n // if we have both prefer dataSource\n if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) {\n this.dataSource = new ComboBoxDataSource(providers.get(this.entityClass)!);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n }\n\n /** @hidden */\n _onBlur(event: FocusEvent): void {\n if (this.mobile) {\n return;\n }\n\n const target = event.relatedTarget as HTMLElement;\n if (target) {\n const isList = !!target.closest('.fdp-combobox__list-container');\n const isListItem = !!target.closest('.fd-list__item');\n if (isList || isListItem) {\n return;\n }\n }\n\n if ((!this._selectedElement && !this.inputText) || this._selectedElement?.label === this.inputText) {\n return;\n }\n\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n /** @hidden Method to emit change event */\n emitChangeEvent<T>(modelValue: T): void {\n const event = new ComboboxSelectionChangeEvent(this, modelValue);\n\n this.selectionChange.emit(event);\n }\n\n /** @hidden Method to set selected item */\n selectOptionItem(item: OptionItem): void {\n if (this.mobile) {\n this._selectedElement = item;\n this.inputText = item.label;\n this.cd.detectChanges();\n\n return;\n }\n\n this.inputText = item.label;\n this._checkAndUpdate(item);\n this.isOpenChangeHandle(false);\n }\n\n /** @hidden Method to set as selected */\n setAsSelected(item: OptionItem[]): void {\n const selectedItem = item[0];\n\n if (this.isSelectedOptionItem(selectedItem)) {\n return;\n }\n\n this._selectedElement = (this.isGroup && selectedItem?.children?.[0]) || selectedItem;\n this.inputText = this.displayValue(this._selectedElement);\n }\n\n /** @hidden Define is selected item selected */\n isSelectedOptionItem(selectedItem: any): boolean {\n if (!!this._selectedElement && !!selectedItem) {\n if (this.lookupKey) {\n return this.lookupValue(this._selectedElement) === this.lookupValue(selectedItem);\n } else {\n return selectedItem.value === this._selectedElement.value;\n }\n } else {\n return false;\n }\n }\n\n /** @hidden Define is selected item selected by display value */\n isSelectedOptionItemByDisplayValue(selectedItem: any): boolean {\n return this._selectedElement?.label === selectedItem;\n }\n\n /** Handle dialog dismissing, closes popover and sets backup data. */\n dialogDismiss(term: string): void {\n if (this._selectedElement?.label !== term) {\n this._selectedElement = this._getSelectedOptionItem(term);\n }\n\n this.inputText = term;\n this.isOpenChangeHandle(false);\n }\n\n /** Handle dialog approval, closes popover and propagates data changes. */\n dialogApprove(): void {\n if (this._selectedElement?.label === this.inputText) {\n this._updateModel(this._selectedElement.value);\n } else {\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n this.isOpenChangeHandle(false);\n }\n\n /** @hidden if not selected update model */\n private _checkAndUpdate(modelValue: OptionItem): void {\n if (this.isSelectedOptionItem(modelValue)) {\n return;\n }\n\n const optionItem = this._getSelectedOptionItem(this.inputText);\n\n this._updateModel(optionItem ? optionItem.value : this.inputText);\n }\n\n /** @hidden Update model */\n private _updateModel(value: any): void {\n // setting value, it will call setValue()\n this.value = value;\n\n this.emitChangeEvent(value ? value : null);\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: COMBOBOX_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n await this._dynamicComponentService.createDynamicModule(\n { listTemplate: this.listTemplate, controlTemplate: this.controlTemplate },\n PlatformComboboxMobileModule,\n ComboboxMobileComponent,\n this._viewContainerRef,\n injector\n );\n }\n\n /** @hidden */\n private _getSelectedOptionItem(text: string): OptionItem | undefined {\n if (!this.isGroup) {\n return this._suggestions.find((item) => item.label === text);\n }\n\n return this._suggestions\n .reduce((result: OptionItem[], item: OptionItem) => {\n result.push(...(item.children ?? []));\n\n return result;\n }, [])\n .find((item) => item.label === text);\n }\n}\n","<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list {{ !!stateMessage && 'fdp-combobox__list--message' }}\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n (keydown.tab)=\"_close()\"\n (keydown.shift.tab)=\"_close()\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicComponentService, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\nimport { ComboboxComponent } from './combobox/combobox.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [ComboboxComponent],\n imports: [\n CommonModule,\n FormsModule,\n InputGroupModule,\n PipeModule,\n ListModule,\n ButtonModule,\n PopoverModule,\n PlatformAutoCompleteModule,\n FormModule,\n I18nModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n providers: [DynamicComponentService],\n exports: [ComboboxComponent, TemplateModule, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformComboboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { DatePickerModule } from '@fundamental-ngx/core/date-picker';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PlatformDatePickerComponent } from './date-picker.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [PlatformDatePickerComponent],\n imports: [\n CommonModule,\n DatePickerModule,\n FormsModule,\n ReactiveFormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformDatePickerComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformDatePickerModule {}\n","/** @hidden */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdpDatetimePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\n\nimport { CalendarYearGrid, DaysOfWeek, FdCalendarView } from '@fundamental-ngx/core/calendar';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { DatetimePickerComponent } from '@fundamental-ngx/core/datetime-picker';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { createMissingDateImplementationError } from './errors';\n\n@Component({\n selector: 'fdp-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformDatetimePickerComponent, multi: true }]\n})\nexport class PlatformDatetimePickerComponent<D> extends BaseInput implements AfterViewInit {\n /**\n * value for datetime\n */\n @Input()\n set value(value: D) {\n super.setValue(value);\n }\n get value(): D {\n return super.getValue();\n }\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /**\n * Whether the time component should be meridian (am/pm).\n * Default value is based on the current locale format option\n * */\n @Input()\n meridian: boolean;\n\n /**\n * Whether the time component shows seconds.\n * Default value is based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /**\n * Whether the time component shows minutes.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * Whether the time component shows hours.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** Whether to perform visual validation on the picker input. */\n @Input()\n useValidation = true;\n\n /** Whether the popover is open. Two-way binding is supported. */\n @Input()\n isOpen = false;\n\n /** The starting day of week for the calendar. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = 'day';\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core datetime picker)\n * Aria label for the datetime picker input.\n */\n @Input()\n datetimeInputLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead (being translated in core datetime picker)\n * Aria label for the button to show/hide the calendar.\n */\n @Input()\n displayDatetimeToggleLabel: string;\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /**\n * @Input when set to true time component will use 2 digits for each number.\n * For example 9 will become 09\n * but 12 will be kept as 12.\n * Only uses by time component and does not change input format\n */\n @Input() keepTwoDigitsTime = false;\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates | undefined) {\n super.state = state;\n }\n\n get state(): FormStates {\n if (this.dateTimePickerComponent?.isInvalidDateInput) {\n // if any other error from core dtp\n return 'error';\n }\n return super.state;\n }\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__special-day--{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether or not to show the datetime picker footer with submit/cancel buttons. */\n @Input()\n showFooter = true;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input()\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text and aria-label of the DateTimePicker 'OK' button.\n */\n @Input()\n okLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text and aria-label of the DateTimePicker 'Cancel' button.\n */\n @Input()\n cancelLabel: string;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the date changes. This can be a time or day change. */\n @Output()\n readonly datetimeChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when popover closes. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onClose: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(DatetimePickerComponent)\n dateTimePickerComponent: DatetimePickerComponent<D>;\n\n /** @hidden */\n @ViewChild(DatetimePickerComponent, { static: true, read: ElementRef })\n protected _elRef: ElementRef;\n\n /** @hidden */\n @ViewChild(DatetimePickerComponent, { static: true, read: NgControl })\n protected _control: NgControl;\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param fdDate FdDate\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n get _isRequired(): boolean {\n return !!this.formField?.required;\n }\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @Self() readonly ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n // Use here @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n super(_cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n\n // default model value\n this.value = _dateTimeAdapter.now();\n }\n\n /**\n * @hidden\n */\n ngAfterViewInit(): void {\n // if used with platform forms, adjust width of datetimepicker to take 100% container space\n if (this.formField) {\n this._adjustPickerWidth();\n }\n }\n\n /** @hidden */\n writeValue(value: D): void {\n super.writeValue(value);\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n * override base functionality to catch new disabled state\n */\n setDisabledState(disabled: boolean): void {\n super.setDisabledState(disabled);\n this.dateTimePickerComponent?.setDisabledState(disabled);\n }\n\n /**\n * @hidden\n * logic to handle validation from both platform forms and core datetiimepicker\n * @param datetime inputted\n */\n handleDatetimeInputChange(datetime: D): void {\n if (this.dateTimePickerComponent) {\n if (this.dateTimePickerComponent._isInvalidDateInput) {\n if (this.ngControl.control && this._control.value) {\n this.ngControl.control.setErrors(this._control.errors);\n }\n this.state = 'error';\n } else {\n if (!this.dateTimePickerComponent._inputFieldDate && !this.allowNull) {\n this.state = 'error'; // null value in not allowNull should throw error\n } else {\n this.state = undefined; // resetting to default state\n }\n }\n // only set the value if it is a valid datetime object\n if (this.dateTimePickerComponent._inputFieldDate) {\n this.value = datetime;\n }\n\n this.stateChanges.next('datetime picker: handleDatetimeInputChange');\n }\n\n this.datetimeChange.emit(datetime);\n\n this.onTouched();\n }\n\n /**\n * Method that handles changes when popover is opened or closed.\n */\n handleOpenChange = (open: boolean): void => {\n this.isOpenChange.emit(open);\n };\n /**\n * Method that handle calendar active view change and throws event.\n */\n handleActiveViewChange = (fdCalendarView: FdCalendarView): void => {\n this.activeViewChange.emit(fdCalendarView);\n };\n\n /**\n * @hidden\n * method that adjusts width of datetimepicker to take 100% container space\n */\n private _adjustPickerWidth(): void {\n const customPopoverEl = this._elRef.nativeElement.querySelector('.fd-datetime .fd-popover-custom');\n if (!customPopoverEl) {\n return;\n }\n customPopoverEl.style.display = 'inline';\n }\n}\n","<fd-datetime-picker\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"_isRequired\"\n [attr.ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [inputId]=\"id\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [meridian]=\"meridian\"\n [disabled]=\"disabled\"\n [displaySeconds]=\"displaySeconds\"\n [displayMinutes]=\"displayMinutes\"\n [displayHours]=\"displayHours\"\n [useValidation]=\"useValidation\"\n [isOpen]=\"isOpen\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [activeView]=\"activeView\"\n [datetimeInputLabel]=\"datetimeInputLabel\"\n [displayDatetimeToggleLabel]=\"displayDatetimeToggleLabel\"\n [allowNull]=\"allowNull && !_isRequired\"\n [keepTwoDigitsTime]=\"keepTwoDigitsTime\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [specialDaysRules]=\"specialDaysRules\"\n [yearGrid]=\"yearGrid\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [markWeekends]=\"markWeekends\"\n [spinnerButtons]=\"spinnerButtons\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [showFooter]=\"showFooter\"\n [disableFunction]=\"disableFunction\"\n [processInputOnBlur]=\"processInputOnBlur\"\n [preventScrollOnFocus]=\"preventScrollOnFocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"handleDatetimeInputChange($event)\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (touched)=\"onTouched()\"\n>\n <ng-content></ng-content>\n</fd-datetime-picker>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { DatetimePickerModule } from '@fundamental-ngx/core/datetime-picker';\nimport { PlatformDatetimePickerComponent } from './datetime-picker.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [PlatformDatetimePickerComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DatetimePickerModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformDatetimePickerComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformDatetimePickerModule {}\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { DynamicFormControl } from './dynamic-form-control';\n\n/**\n * @description\n * Structural directive, which hides current form item and toggles validation rules for it.\n */\n@Directive({\n selector: '[fdpDynamicFormControlField]'\n})\nexport class DynamicFormControlFieldDirective implements OnInit {\n /**\n * @description Form control instance.\n */\n @Input()\n set fdpDynamicFormControlField(value: DynamicFormControl) {\n this._control = value;\n\n this._originalValidators = this._control.formItem.validators;\n this._originalAsyncValidators = this._control.formItem.asyncValidators;\n\n this._updateView();\n }\n\n /**\n * @description boolean flag representing if current item should be shown.\n */\n @Input()\n set fdpDynamicFormControlFieldShow(value: boolean) {\n this.shouldShowFormItem = value;\n this._updateView();\n }\n\n /**\n * @hidden\n */\n private _control: DynamicFormControl;\n\n /**\n * @hidden\n */\n private _originalValidators?: Nullable<ValidatorFn | ValidatorFn[]>;\n\n /**\n * @hidden\n */\n private _originalAsyncValidators: Nullable<AsyncValidatorFn | AsyncValidatorFn[]>;\n\n /**\n * @hidden\n */\n private _componentRemoved = true;\n\n /**\n * @hidden\n */\n private _shouldShowFormItem: boolean;\n\n /** @hidden */\n constructor(private readonly _templateRef: TemplateRef<any>, private readonly _viewContainer: ViewContainerRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._updateView();\n }\n\n /**\n * @description If false, validation will be skipped from the form item control\n */\n set shouldShowFormItem(value: boolean) {\n if (value === this._shouldShowFormItem) {\n return;\n }\n\n this._shouldShowFormItem = value;\n\n if (!value) {\n this._control.clearValidators();\n this._control.clearAsyncValidators();\n } else {\n this._control.setValidators(this._originalValidators ?? []);\n this._control.setAsyncValidators(this._originalAsyncValidators ?? []);\n }\n\n this._control.updateValueAndValidity({ emitEvent: false });\n }\n\n /** @hidden */\n private _updateView(): void {\n if (this._shouldShowFormItem && this._componentRemoved) {\n this._viewContainer.createEmbeddedView(this._templateRef);\n this._componentRemoved = false;\n } else if (!this._shouldShowFormItem) {\n this._viewContainer.clear();\n this._componentRemoved = true;\n }\n }\n}\n","import { FieldHintOptions } from '@fundamental-ngx/platform/shared';\n\nexport const defaultFormGeneratorHintOptions: Omit<FieldHintOptions, 'content'> = {\n placement: 'right',\n position: 'after',\n trigger: [\n { trigger: 'mouseenter', openAction: true, closeAction: false },\n { trigger: 'mouseleave', openAction: false, closeAction: true },\n { trigger: 'focusin', openAction: true, closeAction: false },\n { trigger: 'focusout', openAction: false, closeAction: true }\n ],\n glyph: 'hint',\n target: 'auto'\n};\n","import { InjectionToken } from '@angular/core';\nimport { FieldHintOptions } from '@fundamental-ngx/platform/shared';\nimport { defaultFormGeneratorHintOptions } from './config/default-form-generator-hint-options';\n\nexport const FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS = new InjectionToken<Omit<FieldHintOptions, 'content'>>(\n 'Default options for form-generator hint',\n {\n factory: () => defaultFormGeneratorHintOptions\n }\n);\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { FieldGroup } from '../../form-helpers';\nimport { HintOptions } from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-form-group-header]',\n templateUrl: './form-group-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.fd-form-group__header]': 'true'\n }\n})\nexport class FormGroupHeaderComponent {\n /** Fields Group */\n @Input()\n fieldGroup: Nullable<FieldGroup>;\n\n /** Hint options */\n get hintOptions(): HintOptions | undefined {\n if (this.fieldGroup?.hintOptions) {\n return this.fieldGroup.hintOptions;\n }\n\n return;\n }\n}\n","<ng-container *ngIf=\"fieldGroup && hintOptions?.position === 'before'\">\n <ng-container *ngTemplateOutlet=\"inlineHelpRef\"></ng-container>\n</ng-container>\n\n<h6 class=\"fd-form-group__header-text\">\n {{ fieldGroup?.label }}\n</h6>\n\n<ng-container *ngIf=\"fieldGroup && hintOptions?.position === 'after'\">\n <ng-container *ngTemplateOutlet=\"inlineHelpRef\"></ng-container>\n</ng-container>\n\n<ng-template #inlineHelpRef>\n <span *ngIf=\"hintOptions\" fd-link [undecorated]=\"true\">\n <fd-icon\n [style.vertical-align]=\"'middle'\"\n [fd-inline-help]=\"hintOptions.content\"\n [glyph]=\"hintOptions.glyph\"\n [placement]=\"hintOptions.placement || null\"\n [triggers]=\"hintOptions.trigger || []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KeyValue } from '@angular/common';\nimport { FieldColumn, FieldGroup } from '../../form-helpers';\n\n@Pipe({ name: 'fieldGroupRowValue' })\nexport class FieldGroupRowValuePipe implements PipeTransform {\n /** @hidden */\n transform(row: KeyValue<any, FieldColumn | FieldGroup>): FieldColumn {\n return row.value instanceof FieldGroup ? row.value.fields : row.value;\n }\n}\n","/**\n * @license\n * F. Kolar\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n */\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Provider,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { AbstractControl, ControlContainer, FormGroup, NgForm } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport {\n ColumnLayout,\n FieldHintOptions,\n FormFieldGroup,\n FormGroupContainer,\n HintInput,\n HintOptions,\n HintPlacement,\n LabelLayout,\n PlatformFormField\n} from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n Field,\n FieldColumn,\n FieldGroup,\n getField,\n getFormField,\n isFieldChild,\n isFieldGroupChild,\n isFieldGroupWrapperChild\n} from '../form-helpers';\nimport { FormFieldErrorDirective } from './form-field-error/form-field-error.directive';\nimport { FormFieldComponent } from './form-field/form-field.component';\nimport {\n DefaultGapLayout,\n DefaultHorizontalFieldLayout,\n DefaultHorizontalLabelLayout,\n DefaultVerticalFieldLayout,\n DefaultVerticalLabelLayout,\n FORM_GROUP_CHILD_FIELD_TOKEN\n} from './constants';\nimport { generateColumnClass, normalizeColumnLayout } from './helpers';\nimport { FormFieldLayoutService } from './services/form-field-layout.service';\nimport { FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT } from './fdp-form.tokens';\nimport { contentDensityObserverProviders, ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport { FormField } from '@fundamental-ngx/cdk/forms';\n\nexport const formGroupProvider: Provider = {\n provide: FormGroupContainer,\n useExisting: forwardRef(() => FormGroupComponent)\n};\n\ntype FormGroupField = (FormField | FormFieldGroup) & { hintOptions?: HintOptions };\n\nlet formGroupUniqueId = 0;\n\n/**\n *\n * FormGroup represent high order container aggregating FormFields and ability to distribute these\n * fields into columns. It mainly hides implementation details that we need to deal with every\n * time we are building a form. We have input fields , error managements, different states,\n * hints and many more.\n *\n * Well behaved form that has information side by side in multiple\n * columns needs to also know how to merge properly.\n *\n * Just to get the idea about the structure without actual input components inside\n *\n * ```html\n * <fdp-form-group [hintPlacement]=\"'inline'\" columnLayout=\"XL2-L2-M1-S1\">\n * <fdp-form-field [id]=\"'Field A'\" [rank]=\"10\" column=\"1\">\n * </fdp-form-field>\n *\n * <fdp-form-field [id]=\"'Field B'\" [rank]=\"30\" column=\"1\">\n * </fdp-form-field>\n *\n * <fdp-form-field [id]=\"'Field C'\" [rank]=\"20\" column=\"1\">\n * </fdp-form-field>\n *\n * <fdp-form-field [id]=\"Field D\" [rank]=\"20\" column=\"2\">\n * </fdp-form-field>\n *\n *\n * <fdp-form-field [id]=\"'Field E'\" [rank]=\"30\" column=\"2\">\n * </fdp-form-field>\n * </fdp-form-group>\n\n *\n * ````\n *\n *\n * Which can be translated like this\n * [Field A] - First column, rank 10\n * [Field B] - First column, rank 30\n * [Field C] - First column, rank 20\n * [Field D] - Second column, rank 20\n * [Field E] - Second column, rank 30\n *\n * What we expect that it creates following form with two column layout:\n * [Field A] [Field D]\n * [Field C] [Field E]\n * [Field B]\n *\n * You can see all is sorted accordingly by rank (C goes before B).\n *\n * When you move into smaller device and all is merged into one columns the naive solution would be:\n *\n * [Field A]\n * [Field C]\n * [Field B]\n * [Field D]\n * [Field E]\n *\n * The fields needs to restructure according to their original positioning. When Field D was on the\n * top why we should move it to the bottom? The more correct solution should be following.\n *\n * [Field A]\n * [Field D]\n * [Field C]\n * [Field E]\n * [Field B]\n *\n * Fields nicely merge together. they don't wrap.\n *\n *\n * Besides this layout support it also wraps form functionality and it can work with FormGroup.\n * You can also decide if you want your form with <form> element or without it.\n *\n *\n */\n@Component({\n selector: 'fdp-form-group',\n templateUrl: 'form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [formGroupProvider, FormFieldLayoutService, contentDensityObserverProviders()]\n})\nexport class FormGroupComponent\n implements FormGroupContainer, OnInit, AfterContentInit, AfterViewInit, OnDestroy, OnChanges\n{\n /** Id for the form group element */\n @Input()\n id = `fdp-form-group-${formGroupUniqueId++}`;\n\n /** Name property to be set on a form. Will be used if `useForm` is set to true */\n @Input()\n name: string;\n\n /** Indicates if group is editable */\n @Input()\n editable = true;\n\n /** Indicates when labels should not be displayed */\n @Input()\n noLabelLayout = false;\n\n /** User's custom classes */\n @Input()\n class: string;\n\n /**\n * Form group hint options\n */\n @Input()\n hint: HintInput;\n\n /**\n * @deprecated\n * Use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties.\n *\n * Defines form field label placement.\n */\n @Input()\n set labelLayout(value: LabelLayout) {\n if (isDevMode()) {\n console.warn(\n 'LabelLayout input property is deprecated. Please use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties instead'\n );\n }\n this._labelLayout = value;\n\n this.labelColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalLabelLayout : DefaultVerticalLabelLayout;\n this.fieldColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalFieldLayout : DefaultVerticalFieldLayout;\n }\n get labelLayout(): LabelLayout {\n return this._labelLayout;\n }\n\n /**\n * Defines column layout for inline items.\n */\n @Input()\n set inlineColumnLayout(value: ColumnLayout) {\n this._inlineColumnLayout = normalizeColumnLayout(value);\n this._updateInlineColumnLayout();\n }\n\n get inlineColumnLayout(): ColumnLayout {\n return this._inlineColumnLayout;\n }\n\n /** @hidden */\n _inlineColumnLayoutClass: string;\n\n /** @hidden */\n private _inlineColumnLayout = DefaultVerticalFieldLayout;\n\n /**\n * Defines label's column layout.\n */\n @Input()\n labelColumnLayout: ColumnLayout = DefaultHorizontalLabelLayout;\n\n /**\n * Defines field's column layout.\n */\n @Input()\n fieldColumnLayout: ColumnLayout = DefaultHorizontalFieldLayout;\n\n /**\n * Defines gap column layout.\n */\n @Input()\n gapColumnLayout: ColumnLayout = DefaultGapLayout;\n\n /** Angular FormGroup where all underlying controls will be attached to. */\n @Input()\n formGroup: FormGroup;\n\n /** This is rather simple for now just to have some Section Title if needed */\n @Input()\n topTitle: string;\n\n /** Form's main title. */\n @Input()\n mainTitle: Nullable<string>;\n\n /** Whether to hide form's main title. Default is false. */\n @Input()\n hideMainTItle = false;\n\n /**\n * Convenient way to initialize internal FormControls from object\n */\n @Input()\n object: any;\n\n /**\n * Translations template reference.\n *\n * This is just here to support several ways to pass translation.\n *\n * One way is to provide ng-template #i18n inside the form-group tag and the other one\n * some global one as binding\n */\n @Input()\n i18Strings: TemplateRef<any>;\n\n /** Whether to wrap all the provided content in a `<form>` */\n @Input()\n set useForm(value: BooleanInput) {\n this._useForm = coerceBooleanProperty(value);\n }\n get useForm(): boolean {\n return this._useForm;\n }\n\n /**\n * Specify the column layout in the format `XLn-Ln-Mn-Sn` where n is the number of columns and can be different for each size.\n * eg: XL2-L2-M2-S1 would create 2-column layouts for XL, L, and M sizes and single-column layout for S size.\n */\n @Input()\n columnLayout: Nullable<string>;\n\n /** Whether all form items should have identical layout provided for form group */\n @Input()\n unifiedLayout = true;\n\n /**\n * onSubmit event\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSubmit: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Native form element. Available with `[useForm]=\"true\"` input property.\n */\n @ViewChild('nativeForm', { read: NgForm })\n nativeForm: NgForm;\n\n /** @hidden */\n @ContentChild('i18n', { static: true })\n i18Template: TemplateRef<any>;\n\n /** @hidden */\n @ContentChildren(FormFieldErrorDirective)\n private _errorDirectives: QueryList<FormFieldErrorDirective>;\n\n /**\n * @hidden\n *\n * Keep track of added form fields children in correct order.\n *\n * Since \"descendants: true\" includes fields of nested form group as well.\n *\n * We are forced to use \"ContentChildren\" so FormField children can be used\n * with optional rendering (ngIf) safely.\n *\n * Form fields within the formGroup is driven by multi-zone layout support. We need to be\n * able to add number of FormFields, and based on given configuration (zone, rank) render them\n * under correct zone (top, bottom, left, right).\n *\n * We want to make sure that we don't include content and then try to somehow position it as it\n * would lead to the UI where user can see elementing moving as you try to position it.\n *\n */\n @ContentChildren(FORM_GROUP_CHILD_FIELD_TOKEN as any, { descendants: true })\n protected formGroupChildren: QueryList<FormGroupField>;\n\n /**\n * @hidden\n *\n * List of direct FdpFormGroup's children.\n *\n * Since \"formGroupChildren\" uses \"{ descendants: true }\" option that means\n * \"formGroupChildren\" will keep track of nested FdpFormGroup fields as well.\n * This list relies on the injection mechanism so nested FdpFormGroup's fields/fieldGroups\n * will be omitted\n */\n private _formGroupDirectChildren: Array<FormGroupField> = [];\n\n /** @hidden */\n xlColumnsNumber: number;\n /** @hidden */\n lgColumnsNumber: number;\n /** @hidden */\n mdColumnsNumber: number;\n\n /**\n * @hidden\n * User responsive layout\n */\n xlCol: string;\n\n /**\n * @hidden\n * Packed fields which should be rendered\n */\n formRows: { [key: number]: FieldColumn | FieldGroup } = {};\n\n /** @hidden */\n _hintOptions: HintOptions;\n\n /** @hidden */\n private _useForm = false;\n /** @hidden */\n private _hintPlacement: HintPlacement = 'right';\n\n /** @hidden */\n private _labelLayout: LabelLayout;\n\n /** @hidden */\n protected _destroyed = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n private elementRef: ElementRef,\n @Optional() private formContainer: ControlContainer,\n readonly contentDensityObserver: ContentDensityObserver,\n @Inject(FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT) private _defaultHintOptions: FieldHintOptions\n ) {\n this.formGroup = <FormGroup>(this.formContainer ? this.formContainer.control : new FormGroup({}));\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n if (changes.hint) {\n if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {\n this._hintOptions = {\n ...this._defaultHintOptions,\n content: this.hint\n };\n } else {\n this._hintOptions = {\n ...this._defaultHintOptions,\n ...this.hint\n };\n }\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (!this.formGroup) {\n this.formGroup = new FormGroup({});\n }\n this.buildComponentCssClass();\n this._updateInlineColumnLayout();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;\n\n this._setUserLayout();\n this._updateFieldByColumn();\n this._updateFormFieldsProperties();\n this._listenToFormGroupChildren();\n this._listenFormFieldColumnChange();\n this._cd.markForCheck();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;\n\n this._setUserLayout();\n this._updateFieldByColumn();\n this._updateFormFieldsProperties();\n this._listenToFormGroupChildren();\n this._listenFormFieldColumnChange();\n this._trackFormGroupResize();\n this._cd.markForCheck();\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n addFormField(formField: PlatformFormField): void {\n // It's needed to set default FormField properties\n // on early stage otherwise validation errors\n // will be thrown on FormField level (e.g. i18string are not defined)\n this._updateFormFieldProperties(formField);\n // keep track of directly registered children\n this._addDirectFormGroupChild(formField);\n }\n\n /** @hidden */\n removeFormField(formField: PlatformFormField): void {\n this._removeDirectFormGroupChild(formField);\n }\n\n /** @hidden */\n addFormFieldGroup(formFieldGroup: FormFieldGroup): void {\n this._addDirectFormGroupChild(formFieldGroup);\n }\n\n /** @hidden */\n removeFormFieldGroup(formFieldGroup: FormFieldGroup): void {\n this._removeDirectFormGroupChild(formFieldGroup);\n }\n\n /** @hidden */\n addFormControl(name: string, control: AbstractControl): void {\n this.formGroup.setControl(name, control);\n // letting control to set value. when provided value is 'false'.\n if (this.object) {\n control.patchValue(this.object[name]);\n }\n }\n\n /** @hidden */\n removeFormControl(name: string): void {\n this.formGroup.removeControl(name);\n }\n\n /** @hidden */\n trackByFn(index: number): number {\n return index;\n }\n\n /** @hidden */\n trackByFieldName(index: number, field: Field): string | undefined {\n return field ? field.name : undefined;\n }\n\n /** @hidden */\n buildComponentCssClass(): string[] {\n return ['fd-container', this.class];\n }\n\n /** @hidden used for template side Type correction */\n $fieldGroup = (f: any): FieldGroup => f;\n\n /** @hidden */\n private _listenToFormGroupChildren(): void {\n this.formGroupChildren.changes.subscribe(() => {\n this._updateFieldByColumn();\n this._cd.markForCheck();\n });\n }\n\n /** @hidden */\n private _listenFormFieldColumnChange(): void {\n this.formGroupChildren.forEach((field: FormGroupField) =>\n (<FormFieldComponent>field).onColumnChange?.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._updateFieldByColumn();\n this._cd.markForCheck();\n })\n );\n }\n\n /**\n * @hidden\n * Assign a fields or field group to specified columns with rank.\n * if `columnLayoutType` is given a fields without column property will set on last column.\n * Otherwise the fields set 1 column.\n */\n private _updateFieldByColumn(): void {\n const formChildren = this._getFormGroupChildren();\n const rows: { [key: number]: FieldColumn | FieldGroup } = {};\n let rowNumber = 0;\n let columns: FieldColumn = {};\n\n for (const child of formChildren) {\n if (isFieldChild(child)) {\n const field = getField(child);\n const columnNumber = this._validateFieldColumn(child.column);\n\n if (!columns[columnNumber]) {\n columns[columnNumber] = [];\n }\n columns[columnNumber].push(field);\n }\n\n if (isFieldGroupChild(child)) {\n const fieldGroupColumns: FieldColumn = {};\n if (Object.keys(columns).length) {\n rows[rowNumber] = columns;\n columns = {};\n rowNumber++;\n }\n\n const groupFields = child.fields.map((field) => getField(field));\n groupFields.forEach((groupField) => {\n const columnNumber = this._validateFieldColumn(groupField.column);\n\n if (!fieldGroupColumns[columnNumber]) {\n fieldGroupColumns[columnNumber] = [];\n }\n fieldGroupColumns[columnNumber].push(groupField);\n });\n\n rows[rowNumber] = new FieldGroup(child.label, fieldGroupColumns, child.hintOptions);\n rowNumber++;\n }\n }\n rows[rowNumber] = columns;\n this.formRows = rows;\n }\n\n /** @hidden Validate column number */\n private _validateFieldColumn(columnNumber: number | undefined): number {\n if (this.columnLayout && columnNumber) {\n if (isNaN(columnNumber)) {\n throw new Error('Input a valid column number');\n }\n\n if (columnNumber > this.xlColumnsNumber) {\n throw new Error(`Columns cannot be more than ${this.xlColumnsNumber}`);\n }\n\n return columnNumber;\n }\n\n return this.xlColumnsNumber;\n }\n\n /** @hidden */\n private _updateFormFieldsProperties(): void {\n this._getFormGroupChildren().forEach((formField: FormGroupField) => {\n if (isFieldChild(formField)) {\n this._updateFormFieldProperties(formField);\n }\n\n if (isFieldGroupChild(formField)) {\n formField.fields.forEach((field) => this._updateFormFieldProperties(getFormField(field)));\n }\n });\n }\n\n /**\n * @hidden\n * Pass some global properties to each field. Even formGroup cna be inject directly inside form\n * field we are using here a setter method to initialize the\n *\n */\n private _updateFormFieldProperties(formField: PlatformFormField): void {\n if (this.unifiedLayout) {\n formField.hintPlacement = this._hintPlacement;\n formField.editable = this.editable;\n formField.noLabelLayout = this.noLabelLayout;\n }\n formField.setDefaultColumnLayout();\n formField.i18Strings = formField.i18Strings ? formField.i18Strings : this.i18Strings;\n formField.setErrorDirectives(this._errorDirectives);\n }\n\n /**\n * @hidden\n * if `columnLayoutType` is given, set those column layouts appropriately. Otherwise, a layout will set on 1 column\n */\n private _setUserLayout(): void {\n if (this.columnLayout) {\n this._getColumnNumbers(this.columnLayout);\n if (isNaN(this.xlColumnsNumber) || isNaN(this.lgColumnsNumber) || isNaN(this.mdColumnsNumber)) {\n throw new Error('Input a valid number for columns');\n }\n if (this.xlColumnsNumber > 12 || this.lgColumnsNumber > 12 || this.mdColumnsNumber > 12) {\n throw new Error('Columns cannot be more than 12');\n }\n const lgColumns = 12 / this.lgColumnsNumber;\n const mdColumns = 12 / this.mdColumnsNumber;\n const xlColumns = 12 / this.xlColumnsNumber;\n\n // for `lg` single-column layout, Styles does not use any class, and providing `fd-col-lg--12` has unintended side-effects\n // therefore, we remove the lg class for single-column layout\n if (lgColumns === 12) {\n this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns}`;\n } else {\n this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns} fd-col-lg--${lgColumns}`;\n }\n } else {\n this.xlCol = `fd-col-xl--12 fd-col-md--12 fd-col-lg--12`;\n }\n }\n\n /** @hidden */\n private _getColumnNumbers(layout: string): void {\n const [xl, lg, md] = layout.split('-');\n this.xlColumnsNumber = parseInt(xl.slice(2, xl.length), 10);\n this.lgColumnsNumber = parseInt(lg.slice(1, lg.length), 10);\n this.mdColumnsNumber = parseInt(md.slice(1, md.length), 10);\n }\n\n /** @hidden */\n private _addDirectFormGroupChild(child: FormGroupField): void {\n if (this._formGroupDirectChildren.indexOf(child) > -1) {\n return;\n }\n this._formGroupDirectChildren.push(child);\n }\n\n /** @hidden */\n private _removeDirectFormGroupChild(child: PlatformFormField | FormFieldGroup): void {\n this._formGroupDirectChildren = this._formGroupDirectChildren.filter((_child) => _child !== child);\n }\n\n /**\n * @hidden\n * Get direct form group children in the original order\n */\n private _getFormGroupChildren(): FormGroupField[] {\n if (!this.formGroupChildren) {\n return [];\n }\n const children = this.formGroupChildren\n .toArray()\n .map((child) => (isFieldGroupWrapperChild(child) ? child.fieldRenderer : child));\n\n return children.filter((child) => this._formGroupDirectChildren.includes(child));\n }\n\n /** @hidden */\n private _updateInlineColumnLayout(): void {\n this._inlineColumnLayoutClass = generateColumnClass(this.inlineColumnLayout);\n }\n\n /**\n * @hidden\n * have to trigger change detection here in order to re-check contents\n * inside \"FormField.renderer\" template every time component's dimensions changed\n */\n private _trackFormGroupResize(): void {\n this._subscriptions.add(\n resizeObservable(this.elementRef.nativeElement)\n .pipe(debounceTime(20))\n .subscribe(() => this._cd.markForCheck())\n );\n }\n}\n","<form #nativeForm (ngSubmit)=\"onSubmit.emit($event)\" *ngIf=\"useForm; else body\" [id]=\"id\" [name]=\"name\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n</form>\n\n<ng-template #body>\n <!-- Render fields and field groups with assigned columns -->\n <ng-container *ngTemplateOutlet=\"fields\"></ng-container>\n</ng-template>\n\n<ng-template #fields>\n <div *ngIf=\"mainTitle && !hideMainTItle\" class=\"fd-form-header\">\n <ng-template [ngTemplateOutlet]=\"mainTitleTemplate\"></ng-template>\n </div>\n\n <div\n class=\"fd-container fd-form-layout-grid-container\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n >\n <div *ngFor=\"let column of formRows | keyvalue; trackBy: trackByFn\" class=\"fd-row\">\n <div\n *ngFor=\"let fields of column | fieldGroupRowValue | keyvalue; trackBy: trackByFn; let index = index\"\n class=\"fd-col fd-form-group\"\n [class]=\"xlCol\"\n >\n <div class=\"fd-row\" *ngIf=\"$fieldGroup(column.value) as value\">\n <div class=\"fd-col\">\n <div *ngIf=\"value.label\" fdp-form-group-header [fieldGroup]=\"index === 0 ? value : null\"></div>\n </div>\n </div>\n\n <div *ngFor=\"let field of fields.value; trackBy: trackByFieldName\" class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"_inlineColumnLayoutClass\" [style.order]=\"field.rank\">\n <ng-container *ngTemplateOutlet=\"field?.renderer || null\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- For nested form-group -->\n<ng-content select=\"fdp-form-group\"></ng-content>\n\n<ng-template #mainTitleTemplate>\n <ng-container *ngIf=\"_hintOptions?.content && _hintOptions.position === 'before'\">\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n </ng-container>\n\n <h5 class=\"fd-form-header__text\">\n {{ mainTitle }}\n </h5>\n\n <ng-container *ngIf=\"_hintOptions?.content && _hintOptions.position === 'after'\">\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n </ng-container>\n\n <ng-template #hintTemplate>\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"_hintOptions.content\"\n [glyph]=\"_hintOptions.glyph\"\n [placement]=\"_hintOptions.placement || null\"\n [triggers]=\"_hintOptions.trigger || []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n </ng-template>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DynamicFormControl, DynamicFormControlGroup, DynamicFormGroupControl } from '../dynamic-form-control';\n\n@Pipe({ name: 'getOrderedFieldControls' })\nexport class GetOrderedFieldControlsPipe implements PipeTransform {\n /** @hidden */\n transform(field: DynamicFormGroupControl): DynamicFormControl[] {\n // casting type explicity to the DynamicFormControl[] as this pipe will be used specifically with this data type\n return Object.values((field as DynamicFormControlGroup).controls).sort((a, b) =>\n (a.formItem.rank ?? -Infinity) > (b.formItem.rank ?? -Infinity) ? 1 : -1\n ) as DynamicFormControl[];\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormControlStatus, FormGroupDirective, NgForm } from '@angular/forms';\nimport { debounceTime, filter, startWith, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport {\n ColumnLayout,\n FieldHintOptions,\n PlatformFormFieldControl,\n HintOptions,\n LabelLayout,\n HintInput\n} from '@fundamental-ngx/platform/shared';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormGeneratorFieldComponent } from '../form-generator-field/form-generator-field.component';\n\nimport { FormGeneratorService } from '../form-generator.service';\nimport {\n BaseDynamicFormItemGuiOptions,\n DynamicFormItem,\n DynamicFormItemGuiOptions,\n DynamicFormItemValidationObject,\n DynamicFormValue\n} from '../interfaces/dynamic-form-item';\nimport {\n DynamicFormControl,\n DynamicFormControlGroup,\n DynamicFormGroupControl,\n DynamicFormGroupControls\n} from '../dynamic-form-control';\nimport { DynamicFormGroup } from '../interfaces/dynamic-form-group';\nimport {\n DefaultGapLayout,\n DefaultHorizontalFieldLayout,\n DefaultHorizontalLabelLayout,\n DefaultVerticalFieldLayout,\n DefaultVerticalLabelLayout\n} from '../../form-group/constants';\nimport { FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS } from '../form-generator.tokens';\nimport { defaultFormGeneratorHintOptions } from '../config/default-form-generator-hint-options';\n\nlet formUniqueId = 0;\n\nexport const FDP_FORM_IGNORED_STATUSES: FormControlStatus[] = ['INVALID', 'PENDING', 'DISABLED'];\n\nexport interface SubmitFormEventResult {\n /**\n * @description Indicator if validation has been passed.\n */\n success: boolean;\n /**\n * @description Formatted form value.\n */\n value: DynamicFormValue | null;\n}\n\n/**\n * @description Form Generator component represents a high-level component\n * which includes @see FormGroup inside.\n */\n@Component({\n selector: 'fdp-form-generator',\n templateUrl: './form-generator.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormGeneratorComponent implements OnDestroy, OnChanges {\n /** @description Unique form name */\n @Input()\n formName = `fdp-form-generator-${formUniqueId++}`;\n\n /**\n * @description List of @see DynamicFormItem representing the list of items\n * to be rendered in the form.\n */\n @Input()\n set formItems(formItems: DynamicFormItem[]) {\n if (!formItems) {\n return;\n }\n\n this._formItems = formItems.map((item, index) => ({ ...item, rank: item.rank || index }));\n this._generateForm();\n }\n get formItems(): DynamicFormItem[] {\n return this._formItems;\n }\n\n /**\n * @description Form main title.\n */\n @Input()\n mainTitle: Nullable<string>;\n\n /**\n * Whether to hide main title. Default is false.\n */\n @Input()\n hideMainTItle = false;\n\n /**\n * @description\n * Hint for the main title\n */\n @Input()\n hint: HintInput;\n\n /**\n * @description Specify the column layout in the format `XLn-Ln-Mn-Sn`\n * where n is the number of columns and can be different for each size.\n * eg: XL2-L2-M2-S1 would create 2-column layouts for XL, L,\n * and M sizes and single-column layout for S size.\n */\n @Input()\n columnLayout: Nullable<string>;\n\n /**\n * @deprecated\n * Use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties.\n *\n * Defines form field label placement.\n */\n @Input()\n set labelLayout(value: LabelLayout) {\n if (isDevMode()) {\n console.warn(\n 'LabelLayout input property is deprecated. Please use labelColumnLayout, fieldColumnLayout and gapColumnLayout properties instead'\n );\n }\n this._labelLayout = value;\n\n this.labelColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalLabelLayout : DefaultVerticalLabelLayout;\n this.fieldColumnLayout =\n this._labelLayout === 'horizontal' ? DefaultHorizontalFieldLayout : DefaultVerticalFieldLayout;\n }\n get labelLayout(): LabelLayout {\n return this._labelLayout;\n }\n\n /**\n * Defines label's column layout.\n */\n @Input()\n labelColumnLayout: ColumnLayout = DefaultVerticalLabelLayout;\n\n /**\n * Defines field's column layout.\n */\n @Input()\n fieldColumnLayout: ColumnLayout = DefaultVerticalFieldLayout;\n\n /**\n * Defines gap column layout.\n */\n @Input()\n gapColumnLayout: ColumnLayout = DefaultGapLayout;\n\n /** Whether all form items should have identical layout provided for form group. */\n @Input()\n unifiedLayout = true;\n\n /** Inline column layout */\n @Input()\n inlineColumnLayout: ColumnLayout = DefaultVerticalFieldLayout;\n\n /**\n * @hidden\n * Removes extra empty row.\n * TODO: remove after #7533 has been fixed.\n */\n @Input()\n noAdditionalContent = false;\n\n /**\n * @description Event which notifies parent component that the form has been successfully created\n * and all controls are in place.\n */\n @Output()\n formCreated = new EventEmitter<DynamicFormGroup>();\n\n /**\n * @description Event which notifies parent component that the form has been successfully validated\n * and submitted. Contains form\n */\n @Output()\n formSubmitted = new EventEmitter<DynamicFormValue>();\n\n /**\n * @description Event which notifies parent component that the form was submitted.\n */\n @Output()\n formSubmittedStatus = new EventEmitter<SubmitFormEventResult>();\n\n /**\n * @description Represents the form instance. @see NgForm\n */\n @ViewChild(NgForm)\n ngForm: NgForm;\n\n /** Inner form group directive. */\n @ViewChild(FormGroupDirective)\n formGroup: FormGroupDirective;\n\n /** Inner form fields */\n @ViewChildren(FormGeneratorFieldComponent)\n fields: QueryList<FormGeneratorFieldComponent>;\n\n /** Array of form field controls. */\n get formFields(): PlatformFormFieldControl[] {\n return this.fields\n ?.toArray()\n .filter((field) => !!field.fieldRenderer?.control)\n .map((field) => field.fieldRenderer.control!);\n }\n\n /**\n * @description Dynamically generated form. @see FormGeneratorService\n */\n form: DynamicFormGroup;\n /**\n * @description List of the form controls.\n */\n formControlItems: DynamicFormGroupControl[];\n\n /**\n * Set of flags representing if particular form item should be visible to the user.\n */\n shouldShowFields: { [key: string]: boolean } = {};\n\n /**\n * Flag representing that form is loading\n */\n formLoading = true;\n\n /**\n * Stream of form loading state.\n */\n loading$ = new BehaviorSubject<boolean>(this.formLoading);\n\n /**\n * Stream of last form submission status.\n */\n formSubmittedStatus$ = new Subject<SubmitFormEventResult>();\n\n /**\n * Stream of last form submission value.\n */\n formValue$ = new BehaviorSubject<DynamicFormValue>({});\n\n /** @hidden\n * To differentiate between first loading when skeletons be shown and subsequent loadings when busy indicator be shown\n */\n _firstLoadingDone = false;\n\n /**\n * @hidden\n */\n hintOptions: HintOptions;\n\n /** @hidden */\n _errorModels: { type: string; value: any }[] = [];\n\n /**\n * @hidden\n */\n private _formItems: DynamicFormItem[];\n\n /**\n * @hidden\n */\n private _formValueSubscription: Subscription;\n\n /**\n * @hidden\n * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _labelLayout: LabelLayout;\n\n /** @hidden */\n private readonly _defaultHintOptions: FieldHintOptions;\n\n /** @hidden */\n private _ngSubmitSubscription: Subscription | undefined;\n\n /** @hidden */\n constructor(\n private _fgService: FormGeneratorService,\n private _cd: ChangeDetectorRef,\n @Inject(FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS) _providedHintOptions: FieldHintOptions\n ) {\n this._defaultHintOptions = {\n ...defaultFormGeneratorHintOptions,\n ..._providedHintOptions\n };\n\n this._errorModels = this._getErrors();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hint) {\n if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {\n this.hintOptions = {\n ...this._defaultHintOptions,\n content: this.hint\n };\n } else {\n this.hintOptions = {\n ...this._defaultHintOptions,\n ...this.hint\n };\n }\n }\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._ngSubmitSubscription?.unsubscribe();\n }\n\n /**\n * Refreshes form items visibility with 'when' condition.\n */\n async refreshStepsVisibility(): Promise<void> {\n this.shouldShowFields = await this._fgService.checkVisibleFormItems(this.form);\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n */\n async _onSubmit(): Promise<void> {\n this.form.markAllAsTouched();\n this._cd.detectChanges();\n\n const formValue = await this._fgService.getFormValue(this.form);\n\n this.formSubmittedStatus.emit({ success: !this.form.invalid, value: formValue });\n this.formSubmittedStatus$.next({ success: !this.form.invalid, value: formValue });\n\n if (this.form.invalid) {\n return;\n }\n this.formSubmitted.emit(formValue);\n this.formValue$.next(formValue);\n\n this.form.markAsPristine();\n }\n\n /**\n * @hidden\n */\n private async _generateForm(): Promise<void> {\n this.formLoading = true;\n this.loading$.next(this.formLoading);\n\n const form = await this._fgService.generateForm(this.formName, this.formItems);\n\n this._formValueSubscription?.unsubscribe();\n\n this.form = form;\n\n this.formControlItems = this._getOrderedControls(form.controls);\n\n this.shouldShowFields = await this._fgService.checkVisibleFormItems(this.form);\n\n this._formValueSubscription = this.form.valueChanges\n .pipe(debounceTime(50), takeUntil(this._onDestroy$))\n .subscribe(async () => {\n this.shouldShowFields = await this._fgService.checkVisibleFormItems(this.form);\n this._cd.markForCheck();\n });\n\n this.formLoading = false;\n this._firstLoadingDone = true;\n\n this._cd.detectChanges();\n\n this.formCreated.emit(this.form);\n this.loading$.next(this.formLoading);\n\n if (!this.formGroup) {\n return;\n }\n\n this._listenToSubmit();\n }\n\n /**\n *\n * @hidden\n */\n _trackFn(index: number, value: DynamicFormGroupControl): string {\n return `${index}_${value.formItem.name}`;\n }\n\n /**\n *\n * @description Programmatically submit form.\n * This method also calls validation for the form items.\n */\n submit(): void {\n this.formGroup.onSubmit(new Event('submit'));\n }\n\n /** @hidden */\n private _getOrderedControls(controls: DynamicFormGroupControls): (DynamicFormControl | DynamicFormControlGroup)[] {\n return Object.values(controls).sort(\n (a, b) => (a.formItem?.rank ?? -Infinity) - (b.formItem?.rank ?? -Infinity)\n );\n }\n\n /**\n * @description\n * Used for extracting hintOptions from GuiOptions. This will coerce string | HintOptions to FieldHintOptions,\n * will combine default value of hints for form generator with provided options.\n * @param guiOptions\n */\n getHintOptions(\n guiOptions?: BaseDynamicFormItemGuiOptions | DynamicFormItemGuiOptions\n ): FieldHintOptions | undefined {\n if (!guiOptions?.hint) {\n return;\n }\n const formItemHintOptions = guiOptions.hint;\n const placement = guiOptions.hintPlacement || this._defaultHintOptions.placement;\n if (typeof formItemHintOptions === 'string' || formItemHintOptions instanceof TemplateRef) {\n return {\n ...this._defaultHintOptions,\n placement,\n content: formItemHintOptions\n };\n }\n return {\n ...this._defaultHintOptions,\n placement,\n ...formItemHintOptions\n };\n }\n\n /** @hidden */\n _isAdvancedError(error: any): error is DynamicFormItemValidationObject {\n return error.heading && error.description && error.type;\n }\n\n /** @hidden */\n private _getErrors(): { type: string; value: any }[] {\n const returnErrors: { type: string; value: any }[] = [];\n const registeredErrors = this._fgService.validationErrorHints;\n Object.entries(registeredErrors).forEach((type) => {\n const [errorType, errorValue] = type;\n\n returnErrors.push({\n type: errorType,\n value: errorValue\n });\n });\n\n return returnErrors;\n }\n\n /** @hidden */\n private _listenToSubmit(): void {\n this._ngSubmitSubscription?.unsubscribe();\n this._ngSubmitSubscription = this.formGroup.ngSubmit\n .pipe(\n switchMap(() =>\n this.formGroup.statusChanges!.pipe(\n startWith(this.formGroup.status),\n filter((status: FormControlStatus) => status !== 'PENDING'),\n take(1),\n // filter((status) => status !== 'INVALID'),\n takeUntil(this._onDestroy$)\n )\n )\n )\n .subscribe(async () => {\n await this._onSubmit();\n this._listenToSubmit();\n });\n }\n}\n","<fd-busy-indicator *ngIf=\"_firstLoadingDone; else loadingTemplate\" [loading]=\"formLoading\" [block]=\"true\">\n <fdp-form-group\n *ngIf=\"form\"\n [hint]=\"hint\"\n [mainTitle]=\"mainTitle\"\n [hideMainTItle]=\"hideMainTItle\"\n [formGroup]=\"form\"\n [columnLayout]=\"columnLayout\"\n [labelColumnLayout]=\"labelColumnLayout\"\n [fieldColumnLayout]=\"fieldColumnLayout\"\n [gapColumnLayout]=\"gapColumnLayout\"\n [unifiedLayout]=\"unifiedLayout\"\n [inlineColumnLayout]=\"inlineColumnLayout\"\n [useForm]=\"true\"\n >\n <ng-container *ngFor=\"let error of _errorModels\">\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n <ng-container *ngIf=\"_isAdvancedError(directiveError)\">\n <ng-container *ngIf=\"directiveError.heading\">\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"directiveError.description\">\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!_isAdvancedError(directiveError)\">\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n </ng-container>\n </span>\n </ng-container>\n <ng-container *ngFor=\"let field of formControlItems; trackBy: _trackFn\">\n <ng-container\n *ngTemplateOutlet=\"\n field.type === 'field' ? fieldRenderer : groupRenderer;\n context: { field: field, formFieldName: field.formItem.name, rank: field.formItem?.rank || 0 }\n \"\n ></ng-container>\n <ng-template\n #fieldRenderer\n let-field=\"field\"\n let-formFieldName=\"formFieldName\"\n let-formGroupName=\"formGroupName\"\n let-rank=\"rank\"\n >\n <ng-container\n *fdpDynamicFormControlField=\"field; show: shouldShowFields[field.formItem.name] !== false\"\n >\n <fdp-form-generator-field\n [hintOptions]=\"getHintOptions(field.formItem.guiOptions)\"\n [form]=\"form\"\n [shouldShow]=\"shouldShowFields[field.formItem.name] !== false\"\n [field]=\"field\"\n [formFieldName]=\"formFieldName\"\n [formGroupNamePath]=\"formGroupName\"\n [rank]=\"rank\"\n ></fdp-form-generator-field>\n </ng-container>\n </ng-template>\n <ng-template #groupRenderer>\n <fdp-form-field-group\n [hintOptions]=\"getHintOptions(field.formItem.guiOptions)\"\n [label]=\"field.formItem.message || ''\"\n [labelColumnLayout]=\"field.formItem.guiOptions?.labelColumnLayout\"\n [fieldColumnLayout]=\"field.formItem.guiOptions?.fieldColumnLayout\"\n [gapColumnLayout]=\"field.formItem.guiOptions?.gapColumnLayout\"\n [formName]=\"field.formItem.name\"\n >\n <ng-container *ngFor=\"let groupField of field | getOrderedFieldControls\">\n <ng-container\n *fdpDynamicFormControlField=\"\n groupField;\n show: shouldShowFields[groupField.formItem.name!] !== false\n \"\n >\n <fdp-form-generator-field\n [hintOptions]=\"getHintOptions(groupField.formItem.guiOptions)\"\n [form]=\"form\"\n [field]=\"groupField\"\n [shouldShow]=\"shouldShowFields[groupField.formItem.name!] !== false\"\n [formFieldName]=\"groupField.formItem.name\"\n [formGroupNamePath]=\"field.formItem.name\"\n [rank]=\"groupField.formItem.rank || 0\"\n ></fdp-form-generator-field>\n </ng-container>\n </ng-container>\n </fdp-form-field-group>\n </ng-template>\n </ng-container>\n <fdp-form-field *ngIf=\"!noAdditionalContent\" [column]=\"1\" [rank]=\"formControlItems.length + 1\">\n <!-- For user-defined elements, like submit button -->\n <ng-content></ng-content>\n </fdp-form-field>\n </fdp-form-group>\n</fd-busy-indicator>\n\n<ng-template #loadingTemplate>\n <fd-skeleton width=\"100%\" height=\"100px\" style=\"padding: 1rem\">\n <svg:rect x=\"0\" y=\"0\" rx=\"4\" width=\"15%\" height=\"8\" />\n <svg:rect x=\"0\" y=\"20\" rx=\"4\" width=\"25%\" height=\"16\" />\n\n <svg:rect x=\"35%\" y=\"0\" rx=\"4\" width=\"15%\" height=\"8\" />\n <svg:rect x=\"35%\" y=\"20\" rx=\"4\" width=\"25%\" height=\"16\" />\n\n <svg:rect x=\"0\" y=\"60\" rx=\"4\" width=\"15%\" height=\"8\" />\n <svg:rect x=\"0\" y=\"80\" rx=\"4\" width=\"25%\" height=\"16\" />\n </fd-skeleton>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { InputComponent } from './input.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [InputComponent],\n imports: [\n CommonModule,\n FormModule,\n FormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [InputComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformInputModule {}\n","import { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\nimport { Directive, forwardRef } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-form-group[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedFormGroupCompactDirective)\n }\n ]\n})\nexport class DeprecatedFormGroupCompactDirective extends DeprecatedCompactDirective {\n /** @hidden */\n constructor() {\n super('fdp-form-group');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { FormModule as FdFormModule } from '@fundamental-ngx/core/form';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { InlineHelpModule } from '@fundamental-ngx/core/inline-help';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { FormGroupComponent } from './form-group.component';\nimport { FormFieldComponent } from './form-field/form-field.component';\nimport { InputMessageGroupWithTemplate } from '../input-message-group-with-template/input-message-group-with-template.component';\nimport { FormFieldGroupComponent } from './form-field-group/form-field-group.component';\nimport { FormFieldControlExtrasComponent } from './form-field-extras/form-field-extras.component';\nimport { FormGroupHeaderComponent } from './form-group-header/form-group-header.component';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FieldGroupRowValuePipe } from './pipes/field-group-row-value.pipe';\nimport { DeprecatedFormGroupCompactDirective } from './deprecated-form-group-compact.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { FormFieldErrorDirective } from './form-field-error/form-field-error.directive';\nimport { FormFieldErrorHeadingDirective } from './form-field-error/form-field-error-heading.directive';\nimport { FormFieldErrorDescriptionDirective } from './form-field-error/form-field-error-description.directive';\n\nconst EXPORTABLE_DECLARATIONS = [\n FormGroupComponent,\n FormFieldComponent,\n InputMessageGroupWithTemplate,\n FormFieldGroupComponent,\n FormFieldControlExtrasComponent,\n FormGroupHeaderComponent,\n FieldGroupRowValuePipe,\n DeprecatedFormGroupCompactDirective,\n FormFieldErrorDirective,\n FormFieldErrorHeadingDirective,\n FormFieldErrorDescriptionDirective\n];\n\n@NgModule({\n declarations: [...EXPORTABLE_DECLARATIONS],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FdFormModule,\n InlineHelpModule,\n PopoverModule,\n IconModule,\n LinkModule,\n ContentDensityModule\n ],\n exports: [...EXPORTABLE_DECLARATIONS, ContentDensityModule]\n})\nexport class FdpFormGroupModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n/**\n * Used to represent an option of the select component.\n */\n@Component({\n selector: 'fdp-option',\n template: `<li fd-option [id]=\"id\" [value]=\"value\" [disabled]=\"disabled\"><ng-content></ng-content></li>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OptionComponent {\n /** Option id attribute */\n @Input()\n id = `fdp-option-${nextUniqueId++}`;\n\n /** Value of the option. Similar to how a native select operates. */\n @Input()\n value: any;\n\n /** Whether to disable this option specifically. */\n @Input()\n disabled = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicComponentService, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { SelectModule } from '@fundamental-ngx/core/select';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\nimport { SelectComponent } from './select/select.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { OptionComponent } from './option/option.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [SelectComponent, OptionComponent],\n imports: [\n CommonModule,\n FormsModule,\n InputGroupModule,\n ListModule,\n PipeModule,\n ButtonModule,\n PlatformAutoCompleteModule,\n PopoverModule,\n IconModule,\n ReactiveFormsModule,\n SelectModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n providers: [DynamicComponentService],\n exports: [\n SelectComponent,\n OptionComponent,\n TemplateModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ]\n})\nexport class PlatformSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormModule as FdFormModule } from '@fundamental-ngx/core/form';\nimport { RadioModule } from '@fundamental-ngx/core/radio';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { RadioGroupComponent } from './radio-group.component';\nimport { RadioButtonComponent } from './radio/radio.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n imports: [\n CommonModule,\n FdFormModule,\n FormsModule,\n RadioModule,\n ReactiveFormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [\n RadioGroupComponent,\n RadioButtonComponent,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n declarations: [RadioGroupComponent, RadioButtonComponent]\n})\nexport class PlatformRadioGroupModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormControlModule } from '@fundamental-ngx/core/form';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { TextAreaComponent } from './text-area.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FormControlModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule,\n I18nModule\n ],\n exports: [TextAreaComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n declarations: [TextAreaComponent]\n})\nexport class PlatformTextAreaModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { SwitchModule } from '@fundamental-ngx/core/switch';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { SwitchComponent } from './switch/switch.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [SwitchComponent],\n imports: [\n CommonModule,\n FormsModule,\n SwitchModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [SwitchComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformSwitchModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { DataProvider, PlatformConfig, MatchingStrategy } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Multi-Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class MultiComboboxConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(\n obj: Partial<MultiComboboxConfig>\n ): (platformConfig: PlatformConfig) => MultiComboboxConfig {\n const useFactory = (platformConfig: PlatformConfig): MultiComboboxConfig =>\n Object.assign(new MultiComboboxConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\n\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, fromEvent, isObservable, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport {\n ContentDensity,\n FocusEscapeDirection,\n KeyUtil,\n Nullable,\n RangeSelector,\n TemplateDirective\n} from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { ListComponent } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport {\n ArrayMultiComboBoxDataSource,\n coerceArraySafe,\n CollectionBaseInput,\n isDataSource,\n isFunction,\n isJsObject,\n isOptionItem,\n isSelectableOptionItem,\n isString,\n MatchingBy,\n MatchingStrategy,\n MultiComboBoxDataSource,\n ObservableMultiComboBoxDataSource,\n PlatformFormField,\n PlatformFormFieldControl,\n SelectableOptionItem\n} from '@fundamental-ngx/platform/shared';\n\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { TextAlignment } from '../../combobox';\nimport { MultiComboboxConfig } from '../multi-combobox.config';\n\nexport const MAP_LIMIT = new InjectionToken<number>('Map limit≥', { factory: () => 12 });\n\nexport type FdpMultiComboboxDataSource<T> = MultiComboBoxDataSource<T> | Observable<T[]> | T[];\n\nexport class MultiComboboxSelectionChangeEvent {\n /**\n * Multi Combobox selection change event\n * @param source Multi Combobox component\n * @param selectedItems Selected items\n */\n constructor(\n public source: BaseMultiCombobox,\n public selectedItems: SelectableOptionItem['value'] // Contains selected items\n ) {}\n}\n\n@Directive()\nexport abstract class BaseMultiCombobox extends CollectionBaseInput implements OnChanges, AfterViewInit, OnDestroy {\n /** Provides selected items. */\n @Input()\n selectedItems: any[] = [];\n\n /** Provides maximum height for the optionPanel. */\n @Input()\n maxHeight = '250px';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = false;\n\n /** Datasource for suggestion list. */\n @Input()\n set dataSource(value: FdpMultiComboboxDataSource<any>) {}\n get dataSource(): FdpMultiComboboxDataSource<any> {\n return this._dataSource;\n }\n\n /** Whether the autocomplete should be enabled; Enabled by default. */\n @Input()\n autoComplete = true;\n\n /**\n * TODO: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the multi-combobox should be built on mobile mode. */\n @Input()\n mobile = false;\n\n /** Multi Combobox Mobile Configuration, it's applied only, when mobile is enabled. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Tells the multi-combobox if we need to group items. */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation). */\n @Input()\n groupKey: string;\n\n /** The field to show data in secondary column. */\n @Input()\n secondaryKey: string;\n\n /** Show the second column (applicable for two columns layout). */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (applicable for two columns layout). */\n @Input()\n secondaryTextAlignment: TextAlignment = 'right';\n\n /** Turns on/off Adjustable Width feature. */\n @Input()\n autoResize = false;\n\n /** Value of the multi combobox */\n @Input()\n set value(value: any) {\n super.setValue(value, true);\n }\n get value(): any {\n return super.getValue();\n }\n\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /** Sets title attribute to addon button. */\n @Input()\n addonIconTitle: string;\n\n /** Sets invalid entry message. */\n @Input()\n invalidEntryMessage = 'Invalid entry';\n\n /** Turns limitless mode, ON or OFF */\n @Input()\n limitless: boolean;\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<MultiComboboxSelectionChangeEvent>();\n\n /** @hidden Emits event when the menu is opened/closed. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataRequested = new EventEmitter<void>();\n\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDataReceived = new EventEmitter<void>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n searchInputElement: ElementRef;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n customTemplates: QueryList<TemplateDirective>;\n\n /**\n * @hidden\n * Custom Option item Template.\n */\n optionItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Group Header item Template.\n */\n groupItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Secondary item Template.\n */\n secondaryItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Selected option item Template.\n */\n selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n _contentDensity: ContentDensity = this.multiComboboxConfig.contentDensity;\n\n /** @hidden */\n listTemplate: TemplateRef<any>;\n\n /** Set the input text of the input. */\n set inputText(value: string) {\n this._inputTextValue = value;\n\n this.onTouched();\n }\n\n /** Get the input text of the input. */\n get inputText(): string {\n return this._inputTextValue || '';\n }\n\n /** Is empty search field. */\n get isEmptyValue(): boolean {\n return this.inputText.trim().length === 0;\n }\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** Whether the Multi Input is opened. */\n isOpen = false;\n\n /**\n * @hidden\n * List of matched suggestions\n */\n _suggestions: SelectableOptionItem[];\n\n /**\n * @hidden\n * Grouped suggestions mapped to array.\n */\n _flatSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n _fullFlatSuggestions: SelectableOptionItem[] = [];\n\n /**\n * @hidden\n * List of selected suggestions\n */\n _selectedSuggestions: SelectableOptionItem[];\n\n /**\n * @hidden\n * Max width of list container\n */\n maxWidth: number;\n\n /**\n * @hidden\n * Min width of list container\n */\n minWidth: number;\n\n /**\n * @hidden\n * Need for opening mobile version\n */\n openChange = new Subject<boolean>();\n\n /** @hidden */\n selectedShown$ = new BehaviorSubject(false);\n\n /** @hidden */\n protected _dataSource: FdpMultiComboboxDataSource<any>;\n\n /** @hidden */\n private _inputTextValue: string;\n\n /** @hidden */\n private _previousInputText: string;\n\n /** @hidden */\n private _matchingStrategy: MatchingStrategy = this.multiComboboxConfig.matchingStrategy;\n\n /** @hidden */\n private _dsSubscription: Subscription | null = null;\n\n /** @hidden */\n private _element: HTMLElement = this.elementRef.nativeElement;\n\n /**\n * @hidden\n * Keys, that won't trigger the popover's open state, when dispatched on search input.\n */\n private readonly _nonOpeningKeys: number[] = [\n BACKSPACE,\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT\n ];\n\n /** @hidden */\n private _timerSub$: Subscription;\n\n /** @hidden */\n private _previousState?: FormStates;\n\n /** @hidden */\n private _previousStateMessage: Nullable<string>;\n\n /** @hidden */\n protected readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n private _displayFn = (value: any): string => this.displayValue(value);\n\n /** @hidden */\n private _secondaryFn = (value: any): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n } else if (isJsObject(value) && this.secondaryKey) {\n const currentItem = this.objectGet(value, this.secondaryKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return value;\n }\n };\n\n /** @hidden */\n protected constructor(\n protected readonly _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n protected multiComboboxConfig: MultiComboboxConfig,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Inject(MAP_LIMIT) private _mapLimit: number\n ) {\n super(_cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n const dataSourceChange = changes['dataSource'];\n\n if (dataSourceChange) {\n this._initializeDataSource(dataSourceChange.currentValue);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initWindowResize();\n this._assignCustomTemplates();\n this._previousInputText = this.inputText;\n super.ngAfterViewInit();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiComboBoxDataSource<any>).close();\n }\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n }\n }\n\n /**\n * @hidden\n * Method to set input text as item label.\n */\n abstract setInputTextFromOptionItem(item: SelectableOptionItem): void;\n\n /**\n * @hidden\n * Toggle item selection.\n */\n abstract toggleSelection(item: SelectableOptionItem): void;\n\n /**\n * @hidden\n * Toggle item selection by input text value.\n */\n abstract toggleSelectionByInputText(): void;\n\n /** write value for ControlValueAccessor */\n writeValue(value: any): void {\n this.selectedItems = coerceArraySafe(value);\n super.writeValue(this.selectedItems);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /** @hidden */\n popoverOpenChangeHandle(isOpen: boolean): void {\n this.isOpen = isOpen;\n this._rangeSelector.reset();\n }\n\n /** Opens the select popover body. */\n open(): void {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this._cd.markForCheck();\n }\n\n /** Closes the select popover body. */\n close(): void {\n this._rangeSelector.reset();\n this.selectedShown$.next(false);\n this.inputText = '';\n this._focusToSearchField();\n\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n showList(isOpen: boolean): void {\n if (this.isOpen !== isOpen) {\n this.isOpen = isOpen;\n this.onTouched();\n this.openChange.next(isOpen);\n }\n\n if (!this.isOpen) {\n this.searchTermChanged('');\n }\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n searchTermChanged(text: string = this.inputText): void {\n if (text) {\n this.open();\n }\n\n const map = new Map();\n map.set('query', text);\n\n if (!this.limitless) {\n map.set('limit', this._mapLimit);\n }\n\n this.ds.match(map);\n\n this._cd.markForCheck();\n }\n\n /**\n * Handle Click on Button\n * @hidden\n */\n onPrimaryButtonClick(isOpen: boolean): void {\n if (!isOpen) {\n this.searchTermChanged('');\n }\n\n if (this.openDropdownOnAddOnClicked) {\n this.showList(!isOpen);\n } else if (this.isOpen) {\n this.showList(false);\n }\n\n this.searchInputElement?.nativeElement.focus();\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n onInputKeydownHandler(event: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this.showList(true);\n }\n\n if (this.isOpen && this.listComponent) {\n this.listComponent.setItemActive(0);\n } else if (!this.isOpen) {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this.toggleSelectionByInputText();\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this.showList(false);\n } else if (!KeyUtil.isKeyCode(event, [...this._nonOpeningKeys, CONTROL])) {\n this.showList(true);\n const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') && !KeyUtil.isKeyType(event, 'numeric');\n if (acceptedKeys) {\n // SetTimeout is needed for input to receive new value.\n setTimeout(() => {\n if (this.isEmptyValue) {\n this.listComponent?.setItemActive(0);\n }\n });\n }\n }\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this.searchInputElement?.nativeElement.focus();\n }\n }\n\n /**\n * @hidden\n * Method to emit change event\n */\n _emitChangeEvent(): void {\n const event = new MultiComboboxSelectionChangeEvent(this, this.value);\n\n this.selectionChange.emit(event);\n }\n\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n protected setValue(value: any, emitOnChange = true): void {\n this.selectedItems = coerceArraySafe(value);\n super.setValue(this.selectedItems, emitOnChange);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /** @hidden */\n protected _setSelectedSuggestions(): void {\n this._selectedSuggestions = [];\n\n if (!this.selectedItems?.length) {\n return;\n }\n\n for (let i = 0; i < this.selectedItems.length; i++) {\n const selectedItem = this.selectedItems[i];\n const finder = (item: SelectableOptionItem): boolean =>\n item.label === selectedItem || item.value === selectedItem;\n const idFromFullFlatSuggestions = this._fullFlatSuggestions.findIndex(finder);\n const idFromSuggestions = (this._suggestions || []).findIndex(finder);\n const itemIndex = Math.max(idFromFullFlatSuggestions, idFromSuggestions);\n const collection = idFromFullFlatSuggestions !== -1 ? this._fullFlatSuggestions : this._suggestions;\n if (idFromFullFlatSuggestions === -1 && idFromSuggestions === -1) {\n this._convertToOptionItems([selectedItem]).forEach((optionItem: SelectableOptionItem) => {\n optionItem.selected = true;\n this._selectedSuggestions.push(optionItem);\n });\n } else if (\n this._suggestions &&\n collection === this._suggestions &&\n !this._fullFlatSuggestions.includes(collection[itemIndex])\n ) {\n this._fullFlatSuggestions.push(collection[itemIndex]);\n }\n if (itemIndex > -1) {\n this._selectedSuggestions.push(collection[itemIndex]);\n collection[itemIndex].selected = true;\n }\n }\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n protected get ds(): MultiComboBoxDataSource<any> {\n return this.dataSource as MultiComboBoxDataSource<any>;\n }\n\n /** @hidden */\n protected _focusToSearchField(): void {\n this.searchInputElement?.nativeElement.focus();\n }\n\n /** @hidden\n * Method that picks other value moved from current one by offset, called only when Multi Combobox is closed */\n private _chooseOtherItem(offset: number): void {\n if (this._selectedSuggestions?.length === this._flatSuggestions.length) {\n this.inputText = '';\n return;\n }\n\n const activeValue = this._getSelectItemByInputValue(this.inputText);\n const index = this._flatSuggestions.findIndex((value) => value === activeValue);\n const position = !this.inputText && offset === -1 ? this._flatSuggestions.length - 1 : index + offset;\n const item = this._flatSuggestions[position];\n\n if (item) {\n this.setInputTextFromOptionItem(item);\n }\n\n const selectedIndex = this._selectedSuggestions.findIndex((value) => value.label === item?.label);\n if (selectedIndex !== -1) {\n this._chooseOtherItem(offset);\n }\n }\n\n /** @hidden */\n protected _getSelectItemByInputValue(displayValue: string): SelectableOptionItem | undefined {\n return this._flatSuggestions.find((value) => value.label === displayValue);\n }\n\n /** @hidden\n * Map grouped values to array. */\n protected _flattenGroups(items: SelectableOptionItem[]): SelectableOptionItem[] {\n return items.reduce((result, item) => result.concat(item.children ?? []), <SelectableOptionItem[]>[]);\n }\n\n /** @hidden */\n private _initializeDataSource(ds: FdpMultiComboboxDataSource<any>): void {\n this._suggestions = [];\n this._flatSuggestions = [];\n\n if (isDataSource(this.dataSource)) {\n (this.dataSource as MultiComboBoxDataSource<any>).close();\n\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = null;\n }\n }\n // Convert whatever comes in as DataSource so we can work with it identically\n this._dataSource = this._openDataStream(ds);\n }\n\n /** @hidden */\n private _openDataStream(ds: FdpMultiComboboxDataSource<any>): MultiComboBoxDataSource<any> {\n const initDataSource = this._toDataStream(ds);\n let isInitDataSource = true;\n\n if (initDataSource === undefined) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n\n initDataSource.limitless = this.limitless;\n\n /**\n * This is single point of data entry to the component. We dont want to set data on different\n * places. If any new data comes in either you do a search and you want to pass initial data\n * its here.\n */\n this._dsSubscription = new Subscription();\n const dsSub = initDataSource\n .open()\n .pipe(skip(1), takeUntil(this._destroyed))\n .subscribe((data) => {\n if (data.length === 0) {\n this._processingEmptyData();\n\n return;\n } else {\n this._previousInputText = this.inputText;\n }\n\n this._suggestions = this._convertToOptionItems(data).map((optionItem: SelectableOptionItem) => {\n const selectedElement = this._selectedSuggestions.find(\n (selectedItem: SelectableOptionItem) => selectedItem.id === optionItem.id\n );\n if (selectedElement) {\n optionItem.selected = selectedElement.selected;\n }\n return optionItem;\n });\n\n this._flatSuggestions = this.isGroup ? this._flattenGroups(this._suggestions) : this._suggestions;\n\n if (isInitDataSource) {\n this._fullFlatSuggestions = this._flatSuggestions;\n isInitDataSource = false;\n }\n\n const selectedSuggestionsLength = this._selectedSuggestions.length;\n if (selectedSuggestionsLength > 0) {\n for (let i = 0; i < selectedSuggestionsLength; i++) {\n const selectedSuggestion = this._selectedSuggestions[i];\n const idx = this._suggestions.findIndex((item) => equal(item.value, selectedSuggestion.value));\n\n if (idx !== -1) {\n this._suggestions[idx].selected = true;\n }\n }\n }\n\n this.stateChanges.next('initDataSource.open().');\n\n this._cd.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n\n this._dsSubscription.add(initDataSource.onDataRequested().subscribe(this.onDataRequested));\n this._dsSubscription.add(initDataSource.onDataReceived().subscribe(this.onDataReceived));\n\n initDataSource.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.secondaryKey) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n initDataSource.dataProvider.setMatchingBy(matchingBy);\n initDataSource.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n\n if (!this.limitless) {\n map.set('limit', MAP_LIMIT);\n }\n\n initDataSource.match(map);\n\n return initDataSource;\n }\n\n /** @hidden */\n private _processingEmptyData(): void {\n this._cd.detectChanges();\n\n this.inputText = this._previousInputText;\n\n this._setInvalidEntry();\n\n if (this._timerSub$) {\n this._timerSub$.unsubscribe();\n }\n\n this._timerSub$ = timer(3000).subscribe(() => this._unsetInvalidEntry());\n }\n\n /** @hidden */\n private _setInvalidEntry(): void {\n if (this._previousState || this._previousStateMessage) {\n return;\n }\n\n this._previousState = this.state;\n this.state = 'error';\n\n this._previousStateMessage = this.stateMessage;\n this.stateMessage = this.invalidEntryMessage;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n private _unsetInvalidEntry(): void {\n this.state = this._previousState;\n this._previousState = undefined;\n\n this.stateMessage = this._previousStateMessage;\n this._previousStateMessage = undefined;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n private _toDataStream(source: FdpMultiComboboxDataSource<any>): MultiComboBoxDataSource<any> | undefined {\n if (isDataSource(source)) {\n return source as MultiComboBoxDataSource<any>;\n }\n\n if (Array.isArray(source)) {\n return new ArrayMultiComboBoxDataSource<any>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableMultiComboBoxDataSource<any>(source);\n }\n\n return undefined;\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = (this._element.querySelector('fd-input-group') as HTMLElement).getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = this.autoResize ? window.innerWidth - scrollBarWidth - rect.left : this.minWidth;\n this.minWidth = rect.width - 2;\n this._cd.markForCheck();\n }\n\n /**\n * Convert original data to SelectableOptionItems Interface\n * @hidden\n */\n private _convertToOptionItems(items: any[]): SelectableOptionItem[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isSelectableOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as SelectableOptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to SelectableOptionItems Interface\n * @hidden\n */\n private _convertObjectsToOptionItems(items: any[]): SelectableOptionItem[] {\n if (this.isGroup) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n protected _convertObjectsToGroupOptionItems<K>(items: K[]): SelectableOptionItem[] {\n const group: { [key: string]: K[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: SelectableOptionItem = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.secondaryKey) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n\n return selectItem;\n });\n }\n\n /**\n * Convert object[] data to Secondary SelectableOptionItems Interface\n * @hidden\n */\n private _convertObjectsToSecondaryOptionItems<K>(items: K[]): SelectableOptionItem[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n id: this.lookupValue(value),\n secondaryText: this.objectGet(value, this.secondaryKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to SelectableOptionItems Interface\n * @hidden\n */\n private _convertPrimitiveToOptionItems(items: any[]): SelectableOptionItem[] {\n const selectItems: SelectableOptionItem[] = [];\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: value,\n id: this.lookupValue(value),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert object[] to SelectableOptionItems Interface (Default)\n * @hidden\n */\n private _convertObjectsToDefaultOptionItems(items: any[]): SelectableOptionItem[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: this.displayValue(value),\n id: this.lookupValue(value),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * @hidden\n * Assign custom templates\n */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.getName()) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\nimport { SelectableOptionItem } from '@fundamental-ngx/platform/shared';\n\nexport const MULTICOMBOBOX_COMPONENT = new InjectionToken<string[]>('MultiComboboxInterface');\n\n/**\n * Combobox Interface to have typing and avoid circular dependency between\n * MultiComboboxComponent <==> MultiComboboxMobileComponent\n */\nexport interface MultiComboboxInterface extends MobileMode {\n _suggestions: SelectableOptionItem[];\n _selectedSuggestions: SelectableOptionItem[];\n selectedShown$: BehaviorSubject<boolean>;\n openChange: Subject<boolean>;\n\n moreClicked(): void;\n dialogApprove(): void;\n dialogDismiss(backup: SelectableOptionItem[]): void;\n searchTermChanged(term?: string): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { SelectableOptionItem } from '@fundamental-ngx/platform/shared';\nimport { MULTICOMBOBOX_COMPONENT, MultiComboboxInterface } from '../../multi-combobox.interface';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-multi-combobox-mobile',\n templateUrl: './multi-combobox-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiComboboxMobileComponent extends MobileModeBase<MultiComboboxInterface> implements OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n selectedShown$ = this._component.selectedShown$;\n\n /** @hidden */\n private _selectedBackup: SelectableOptionItem[];\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n @Inject(MULTICOMBOBOX_COMPONENT) multiComboboxComponent: MultiComboboxInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, multiComboboxComponent, MobileModeControl.MULTI_COMBOBOX, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiComboboxOpenChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.onDestroy();\n }\n\n /** @hidden */\n showSelected(): void {\n const isSelectedShown = this.selectedShown$.getValue();\n\n if (isSelectedShown) {\n this._component.searchTermChanged();\n this.selectedShown$.next(false);\n return;\n }\n\n this._component.moreClicked();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n return;\n }\n\n this._selectedBackup = this._component._selectedSuggestions?.length\n ? [...this._component._selectedSuggestions]\n : [];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiComboboxOpenChange(): void {\n this._component.openChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n escKeyCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title fd-dialog-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n\n <button\n *ngIf=\"selectedShown$ | async\"\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"emphasized\"\n [title]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n\n <button\n *ngIf=\"(selectedShown$ | async) === false\"\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"transparent\"\n [title]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { MultiComboboxMobileComponent } from './multi-combobox/multi-combobox-mobile.component';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n declarations: [MultiComboboxMobileComponent],\n imports: [BarModule, DialogModule, ButtonModule, CommonModule, I18nModule],\n entryComponents: [MultiComboboxMobileComponent],\n exports: [MultiComboboxMobileComponent]\n})\nexport class PlatformMultiComboboxMobileModule {}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { A, DOWN_ARROW, ENTER, ESCAPE, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n Inject,\n Injector,\n OnInit,\n Optional,\n Self,\n SkipSelf,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n isDevMode\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport equal from 'fast-deep-equal';\n\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport {\n DATA_PROVIDERS,\n DataProvider,\n MultiComboBoxDataSource,\n OptionItem,\n PlatformFormField,\n PlatformFormFieldControl,\n SelectableOptionItem\n} from '@fundamental-ngx/platform/shared';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { TokenizerComponent } from '@fundamental-ngx/core/token';\nimport { AutoCompleteEvent } from '../../auto-complete/auto-complete.directive';\nimport { BaseMultiCombobox, MAP_LIMIT } from '../commons/base-multi-combobox';\nimport { PlatformMultiComboboxMobileModule } from '../multi-combobox-mobile/multi-combobox-mobile.module';\nimport { MultiComboboxMobileComponent } from '../multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component';\nimport { MultiComboboxConfig } from '../multi-combobox.config';\nimport { MULTICOMBOBOX_COMPONENT } from '../multi-combobox.interface';\n\nlet deprecationWarningShown = false;\n\n/**\n * This component can work with both string primitives as well as with complex objects. In order\n * to use objects user must provide an unique ID to lookupkey, which will be used in comparing\n * each items of array. It is important to provide lookupkey value as there might be multiple\n * items with same name but different properties which is to be differently identified otherwise\n * it will be treated as same objects.\n */\n\n@Component({\n selector: 'fdp-multi-combobox',\n templateUrl: './multi-combobox.component.html',\n styleUrls: ['./multi-combobox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: FD_FORM_FIELD_CONTROL,\n useExisting: MultiComboboxComponent,\n multi: true\n },\n contentDensityObserverProviders()\n ]\n})\nexport class MultiComboboxComponent extends BaseMultiCombobox implements OnInit, AfterViewInit {\n /** @hidden */\n @ViewChild('mobileControlTemplate')\n mobileControlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n _tokenizer: TokenizerComponent;\n\n /**\n * @hidden\n * List of selected suggestions\n */\n _selectedSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n readonly elementRef: ElementRef,\n @Optional() @Self() readonly ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() readonly ngForm: NgForm,\n @Optional() readonly dialogConfig: DialogConfig,\n readonly _dynamicComponentService: DynamicComponentService,\n @Optional() @Inject(DATA_PROVIDERS) private _providers: Map<string, DataProvider<any>>,\n readonly _multiComboboxConfig: MultiComboboxConfig,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n @Inject(MAP_LIMIT) _mapLimit: number,\n readonly contentDensityObserver: ContentDensityObserver\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n dialogConfig,\n _multiComboboxConfig,\n formField,\n formControl,\n _mapLimit\n );\n\n if (!deprecationWarningShown && isDevMode()) {\n console.warn(\n `[DEPRECATION] Platform Multi Combobox component is deprecated since v0.39.0. Please migrate to Core's version.`\n );\n deprecationWarningShown = true;\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n\n const providers = this._providers?.size === 0 ? this._multiComboboxConfig.providers : this._providers;\n // if we have both prefer dataSource\n if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) {\n this.dataSource = new MultiComboBoxDataSource(providers.get(this.entityClass)!);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n\n this._setSelectedSuggestions();\n\n this._tokenizer._showOverflowPopover = false;\n }\n\n /** @hidden */\n toggleSelection(item: SelectableOptionItem): void {\n const idx = this._getTokenIndexByIdlOrValue(item);\n\n if (idx === -1) {\n this._selectedSuggestions.push(item);\n } else {\n this._selectedSuggestions.splice(idx, 1);\n }\n\n item.selected = !item.selected;\n\n this._propagateChange();\n\n if (!this._selectedSuggestions.length) {\n this._focusToSearchField();\n }\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n onOptionCheckboxClicked(event: MouseEvent, index: number): void {\n event.stopPropagation();\n this._onListElementClicked(event, index);\n }\n\n /** @hidden */\n onCompleteTerm(event: AutoCompleteEvent): void {\n if (event.forceClose) {\n this.toggleSelectionByInputText(event.term);\n this.close();\n }\n }\n\n /** @hidden */\n toggleSelectionByInputText(text = this.inputText): void {\n const item = this._getSelectItemByInputValue(text);\n if (item) {\n this.toggleSelection(item);\n this.inputText = '';\n }\n }\n\n /**\n * @hidden\n * Method that selects all possible options.\n * *select* attribute – if *true* select all, if *false* unselect all\n * */\n handleSelectAllItems(select: boolean): void {\n this._flatSuggestions.forEach((item) => (item.selected = select));\n this._selectedSuggestions = select ? [...this._flatSuggestions] : [];\n this._rangeSelector.reset();\n\n this._propagateChange();\n }\n\n /** @hidden */\n navigateByTokens(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW]) && this.isOpen) {\n this.listComponent.items?.first.focus();\n }\n }\n\n /** @hidden */\n removeToken(token: SelectableOptionItem, event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n }\n this.toggleSelection(token);\n this._rangeSelector.reset();\n }\n\n /** @hidden */\n moreClicked(): void {\n this._suggestions = this.isGroup\n ? this._convertObjectsToGroupOptionItems(this._selectedSuggestions.map(({ value }) => value))\n : this._suggestions.filter((value) =>\n this._selectedSuggestions.some((item) => equal(item.value, value.value))\n );\n\n this.showList(true);\n this.selectedShown$.next(true);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n onBlur(event: FocusEvent): void {\n const target = event.relatedTarget as HTMLElement;\n if (target) {\n const isList = !!target.closest('.fdp-multi-combobox__list-container');\n if (isList) {\n return;\n }\n if (\n this._suggestions?.length === 1 &&\n this._suggestions[0].label === this.inputText &&\n !this._suggestions[0].selected\n ) {\n this.toggleSelection(this._suggestions[0]);\n }\n this.showList(false);\n this.inputText = '';\n }\n }\n\n /**\n * @hidden\n * Method to set input text as item label.\n */\n setInputTextFromOptionItem(item: OptionItem): void {\n this.inputText = item.label;\n\n if (this.mobile) {\n return;\n }\n\n this.showList(false);\n }\n\n /** @hidden */\n onItemKeyDownHandler(event: KeyboardEvent, index: number): void {\n if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this._focusToSearchField();\n this.close();\n } else if ((event.ctrlKey || event.metaKey) && event.shiftKey && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this.handleSelectAllItems(false);\n } else if ((event.ctrlKey || event.metaKey) && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this.handleSelectAllItems(true);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n if (!this.mobile) {\n this.close();\n }\n this._rangeSelector.reset();\n } else if (KeyUtil.isKeyCode(event, SPACE)) {\n this._rangeSelector.reset();\n }\n }\n\n /** @hidden */\n onOptionClicked(event: MouseEvent, index: number): void {\n this._onListElementClicked(event, index);\n this.close();\n }\n\n /** @hidden */\n _addOnClicked(event: Event): void {\n this.addOnButtonClicked.emit(event);\n if (!this.mobile) {\n this.onPrimaryButtonClick(this.isOpen);\n }\n }\n\n /** @hidden Handle dialog dismissing, closes popover and sets backup data. */\n dialogDismiss(backup: SelectableOptionItem[]): void {\n this._selectedSuggestions = [...backup];\n this.inputText = '';\n this.showList(false);\n this.selectedShown$.next(false);\n }\n\n /** @hidden Handle dialog approval, closes popover and propagates data changes. */\n dialogApprove(): void {\n this.inputText = '';\n this.showList(false);\n this._propagateChange(true);\n }\n\n /**\n * @hidden\n * applying range selection. Note, that this function will be invoked after combobox item's value has been changed\n */\n private _onListElementClicked(event: MouseEvent, index: number): void {\n // value has been changed at this point, so it can be safely used\n const selectionState = this._suggestions[index].selected;\n this._rangeSelector.onRangeElementToggled(index, event);\n const toRemoveSet = new Set();\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const current = this._suggestions[idx];\n if (current.selected !== selectionState) {\n if (current.selected) {\n // removing from \"_selectedSuggestions\" list\n toRemoveSet.add(current.value);\n } else {\n // adding current item to \"_selectedSuggestions\"\n this._selectedSuggestions.push(current);\n }\n current.selected = selectionState;\n }\n });\n this._selectedSuggestions = this._selectedSuggestions.filter((s) => !toRemoveSet.has(s.value));\n // selected items should be displayed in the same order as options\n const valueIndexes = new Map<any, number>(this._suggestions.map((s, i) => [s.value, i]));\n this._selectedSuggestions.sort((a, b) => valueIndexes.get(a.value)! - valueIndexes.get(b.value)!);\n this._tokenizer.onResize();\n\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollLeft =\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n private _getTokenIndexByIdlOrValue(item: SelectableOptionItem): number {\n return this._selectedSuggestions.findIndex((token) => token.id === item.id || equal(token.value, item.value));\n }\n\n /** @hidden */\n private _mapAndUpdateModel(): void {\n const selectedItems = this._selectedSuggestions.map(({ value }) => value);\n\n // setting value, it will call setValue()\n this.value = selectedItems;\n }\n\n /** @hidden */\n private _propagateChange(emitInMobile?: boolean): void {\n if (!this.mobile || emitInMobile) {\n this.onChange(this._selectedSuggestions);\n this._mapAndUpdateModel();\n }\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTICOMBOBOX_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n await this._dynamicComponentService.createDynamicModule(\n { listTemplate: this.listTemplate, controlTemplate: this.mobileControlTemplate },\n PlatformMultiComboboxMobileModule,\n MultiComboboxMobileComponent,\n this._viewContainerRef,\n injector\n );\n }\n}\n","<div class=\"fdp-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fdp-multi-combobox__list-container\"\n (isOpenChange)=\"popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && onPrimaryButtonClick(false)\"\n (keydown)=\"navigateByTokens($event)\"\n >\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"true\"\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n class=\"fdp-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"ariaLabel || ('coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n [attr.aria-required]=\"required\"\n class=\"fd-tokenizer__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel\"\n >\n <input\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"ariaLabel || ('coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"!mobile && onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-multi-combobox__list fd-list--multi-input\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width]=\"!mobile && minWidth + 'px'\"\n [style.max-width]=\"autoResize && maxWidth + 'px'\"\n [attr.aria-labelledby]=\"id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup; else plainList\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <label fd-list-item fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n (click)=\"!mobile && close()\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-template #plainList>\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n (click)=\"!mobile && onOptionClicked($event, i)\"\n (keydown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { CheckboxModule } from '@fundamental-ngx/core/checkbox';\nimport { DynamicComponentService, TemplateModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { MultiAnnouncerModule } from '@fundamental-ngx/core/multi-combobox';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { TokenModule } from '@fundamental-ngx/core/token';\nimport { I18nModule } from '@fundamental-ngx/i18n';\nimport { PlatformListModule, StandardListItemModule } from '@fundamental-ngx/platform/list';\nimport { MultiComboboxComponent } from './multi-combobox/multi-combobox.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n declarations: [MultiComboboxComponent],\n imports: [\n CommonModule,\n FormsModule,\n CheckboxModule,\n InputGroupModule,\n PipeModule,\n TokenModule,\n ListModule,\n ButtonModule,\n FormModule,\n PopoverModule,\n PlatformListModule,\n StandardListItemModule,\n PlatformAutoCompleteModule,\n I18nModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule,\n MultiAnnouncerModule\n ],\n providers: [DynamicComponentService],\n exports: [MultiComboboxComponent, TemplateModule, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformMultiComboboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { InitialFocusModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { TokenModule } from '@fundamental-ngx/core/token';\nimport { PlatformListModule, StandardListItemModule } from '@fundamental-ngx/platform/list';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\n\nimport { PlatformMultiInputComponent } from './multi-input.component';\nimport { PlatformAutoCompleteModule } from '../auto-complete/auto-complete.module';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { MultiAnnouncerModule } from '@fundamental-ngx/core/multi-combobox';\n\n@NgModule({\n declarations: [PlatformMultiInputComponent],\n imports: [\n CommonModule,\n FormsModule,\n PlatformListModule,\n StandardListItemModule,\n TokenModule,\n PipeModule,\n PopoverModule,\n InputGroupModule,\n PlatformAutoCompleteModule,\n FormModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule,\n InitialFocusModule,\n MultiAnnouncerModule\n ],\n exports: [PlatformMultiInputComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformMultiInputModule {}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\nimport { BusyIndicatorModule } from '@fundamental-ngx/core/busy-indicator';\nimport { PlatformButtonModule } from '@fundamental-ngx/platform/button';\nimport { SkeletonModule } from '@fundamental-ngx/core/skeleton';\nimport { FormGeneratorComponentsAccessorService } from './form-generator-components-accessor.service';\nimport { FormGeneratorComponent } from './form-generator/form-generator.component';\nimport { DynamicFormControlFieldDirective } from './dynamic-form-control-field.directive';\nimport { PlatformInputModule } from '../input/fdp-input.module';\nimport { FdpFormGroupModule } from '../form-group/fdp-form.module';\nimport { PlatformCheckboxGroupModule } from '../checkbox-group/checkbox-group.module';\nimport { PlatformSelectModule } from '../select/select.module';\nimport { PlatformRadioGroupModule } from '../radio-group/radio-group.module';\nimport { PlatformTextAreaModule } from '../text-area/text-area.module';\nimport { PlatformDatePickerModule } from '../date-picker/date-picker.module';\nimport { PlatformSwitchModule } from '../switch/switch.module';\nimport { DynamicFormControlDirective } from './dynamic-form-control.directive';\nimport { DynamicFormGeneratorCheckboxComponent } from './controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component';\nimport { DynamicFormGeneratorInputComponent } from './controls/dynamic-form-generator-input/dynamic-form-generator-input.component';\nimport { DynamicFormGeneratorEditorComponent } from './controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component';\nimport { DynamicFormGeneratorSelectComponent } from './controls/dynamic-form-generator-select/dynamic-form-generator-select.component';\nimport { DynamicFormGeneratorRadioComponent } from './controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component';\nimport { DynamicFormGeneratorDatepickerComponent } from './controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component';\nimport { DynamicFormGeneratorSwitchComponent } from './controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component';\nimport { FormGeneratorService } from './form-generator.service';\nimport { FormGeneratorFieldComponent } from './form-generator-field/form-generator-field.component';\nimport { DynamicFormGeneratorMultiInputComponent } from './controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component';\nimport { FormGeneratorModuleConfig } from './interfaces/form-generator-module-config';\nimport { GetOrderedFieldControlsPipe } from './pipes/get-ordered-form-controls.pipe';\nimport { PlatformMultiComboboxModule } from '../multi-combobox/multi-combobox.module';\nimport { PlatformMultiInputModule } from '../multi-input/multi-input.module';\nimport {\n defaultFormGeneratorConfigProvider,\n defaultFormGeneratorItemConfigProvider,\n FORM_GENERATOR_CONFIG,\n FORM_GENERATOR_ITEM_CONFIG\n} from './providers/providers';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { DynamicFormGeneratorObjectStatusComponent } from './controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component';\nimport { PlatformObjectStatusModule } from '@fundamental-ngx/platform/object-status';\n\n/**\n * Adds Form Generator functionality to your application.\n *\n * Can be imported in two ways:\n * * Plain PlatformFormGeneratorModule with default configuration\n * * With `withConfig()` method which allows passing custom default configuration.\n */\n@NgModule({\n declarations: [\n FormGeneratorComponent,\n DynamicFormControlFieldDirective,\n DynamicFormControlDirective,\n DynamicFormGeneratorCheckboxComponent,\n DynamicFormGeneratorInputComponent,\n DynamicFormGeneratorEditorComponent,\n DynamicFormGeneratorSelectComponent,\n DynamicFormGeneratorRadioComponent,\n DynamicFormGeneratorDatepickerComponent,\n DynamicFormGeneratorSwitchComponent,\n FormGeneratorFieldComponent,\n DynamicFormGeneratorMultiInputComponent,\n GetOrderedFieldControlsPipe,\n DynamicFormGeneratorObjectStatusComponent\n ],\n imports: [\n CommonModule,\n FdpFormGroupModule,\n PlatformInputModule,\n FormsModule,\n ReactiveFormsModule,\n PlatformButtonModule,\n PlatformCheckboxGroupModule,\n PlatformSelectModule,\n PlatformRadioGroupModule,\n PlatformTextAreaModule,\n PlatformInputModule,\n PlatformDatePickerModule,\n PlatformSwitchModule,\n FormMessageModule,\n BusyIndicatorModule,\n PlatformMultiComboboxModule,\n PlatformMultiInputModule,\n ContentDensityModule,\n SkeletonModule,\n ListModule,\n PlatformObjectStatusModule\n ],\n providers: [\n FormGeneratorService,\n FormGeneratorComponentsAccessorService,\n defaultFormGeneratorItemConfigProvider,\n defaultFormGeneratorConfigProvider\n ],\n exports: [\n FormGeneratorComponent,\n DynamicFormControlFieldDirective,\n DynamicFormControlDirective,\n DynamicFormGeneratorCheckboxComponent,\n DynamicFormGeneratorInputComponent,\n DynamicFormGeneratorEditorComponent,\n DynamicFormGeneratorSelectComponent,\n DynamicFormGeneratorRadioComponent,\n DynamicFormGeneratorDatepickerComponent,\n DynamicFormGeneratorSwitchComponent,\n FormGeneratorFieldComponent,\n ContentDensityModule,\n DynamicFormGeneratorObjectStatusComponent\n ]\n})\nexport class PlatformFormGeneratorModule {\n /**\n * Allows configuring module on a global level with custom configuration.\n * @param config User's custom configuration.\n */\n static withConfig(config: Partial<FormGeneratorModuleConfig>): ModuleWithProviders<PlatformFormGeneratorModule> {\n return {\n ngModule: PlatformFormGeneratorModule,\n providers: [\n {\n provide: FORM_GENERATOR_ITEM_CONFIG,\n useValue: config.itemConfig\n },\n {\n provide: FORM_GENERATOR_CONFIG,\n useValue: config.formConfig\n }\n ]\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const CSS_CLASS_NAME = {\n host: 'fdp-input-group',\n input: 'fd-input-group__input',\n addon: 'fd-input-group__addon',\n addonButton: 'fd-input-group__addon--button',\n button: 'fd-input-group__button'\n} as const;\n\nexport const INPUT_GROUP_CHILD_TOKEN = new InjectionToken<string>('INPUT_GROUP_CHILD_TOKEN');\n","import {\n Component,\n ViewChild,\n TemplateRef,\n ContentChild,\n ElementRef,\n Renderer2,\n AfterContentInit,\n Provider,\n forwardRef,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { ButtonComponent } from '@fundamental-ngx/platform/button';\n\nimport { CSS_CLASS_NAME, INPUT_GROUP_CHILD_TOKEN } from './constants';\n\nexport const inputGroupAddonChildProvider: Provider = {\n provide: INPUT_GROUP_CHILD_TOKEN,\n useExisting: forwardRef(() => InputGroupAddonComponent)\n};\n\n/**\n * Fundamental input group addon component\n *\n * This component is intended to be used inside `<fdp-input-group>`\n *\n *\n * Input group addon can contain a plain text:\n * ```\n * <fdp-input-group-addon>$</fdp-input-group-addon>\n * ```\n * Icon:\n * ```\n * <fdp-input-group-addon><i class=\"sap-icon--employee\"></i></fdp-input-group-addon>\n * ```\n * Button component:\n * ```\n * <fdp-input-group-addon><fdp-button label=\"Action\"></fdp-button></fdp-input-group-addon>\n * ```\n *\n */\n@Component({\n selector: 'fdp-input-group-addon',\n template: '<ng-template><ng-content></ng-content></ng-template>',\n providers: [inputGroupAddonChildProvider],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputGroupAddonComponent implements AfterContentInit {\n /** @hidden */\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this._setButtonControlOptions();\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /** @hidden */\n @ViewChild(TemplateRef)\n contentTemplateRef: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(ButtonComponent)\n button: ButtonComponent;\n\n /** @hidden */\n @ContentChild(ButtonComponent, { read: ElementRef })\n set buttonElementRef(buttonComponentElementRef: ElementRef<HTMLElement>) {\n this._setButtonElementClass(buttonComponentElementRef?.nativeElement);\n }\n\n /** @hidden */\n private _disabled = false;\n\n /** @hidden */\n constructor(private _renderer: Renderer2) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setButtonControlOptions();\n }\n\n /** @hidden */\n private _setButtonControlOptions(): void {\n const button = this.button;\n\n if (!button) {\n return;\n }\n\n // button.contentDensity = this._contentDensity;\n button.disabled = this._disabled;\n\n button.markForCheck();\n }\n\n /** @hidden */\n private _setButtonElementClass(buttonComponentElement: HTMLElement): void {\n if (!buttonComponentElement) {\n return;\n }\n const button = buttonComponentElement.querySelector('button');\n this._renderer.addClass(button, CSS_CLASS_NAME.button);\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport { CSS_CLASS_NAME } from './constants';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\n/**\n * Fundamental input group addon body component\n */\n@Component({\n selector: 'fdp-input-group-addon-body',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()]\n})\nexport class InputGroupAddonBodyComponent implements OnInit {\n /**\n * indicates if addon contains a button\n */\n @Input()\n set hasButton(hasButton: boolean) {\n if (hasButton) {\n this._addClassNameToHostElement(CSS_CLASS_NAME.addonButton);\n } else {\n this._removeClassNameFromHostElement(CSS_CLASS_NAME.addonButton);\n }\n }\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private contentDensityObserver: ContentDensityObserver\n ) {\n contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(CSS_CLASS_NAME.addon);\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n this._renderer.addClass(this._elementRef.nativeElement, className);\n }\n\n /** @hidden */\n private _removeClassNameFromHostElement(className: string): void {\n this._renderer.removeClass(this._elementRef.nativeElement, className);\n }\n}\n","import { Provider, forwardRef, Component, Input, ChangeDetectionStrategy } from '@angular/core';\n\nimport { InputType } from '../input/input.component';\nimport { INPUT_GROUP_CHILD_TOKEN } from './constants';\n\n/**\n * fdp-input-group needs it's own input component to\n * register INPUT_GROUP_CHILD in order to render\n * input group content children in the order that they are placed\n *\n */\n\nexport const inputGroupInputChildProvider: Provider = {\n provide: INPUT_GROUP_CHILD_TOKEN,\n useExisting: forwardRef(() => InputGroupInputComponent)\n};\n\n/**\n * Fundamental input group input component\n *\n * This component is intended to be used inside `<fdp-input-group>`\n *\n * Example:\n * ```\n * <fdp-input-group name=\"group\">\n * <fdp-input-group-input type=\"email\"></fdp-input-group-input>\n * </fdp-input-group>\n * ```\n *\n */\n@Component({\n selector: 'fdp-input-group-input',\n template: '',\n providers: [inputGroupInputChildProvider],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputGroupInputComponent {\n /** InputType 'text' | 'number' | 'email' | 'password' */\n @Input()\n type: InputType = 'text';\n}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { PlatformConfig } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for platform input group\n */\n@Injectable({ providedIn: 'root' })\nexport class InputGroupConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * Create Provider factory function\n */\n static createProviderFactory(obj: Partial<InputGroupConfig>): (platformConfig: PlatformConfig) => InputGroupConfig {\n const useFactory = (platformConfig: PlatformConfig): InputGroupConfig =>\n Object.assign(new InputGroupConfig(platformConfig), obj);\n return useFactory;\n }\n\n /** @hidden */\n constructor(platformConfig: PlatformConfig) {\n this.contentDensity = platformConfig.contentDensity;\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n forwardRef,\n Host,\n Inject,\n Input,\n OnInit,\n Optional,\n QueryList,\n Renderer2,\n Self,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { startWith } from 'rxjs/operators';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { InputComponent } from '../input/input.component';\n\nimport { CSS_CLASS_NAME, INPUT_GROUP_CHILD_TOKEN } from './constants';\nimport { InputGroupConfig } from './input-group.config';\nimport { InputGroupAddonComponent } from './addon.component';\nimport { InputGroupInputComponent } from './input.component';\n\n/**\n * Fundamental input group component\n *\n * ```html\n * <fdp-input-group>\n * <fdp-input-group-addon>$</fdp-input-group-addon>\n * <fdp-input-group-input type=\"number\"></fdp-input-group-input>\n * <fdp-input-group-addon>0.00</fdp-input-group-addon>\n * </fdp-input-group>\n * ```\n *\n */\n@Component({\n selector: 'fdp-input-group',\n templateUrl: './input-group.component.html',\n styleUrls: ['./input-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: FD_FORM_FIELD_CONTROL, useExisting: forwardRef(() => InputGroupComponent), multi: true },\n contentDensityObserverProviders()\n ]\n})\nexport class InputGroupComponent extends BaseInput implements OnInit, AfterContentInit, AfterViewInit {\n /** Input value */\n @Input()\n set value(value: any) {\n super.setValue(value);\n }\n get value(): any {\n return super.getValue();\n }\n\n /** @hidden */\n @ContentChildren(INPUT_GROUP_CHILD_TOKEN)\n _children: QueryList<InputGroupInputComponent | InputGroupAddonComponent>;\n\n /** @hidden */\n @ContentChild(InputGroupInputComponent)\n _input: InputGroupInputComponent;\n\n /** @hidden */\n @ViewChild(InputComponent, { read: ElementRef })\n set _inputComponentElement(inputComponentElementRef: ElementRef<HTMLElement>) {\n this._setInputElementClass(inputComponentElementRef?.nativeElement);\n }\n\n /** @hidden */\n _beforeInputAddons: InputGroupAddonComponent[] = [];\n\n /** @hidden */\n _afterInputAddons: InputGroupAddonComponent[] = [];\n\n /** @hidden */\n get _controlStateClass(): string | null {\n const state = this.state;\n return state ? `is-${state}` : null;\n }\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n private _renderer: Renderer2,\n protected _hostElementRef: ElementRef<HTMLElement>,\n protected _inputGroupConfig: InputGroupConfig\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n /**\n * Assign predefined className to host element\n * to make css selector stronger\n */\n this._addClassNameToHostElement(CSS_CLASS_NAME.host);\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._listenToChildrenQueryListChanges();\n }\n\n /**\n * @hidden\n * override base functionality to catch new disabled state\n */\n setDisabledState(disabled: boolean): void {\n super.setDisabledState(disabled);\n this._setAddonsOptions();\n }\n\n /** @hidden */\n _onChangeInputValue(value: string): void {\n this.value = value;\n }\n\n /** @hidden */\n _onKeyPress(event: KeyboardEvent): void {\n // prevent typing non-digit chars\n if (this._input.type === 'number') {\n if (!event.key.match(/([0-9]|[-]|[,]|[.])/)) {\n event.preventDefault();\n }\n }\n }\n\n /** @hidden */\n private _listenToChildrenQueryListChanges(): void {\n this._children.changes.pipe(startWith(this._children)).subscribe(() => {\n this._createAddonsGroups();\n this._setAddonsOptions();\n });\n }\n\n /** @hidden */\n private _setInputElementClass(inputComponentElement: HTMLElement): void {\n if (!inputComponentElement) {\n return;\n }\n\n const inputElement = inputComponentElement.querySelector('input');\n this._renderer.addClass(inputElement, CSS_CLASS_NAME.input);\n }\n\n /** @hidden */\n private _createAddonsGroups(): void {\n const childrenList = this._children.toArray();\n const inputChildIndex = childrenList.findIndex((child) => this._isInputChild(child));\n\n // reset group's containers\n this._beforeInputAddons = [];\n this._afterInputAddons = [];\n\n childrenList.forEach((child, index) => {\n if (!this._isAddonChild(child)) {\n return;\n }\n if (index < inputChildIndex) {\n this._beforeInputAddons.push(child);\n }\n if (index > inputChildIndex) {\n this._afterInputAddons.push(child);\n }\n });\n }\n\n /** @hidden */\n private _isInputChild(child: unknown): child is InputGroupInputComponent {\n return child instanceof InputGroupInputComponent;\n }\n\n /** @hidden */\n private _isAddonChild(child: unknown): child is InputGroupAddonComponent {\n return child instanceof InputGroupAddonComponent;\n }\n\n /** @hidden */\n private _setAddonsOptions(): void {\n const before = this._beforeInputAddons || [];\n const after = this._afterInputAddons || [];\n [...before, ...after].forEach((addon) => {\n addon.disabled = this.disabled;\n });\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n this._renderer.addClass(this._hostElementRef.nativeElement, className);\n }\n}\n","<div class=\"fd-input-group\" [class.is-disabled]=\"disabled\" [class]=\"_controlStateClass\" [class.is-focus]=\"focused\">\n <!-- Before input addons area -->\n <fdp-input-group-addon-body *ngFor=\"let addon of _beforeInputAddons\">\n <ng-container *ngTemplateOutlet=\"addon.contentTemplateRef\"></ng-container>\n </fdp-input-group-addon-body>\n\n <!-- Input -->\n <ng-container *ngIf=\"_input\">\n <fdp-input\n [name]=\"name\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [type]=\"_input.type\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [required]=\"required\"\n (input)=\"_onChangeInputValue($any($event.target)?.value)\"\n (focusChange)=\"_onFocusChanged($event)\"\n (keypress)=\"_onKeyPress($event)\"\n ></fdp-input>\n </ng-container>\n\n <!-- After input addons area -->\n <fdp-input-group-addon-body *ngFor=\"let addon of _afterInputAddons\" [hasButton]=\"!!addon.button\">\n <ng-container *ngTemplateOutlet=\"addon.contentTemplateRef\"></ng-container>\n </fdp-input-group-addon-body>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\nimport { PlatformInputModule } from '../input/fdp-input.module';\nimport { InputGroupComponent } from './input-group.component';\nimport { InputGroupAddonComponent } from './addon.component';\nimport { InputGroupAddonBodyComponent } from './addon-body.component';\nimport { InputGroupInputComponent } from './input.component';\n\n@NgModule({\n declarations: [\n InputGroupComponent,\n InputGroupAddonComponent,\n InputGroupAddonBodyComponent,\n InputGroupInputComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n PlatformInputModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [\n PlatformInputModule,\n InputGroupComponent,\n InputGroupAddonComponent,\n InputGroupInputComponent,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ]\n})\nexport class PlatformInputGroupModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n isDevMode,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\n\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport class FileUploaderInvalidChangeEvent {\n /**\n * File Uploader invalid change event\n * @param source File Uploader component\n * @param payload Value\n */\n constructor(\n public source: PlatformFileUploaderComponent,\n public payload: File[] // Contains selected item\n ) {}\n}\n\nexport class FileUploaderSelectionChangeEvent {\n /**\n * File Uploader invalid change event\n * @param source File Uploader component\n * @param payload Value\n */\n constructor(\n public source: PlatformFileUploaderComponent,\n public payload: File[] // Contains selected item\n ) {}\n}\n\n@Component({\n selector: 'fdp-file-uploader',\n templateUrl: './platform-file-uploader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()]\n})\nexport class PlatformFileUploaderComponent extends BaseInput implements OnInit {\n /** Button value */\n @Input()\n buttonLabel: string;\n\n /** Value for input element. */\n @Input()\n buttonAriaLabel: Nullable<string>;\n\n /** Whether the file input accepts drag and dropped files. */\n @Input()\n dragndrop = true;\n\n /** Max file size in bytes that the input will accept. */\n @Input()\n maxFileSize = '';\n\n /** Min file size in bytes that the input will accept. */\n @Input()\n minFileSize = '';\n\n /** Whether the file input should accept multiple files. */\n @Input()\n multiple = true;\n\n /** Accepted file extensions. Format: `'.png,.jpg'`. */\n @Input()\n accept: string;\n\n /** Specifies number of files to allow to select */\n @Input()\n fileLimit: number;\n\n /**\n * @deprecated\n * set state of individual checkbox. Used by CBG to set checkbox states */\n @Input()\n set stateType(state: FormStates) {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n super.state = state;\n }\n get stateType(): FormStates {\n if (isDevMode()) {\n console.warn('\"stateType\" is deprecated. Use \"state\" instead');\n }\n return super.state;\n }\n\n /** Event emitted when valid file is uploded. */\n @Output()\n selectionChange: EventEmitter<FileUploaderSelectionChangeEvent> =\n new EventEmitter<FileUploaderSelectionChangeEvent>();\n /** Event emitted when invalid file is uploded. */\n @Output()\n invalidFileChange: EventEmitter<FileUploaderInvalidChangeEvent> =\n new EventEmitter<FileUploaderInvalidChangeEvent>();\n\n /** Files upladed hidden field to store file data */\n files: File[];\n\n /**\n * Control Value Accessor\n */\n writeValue(value: File): void {\n super.writeValue(value);\n }\n\n /** Sets value file data*/\n @Input()\n set value(value: File) {\n super.setValue(value);\n }\n get value(): File {\n return super.getValue();\n }\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n readonly contentDensityObserver: ContentDensityObserver\n ) {\n super(_cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n /** Handle valid file changes event handler */\n handleFileChange(fileArray: File[]): void {\n this.files = fileArray;\n const event = new FileUploaderSelectionChangeEvent(this, this.files);\n this.selectionChange.emit(event);\n }\n\n /** Handle invalid file changes event handler */\n handleInvalidFiles(fileArray: File[]): void {\n this.files = fileArray;\n const event = new FileUploaderInvalidChangeEvent(this, this.files);\n this.invalidFileChange.emit(event);\n }\n}\n","<fd-file-uploader\n [id]=\"id\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [placeholder]=\"placeholder\"\n [buttonLabel]=\"buttonLabel\"\n [buttonAriaLabel]=\"buttonAriaLabel\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [maxFileSize]=\"maxFileSize\"\n [minFileSize]=\"minFileSize\"\n [state]=\"state\"\n [required]=\"required\"\n [width]=\"width\"\n [(ngModel)]=\"value\"\n (selectedInvalidFiles)=\"handleInvalidFiles($event)\"\n (selectedFilesChanged)=\"handleFileChange($event)\"\n></fd-file-uploader>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FileUploaderModule } from '@fundamental-ngx/core/file-uploader';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PlatformFileUploaderComponent } from './platform-file-uploader.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n declarations: [PlatformFileUploaderComponent],\n imports: [\n CommonModule,\n FileUploaderModule,\n FormsModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformFileUploaderComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformFileUploaderModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Default options for platform step input\n */\n\n@Injectable({ providedIn: 'root' })\nexport class StepInputConfig {\n /**\n * ARIA label for increment button\n */\n incrementLabel = 'Increment';\n\n /**\n * ARIA label for decrement button\n */\n decrementLabel = 'Decrement';\n\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n}\n","export const addAndCutFloatingNumberDistortion = (value: number | null, step: number): number => {\n value = value || 0;\n const stepDecimals = `${step}`.split('.')[1];\n const valueDecimals = `${value}`.split('.')[1];\n const stepDecimalsLength = stepDecimals ? stepDecimals.length : 0;\n const valueDecimalsLength = valueDecimals ? valueDecimals.length : 0;\n const longestDecimal = Math.max(valueDecimalsLength, stepDecimalsLength);\n\n return Number((value + step).toFixed(longestDecimal));\n};\n\nexport const getNumberDecimalLength = (value: number): number => {\n const numberStr = (value || 0).toString();\n return (numberStr.split('.')[0] || '').length;\n};\n","import {\n Input,\n Output,\n EventEmitter,\n Renderer2,\n Directive,\n OnInit,\n ChangeDetectorRef,\n ElementRef\n} from '@angular/core';\nimport { NgForm, NgControl, ControlContainer } from '@angular/forms';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { takeUntil, switchMap, map } from 'rxjs/operators';\n\nimport { ContentDensity, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { StepInputConfig } from './step-input.config';\nimport { addAndCutFloatingNumberDistortion, getNumberDecimalLength } from './step-input.util';\n\n/** Change event object emitted by Platform Step Input component */\nexport class StepInputChangeEvent<T extends StepInputComponent = StepInputComponent, K = number> {\n /**\n * Step input selection change event\n * @param source Step input component\n * @param payload Selected value\n */\n constructor(\n /** The source Step Input of the event. */\n public source: T,\n /** The new value of a control. */\n public payload: K\n ) {}\n}\n\nexport enum StepInputAlign {\n Left = 'left',\n Center = 'center',\n Right = 'right'\n}\n\nexport type StepInputStepFunctionAction = 'increase' | 'decrease';\nexport type StepInputStepFunction = (value: number, action: StepInputStepFunctionAction) => number;\n\nconst ALIGN_INPUT_OPTIONS_LIST = [StepInputAlign.Left, StepInputAlign.Center, StepInputAlign.Right];\n\n/**\n * StepInputComponent is a base abstract class that should be used\n * to create type specific StepInput components such as number, money, unitOfMeasure\n * This holds base Step Input functionality that can be abstracted\n */\n@Directive()\nexport abstract class StepInputComponent extends BaseInput implements OnInit {\n /** Sets input value */\n @Input()\n set value(value: Nullable<number>) {\n if (value !== this._value) {\n super.setValue(value);\n this._calculateCanDecrementIncrement();\n }\n }\n get value(): Nullable<number> {\n return super.getValue();\n }\n\n /** Sets minimum value boundary */\n @Input()\n set min(min: number) {\n this._min = !isNaN(min) ? min : -Number.MAX_VALUE;\n this._calculateCanDecrement();\n }\n get min(): number {\n return this._min;\n }\n\n /** Sets maximum value boundary */\n @Input()\n set max(max: number) {\n this._max = !isNaN(max) ? max : Number.MAX_VALUE;\n this._calculateCanIncrement();\n }\n get max(): number {\n return this._max;\n }\n\n /** Sets input step value */\n @Input()\n set step(step: number) {\n this._checkAndThrowErrorIfStepDoesntMatchPrecision(this.precision, step);\n this._step = step;\n this._calculateCanDecrementIncrement();\n }\n get step(): number {\n return this._step;\n }\n\n /** Custom function to calculate step dynamically */\n @Input()\n set stepFn(stepFn: StepInputStepFunction) {\n this._stepFn = stepFn;\n this._calculateCanDecrementIncrement();\n }\n\n /** Number of digits after the decimal point */\n @Input()\n set precision(precision: number) {\n this._checkAndThrowErrorIfStepDoesntMatchPrecision(precision, this.step);\n this._precision = precision;\n }\n get precision(): number {\n return this._precision;\n }\n\n /** Sets largeStep multiplier */\n @Input()\n largerStep = 2;\n\n /** Hides -/+ icons and shows labels */\n @Input()\n showLabels = false;\n\n /** Horizontally aligns value inside input */\n @Input()\n set align(align: StepInputAlign) {\n this._align$.next(align);\n }\n\n /**\n * ARIA label for increment button\n */\n @Input()\n incrementLabel: string = this.config.incrementLabel;\n\n /**\n * ARIA label for decrement button\n */\n @Input()\n decrementLabel: string = this.config.decrementLabel;\n\n /** Emits new value when control value has changed */\n @Output()\n valueChange = new EventEmitter<StepInputChangeEvent>();\n\n /** @hidden */\n lastEmittedValue: number;\n\n /** @hidden */\n canIncrement = true;\n\n /** @hidden */\n canDecrement = true;\n\n /** @hidden\n * Indicates if control has an error\n */\n isErrorState = false;\n\n /** @hidden */\n get canChangeValue(): boolean {\n return !(this.disabled || !this.editable);\n }\n\n /** @hidden */\n _contentDensity: ContentDensity = this.config.contentDensity;\n\n /** @hidden */\n _align: StepInputAlign | null;\n\n /** @hidden */\n private _max: number = Number.MAX_VALUE;\n\n /** @hidden */\n private _min: number = -Number.MAX_VALUE;\n\n /** @hidden */\n private _step = 1;\n\n /** @hidden */\n private _stepFn: StepInputStepFunction;\n\n /** @hidden */\n private _precision: number;\n\n /** @hidden */\n private _align$ = new BehaviorSubject<StepInputAlign | null>(null);\n\n /** @hidden */\n private _pendingEnteredValue: number | Error | null = null;\n\n /** @hidden */\n private get _currentValue(): number | null {\n const pendingValue = this._pendingEnteredValue;\n\n if (pendingValue instanceof Error) {\n return null;\n }\n\n if (pendingValue === null) {\n return this._value;\n }\n\n return pendingValue;\n }\n\n /** @hidden */\n protected constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n ngControl: NgControl,\n controlContainer: ControlContainer,\n ngForm: NgForm,\n formField: PlatformFormField,\n formControl: PlatformFormFieldControl,\n protected config: StepInputConfig,\n private _renderer: Renderer2,\n private _rtlService: RtlService\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n\n this._calculateCanDecrementIncrement();\n\n this._updateViewValue();\n\n this.lastEmittedValue = this._value;\n\n this._listenToFormErrorState();\n\n this._listenToAlign();\n }\n\n /** @hidden\n * Override writeValue method to keep input view value up to date\n */\n writeValue(value: number): void {\n super.writeValue(value);\n this._updateViewValue();\n this._resetPendingEnteredValue();\n }\n\n /** Increase value */\n increase(step = this._getStepValueForIncrease()): void {\n if (!this.canIncrement) {\n return;\n }\n const value = addAndCutFloatingNumberDistortion(this._currentValue, step);\n this.value = this._validateValueByLimits(value);\n this._emitChangedValue();\n }\n\n /** Decrease value */\n decrease(step = this._getStepValueForDecrease()): void {\n if (!this.canDecrement) {\n return;\n }\n const value = addAndCutFloatingNumberDistortion(this._currentValue, -step);\n this.value = this._validateValueByLimits(value);\n this._emitChangedValue();\n }\n\n /** Increase value by large step */\n largeStepIncrease(): void {\n const step = this._getStepValueForIncrease() * this.largerStep;\n this.increase(step);\n }\n\n /** Decrease value by large step */\n largeStepDecrease(): void {\n const step = this._getStepValueForDecrease() * this.largerStep;\n this.decrease(step);\n }\n\n /** @hidden\n * catch value during entering from view.\n */\n onEnterValue(value: string): void {\n const parsedValue = this.parseValueInFocusMode(value);\n let pendingValue = parsedValue;\n\n if (pendingValue !== null) {\n pendingValue = this._validateValueByLimits(pendingValue);\n }\n\n // could not parse value, value is invalid\n if (pendingValue === null) {\n this._setPendingEnteredValue(new Error('value is invalid'));\n } else {\n this._setPendingEnteredValue(pendingValue);\n }\n }\n\n /** @hidden\n * Commit entered value from view.\n */\n commitEnteredValue(): void {\n const newValue = this._currentValue;\n\n const needToUpdateView = this._value === newValue;\n\n this.value = newValue;\n\n if (needToUpdateView) {\n this._updateViewValue();\n }\n\n if (this._value !== this.lastEmittedValue) {\n this._emitChangedValue();\n }\n }\n\n /** @hidden\n * Indicates when input gets focused\n */\n onFocus(): void {\n super._onFocusChanged(true);\n // When focus happens by \"Tab\" key an input field value gets selected by default.\n // In cases when new_formatted_value !== previous_value the selection gets lost.\n // So it's needed to track selection before new value rendering and restore it.\n const { selectionStart, selectionEnd } = this._getValueSelection();\n this._updateViewValue();\n if (selectionEnd - selectionStart > 0) {\n this._setValueSelection(selectionStart, selectionEnd);\n }\n }\n\n /** @hidden\n * Indicates when input loses focus\n */\n onBlur(): void {\n super._onFocusChanged(false);\n this._updateViewValue();\n }\n\n /** Create valueChange event */\n abstract createChangeEvent(value: number): StepInputChangeEvent;\n\n /** Format value for view presentation */\n abstract formatValue(value: number | null): string;\n\n /** Format value for \"in focus\" mode */\n abstract formatValueInFocusMode(value: number): string;\n\n /** Parse value entered \"in focus\" mode */\n abstract parseValueInFocusMode(value: string): number | null;\n\n /** @hidden */\n private _listenToFormErrorState(): void {\n this.stateChanges\n .asObservable()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n const oldValue = this.isErrorState;\n this.isErrorState = this.state === 'error';\n if (this.isErrorState !== oldValue) {\n this._cd.markForCheck();\n }\n });\n }\n\n /** @hidden */\n private _listenToAlign(): void {\n this._align$\n .asObservable()\n .pipe(\n switchMap((align) => {\n if (!this._rtlService) {\n return of(align);\n }\n\n return this._rtlService.rtl.pipe(\n map((isRtl): StepInputAlign | null => {\n if (!ALIGN_INPUT_OPTIONS_LIST.includes(align!)) {\n return null;\n }\n if (isRtl && align === StepInputAlign.Left) {\n return StepInputAlign.Right;\n }\n if (isRtl && align === StepInputAlign.Right) {\n return StepInputAlign.Left;\n }\n return align;\n })\n );\n }),\n takeUntil(this._destroyed)\n )\n .subscribe((align) => {\n this._align = align;\n this._cd.markForCheck();\n });\n }\n\n /** @hidden */\n private _emitChangedValue(): void {\n const value = this._value;\n this.lastEmittedValue = value;\n this.valueChange.emit(this.createChangeEvent(value));\n }\n\n /** @hidden */\n private _getStepValueForIncrease(): number {\n return this._getStepValue('increase');\n }\n\n /** @hidden */\n private _getStepValueForDecrease(): number {\n return this._getStepValue('decrease');\n }\n\n /** @hidden\n * Get step value based either on \"stepFn\" or \"step\"\n */\n private _getStepValue(action: StepInputStepFunctionAction): number {\n // steFn has precedence\n if (typeof this._stepFn === 'function') {\n const calculatedStep = this._stepFn(this._currentValue ?? this.min, action);\n return calculatedStep;\n }\n return this.step;\n }\n\n /** @hidden */\n private _updateViewValue(): void {\n const formatted = this._formatValue();\n this._renderValue(formatted);\n }\n\n /** @hidden */\n private _formatValue(value = this._value): string {\n if (this.focused) {\n return this.formatValueInFocusMode(value);\n }\n return this.formatValue(value);\n }\n\n /** @hidden */\n private _renderValue(value: string): void {\n const inputEl = this._getInputNativeElement();\n this._renderer.setProperty(inputEl, 'value', value);\n }\n\n /** @hidden */\n private _getInputNativeElement(): HTMLInputElement | null {\n return this._elementRef.nativeElement as HTMLInputElement | null;\n }\n\n /** @hidden */\n private _getValueSelection(): { selectionStart: number; selectionEnd: number } {\n const inputEl = this._getInputNativeElement();\n const selectionStart = inputEl?.selectionStart || 0;\n const selectionEnd = inputEl?.selectionEnd || 0;\n return { selectionStart, selectionEnd };\n }\n\n /** @hidden */\n private _setValueSelection(selectionStart: number, selectionEnd: number): void {\n const inputEl = this._getInputNativeElement();\n if (!inputEl) {\n return;\n }\n inputEl.setSelectionRange(selectionStart, selectionEnd);\n }\n\n /** @hidden */\n private _calculateCanIncrement(): void {\n const step = this._getStepValueForIncrease();\n this.canIncrement = (this._value || 0) + step <= this._max;\n }\n\n /** @hidden */\n private _calculateCanDecrement(): void {\n const step = this._getStepValueForDecrease();\n this.canDecrement = (this._value || 0) - step >= this._min;\n }\n\n /** @hidden */\n private _calculateCanDecrementIncrement(): void {\n this._calculateCanDecrement();\n this._calculateCanIncrement();\n }\n\n /** @hidden */\n private _validateValueByLimits(value: number): number {\n return Math.min(Math.max(value, this._min), this._max);\n }\n\n /** @hidden */\n private _checkAndThrowErrorIfStepDoesntMatchPrecision(precision: number, step: number): void {\n // Check if \"precision\" is valid comparing to \"step\"\n const stepDecimalLength = getNumberDecimalLength(step);\n const precisionDecimalLength = getNumberDecimalLength(precision);\n if (stepDecimalLength > precisionDecimalLength) {\n throw Error(\n `Step input: The value of step property can not contain more digits after the decimal point than what is set to the precision property`\n );\n }\n }\n\n /** @hidden */\n private _setPendingEnteredValue(value: number | Error): void {\n this._pendingEnteredValue = value;\n }\n\n /** @hidden */\n private _resetPendingEnteredValue(): void {\n this._pendingEnteredValue = null;\n }\n}\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { fromEvent, timer, interval, Subject } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\n\n/**\n * This is a base step input directive to be used for increase/decrease buttons.\n */\n@Directive()\nexport abstract class StepInputActionButton implements OnDestroy {\n /** @hidden */\n protected _destroyed = new Subject<void>();\n\n /**\n * @hidden\n * Indicates if action can be handled\n */\n abstract canHandleAction(): boolean;\n\n /**\n * @hidden\n * Step input button action handler\n */\n abstract runAction(): void;\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** @hidden */\n @HostListener('mousedown')\n click(): void {\n if (!this.canHandleAction()) {\n return;\n }\n\n // Run action while button is pressed\n timer(500)\n .pipe(\n switchMap(() => interval(40)),\n takeUntil(fromEvent(window, 'mouseup', { capture: true, once: true }))\n )\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.runAction());\n\n this.runAction();\n }\n}\n","import { Directive, SkipSelf } from '@angular/core';\n\nimport { StepInputComponent } from './base.step-input';\nimport { StepInputActionButton } from './step-input-action-button';\n\n/**\n * This Directive is used to be assigned to decrement button.\n */\n@Directive({\n selector: '[fdpStepInputDecrement]'\n})\nexport class StepInputDecrementDirective extends StepInputActionButton {\n /** @hidden */\n constructor(@SkipSelf() private stepInput: StepInputComponent) {\n super();\n }\n\n /** @hidden */\n canHandleAction(): boolean {\n return !!this.stepInput.canChangeValue;\n }\n\n /** @hidden */\n runAction(): void {\n this.stepInput.decrease();\n }\n}\n","import { Directive, SkipSelf } from '@angular/core';\n\nimport { StepInputComponent } from './base.step-input';\nimport { StepInputActionButton } from './step-input-action-button';\n\n/**\n * This Directive is used to be assigned to increment button.\n */\n@Directive({\n selector: '[fdpStepInputIncrement]'\n})\nexport class StepInputIncrementDirective extends StepInputActionButton {\n /** @hidden */\n constructor(@SkipSelf() private stepInput: StepInputComponent) {\n super();\n }\n\n /** @hidden */\n canHandleAction(): boolean {\n return !!this.stepInput.canChangeValue;\n }\n\n /** @hidden */\n runAction(): void {\n this.stepInput.increase();\n }\n}\n","import { Directive, HostListener, SkipSelf } from '@angular/core';\nimport { DOWN_ARROW, PAGE_DOWN, PAGE_UP, UP_ARROW } from '@angular/cdk/keycodes';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { StepInputComponent } from './base.step-input';\n\n/**\n * This directive is intendant to be a bridge between input control and BaseStepInput Component.\n */\n@Directive({\n selector: '[fdpStepInputControl]'\n})\nexport class StepInputControlDirective {\n /** @hidden */\n constructor(@SkipSelf() private stepInput: StepInputComponent) {}\n\n /**\n * @hidden\n * Handle \"input\" event to keep track of what user is entering\n */\n @HostListener('input', ['$event'])\n onInput(event: InputEvent): void {\n if (!this.stepInput.canChangeValue) {\n return;\n }\n\n const value: string = ((event.target as HTMLInputElement).value || '').trim();\n this.stepInput.onEnterValue(value);\n }\n\n /**\n * @hidden\n * Handle \"change\" event to commit entered value\n */\n @HostListener('change')\n onChange(): void {\n if (!this.stepInput.canChangeValue) {\n return;\n }\n this.stepInput.commitEnteredValue();\n }\n\n /**\n * @hidden\n * Handle \"focus\" event\n */\n @HostListener('focus')\n onFocus(): void {\n this.stepInput.onFocus();\n }\n\n /**\n * @hidden\n * Handle \"blur\" event\n */\n @HostListener('blur')\n onBlur(): void {\n this.stepInput.onBlur();\n }\n\n /**\n * @hidden\n * Handle \"keydown\" event\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n if (!this.stepInput.canChangeValue) {\n return;\n }\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n this.stepInput.increase();\n this._muteEvent(event);\n }\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this.stepInput.decrease();\n this._muteEvent(event);\n }\n if (KeyUtil.isKeyCode(event, PAGE_UP)) {\n this.stepInput.largeStepIncrease();\n this._muteEvent(event);\n }\n if (KeyUtil.isKeyCode(event, PAGE_DOWN)) {\n this.stepInput.largeStepDecrease();\n this._muteEvent(event);\n }\n }\n\n /**\n * @hidden\n * Handle mouse wheel\n */\n @HostListener('wheel', ['$event'])\n onMouseWheel(event: WheelEvent): void {\n if (!this.stepInput.canChangeValue || !this.stepInput.focused) {\n return;\n }\n event.preventDefault();\n if (event.deltaY > 0) {\n this.stepInput.decrease();\n } else {\n this.stepInput.increase();\n }\n }\n\n /**\n * @hidden\n * Mute event\n */\n private _muteEvent(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Host,\n Inject,\n Input,\n LOCALE_ID,\n Optional,\n Renderer2,\n Self,\n SkipSelf,\n ViewEncapsulation\n} from '@angular/core';\nimport { formatNumber } from '@angular/common';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\nimport { StepInputChangeEvent, StepInputComponent } from '../base.step-input';\nimport { StepInputConfig } from '../step-input.config';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\n/**\n * Fundamental number-step-input component\n *\n * Example of usage\n * ```html\n * <fdp-number-step-input\n * name=\"number\"\n * [value]=\"value\"\n * (valueChange)=\"onValueChange($event)\"\n * ></fdp-number-step-input>\n * ```\n *\n * */\n@Component({\n selector: 'fdp-number-step-input',\n templateUrl: 'number-step-input.component.html',\n styleUrls: ['number-step-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: FD_FORM_FIELD_CONTROL, useExisting: NumberStepInputComponent, multi: true },\n { provide: StepInputComponent, useExisting: NumberStepInputComponent },\n contentDensityObserverProviders()\n ]\n})\nexport class NumberStepInputComponent extends StepInputComponent {\n /** Set description */\n @Input() description: string;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl,\n config: StepInputConfig,\n renderer: Renderer2,\n @Optional() rtlService: RtlService,\n @Inject(LOCALE_ID) readonly localeId: string,\n readonly contentDensityObserver: ContentDensityObserver\n ) {\n super(\n cd,\n elementRef,\n ngControl,\n controlContainer,\n ngForm,\n formField,\n formControl,\n config,\n renderer,\n rtlService\n );\n }\n\n /** @hidden\n * Create change event instance\n */\n createChangeEvent(value: number): StepInputChangeEvent {\n return new StepInputChangeEvent(this, value);\n }\n\n /** @hidden\n * Format value taking into account LOCALE_ID\n */\n formatValue(value: number | null): string {\n const precision = this.precision;\n const digitsInfo = !isNaN(precision) ? `1.${precision}-${precision}` : undefined;\n return formatNumber(value || 0, this.localeId, digitsInfo);\n }\n\n /** @hidden\n * In order to avoid issues trying to parse formatted number\n * (potentially specific for each local)\n * we have to simplify number format once it's in focus mode.\n * In this case we deal with a regular float number\n */\n formatValueInFocusMode(value: number | null): string {\n const precision = this.precision;\n value = value || 0;\n if (!isNaN(precision)) {\n return value.toFixed(precision);\n }\n return value.toString(10);\n }\n\n /** @hidden\n * Used to parse entered value\n */\n parseValueInFocusMode(value: string | null): number | null {\n // if user leaves input empty we should consider it as '0' by default\n value = value || '0';\n const parsedValue = Number.parseFloat(value);\n return isNaN(parsedValue) ? null : parsedValue;\n }\n}\n","<fd-form-input-message-group>\n <div\n class=\"fd-step-input\"\n [class.is-focus]=\"focused\"\n [class.is-readonly]=\"!editable\"\n [class.is-disabled]=\"disabled\"\n [class.fd-step-input--without-buttons]=\"showLabels\"\n [class]=\"state ? 'is-' + state : ''\"\n >\n <button\n class=\"fd-step-input__button\"\n tabindex=\"-1\"\n type=\"button\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"showLabels ? null : 'less'\"\n fdpStepInputDecrement\n [attr.aria-disabled]=\"disabled || !canDecrement\"\n [attr.title]=\"decrementLabel\"\n [attr.aria-label]=\"decrementLabel\"\n [attr.aria-controls]=\"id\"\n >\n {{ showLabels ? decrementLabel : '' }}\n </button>\n <input\n #inputElementRef\n class=\"fd-input fd-input--no-number-spinner fd-step-input__input\"\n [id]=\"id\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [readonly]=\"!editable\"\n [attr.placeholder]=\"placeholder || ''\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"description ? id + '__description' : ''\"\n [attr.aria-required]=\"required\"\n [style.textAlign]=\"_align\"\n fdpStepInputControl\n type=\"text\"\n inputmode=\"numeric\"\n fdkOnlyDigits\n [decimal]=\"true\"\n />\n <button\n class=\"fd-step-input__button\"\n tabindex=\"-1\"\n type=\"button\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"showLabels ? null : 'add'\"\n fdpStepInputIncrement\n [attr.aria-disabled]=\"disabled || !canIncrement\"\n [attr.title]=\"incrementLabel\"\n [attr.aria-label]=\"incrementLabel\"\n [attr.aria-controls]=\"id\"\n >\n {{ showLabels ? incrementLabel : '' }}\n </button>\n </div>\n <fd-form-message *ngIf=\"stateMessage\" [type]=\"state\" [innerHTML]=\"stateMessage\"></fd-form-message>\n</fd-form-input-message-group>\n<span *ngIf=\"description\" [id]=\"id + '__description'\" class=\"fd-form-label fd-form-label--unit-description\">\n {{ description }}\n</span>\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { OnlyDigitsModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { StepInputDecrementDirective } from './step-input-decrement.directive';\nimport { StepInputIncrementDirective } from './step-input-increment.directive';\nimport { StepInputControlDirective } from './step-input-control.directive';\nimport { NumberStepInputComponent } from './number/number-step-input.component';\nimport { FormInputMessageGroupModule, FormMessageModule } from '@fundamental-ngx/core/form';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PipeModule,\n ButtonModule,\n OnlyDigitsModule,\n FormInputMessageGroupModule,\n FormMessageModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n declarations: [\n StepInputDecrementDirective,\n StepInputIncrementDirective,\n StepInputControlDirective,\n NumberStepInputComponent\n ],\n exports: [NumberStepInputComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformStepInputModule {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\n\nimport { TimePickerComponent } from '@fundamental-ngx/core/time-picker';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';\n\n@Component({\n selector: 'fdp-time-picker',\n templateUrl: './time-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformTimePickerComponent, multi: true }]\n})\nexport class PlatformTimePickerComponent<D> extends BaseInput implements OnInit, AfterViewInit, OnDestroy {\n /**\n * @Input date time object representation\n */\n @Input()\n set value(value: D | null) {\n super.setValue(value);\n }\n get value(): D | null {\n return super.getValue();\n }\n\n /**\n * @Input date time object representation\n */\n @Input()\n time: D;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /** @deprecated\n * Meridian is deprecated. Use displayFormat and parseFormat inputs or\n * DateTimeFormats.display.timeInput and DateTimeFormats.parse.timeInput instead.\n * @Input When set to false, uses the 24 hour clock (hours ranging from 0 to 23).\n * Default value based on the current locale format option\n */\n @Input()\n meridian: boolean;\n\n /**\n * @Input When set to false, hides the input for seconds.\n * Default value based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /**\n * @Input When set to false, hides the input for minutes.\n * Default value based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * @Input When set to false, hides the input for hours.\n * Default value based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** @Input Default time picker placeholder which is set dependant on the hours, minutes and seconds.\n * Otherwise It can be set to a default value\n */\n @Input()\n placeholder: string;\n\n /** Aria label for the time picker input. */\n @Input()\n timePickerInputLabel: string;\n\n /** Whether a null input is considered valid(success). */\n @Input()\n allowNull = true;\n\n /** Defines if time component should be used with tablet mode */\n @Input()\n tablet = false;\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates | undefined) {\n super.state = state;\n }\n\n get state(): FormStates {\n if (this.timePickerComponent && this.timePickerComponent._isInvalidTimeInput) {\n // if any other error from core timePicker\n return 'error';\n }\n return super.state;\n }\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /** Whether to validate the time picker input. */\n @Input()\n useValidation = true;\n\n /**\n * @Input when set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n @Input()\n keepTwoDigitsTime = false;\n\n /**\n * Display format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n displayFormat: unknown;\n\n /**\n * Parse format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n parseFormat: unknown;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(TimePickerComponent)\n timePickerComponent: TimePickerComponent<D>;\n\n /** @hidden */\n constructor(\n cd: ChangeDetectorRef,\n elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @SkipSelf() controlContainer: ControlContainer,\n @Optional() @SkipSelf() ngForm: NgForm,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField,\n @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl\n ) {\n super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /**\n * Method that handles changes when popover is opened or closed.\n */\n handleOpenChange(open: boolean): void {\n this.isOpenChange.emit(open);\n }\n\n /**\n * logic to handle validation from both platform forms and core datetiimepicker\n * @param value inputted\n */\n handleTimeChange(value: D): void {\n if (this.timePickerComponent) {\n if (this.timePickerComponent._isInvalidTimeInput) {\n this.state = 'error';\n } else {\n this.state = !this.timePickerComponent.time && !this.allowNull ? 'error' : undefined;\n }\n this.value = value;\n this.stateChanges.next('time picker: handleTimeInputChange');\n }\n this.onTouched();\n }\n}\n","<fd-time-picker\n [attr.aria-label]=\"ariaLabel\"\n [attr.ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [inputId]=\"id\"\n [required]=\"required\"\n [time]=\"time\"\n [meridian]=\"meridian\"\n [disabled]=\"disabled\"\n [displayFormat]=\"displayFormat\"\n [spinnerButtons]=\"spinnerButtons\"\n [displaySeconds]=\"displaySeconds\"\n [displayMinutes]=\"displayMinutes\"\n [displayHours]=\"displayHours\"\n [placeholder]=\"placeholder\"\n [timePickerInputLabel]=\"timePickerInputLabel\"\n [allowNull]=\"allowNull\"\n [tablet]=\"tablet\"\n [placement]=\"placement\"\n [parseFormat]=\"parseFormat\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [useValidation]=\"useValidation\"\n [keepTwoDigitsTime]=\"keepTwoDigitsTime\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (ngModelChange)=\"handleTimeChange($event)\"\n [(ngModel)]=\"value\"\n>\n <ng-content></ng-content>\n</fd-time-picker>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { TimePickerModule } from '@fundamental-ngx/core/time-picker';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { PlatformTimePickerComponent } from './time-picker.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n declarations: [PlatformTimePickerComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TimePickerModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule\n ],\n exports: [PlatformTimePickerComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformTimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","maxColumnsPerRow","formFieldProvider","formGroupChildProvider","i2.FormFieldLayoutService","i8.InputMessageGroupWithTemplate","i2","i2.InputComponent","i3","nextUniqueId","FdCheckboxComponent","i4.CheckboxComponent","i5","i2.CheckboxGroupComponent","CoreRadioButtonComponent","i5.RadioButtonComponent","i2.RadioGroupComponent","i2.TextAreaConfig","i2.TextAreaComponent","i2.SelectConfig","i3.SelectConfig","CoreSelect","i4","i7","i2.SelectComponent","createMissingDateImplementationError","FdDatePickerComponent","i2.PlatformDatePickerComponent","i2.SwitchConfig","i2.SwitchComponent","i3.MultiInputConfig","i4.MultiInputConfig","ListComponent","i6","i9","i11.AutoCompleteDirective","i12","i2.PlatformMultiInputComponent","merge","isFunction","i2.FormGeneratorComponentsAccessorService","i1.FormGeneratorService","i3.FormFieldComponent","i4.FormFieldErrorDirective","i5.FormFieldErrorHeadingDirective","i6.FormFieldErrorDescriptionDirective","i8.DynamicFormControlDirective","i3.ComboboxConfig","i4.ComboboxConfig","i8","i9.AutoCompleteDirective","i10","i11","i7.FormGroupHeaderComponent","i8.FieldGroupRowValuePipe","filter","i3.FormGroupComponent","i4.FormFieldComponent","i5.FormFieldGroupComponent","i6.FormFieldErrorDirective","i7.FormFieldErrorHeadingDirective","i8.FormFieldErrorDescriptionDirective","i12.DynamicFormControlFieldDirective","i13.FormGeneratorFieldComponent","i14.GetOrderedFieldControlsPipe","FdFormModule","i3.MultiComboboxConfig","i4.MultiComboboxConfig","i13.AutoCompleteDirective","i14","i15","i2.InputGroupConfig","i4.InputComponent","i5.InputGroupAddonBodyComponent","i3.StepInputConfig","i1.StepInputComponent","i8.StepInputDecrementDirective","i9.StepInputIncrementDirective","i10.StepInputControlDirective"],"mappings":"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"}