@fundamental-ngx/core 0.55.2-rc.1 → 0.55.2-rc.3
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.
|
@@ -512,6 +512,8 @@ class MultiInputComponent {
|
|
|
512
512
|
this._changeDetRef.detectChanges();
|
|
513
513
|
});
|
|
514
514
|
this._subscriptions.add(sub);
|
|
515
|
+
// stop propagation on the checkbox so event doesn't reach the list item
|
|
516
|
+
event.stopPropagation();
|
|
515
517
|
}
|
|
516
518
|
/** @hidden */
|
|
517
519
|
_onTokenCloseClick(option, resetSearch, event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-multi-input.mjs","sources":["../../../../libs/core/multi-input/multi-input.interface.ts","../../../../libs/core/multi-input/multi-input-mobile/multi-input-mobile.component.ts","../../../../libs/core/multi-input/multi-input-mobile/multi-input-mobile.component.html","../../../../libs/core/multi-input/multi-input-mobile/multi-input-mobile.module.ts","../../../../libs/core/multi-input/pair-selection.model.ts","../../../../libs/core/multi-input/multi-input.component.ts","../../../../libs/core/multi-input/multi-input.component.html","../../../../libs/core/multi-input/multi-input.module.ts","../../../../libs/core/multi-input/fundamental-ngx-core-multi-input.ts"],"sourcesContent":["import { EventEmitter, InjectionToken } from '@angular/core';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const MULTI_INPUT_COMPONENT = new InjectionToken<string[]>('MultiInputComponent');\n\n/**\n * Multi Input Interface to have typing and avoid circular dependency between\n * MultiInputComponent <==> MultiInputMobileComponent\n */\nexport interface MultiInputInterface extends MobileMode {\n selected: any[];\n openChange: EventEmitter<boolean>;\n allItemsSelectedChange: EventEmitter<boolean>;\n\n dialogApprove(): void;\n\n selectAllItems(selectAll: boolean): void;\n\n dialogDismiss(selectedBackup: any[]): void;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable, TemplateDirective, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarMiddleDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { MULTI_INPUT_COMPONENT, MultiInputInterface } from '../multi-input.interface';\n\n@Component({\n selector: 'fd-multi-input-mobile',\n templateUrl: './multi-input-mobile.component.html',\n styleUrl: './multi-input-mobile.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n TemplateModule,\n BarMiddleDirective,\n BarElementDirective,\n ButtonBarComponent,\n TitleComponent,\n TitleComponent,\n TemplateDirective,\n BarMiddleDirective,\n BarElementDirective,\n ButtonBarComponent,\n NgTemplateOutlet,\n ButtonComponent,\n DialogComponent,\n DialogHeaderComponent,\n DialogFooterComponent,\n DialogBodyComponent,\n DialogCloseButtonComponent\n ]\n})\nexport class MultiInputMobileComponent extends MobileModeBase<MultiInputInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n allItemsSelected: boolean;\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(@Inject(MULTI_INPUT_COMPONENT) multiInputComponent: MultiInputInterface) {\n super(multiInputComponent, MobileModeControl.MULTI_INPUT);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiInputOpenChange();\n }\n\n /** Throw select all event, it's handled by multi input component */\n selectAll(selectAll: boolean): void {\n this._component.selectAllItems(!selectAll);\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.selected?.length ? [...this._component.selected] : [];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiInputOpenChange(): void {\n this._component.openChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => this._toggleDialog(isOpen));\n this._component.allItemsSelectedChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((allItemsSelected) => (this.allItemsSelected = allItemsSelected));\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 [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element class=\"custom-multi-input-mobile-control-element\">\n <ng-template\n [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"\n [ngTemplateOutletContext]=\"{ displayAddonButton: false }\"\n ></ng-template>\n </fd-bar-element>\n <fd-bar-element class=\"custom-multi-input-select-all-bar-element\">\n <button\n fd-button\n glyph=\"multiselect-all\"\n [fdType]=\"allItemsSelected ? 'emphasized' : 'transparent'\"\n (click)=\"selectAll(allItemsSelected)\"\n ></button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { MultiInputMobileComponent } from './multi-input-mobile.component';\n\n@NgModule({\n imports: [MultiInputMobileComponent],\n exports: [MultiInputMobileComponent]\n})\nexport class MultiInputMobileModule {}\n","import { EventEmitter } from '@angular/core';\n\nexport class PairSelectionModel<KeyType, ValueType> {\n /** @hidden */\n _selected = new Map<KeyType, ValueType>();\n /** Event emitted when the selection has changed. */\n selectionChanged = new EventEmitter<[KeyType, ValueType][]>();\n\n /** Array of selected items */\n get selected(): ValueType[] {\n return [...this._selected.values()];\n }\n\n /** Whether the given key exists in the record */\n isSelected(key: KeyType): boolean {\n return this._selected.has(key);\n }\n\n /** Selects the given key-value pair */\n select(values: [KeyType, ValueType][]): void;\n /** Selects the given key-value pair */\n select(key: KeyType, value: ValueType): void;\n /** Selects the given key-value pair */\n select(keyOrValues: KeyType | Array<[KeyType, ValueType]>, value?: ValueType): void {\n if (value) {\n this._selected.set(keyOrValues as KeyType, value);\n } else {\n (keyOrValues as Array<[KeyType, ValueType]>).forEach(([key, v]) => this._selected.set(key, v));\n }\n this.selectionChanged.emit([...this._selected]);\n }\n\n /** Deselects the given key */\n deselect(key: KeyType): void {\n this._selected.delete(key);\n this.selectionChanged.emit([...this._selected]);\n }\n\n /** Clears the selection information */\n clear(): void {\n this._selected.clear();\n this.selectionChanged.emit([...this._selected]);\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { DOWN_ARROW, ENTER, SPACE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Injector,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, first, map, startWith } from 'rxjs/operators';\n\nimport {\n applyCssClass,\n AutoCompleteDirective,\n CssClassBuilder,\n DynamicComponentService,\n FocusEscapeDirection,\n FocusTrapService,\n KeyUtil,\n NestedKeyOf,\n Nullable,\n ObjectPathType,\n RangeSelector,\n RtlService,\n SearchHighlightPipe,\n TruncatedTitleDirective,\n uuidv4\n} from '@fundamental-ngx/cdk/utils';\nimport { FormControlComponent, FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport { TokenComponent, TokenizerComponent } from '@fundamental-ngx/core/token';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { MultiAnnouncerDirective } from '@fundamental-ngx/core/multi-combobox';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport get from 'lodash-es/get';\nimport { MultiInputMobileComponent } from './multi-input-mobile/multi-input-mobile.component';\nimport { MULTI_INPUT_COMPONENT, MultiInputInterface } from './multi-input.interface';\nimport { PairSelectionModel } from './pair-selection.model';\n\nfunction isOptionItem<ItemType = any, ValueType = any>(\n candidate: unknown\n): candidate is _OptionItem<ItemType, ValueType> {\n return isOptionItemBase<ValueType>(candidate) && 'item' in candidate && 'id' in candidate;\n}\n\nfunction isOptionItemBase<ValueType = any>(candidate: unknown): candidate is OptionItemBase<ValueType> {\n return typeof candidate === 'object' && candidate !== null && 'value' in candidate && 'label' in candidate;\n}\n\nlet uniqueHiddenLabel = 0;\n\n/**\n * Input field with multiple selection enabled. Should be used when a user can select between a\n * limited number of pre-defined options with a filter-enabled context.\n *\n * Supports Angular Forms.\n */\n@Component({\n selector: 'fd-multi-input',\n templateUrl: './multi-input.component.html',\n styleUrl: './multi-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiInputComponent),\n multi: true\n },\n MenuKeyboardService,\n registerFormItemControl(MultiInputComponent),\n contentDensityObserverProviders()\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n PopoverComponent,\n PopoverControlComponent,\n FormsModule,\n PopoverBodyComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n TokenComponent,\n TokenizerComponent,\n FormControlComponent,\n AutoCompleteDirective,\n ReactiveFormsModule,\n ListComponent,\n ListItemComponent,\n ListTitleDirective,\n CheckboxComponent,\n LinkComponent,\n AsyncPipe,\n SearchHighlightPipe,\n FdTranslatePipe,\n MultiAnnouncerDirective,\n TruncatedTitleDirective\n ]\n})\nexport class MultiInputComponent<ItemType = any, ValueType = any>\n implements\n MultiInputInterface,\n ControlValueAccessor,\n CssClassBuilder,\n OnInit,\n OnChanges,\n AfterViewInit,\n OnDestroy,\n FormItemControl\n{\n /** Placeholder for the input field. */\n @Input()\n placeholder = '';\n\n /** Whether the input is disabled. */\n @Input()\n disabled = false;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Whether to use cozy visuals but compact collapsing behavior. */\n @Input()\n compactCollapse = true;\n\n /** Max height of the popover. Any overflowing elements will be accessible through scrolling. */\n @Input()\n maxHeight = '300px';\n\n /** Icon of the button on the right of the input field. */\n @Input()\n glyph = 'value-help';\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Values to be displayed in the unfiltered dropdown. */\n @Input()\n dropdownValues: Array<ItemType | _OptionItem<ItemType, ValueType>> = [];\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Title text for the add-on icon button. */\n @Input()\n addonIconTitle: string;\n\n /** Search term, or more specifically the value of the inner input field. */\n @Input()\n set searchTerm(value: string) {\n this._searchTermCtrl.setValue(value);\n }\n get searchTerm(): string {\n return this._searchTermCtrl.value ?? '';\n }\n\n /** Id attribute for input element inside MultiInput component */\n @Input()\n inputId = '';\n\n /** Whether the search term should be highlighted in results. */\n @Input()\n highlight = true;\n\n /** Selected dropdown items. */\n @Input()\n set selected(values: ValueType[]) {\n this._selectionModel.clear();\n if (values) {\n const potentialItems = [...values];\n const options: _OptionItem<ItemType, ValueType>[] = [];\n potentialItems.forEach((value) => {\n let optionItem = this._optionItems.find((i) => i.value === value);\n if (!optionItem) {\n optionItem = this._getOptionItem(value as unknown as ItemType);\n }\n options.push(optionItem);\n });\n this._selectionModel.select(options.map((item) => [item.id, item]));\n }\n }\n\n get selected(): ValueType[] {\n return this._selectionModel.selected.map((c) => c.value);\n }\n\n /** user's custom classes */\n @Input()\n class: string;\n\n /**\n * Filter function. Accepts an array and a string as arguments, and outputs an array.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details.\n */\n @Input()\n filterFn: (contentArray: this['dropdownValues'], searchTerm: string) => this['dropdownValues'] =\n this._defaultFilter;\n\n /**\n * Value function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs any property, that should be used as value.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details.\n */\n @Input()\n valueFn: (item: ItemType) => ValueType = this._defaultValueFn;\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 */\n @Input()\n displayFn: (item: ItemType) => string = this._defaultDisplay as unknown as (item: ItemType) => string;\n\n /**\n * Parse function. Used for submitting new tokens. Accepts a string by default.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details.\n */\n @Input()\n newTokenParseFn: (searchTerm: string) => any = this._defaultParse;\n\n /**\n * Identifier function or path to an identifier property.\n */\n @Input()\n optionItemIdentifier: OptionItemIdentifierInput<ItemType>;\n\n /**\n * Validate function. Used to check if new token can be added into list.\n * Works only, when `allowNewTokens` option is enabled.\n */\n @Input()\n newTokenValidateFn = this._defaultTokenValidate;\n\n /** aria-label attribute binding. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** aria-labelledby attribute binding. */\n @Input()\n ariaLabelledBy: Nullable<string>;\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 state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n state?: FormStates;\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /** Whether the multi-input allows the creation of new tokens. */\n @Input()\n allowNewTokens = false;\n\n /** Whether the multi-input should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Whether the multi-input should have show all button. */\n @Input()\n showAllButton = true;\n\n /**\n * Max width of multi input body.\n * `none` will not limit width of the dropdown.\n * `container` will limit width of the dropdown to the width of the multi-input itself.\n * `number` will limit width of the dropdown by provided number in pixels.\n */\n @Input()\n bodyMaxWidth: 'none' | 'container' | number = 'none';\n\n /** @hidden */\n get _popoverMaxWidth(): Nullable<number> {\n if (this.bodyMaxWidth === 'none') {\n return null;\n }\n\n if (typeof this.bodyMaxWidth === 'number') {\n return this.bodyMaxWidth;\n }\n\n return this.elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /** Multi Input Mobile Configuration, it's applied only, when mobile is enabled */\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true, approveButtonText: 'Select' };\n\n /**\n * Whether to return results where the input matches the entire string. By default, only results that start\n * with the input search term will be returned.\n */\n @Input()\n includes = false;\n\n /**\n * The template with which to display the individual listed items.\n * Use it by passing an ng-template with implicit content. See examples for more info.\n */\n @Input()\n itemTemplate: TemplateRef<any>;\n\n /**\n * The tooltip for the multi-input icon.\n */\n @Input()\n title: string;\n\n /** Whether list item options should be rendered as byline. */\n @Input()\n byline = false;\n\n /** Whether the autocomplete should be enabled; Enabled by default */\n @Input()\n autoComplete = true;\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 /** Event emitted when the selected items change. Use *$event* to access the new selected array. */\n @Output()\n readonly selectedChange: EventEmitter<ValueType[]> = new EventEmitter<ValueType[]>();\n\n /** Whether multi input popover body should be opened */\n @Input()\n open = false;\n\n /** Whether to display the addon button. */\n @Input()\n displayAddonButton = true;\n\n /** Aria-label for the addon button. */\n @Input()\n addOnButtonAriaLabel: Nullable<string>;\n\n /** @hidden */\n private _tokenCountHiddenLabel = `fd-multi-input-token-count-id-${uniqueHiddenLabel++}`;\n\n /** token count hidden label */\n @Input()\n tokenHiddenId: string = this._tokenCountHiddenLabel;\n\n /** Event emitted, when the multi input's popover body is opened or closed */\n @Output()\n readonly openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n readonly addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** Event emitted, when the multi input's all item checked or not */\n @Output()\n readonly allItemsSelectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(PopoverComponent)\n popoverRef: PopoverComponent;\n\n /** @hidden */\n @ViewChild('control', { read: TemplateRef })\n controlTemplate: TemplateRef<{ displayAddonButton: boolean }>;\n\n /** @hidden */\n @ViewChild('list', { read: TemplateRef })\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n searchInputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n tokenizer: TokenizerComponent;\n\n /** @hidden */\n get _optionItems(): _OptionItem<ItemType, ValueType>[] {\n return this.optionItems$.value;\n }\n /** @hidden */\n readonly optionItems$ = new BehaviorSubject<_OptionItem<ItemType, ValueType>[]>([]);\n\n /** @hidden */\n readonly _onlySelected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n readonly _searchTermCtrl = new FormControl('');\n\n /** @hidden */\n readonly _selectionModel = new PairSelectionModel<OptionItemIdentifier, OptionItem<ItemType, ValueType>>();\n\n /** @hidden */\n readonly _viewModel$: Observable<ViewModel<ItemType, ValueType>> = this._getViewModel();\n\n /** @hidden */\n _dir: string;\n\n /** typeahead matcher function */\n get typeAheadMatcher(): (item: string, searchTerm: string) => boolean {\n if (this.includes) {\n return (item: string, searchTerm: string) => item.includes(searchTerm);\n }\n return (item: string, searchTerm: string) => item.startsWith(searchTerm);\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n constructor(\n readonly _contentDensityObserver: ContentDensityObserver,\n public readonly elementRef: ElementRef<HTMLElement>,\n private readonly _changeDetRef: ChangeDetectorRef,\n private readonly _dynamicComponentService: DynamicComponentService,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n @Optional() private readonly _rtlService: RtlService,\n @Optional() private readonly _focusTrapService: FocusTrapService\n ) {}\n\n /** @hidden CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n // TODO: this icon flip may be addressed in styles in the future\n if (this.glyph === 'value-help' && this._dir === 'rtl') {\n const icon = this.elementRef.nativeElement.querySelector('.sap-icon--value-help') as HTMLElement;\n if (icon) {\n icon.style.transform = 'scaleX(-1)';\n }\n }\n\n return ['fd-multi-input', 'fd-multi-input-custom', this.class];\n }\n\n /** @hidden */\n @HostListener('focusout', ['$event'])\n private _focusOut(event: FocusEvent): void {\n if (!this.elementRef.nativeElement.contains(event.relatedTarget as Node)) {\n this.onTouched();\n }\n }\n\n /** @hidden */\n onChange: (value: any) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n\n this._subscriptions.add(\n this._rtlService?.rtl.subscribe((isRtl) => {\n this._dir = isRtl ? 'rtl' : 'ltr';\n this.buildComponentCssClass();\n })\n );\n\n if (!this.inputId) {\n this.inputId = uuidv4();\n }\n\n this._subscriptions.add(\n this._searchTermCtrl.valueChanges.pipe(distinctUntilChanged()).subscribe((searchTerm) => {\n this.searchTermChange.emit(searchTerm ?? '');\n // resetting existing selection state, if any\n this._rangeSelector.reset();\n })\n );\n this._subscriptions.add(\n this._getViewModel()\n .pipe(map((viewModel) => !viewModel.displayedOptions.some((c) => !c.isSelected)))\n .subscribe((allItemsSelected) => this.allItemsSelectedChange.emit(allItemsSelected))\n );\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n\n if (changes.dropdownValues || changes.searchTerm || changes.valueFn || changes.displayFn) {\n const optionItems = (this.dropdownValues ?? []).map((item) => this._getOptionItem(item));\n this.optionItems$.next(optionItems);\n this._changeDetRef.markForCheck();\n }\n\n if (changes.disabled) {\n this.disabled ? this._searchTermCtrl.disable() : this._searchTermCtrl.enable();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.mobile) {\n this._setUpMobileMode();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any[]) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled) {\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n } else {\n this.elementRef.nativeElement.style.pointerEvents = 'auto';\n }\n\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n writeValue(selected: ValueType[]): void {\n this.selected = selected;\n\n this._changeDetRef.markForCheck();\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up' && !this.mobile) {\n this.searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n openChangeHandle(open: boolean): void {\n if (this.disabled) {\n return;\n }\n\n if (this.open !== open) {\n this.openChange.emit(open);\n }\n\n this.open = open;\n\n if (!this.mobile) {\n this._popoverOpenHandle(open);\n }\n\n if (!this.open) {\n this._resetSearchTerm();\n this.enableParentFocusTrap();\n this._onlySelected$.next(false);\n } else {\n this.disableParentFocusTrap();\n\n this.searchInputElement?.nativeElement.focus();\n }\n\n this.tokenizer.tokenizerInnerEl.nativeElement.scrollLeft =\n this.tokenizer.tokenizerInnerEl.nativeElement.scrollWidth;\n\n this._changeDetRef.detectChanges();\n }\n\n /** Method that selects all possible options. */\n selectAllItems(selectAll: boolean): void {\n if (selectAll) {\n this.selected = this._optionItems.map((c) => c.value);\n } else {\n this.selected = [];\n }\n // On Mobile mode changes are propagated only on approve.\n this._propagateChange();\n }\n\n /** @hidden */\n _onCheckboxKeyup(\n option: _OptionItem<ItemType, ValueType>,\n event: KeyboardEvent,\n index: number,\n isListItem = false\n ): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n this._onCheckboxClick(option, event, index, isListItem);\n }\n }\n\n /** @hidden */\n async _onCheckboxClick(\n option: _OptionItem<ItemType, ValueType>,\n event: MouseEvent | KeyboardEvent,\n index: number,\n isListItem = false\n ): Promise<void> {\n const toggledSelection = !this._selectionModel.isSelected(option.id);\n this._rangeSelector.onRangeElementToggled(index, event);\n const sub = this._viewModel$.pipe(first()).subscribe((vm) => {\n this._rangeSelector.applyValueToEachInRange((idx) =>\n this._handleSelect(toggledSelection, vm.displayedOptions[idx], false)\n );\n this._changeDetRef.detectChanges();\n });\n this._subscriptions.add(sub);\n }\n\n /** @hidden */\n _onTokenCloseClick(option: _OptionItem<ItemType, ValueType>, resetSearch: boolean, event?: MouseEvent): void {\n event?.preventDefault(); // prevent this function from being called twice when checkbox updates\n this._handleSelect(false, option, resetSearch, true);\n }\n\n /** @hidden */\n _tokenElementClicked(event: MouseEvent): void {\n const textElement = (event.currentTarget as HTMLElement).querySelector('.fd-token__text') as HTMLElement;\n if (textElement && textElement.offsetWidth < textElement.scrollWidth && this.open === false) {\n this.openChangeHandle(true);\n }\n }\n\n /** @hidden */\n _handleSelect(\n checked: any,\n option: _OptionItem<ItemType, ValueType>,\n resetSearch = true,\n fromTokenCloseClick = false\n ): void {\n const previousLength = this._selectionModel.selected.length;\n option = this._getOptionItem(option);\n if (checked) {\n this._selectionModel.select(option.id, option);\n } else {\n this._selectionModel.deselect(option.id);\n }\n\n // Handle popover placement update\n if (this._shouldPopoverBeUpdated(previousLength, this._selectionModel.selected.length)) {\n this.popoverRef.refreshPosition();\n }\n if (resetSearch) {\n this._resetSearchTerm();\n this.searchInputElement.nativeElement.focus();\n }\n\n if (this._selectionModel.selected.length === 0) {\n this.searchInputElement.nativeElement.focus();\n this._changeDetRef.detectChanges();\n }\n\n // On Mobile mode changes are propagated only on approve.\n this._propagateChange(fromTokenCloseClick);\n }\n\n /** @hidden */\n _handleInputKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && !this.mobile) {\n if (event.altKey) {\n this.openChangeHandle(true);\n }\n\n if (this.listComponent) {\n this.listComponent.setItemActive(0);\n event.preventDefault();\n }\n } else if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, ENTER])) {\n this.openChangeHandle(true);\n } else if (KeyUtil.isKeyCode(event, TAB) && this.open) {\n this._close();\n } else if (KeyUtil.isKeyType(event, 'alphabetical') || KeyUtil.isKeyType(event, 'numeric')) {\n if (!this.open) {\n this.openChangeHandle(true);\n this.searchInputElement.nativeElement.focus();\n }\n }\n }\n\n /** @hidden */\n _showAllClicked(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this._searchTermCtrl.setValue('');\n this.searchInputElement.nativeElement.focus();\n }\n\n /** @hidden */\n _showAllKeyDown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n this._showAllClicked(event);\n }\n }\n\n /** @hidden */\n _onSubmit(): void {\n const searchTerm = this.searchTerm;\n if (searchTerm === '') {\n return;\n }\n const isExist = this._selectFirstFiltered(searchTerm);\n if (!isExist && this.allowNewTokens && this.newTokenValidateFn(this._searchTermCtrl.value ?? '')) {\n const newToken = this.newTokenParseFn(this._searchTermCtrl.value ?? '');\n const newOption = this._addNewTokenToDropDownValues(newToken);\n this._handleSelect(true, newOption);\n this._searchTermCtrl.setValue('');\n this.open = false;\n }\n }\n\n /** @hidden */\n _handleComplete({ term }): void {\n this.searchTerm = term;\n }\n\n /**\n * Handle dialog dismissing, closes popover and sets backup data.\n */\n dialogDismiss(selectedBackup: any[]): void {\n this.openChangeHandle(false);\n this._resetSearchTerm();\n this.selected = selectedBackup;\n }\n\n /**\n * Handle dialog approval, closes popover and propagates data changes.\n */\n dialogApprove(): void {\n this._propagateChange(true);\n this.openChangeHandle(false);\n this._resetSearchTerm();\n }\n\n /** @hidden */\n _moreClicked(): void {\n this._onlySelected$.next(true);\n this.openChangeHandle(true);\n }\n\n /** @hidden */\n _addOnButtonClicked(event: Event): void {\n this.addOnButtonClicked.emit(event);\n if (this.openDropdownOnAddOnClicked) {\n this.openChangeHandle(!this.open);\n } else if (this.open) {\n this.openChangeHandle(false);\n }\n }\n\n /** @hidden */\n disableParentFocusTrap(): void {\n this._focusTrapService?.pauseCurrentFocusTrap();\n }\n\n /** @hidden */\n enableParentFocusTrap(): void {\n this._focusTrapService?.unpauseCurrentFocusTrap();\n }\n\n /** @hidden */\n _close(): void {\n this.searchInputElement.nativeElement.focus();\n this.openChangeHandle(false);\n }\n\n /** @hidden */\n private _addNewTokenToDropDownValues(newToken: any): OptionItem {\n this.dropdownValues.push(newToken);\n const newOption = this._getOptionItem(newToken);\n this.optionItems$.next([...this._optionItems, newOption]);\n return newOption;\n }\n\n /** @hidden */\n private _selectFirstFiltered(searchTerm: string): boolean {\n const filtered = this.filterFn(this.dropdownValues, searchTerm);\n if (Array.isArray(filtered) && filtered.length > 0 && this.autoComplete) {\n const optionItem = this._getOptionItem(filtered[0]);\n this._handleSelect(true, optionItem);\n this._searchTermCtrl.setValue('');\n this.open = false;\n return true;\n }\n return false;\n }\n\n /** @hidden */\n private _defaultFilter(contentArray: this['dropdownValues'], searchTerm: string = ''): this['dropdownValues'] {\n const trimmedSearchTerm = searchTerm.trim().toLocaleLowerCase();\n return contentArray.filter((item) => {\n if (item) {\n const displayedValue = isOptionItem(item) ? item.label : this.displayFn(item);\n const term = displayedValue?.toLocaleLowerCase() || '';\n return this.typeAheadMatcher(term, trimmedSearchTerm);\n }\n });\n }\n\n /** @hidden */\n private _defaultValueFn(value: ItemType | ValueType): ValueType {\n return value as ValueType;\n }\n\n /** @hidden */\n private _defaultDisplay(str: ItemType): string | undefined {\n if (typeof str === 'string') {\n return str;\n }\n if (isOptionItemBase(str)) {\n return str.label;\n }\n }\n\n /** @hidden */\n private _defaultParse(str: string): string {\n return str;\n }\n\n /** @hidden */\n private _defaultTokenValidate(str: string): boolean {\n return !!str;\n }\n\n /** @hidden */\n private _popoverOpenHandle(open: boolean): void {\n this.open = open;\n }\n\n /** @hidden */\n private _propagateChange(emitInMobile?: boolean): void {\n if (!this.mobile || emitInMobile) {\n const selected = this._selectionModel.selected.map((c) => c.value);\n this.onChange(selected);\n this.selectedChange.emit(selected);\n }\n }\n\n /** @hidden */\n private _shouldPopoverBeUpdated(previousLength: number, currentLength: number): boolean {\n return (\n !!this.popoverRef &&\n ((previousLength === 0 && currentLength === 1) || (previousLength === 1 && currentLength === 0))\n );\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTI_INPUT_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._dynamicComponentService.createDynamicComponent(\n {\n listTemplate: this.listTemplate,\n controlTemplate: this.controlTemplate\n },\n MultiInputMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n }\n\n /** @hidden */\n private _getItemIdentifier(item: ItemType): OptionItemIdentifier {\n if (!this.optionItemIdentifier) {\n const value = this.valueFn(item);\n if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'symbol' && isDevMode()) {\n console.warn(\n 'optionItemIdentifier is not set and valueFn does not return a string, number or symbol',\n item\n );\n }\n return value as OptionItemIdentifier;\n }\n if (typeof this.optionItemIdentifier === 'function') {\n return this.optionItemIdentifier(item);\n }\n return get(item, this.optionItemIdentifier) as OptionItemIdentifier;\n }\n\n /** @hidden */\n private _resetSearchTerm(): void {\n this._searchTermCtrl.setValue('');\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _getOptionItem(item: ItemType | _OptionItem<ItemType, ValueType>): _OptionItem<ItemType, ValueType> {\n if (isOptionItem<ItemType, ValueType>(item)) {\n return item;\n }\n const { label, value } = this._getValueAndLabelOfItem(item);\n return {\n id: this._getItemIdentifier(item),\n item,\n label,\n value,\n isSelected: false\n };\n }\n\n /** @hidden */\n private _getValueAndLabelOfItem(item: ItemType): OptionItemBase<ValueType> {\n const defaultDisplay = typeof item === 'object' && item !== null ? item[Object.keys(item)[0]] : item;\n let value = this.valueFn(item) ?? defaultDisplay;\n let label = this.displayFn(item) ?? defaultDisplay;\n if (isOptionItemBase(item)) {\n if (this.valueFn === this._defaultValueFn) {\n value = item.value;\n }\n if (this.displayFn === this._defaultDisplay) {\n label = item.label;\n }\n }\n return { label, value };\n }\n\n /** @hidden */\n private _getViewModel(): Observable<ViewModel<ItemType, ValueType>> {\n return combineLatest([\n this._searchTermCtrl.valueChanges.pipe(startWith(this._searchTermCtrl.value)),\n this._selectionModel.selectionChanged.pipe(startWith(null)),\n this._onlySelected$,\n this.optionItems$\n ]).pipe(\n map(() => {\n // not using \"searchTerm\" value from combineLatest as it will be wrong for late subscribers, if any\n const searchTerm = this._searchTermCtrl.value ?? '';\n const filtered = this.filterFn(this.dropdownValues, searchTerm);\n const onlySelected = this._onlySelected$.value;\n let displayedOptions = (Array.isArray(filtered) ? filtered : []).map((item) =>\n this._getOptionItem(item)\n );\n\n displayedOptions.forEach((c) => (c.isSelected = this._selectionModel.isSelected(c.id)));\n\n if (onlySelected) {\n displayedOptions = displayedOptions.filter((item) => item.isSelected);\n }\n\n return { selectedOptions: this._selectionModel.selected, displayedOptions };\n })\n );\n }\n}\n\ninterface _OptionItem<ItemType = any, ValueType = any> extends OptionItemBase<ValueType> {\n id: OptionItemIdentifier;\n item: ItemType;\n isSelected?: boolean;\n}\n\nexport type OptionItemWithItemIdentifierValues<\n ItemType extends object,\n AllTheKeys extends (string | keyof ItemType)[] = NestedKeyOf<ItemType>[]\n> = {\n [Key in AllTheKeys[number]]: ObjectPathType<ItemType, Key> extends OptionItemIdentifier ? Key : never;\n}[AllTheKeys[number]];\n\nexport type AcceptableKeysOf<ItemType = any> = ItemType extends object\n ? OptionItemWithItemIdentifierValues<ItemType>\n : never;\n\nexport type OptionItemIdentifierInput<ItemType = any> =\n | ((item: ItemType) => OptionItemIdentifier)\n | AcceptableKeysOf<ItemType>;\n\nexport type OptionItemIdentifier = string | number | symbol;\n\nexport type OptionItem<ItemType = any, ValueType = any> = Omit<_OptionItem<ItemType, ValueType>, 'isSelected'>;\n\nexport interface OptionItemBase<ValueType = any> {\n label: string;\n value: ValueType;\n}\n\ninterface ViewModel<ItemType = any, ValueType = any> {\n selectedOptions: _OptionItem<ItemType, ValueType>[];\n displayedOptions: _OptionItem<ItemType, ValueType>[];\n}\n","@if (_viewModel$ | async; as viewModel) {\n <div class=\"fd-multi-input fd-multi-input-custom\">\n <div class=\"fd-multi-input-field\">\n @if (mobile) {\n <ng-template\n [ngTemplateOutlet]=\"control\"\n [ngTemplateOutletContext]=\"{ displayAddonButton: displayAddonButton }\"\n ></ng-template>\n } @else {\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list\"\n [isOpen]=\"open\"\n (isOpenChange)=\"openChangeHandle($event)\"\n (input)=\"!open && openChangeHandle(true)\"\n [triggers]=\"[]\"\n [maxWidth]=\"_popoverMaxWidth\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n class=\"fd-multi-input-popover-custom\"\n >\n <fd-popover-control>\n <form (submit)=\"_onSubmit()\">\n <ng-template\n [ngTemplateOutlet]=\"control\"\n [ngTemplateOutletContext]=\"{ displayAddonButton: displayAddonButton }\"\n ></ng-template>\n </form>\n </fd-popover-control>\n <fd-popover-body\n [attr.aria-hidden]=\"!open\"\n [class.fd-popover__body--hidden]=\"!viewModel.displayedOptions.length\"\n >\n <ng-template [ngTemplateOutlet]=\"list\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n }\n </div>\n </div>\n <ng-template #control let-showAddonButton=\"displayAddonButton\">\n <fd-input-group\n class=\"fd-multi-input-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"showAddonButton\"\n [disabled]=\"disabled\"\n [isExpanded]=\"open && !mobile && viewModel.displayedOptions.length > 0\"\n [isControl]=\"true\"\n [glyph]=\"showAddonButton ? glyph : ''\"\n [glyphFont]=\"glyphFont\"\n (addOnButtonClicked)=\"_addOnButtonClicked($event)\"\n [glyphAriaLabel]=\"addOnButtonAriaLabel\"\n [iconTitle]=\"addonIconTitle\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fd-multi-input__invisible-text\">{{\n 'coreMultiInput.tokensCountText' | fdTranslate: { length: selected.length }\n }}</span>\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"compactCollapse\"\n [showOverflowPopover]=\"false\"\n [open]=\"open\"\n [tokenizerFocusable]=\"false\"\n (moreClickedEvent)=\"_moreClicked()\"\n class=\"fd-multi-input-tokenizer-custom\"\n tabindex=\"-1\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"filterFn(dropdownValues, searchTerm)\"\n >\n @for (option of viewModel.selectedOptions; track valueFn(option.item)) {\n <fd-token\n [disabled]=\"disabled\"\n (onCloseClick)=\"_onTokenCloseClick(option, false, $event)\"\n (onRemove)=\"_onTokenCloseClick(option, false)\"\n [title]=\"option.label\"\n (onTokenClick)=\"_tokenElementClicked($event)\"\n >\n <span [innerHtml]=\"option.label\"></span>\n </fd-token>\n }\n <input\n type=\"text\"\n class=\"fd-input fd-tokenizer__input fd-multi-input-tokenizer-input\"\n autocomplete=\"off\"\n fd-form-control\n fd-input-group-input\n fdkAutoComplete\n (onComplete)=\"_handleComplete($event)\"\n #searchInputElement\n [displayFn]=\"displayFn\"\n [matcher]=\"typeAheadMatcher\"\n [inputText]=\"_searchTermCtrl.value || ''\"\n [options]=\"dropdownValues\"\n [enable]=\"!includes && autoComplete && !mobile\"\n [attr.placeholder]=\"viewModel.selectedOptions.length ? null : placeholder\"\n [formControl]=\"_searchTermCtrl\"\n [attr.aria-required]=\"required\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n (keydown)=\"_handleInputKeydown($event)\"\n [attr.id]=\"inputId\"\n (focus)=\"tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.title]=\"title\"\n />\n </fd-tokenizer>\n </fd-input-group>\n </ng-template>\n <ng-template #list>\n @if (viewModel.displayedOptions.length) {\n <ul\n fd-list\n class=\"fd-multi-input-menu-overflow\"\n [selection]=\"true\"\n [mobileMode]=\"mobile\"\n [style.max-height]=\"!mobile ? maxHeight : 'auto'\"\n [byline]=\"byline\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [style.min-width]=\"'100%'\"\n (keydown.tab)=\"_close()\"\n aria-multiselectable=\"true\"\n >\n @for (option of viewModel.displayedOptions; track valueFn(option.item); let idx = $index) {\n <li\n fd-list-item\n [attr.aria-label]=\"option.label\"\n (click)=\"_onCheckboxClick(option, $event, idx, true)\"\n (keyup)=\"_onCheckboxKeyup(option, $event, idx, true)\"\n [selected]=\"!!option.isSelected\"\n >\n <fd-checkbox (click)=\"_onCheckboxClick(option, $event, idx)\" [value]=\"option.isSelected\">\n <!-- TODO -->\n </fd-checkbox>\n <ng-template\n [ngTemplateOutlet]=\"itemSource\"\n [ngTemplateOutletContext]=\"{ option: option }\"\n ></ng-template>\n </li>\n }\n @if (\n showAllButton &&\n (_onlySelected$ | async) !== true &&\n viewModel.displayedOptions.length < dropdownValues.length\n ) {\n <li\n fd-list-item\n class=\"fd-multi-input-show-all\"\n (keyDown)=\"_showAllKeyDown($event)\"\n (click)=\"_showAllClicked($event)\"\n >\n <a fd-link role=\"button\" tabindex=\"0\">Show All ({{ dropdownValues.length }})</a>\n </li>\n }\n </ul>\n }\n </ng-template>\n <ng-template let-option=\"option\" #itemSource>\n @if (!itemTemplate) {\n <span\n fd-list-title\n fdTruncatedTitle\n [innerHtml]=\"option.label | highlight: _searchTermCtrl.value || '' : highlight\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option.item }\"\n ></ng-template>\n }\n </ng-template>\n}\n","import { NgModule } from '@angular/core';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { MultiInputComponent } from './multi-input.component';\n\n@NgModule({\n imports: [ContentDensityModule, MultiInputComponent],\n exports: [MultiInputComponent, ContentDensityModule]\n})\nexport class MultiInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-multi-input.mjs","sources":["../../../../libs/core/multi-input/multi-input.interface.ts","../../../../libs/core/multi-input/multi-input-mobile/multi-input-mobile.component.ts","../../../../libs/core/multi-input/multi-input-mobile/multi-input-mobile.component.html","../../../../libs/core/multi-input/multi-input-mobile/multi-input-mobile.module.ts","../../../../libs/core/multi-input/pair-selection.model.ts","../../../../libs/core/multi-input/multi-input.component.ts","../../../../libs/core/multi-input/multi-input.component.html","../../../../libs/core/multi-input/multi-input.module.ts","../../../../libs/core/multi-input/fundamental-ngx-core-multi-input.ts"],"sourcesContent":["import { EventEmitter, InjectionToken } from '@angular/core';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const MULTI_INPUT_COMPONENT = new InjectionToken<string[]>('MultiInputComponent');\n\n/**\n * Multi Input Interface to have typing and avoid circular dependency between\n * MultiInputComponent <==> MultiInputMobileComponent\n */\nexport interface MultiInputInterface extends MobileMode {\n selected: any[];\n openChange: EventEmitter<boolean>;\n allItemsSelectedChange: EventEmitter<boolean>;\n\n dialogApprove(): void;\n\n selectAllItems(selectAll: boolean): void;\n\n dialogDismiss(selectedBackup: any[]): void;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable, TemplateDirective, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarMiddleDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { MULTI_INPUT_COMPONENT, MultiInputInterface } from '../multi-input.interface';\n\n@Component({\n selector: 'fd-multi-input-mobile',\n templateUrl: './multi-input-mobile.component.html',\n styleUrl: './multi-input-mobile.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n TemplateModule,\n BarMiddleDirective,\n BarElementDirective,\n ButtonBarComponent,\n TitleComponent,\n TitleComponent,\n TemplateDirective,\n BarMiddleDirective,\n BarElementDirective,\n ButtonBarComponent,\n NgTemplateOutlet,\n ButtonComponent,\n DialogComponent,\n DialogHeaderComponent,\n DialogFooterComponent,\n DialogBodyComponent,\n DialogCloseButtonComponent\n ]\n})\nexport class MultiInputMobileComponent extends MobileModeBase<MultiInputInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n allItemsSelected: boolean;\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(@Inject(MULTI_INPUT_COMPONENT) multiInputComponent: MultiInputInterface) {\n super(multiInputComponent, MobileModeControl.MULTI_INPUT);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiInputOpenChange();\n }\n\n /** Throw select all event, it's handled by multi input component */\n selectAll(selectAll: boolean): void {\n this._component.selectAllItems(!selectAll);\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.selected?.length ? [...this._component.selected] : [];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiInputOpenChange(): void {\n this._component.openChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => this._toggleDialog(isOpen));\n this._component.allItemsSelectedChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((allItemsSelected) => (this.allItemsSelected = allItemsSelected));\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 [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element class=\"custom-multi-input-mobile-control-element\">\n <ng-template\n [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"\n [ngTemplateOutletContext]=\"{ displayAddonButton: false }\"\n ></ng-template>\n </fd-bar-element>\n <fd-bar-element class=\"custom-multi-input-select-all-bar-element\">\n <button\n fd-button\n glyph=\"multiselect-all\"\n [fdType]=\"allItemsSelected ? 'emphasized' : 'transparent'\"\n (click)=\"selectAll(allItemsSelected)\"\n ></button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { MultiInputMobileComponent } from './multi-input-mobile.component';\n\n@NgModule({\n imports: [MultiInputMobileComponent],\n exports: [MultiInputMobileComponent]\n})\nexport class MultiInputMobileModule {}\n","import { EventEmitter } from '@angular/core';\n\nexport class PairSelectionModel<KeyType, ValueType> {\n /** @hidden */\n _selected = new Map<KeyType, ValueType>();\n /** Event emitted when the selection has changed. */\n selectionChanged = new EventEmitter<[KeyType, ValueType][]>();\n\n /** Array of selected items */\n get selected(): ValueType[] {\n return [...this._selected.values()];\n }\n\n /** Whether the given key exists in the record */\n isSelected(key: KeyType): boolean {\n return this._selected.has(key);\n }\n\n /** Selects the given key-value pair */\n select(values: [KeyType, ValueType][]): void;\n /** Selects the given key-value pair */\n select(key: KeyType, value: ValueType): void;\n /** Selects the given key-value pair */\n select(keyOrValues: KeyType | Array<[KeyType, ValueType]>, value?: ValueType): void {\n if (value) {\n this._selected.set(keyOrValues as KeyType, value);\n } else {\n (keyOrValues as Array<[KeyType, ValueType]>).forEach(([key, v]) => this._selected.set(key, v));\n }\n this.selectionChanged.emit([...this._selected]);\n }\n\n /** Deselects the given key */\n deselect(key: KeyType): void {\n this._selected.delete(key);\n this.selectionChanged.emit([...this._selected]);\n }\n\n /** Clears the selection information */\n clear(): void {\n this._selected.clear();\n this.selectionChanged.emit([...this._selected]);\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { DOWN_ARROW, ENTER, SPACE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Injector,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, first, map, startWith } from 'rxjs/operators';\n\nimport {\n applyCssClass,\n AutoCompleteDirective,\n CssClassBuilder,\n DynamicComponentService,\n FocusEscapeDirection,\n FocusTrapService,\n KeyUtil,\n NestedKeyOf,\n Nullable,\n ObjectPathType,\n RangeSelector,\n RtlService,\n SearchHighlightPipe,\n TruncatedTitleDirective,\n uuidv4\n} from '@fundamental-ngx/cdk/utils';\nimport { FormControlComponent, FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\nimport { TokenComponent, TokenizerComponent } from '@fundamental-ngx/core/token';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { MultiAnnouncerDirective } from '@fundamental-ngx/core/multi-combobox';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport get from 'lodash-es/get';\nimport { MultiInputMobileComponent } from './multi-input-mobile/multi-input-mobile.component';\nimport { MULTI_INPUT_COMPONENT, MultiInputInterface } from './multi-input.interface';\nimport { PairSelectionModel } from './pair-selection.model';\n\nfunction isOptionItem<ItemType = any, ValueType = any>(\n candidate: unknown\n): candidate is _OptionItem<ItemType, ValueType> {\n return isOptionItemBase<ValueType>(candidate) && 'item' in candidate && 'id' in candidate;\n}\n\nfunction isOptionItemBase<ValueType = any>(candidate: unknown): candidate is OptionItemBase<ValueType> {\n return typeof candidate === 'object' && candidate !== null && 'value' in candidate && 'label' in candidate;\n}\n\nlet uniqueHiddenLabel = 0;\n\n/**\n * Input field with multiple selection enabled. Should be used when a user can select between a\n * limited number of pre-defined options with a filter-enabled context.\n *\n * Supports Angular Forms.\n */\n@Component({\n selector: 'fd-multi-input',\n templateUrl: './multi-input.component.html',\n styleUrl: './multi-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiInputComponent),\n multi: true\n },\n MenuKeyboardService,\n registerFormItemControl(MultiInputComponent),\n contentDensityObserverProviders()\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n PopoverComponent,\n PopoverControlComponent,\n FormsModule,\n PopoverBodyComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n TokenComponent,\n TokenizerComponent,\n FormControlComponent,\n AutoCompleteDirective,\n ReactiveFormsModule,\n ListComponent,\n ListItemComponent,\n ListTitleDirective,\n CheckboxComponent,\n LinkComponent,\n AsyncPipe,\n SearchHighlightPipe,\n FdTranslatePipe,\n MultiAnnouncerDirective,\n TruncatedTitleDirective\n ]\n})\nexport class MultiInputComponent<ItemType = any, ValueType = any>\n implements\n MultiInputInterface,\n ControlValueAccessor,\n CssClassBuilder,\n OnInit,\n OnChanges,\n AfterViewInit,\n OnDestroy,\n FormItemControl\n{\n /** Placeholder for the input field. */\n @Input()\n placeholder = '';\n\n /** Whether the input is disabled. */\n @Input()\n disabled = false;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Whether to use cozy visuals but compact collapsing behavior. */\n @Input()\n compactCollapse = true;\n\n /** Max height of the popover. Any overflowing elements will be accessible through scrolling. */\n @Input()\n maxHeight = '300px';\n\n /** Icon of the button on the right of the input field. */\n @Input()\n glyph = 'value-help';\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Values to be displayed in the unfiltered dropdown. */\n @Input()\n dropdownValues: Array<ItemType | _OptionItem<ItemType, ValueType>> = [];\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Title text for the add-on icon button. */\n @Input()\n addonIconTitle: string;\n\n /** Search term, or more specifically the value of the inner input field. */\n @Input()\n set searchTerm(value: string) {\n this._searchTermCtrl.setValue(value);\n }\n get searchTerm(): string {\n return this._searchTermCtrl.value ?? '';\n }\n\n /** Id attribute for input element inside MultiInput component */\n @Input()\n inputId = '';\n\n /** Whether the search term should be highlighted in results. */\n @Input()\n highlight = true;\n\n /** Selected dropdown items. */\n @Input()\n set selected(values: ValueType[]) {\n this._selectionModel.clear();\n if (values) {\n const potentialItems = [...values];\n const options: _OptionItem<ItemType, ValueType>[] = [];\n potentialItems.forEach((value) => {\n let optionItem = this._optionItems.find((i) => i.value === value);\n if (!optionItem) {\n optionItem = this._getOptionItem(value as unknown as ItemType);\n }\n options.push(optionItem);\n });\n this._selectionModel.select(options.map((item) => [item.id, item]));\n }\n }\n\n get selected(): ValueType[] {\n return this._selectionModel.selected.map((c) => c.value);\n }\n\n /** user's custom classes */\n @Input()\n class: string;\n\n /**\n * Filter function. Accepts an array and a string as arguments, and outputs an array.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details.\n */\n @Input()\n filterFn: (contentArray: this['dropdownValues'], searchTerm: string) => this['dropdownValues'] =\n this._defaultFilter;\n\n /**\n * Value function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs any property, that should be used as value.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details.\n */\n @Input()\n valueFn: (item: ItemType) => ValueType = this._defaultValueFn;\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 */\n @Input()\n displayFn: (item: ItemType) => string = this._defaultDisplay as unknown as (item: ItemType) => string;\n\n /**\n * Parse function. Used for submitting new tokens. Accepts a string by default.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See multi input examples for details.\n */\n @Input()\n newTokenParseFn: (searchTerm: string) => any = this._defaultParse;\n\n /**\n * Identifier function or path to an identifier property.\n */\n @Input()\n optionItemIdentifier: OptionItemIdentifierInput<ItemType>;\n\n /**\n * Validate function. Used to check if new token can be added into list.\n * Works only, when `allowNewTokens` option is enabled.\n */\n @Input()\n newTokenValidateFn = this._defaultTokenValidate;\n\n /** aria-label attribute binding. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** aria-labelledby attribute binding. */\n @Input()\n ariaLabelledBy: Nullable<string>;\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 state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n state?: FormStates;\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /** Whether the multi-input allows the creation of new tokens. */\n @Input()\n allowNewTokens = false;\n\n /** Whether the multi-input should be built on mobile mode */\n @Input()\n mobile = false;\n\n /** Whether the multi-input should have show all button. */\n @Input()\n showAllButton = true;\n\n /**\n * Max width of multi input body.\n * `none` will not limit width of the dropdown.\n * `container` will limit width of the dropdown to the width of the multi-input itself.\n * `number` will limit width of the dropdown by provided number in pixels.\n */\n @Input()\n bodyMaxWidth: 'none' | 'container' | number = 'none';\n\n /** @hidden */\n get _popoverMaxWidth(): Nullable<number> {\n if (this.bodyMaxWidth === 'none') {\n return null;\n }\n\n if (typeof this.bodyMaxWidth === 'number') {\n return this.bodyMaxWidth;\n }\n\n return this.elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /** Multi Input Mobile Configuration, it's applied only, when mobile is enabled */\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true, approveButtonText: 'Select' };\n\n /**\n * Whether to return results where the input matches the entire string. By default, only results that start\n * with the input search term will be returned.\n */\n @Input()\n includes = false;\n\n /**\n * The template with which to display the individual listed items.\n * Use it by passing an ng-template with implicit content. See examples for more info.\n */\n @Input()\n itemTemplate: TemplateRef<any>;\n\n /**\n * The tooltip for the multi-input icon.\n */\n @Input()\n title: string;\n\n /** Whether list item options should be rendered as byline. */\n @Input()\n byline = false;\n\n /** Whether the autocomplete should be enabled; Enabled by default */\n @Input()\n autoComplete = true;\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 /** Event emitted when the selected items change. Use *$event* to access the new selected array. */\n @Output()\n readonly selectedChange: EventEmitter<ValueType[]> = new EventEmitter<ValueType[]>();\n\n /** Whether multi input popover body should be opened */\n @Input()\n open = false;\n\n /** Whether to display the addon button. */\n @Input()\n displayAddonButton = true;\n\n /** Aria-label for the addon button. */\n @Input()\n addOnButtonAriaLabel: Nullable<string>;\n\n /** @hidden */\n private _tokenCountHiddenLabel = `fd-multi-input-token-count-id-${uniqueHiddenLabel++}`;\n\n /** token count hidden label */\n @Input()\n tokenHiddenId: string = this._tokenCountHiddenLabel;\n\n /** Event emitted, when the multi input's popover body is opened or closed */\n @Output()\n readonly openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n readonly addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** Event emitted, when the multi input's all item checked or not */\n @Output()\n readonly allItemsSelectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(PopoverComponent)\n popoverRef: PopoverComponent;\n\n /** @hidden */\n @ViewChild('control', { read: TemplateRef })\n controlTemplate: TemplateRef<{ displayAddonButton: boolean }>;\n\n /** @hidden */\n @ViewChild('list', { read: TemplateRef })\n listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild(ListComponent)\n listComponent: ListComponent;\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n searchInputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n tokenizer: TokenizerComponent;\n\n /** @hidden */\n get _optionItems(): _OptionItem<ItemType, ValueType>[] {\n return this.optionItems$.value;\n }\n /** @hidden */\n readonly optionItems$ = new BehaviorSubject<_OptionItem<ItemType, ValueType>[]>([]);\n\n /** @hidden */\n readonly _onlySelected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n readonly _searchTermCtrl = new FormControl('');\n\n /** @hidden */\n readonly _selectionModel = new PairSelectionModel<OptionItemIdentifier, OptionItem<ItemType, ValueType>>();\n\n /** @hidden */\n readonly _viewModel$: Observable<ViewModel<ItemType, ValueType>> = this._getViewModel();\n\n /** @hidden */\n _dir: string;\n\n /** typeahead matcher function */\n get typeAheadMatcher(): (item: string, searchTerm: string) => boolean {\n if (this.includes) {\n return (item: string, searchTerm: string) => item.includes(searchTerm);\n }\n return (item: string, searchTerm: string) => item.startsWith(searchTerm);\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n constructor(\n readonly _contentDensityObserver: ContentDensityObserver,\n public readonly elementRef: ElementRef<HTMLElement>,\n private readonly _changeDetRef: ChangeDetectorRef,\n private readonly _dynamicComponentService: DynamicComponentService,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n @Optional() private readonly _rtlService: RtlService,\n @Optional() private readonly _focusTrapService: FocusTrapService\n ) {}\n\n /** @hidden CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n // TODO: this icon flip may be addressed in styles in the future\n if (this.glyph === 'value-help' && this._dir === 'rtl') {\n const icon = this.elementRef.nativeElement.querySelector('.sap-icon--value-help') as HTMLElement;\n if (icon) {\n icon.style.transform = 'scaleX(-1)';\n }\n }\n\n return ['fd-multi-input', 'fd-multi-input-custom', this.class];\n }\n\n /** @hidden */\n @HostListener('focusout', ['$event'])\n private _focusOut(event: FocusEvent): void {\n if (!this.elementRef.nativeElement.contains(event.relatedTarget as Node)) {\n this.onTouched();\n }\n }\n\n /** @hidden */\n onChange: (value: any) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n\n this._subscriptions.add(\n this._rtlService?.rtl.subscribe((isRtl) => {\n this._dir = isRtl ? 'rtl' : 'ltr';\n this.buildComponentCssClass();\n })\n );\n\n if (!this.inputId) {\n this.inputId = uuidv4();\n }\n\n this._subscriptions.add(\n this._searchTermCtrl.valueChanges.pipe(distinctUntilChanged()).subscribe((searchTerm) => {\n this.searchTermChange.emit(searchTerm ?? '');\n // resetting existing selection state, if any\n this._rangeSelector.reset();\n })\n );\n this._subscriptions.add(\n this._getViewModel()\n .pipe(map((viewModel) => !viewModel.displayedOptions.some((c) => !c.isSelected)))\n .subscribe((allItemsSelected) => this.allItemsSelectedChange.emit(allItemsSelected))\n );\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n\n if (changes.dropdownValues || changes.searchTerm || changes.valueFn || changes.displayFn) {\n const optionItems = (this.dropdownValues ?? []).map((item) => this._getOptionItem(item));\n this.optionItems$.next(optionItems);\n this._changeDetRef.markForCheck();\n }\n\n if (changes.disabled) {\n this.disabled ? this._searchTermCtrl.disable() : this._searchTermCtrl.enable();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.mobile) {\n this._setUpMobileMode();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any[]) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled) {\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n } else {\n this.elementRef.nativeElement.style.pointerEvents = 'auto';\n }\n\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n writeValue(selected: ValueType[]): void {\n this.selected = selected;\n\n this._changeDetRef.markForCheck();\n }\n\n /** Method passed to list component */\n handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up' && !this.mobile) {\n this.searchInputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n openChangeHandle(open: boolean): void {\n if (this.disabled) {\n return;\n }\n\n if (this.open !== open) {\n this.openChange.emit(open);\n }\n\n this.open = open;\n\n if (!this.mobile) {\n this._popoverOpenHandle(open);\n }\n\n if (!this.open) {\n this._resetSearchTerm();\n this.enableParentFocusTrap();\n this._onlySelected$.next(false);\n } else {\n this.disableParentFocusTrap();\n\n this.searchInputElement?.nativeElement.focus();\n }\n\n this.tokenizer.tokenizerInnerEl.nativeElement.scrollLeft =\n this.tokenizer.tokenizerInnerEl.nativeElement.scrollWidth;\n\n this._changeDetRef.detectChanges();\n }\n\n /** Method that selects all possible options. */\n selectAllItems(selectAll: boolean): void {\n if (selectAll) {\n this.selected = this._optionItems.map((c) => c.value);\n } else {\n this.selected = [];\n }\n // On Mobile mode changes are propagated only on approve.\n this._propagateChange();\n }\n\n /** @hidden */\n _onCheckboxKeyup(\n option: _OptionItem<ItemType, ValueType>,\n event: KeyboardEvent,\n index: number,\n isListItem = false\n ): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n this._onCheckboxClick(option, event, index, isListItem);\n }\n }\n\n /** @hidden */\n async _onCheckboxClick(\n option: _OptionItem<ItemType, ValueType>,\n event: MouseEvent | KeyboardEvent,\n index: number,\n isListItem = false\n ): Promise<void> {\n const toggledSelection = !this._selectionModel.isSelected(option.id);\n this._rangeSelector.onRangeElementToggled(index, event);\n const sub = this._viewModel$.pipe(first()).subscribe((vm) => {\n this._rangeSelector.applyValueToEachInRange((idx) =>\n this._handleSelect(toggledSelection, vm.displayedOptions[idx], false)\n );\n this._changeDetRef.detectChanges();\n });\n this._subscriptions.add(sub);\n // stop propagation on the checkbox so event doesn't reach the list item\n event.stopPropagation();\n }\n\n /** @hidden */\n _onTokenCloseClick(option: _OptionItem<ItemType, ValueType>, resetSearch: boolean, event?: MouseEvent): void {\n event?.preventDefault(); // prevent this function from being called twice when checkbox updates\n this._handleSelect(false, option, resetSearch, true);\n }\n\n /** @hidden */\n _tokenElementClicked(event: MouseEvent): void {\n const textElement = (event.currentTarget as HTMLElement).querySelector('.fd-token__text') as HTMLElement;\n if (textElement && textElement.offsetWidth < textElement.scrollWidth && this.open === false) {\n this.openChangeHandle(true);\n }\n }\n\n /** @hidden */\n _handleSelect(\n checked: any,\n option: _OptionItem<ItemType, ValueType>,\n resetSearch = true,\n fromTokenCloseClick = false\n ): void {\n const previousLength = this._selectionModel.selected.length;\n option = this._getOptionItem(option);\n if (checked) {\n this._selectionModel.select(option.id, option);\n } else {\n this._selectionModel.deselect(option.id);\n }\n\n // Handle popover placement update\n if (this._shouldPopoverBeUpdated(previousLength, this._selectionModel.selected.length)) {\n this.popoverRef.refreshPosition();\n }\n if (resetSearch) {\n this._resetSearchTerm();\n this.searchInputElement.nativeElement.focus();\n }\n\n if (this._selectionModel.selected.length === 0) {\n this.searchInputElement.nativeElement.focus();\n this._changeDetRef.detectChanges();\n }\n\n // On Mobile mode changes are propagated only on approve.\n this._propagateChange(fromTokenCloseClick);\n }\n\n /** @hidden */\n _handleInputKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && !this.mobile) {\n if (event.altKey) {\n this.openChangeHandle(true);\n }\n\n if (this.listComponent) {\n this.listComponent.setItemActive(0);\n event.preventDefault();\n }\n } else if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, ENTER])) {\n this.openChangeHandle(true);\n } else if (KeyUtil.isKeyCode(event, TAB) && this.open) {\n this._close();\n } else if (KeyUtil.isKeyType(event, 'alphabetical') || KeyUtil.isKeyType(event, 'numeric')) {\n if (!this.open) {\n this.openChangeHandle(true);\n this.searchInputElement.nativeElement.focus();\n }\n }\n }\n\n /** @hidden */\n _showAllClicked(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this._searchTermCtrl.setValue('');\n this.searchInputElement.nativeElement.focus();\n }\n\n /** @hidden */\n _showAllKeyDown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n this._showAllClicked(event);\n }\n }\n\n /** @hidden */\n _onSubmit(): void {\n const searchTerm = this.searchTerm;\n if (searchTerm === '') {\n return;\n }\n const isExist = this._selectFirstFiltered(searchTerm);\n if (!isExist && this.allowNewTokens && this.newTokenValidateFn(this._searchTermCtrl.value ?? '')) {\n const newToken = this.newTokenParseFn(this._searchTermCtrl.value ?? '');\n const newOption = this._addNewTokenToDropDownValues(newToken);\n this._handleSelect(true, newOption);\n this._searchTermCtrl.setValue('');\n this.open = false;\n }\n }\n\n /** @hidden */\n _handleComplete({ term }): void {\n this.searchTerm = term;\n }\n\n /**\n * Handle dialog dismissing, closes popover and sets backup data.\n */\n dialogDismiss(selectedBackup: any[]): void {\n this.openChangeHandle(false);\n this._resetSearchTerm();\n this.selected = selectedBackup;\n }\n\n /**\n * Handle dialog approval, closes popover and propagates data changes.\n */\n dialogApprove(): void {\n this._propagateChange(true);\n this.openChangeHandle(false);\n this._resetSearchTerm();\n }\n\n /** @hidden */\n _moreClicked(): void {\n this._onlySelected$.next(true);\n this.openChangeHandle(true);\n }\n\n /** @hidden */\n _addOnButtonClicked(event: Event): void {\n this.addOnButtonClicked.emit(event);\n if (this.openDropdownOnAddOnClicked) {\n this.openChangeHandle(!this.open);\n } else if (this.open) {\n this.openChangeHandle(false);\n }\n }\n\n /** @hidden */\n disableParentFocusTrap(): void {\n this._focusTrapService?.pauseCurrentFocusTrap();\n }\n\n /** @hidden */\n enableParentFocusTrap(): void {\n this._focusTrapService?.unpauseCurrentFocusTrap();\n }\n\n /** @hidden */\n _close(): void {\n this.searchInputElement.nativeElement.focus();\n this.openChangeHandle(false);\n }\n\n /** @hidden */\n private _addNewTokenToDropDownValues(newToken: any): OptionItem {\n this.dropdownValues.push(newToken);\n const newOption = this._getOptionItem(newToken);\n this.optionItems$.next([...this._optionItems, newOption]);\n return newOption;\n }\n\n /** @hidden */\n private _selectFirstFiltered(searchTerm: string): boolean {\n const filtered = this.filterFn(this.dropdownValues, searchTerm);\n if (Array.isArray(filtered) && filtered.length > 0 && this.autoComplete) {\n const optionItem = this._getOptionItem(filtered[0]);\n this._handleSelect(true, optionItem);\n this._searchTermCtrl.setValue('');\n this.open = false;\n return true;\n }\n return false;\n }\n\n /** @hidden */\n private _defaultFilter(contentArray: this['dropdownValues'], searchTerm: string = ''): this['dropdownValues'] {\n const trimmedSearchTerm = searchTerm.trim().toLocaleLowerCase();\n return contentArray.filter((item) => {\n if (item) {\n const displayedValue = isOptionItem(item) ? item.label : this.displayFn(item);\n const term = displayedValue?.toLocaleLowerCase() || '';\n return this.typeAheadMatcher(term, trimmedSearchTerm);\n }\n });\n }\n\n /** @hidden */\n private _defaultValueFn(value: ItemType | ValueType): ValueType {\n return value as ValueType;\n }\n\n /** @hidden */\n private _defaultDisplay(str: ItemType): string | undefined {\n if (typeof str === 'string') {\n return str;\n }\n if (isOptionItemBase(str)) {\n return str.label;\n }\n }\n\n /** @hidden */\n private _defaultParse(str: string): string {\n return str;\n }\n\n /** @hidden */\n private _defaultTokenValidate(str: string): boolean {\n return !!str;\n }\n\n /** @hidden */\n private _popoverOpenHandle(open: boolean): void {\n this.open = open;\n }\n\n /** @hidden */\n private _propagateChange(emitInMobile?: boolean): void {\n if (!this.mobile || emitInMobile) {\n const selected = this._selectionModel.selected.map((c) => c.value);\n this.onChange(selected);\n this.selectedChange.emit(selected);\n }\n }\n\n /** @hidden */\n private _shouldPopoverBeUpdated(previousLength: number, currentLength: number): boolean {\n return (\n !!this.popoverRef &&\n ((previousLength === 0 && currentLength === 1) || (previousLength === 1 && currentLength === 0))\n );\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTI_INPUT_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._dynamicComponentService.createDynamicComponent(\n {\n listTemplate: this.listTemplate,\n controlTemplate: this.controlTemplate\n },\n MultiInputMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n }\n\n /** @hidden */\n private _getItemIdentifier(item: ItemType): OptionItemIdentifier {\n if (!this.optionItemIdentifier) {\n const value = this.valueFn(item);\n if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'symbol' && isDevMode()) {\n console.warn(\n 'optionItemIdentifier is not set and valueFn does not return a string, number or symbol',\n item\n );\n }\n return value as OptionItemIdentifier;\n }\n if (typeof this.optionItemIdentifier === 'function') {\n return this.optionItemIdentifier(item);\n }\n return get(item, this.optionItemIdentifier) as OptionItemIdentifier;\n }\n\n /** @hidden */\n private _resetSearchTerm(): void {\n this._searchTermCtrl.setValue('');\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _getOptionItem(item: ItemType | _OptionItem<ItemType, ValueType>): _OptionItem<ItemType, ValueType> {\n if (isOptionItem<ItemType, ValueType>(item)) {\n return item;\n }\n const { label, value } = this._getValueAndLabelOfItem(item);\n return {\n id: this._getItemIdentifier(item),\n item,\n label,\n value,\n isSelected: false\n };\n }\n\n /** @hidden */\n private _getValueAndLabelOfItem(item: ItemType): OptionItemBase<ValueType> {\n const defaultDisplay = typeof item === 'object' && item !== null ? item[Object.keys(item)[0]] : item;\n let value = this.valueFn(item) ?? defaultDisplay;\n let label = this.displayFn(item) ?? defaultDisplay;\n if (isOptionItemBase(item)) {\n if (this.valueFn === this._defaultValueFn) {\n value = item.value;\n }\n if (this.displayFn === this._defaultDisplay) {\n label = item.label;\n }\n }\n return { label, value };\n }\n\n /** @hidden */\n private _getViewModel(): Observable<ViewModel<ItemType, ValueType>> {\n return combineLatest([\n this._searchTermCtrl.valueChanges.pipe(startWith(this._searchTermCtrl.value)),\n this._selectionModel.selectionChanged.pipe(startWith(null)),\n this._onlySelected$,\n this.optionItems$\n ]).pipe(\n map(() => {\n // not using \"searchTerm\" value from combineLatest as it will be wrong for late subscribers, if any\n const searchTerm = this._searchTermCtrl.value ?? '';\n const filtered = this.filterFn(this.dropdownValues, searchTerm);\n const onlySelected = this._onlySelected$.value;\n let displayedOptions = (Array.isArray(filtered) ? filtered : []).map((item) =>\n this._getOptionItem(item)\n );\n\n displayedOptions.forEach((c) => (c.isSelected = this._selectionModel.isSelected(c.id)));\n\n if (onlySelected) {\n displayedOptions = displayedOptions.filter((item) => item.isSelected);\n }\n\n return { selectedOptions: this._selectionModel.selected, displayedOptions };\n })\n );\n }\n}\n\ninterface _OptionItem<ItemType = any, ValueType = any> extends OptionItemBase<ValueType> {\n id: OptionItemIdentifier;\n item: ItemType;\n isSelected?: boolean;\n}\n\nexport type OptionItemWithItemIdentifierValues<\n ItemType extends object,\n AllTheKeys extends (string | keyof ItemType)[] = NestedKeyOf<ItemType>[]\n> = {\n [Key in AllTheKeys[number]]: ObjectPathType<ItemType, Key> extends OptionItemIdentifier ? Key : never;\n}[AllTheKeys[number]];\n\nexport type AcceptableKeysOf<ItemType = any> = ItemType extends object\n ? OptionItemWithItemIdentifierValues<ItemType>\n : never;\n\nexport type OptionItemIdentifierInput<ItemType = any> =\n | ((item: ItemType) => OptionItemIdentifier)\n | AcceptableKeysOf<ItemType>;\n\nexport type OptionItemIdentifier = string | number | symbol;\n\nexport type OptionItem<ItemType = any, ValueType = any> = Omit<_OptionItem<ItemType, ValueType>, 'isSelected'>;\n\nexport interface OptionItemBase<ValueType = any> {\n label: string;\n value: ValueType;\n}\n\ninterface ViewModel<ItemType = any, ValueType = any> {\n selectedOptions: _OptionItem<ItemType, ValueType>[];\n displayedOptions: _OptionItem<ItemType, ValueType>[];\n}\n","@if (_viewModel$ | async; as viewModel) {\n <div class=\"fd-multi-input fd-multi-input-custom\">\n <div class=\"fd-multi-input-field\">\n @if (mobile) {\n <ng-template\n [ngTemplateOutlet]=\"control\"\n [ngTemplateOutletContext]=\"{ displayAddonButton: displayAddonButton }\"\n ></ng-template>\n } @else {\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list\"\n [isOpen]=\"open\"\n (isOpenChange)=\"openChangeHandle($event)\"\n (input)=\"!open && openChangeHandle(true)\"\n [triggers]=\"[]\"\n [maxWidth]=\"_popoverMaxWidth\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n class=\"fd-multi-input-popover-custom\"\n >\n <fd-popover-control>\n <form (submit)=\"_onSubmit()\">\n <ng-template\n [ngTemplateOutlet]=\"control\"\n [ngTemplateOutletContext]=\"{ displayAddonButton: displayAddonButton }\"\n ></ng-template>\n </form>\n </fd-popover-control>\n <fd-popover-body\n [attr.aria-hidden]=\"!open\"\n [class.fd-popover__body--hidden]=\"!viewModel.displayedOptions.length\"\n >\n <ng-template [ngTemplateOutlet]=\"list\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n }\n </div>\n </div>\n <ng-template #control let-showAddonButton=\"displayAddonButton\">\n <fd-input-group\n class=\"fd-multi-input-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"showAddonButton\"\n [disabled]=\"disabled\"\n [isExpanded]=\"open && !mobile && viewModel.displayedOptions.length > 0\"\n [isControl]=\"true\"\n [glyph]=\"showAddonButton ? glyph : ''\"\n [glyphFont]=\"glyphFont\"\n (addOnButtonClicked)=\"_addOnButtonClicked($event)\"\n [glyphAriaLabel]=\"addOnButtonAriaLabel\"\n [iconTitle]=\"addonIconTitle\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fd-multi-input__invisible-text\">{{\n 'coreMultiInput.tokensCountText' | fdTranslate: { length: selected.length }\n }}</span>\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"compactCollapse\"\n [showOverflowPopover]=\"false\"\n [open]=\"open\"\n [tokenizerFocusable]=\"false\"\n (moreClickedEvent)=\"_moreClicked()\"\n class=\"fd-multi-input-tokenizer-custom\"\n tabindex=\"-1\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"filterFn(dropdownValues, searchTerm)\"\n >\n @for (option of viewModel.selectedOptions; track valueFn(option.item)) {\n <fd-token\n [disabled]=\"disabled\"\n (onCloseClick)=\"_onTokenCloseClick(option, false, $event)\"\n (onRemove)=\"_onTokenCloseClick(option, false)\"\n [title]=\"option.label\"\n (onTokenClick)=\"_tokenElementClicked($event)\"\n >\n <span [innerHtml]=\"option.label\"></span>\n </fd-token>\n }\n <input\n type=\"text\"\n class=\"fd-input fd-tokenizer__input fd-multi-input-tokenizer-input\"\n autocomplete=\"off\"\n fd-form-control\n fd-input-group-input\n fdkAutoComplete\n (onComplete)=\"_handleComplete($event)\"\n #searchInputElement\n [displayFn]=\"displayFn\"\n [matcher]=\"typeAheadMatcher\"\n [inputText]=\"_searchTermCtrl.value || ''\"\n [options]=\"dropdownValues\"\n [enable]=\"!includes && autoComplete && !mobile\"\n [attr.placeholder]=\"viewModel.selectedOptions.length ? null : placeholder\"\n [formControl]=\"_searchTermCtrl\"\n [attr.aria-required]=\"required\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n (keydown)=\"_handleInputKeydown($event)\"\n [attr.id]=\"inputId\"\n (focus)=\"tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.title]=\"title\"\n />\n </fd-tokenizer>\n </fd-input-group>\n </ng-template>\n <ng-template #list>\n @if (viewModel.displayedOptions.length) {\n <ul\n fd-list\n class=\"fd-multi-input-menu-overflow\"\n [selection]=\"true\"\n [mobileMode]=\"mobile\"\n [style.max-height]=\"!mobile ? maxHeight : 'auto'\"\n [byline]=\"byline\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [style.min-width]=\"'100%'\"\n (keydown.tab)=\"_close()\"\n aria-multiselectable=\"true\"\n >\n @for (option of viewModel.displayedOptions; track valueFn(option.item); let idx = $index) {\n <li\n fd-list-item\n [attr.aria-label]=\"option.label\"\n (click)=\"_onCheckboxClick(option, $event, idx, true)\"\n (keyup)=\"_onCheckboxKeyup(option, $event, idx, true)\"\n [selected]=\"!!option.isSelected\"\n >\n <fd-checkbox (click)=\"_onCheckboxClick(option, $event, idx)\" [value]=\"option.isSelected\">\n <!-- TODO -->\n </fd-checkbox>\n <ng-template\n [ngTemplateOutlet]=\"itemSource\"\n [ngTemplateOutletContext]=\"{ option: option }\"\n ></ng-template>\n </li>\n }\n @if (\n showAllButton &&\n (_onlySelected$ | async) !== true &&\n viewModel.displayedOptions.length < dropdownValues.length\n ) {\n <li\n fd-list-item\n class=\"fd-multi-input-show-all\"\n (keyDown)=\"_showAllKeyDown($event)\"\n (click)=\"_showAllClicked($event)\"\n >\n <a fd-link role=\"button\" tabindex=\"0\">Show All ({{ dropdownValues.length }})</a>\n </li>\n }\n </ul>\n }\n </ng-template>\n <ng-template let-option=\"option\" #itemSource>\n @if (!itemTemplate) {\n <span\n fd-list-title\n fdTruncatedTitle\n [innerHtml]=\"option.label | highlight: _searchTermCtrl.value || '' : highlight\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option.item }\"\n ></ng-template>\n }\n </ng-template>\n}\n","import { NgModule } from '@angular/core';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { MultiInputComponent } from './multi-input.component';\n\n@NgModule({\n imports: [ContentDensityModule, MultiInputComponent],\n exports: [MultiInputComponent, ContentDensityModule]\n})\nexport class MultiInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -583,27 +583,18 @@ class WizardComponent {
|
|
|
583
583
|
}
|
|
584
584
|
/** @hidden */
|
|
585
585
|
_getWizardFooterHeight() {
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
if (dialogBody.querySelector('.' + BAR_FOOTER_CLASS)) {
|
|
590
|
-
retVal = dialogBody.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;
|
|
591
|
-
}
|
|
592
|
-
else if (dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {
|
|
593
|
-
retVal = dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
return retVal;
|
|
586
|
+
const container = this._dialogBodyComponent?.elementRef.nativeElement ?? this._elRef.nativeElement;
|
|
587
|
+
const footer = container.querySelector(`.${BAR_FOOTER_CLASS}`) ?? container.querySelector(`.${BAR_FLOATING_FOOTER_CLASS}`);
|
|
588
|
+
return footer ? footer.offsetHeight : 0;
|
|
597
589
|
}
|
|
598
590
|
/** @hidden */
|
|
599
591
|
_getDialogOffset() {
|
|
600
592
|
let retVal = 0;
|
|
601
593
|
if (this._dialogBodyComponent) {
|
|
602
594
|
const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;
|
|
603
|
-
const dialogComponent = dialogBody.closest('fd-dialog');
|
|
604
595
|
if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {
|
|
605
596
|
this._dialogBodyComponent.dialogConfig.verticalPadding = false;
|
|
606
|
-
const dialogBodyTitle =
|
|
597
|
+
const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');
|
|
607
598
|
if (dialogBodyTitle) {
|
|
608
599
|
retVal = dialogBodyTitle.offsetHeight;
|
|
609
600
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-wizard.mjs","sources":["../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.ts","../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.html","../../../../libs/core/wizard/wizard-content/wizard-content.component.ts","../../../../libs/core/wizard/wizard-content/wizard-content.component.html","../../../../libs/core/wizard/wizard-injection-token.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.html","../../../../libs/core/wizard/wizard-progress-bar/wizard-progress-bar.directive.ts","../../../../libs/core/wizard/constants.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.html","../../../../libs/core/wizard/wizard-step/wizard-step.component.ts","../../../../libs/core/wizard/wizard-step/wizard-step.component.html","../../../../libs/core/wizard/wizard.service.ts","../../../../libs/core/wizard/wizard.component.ts","../../../../libs/core/wizard/wizard.component.html","../../../../libs/core/wizard/wizard.module.ts","../../../../libs/core/wizard/fundamental-ngx-core-wizard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, inject } from '@angular/core';\n\n@Component({\n selector: 'fd-wizard-next-step',\n templateUrl: './wizard-next-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNextStepComponent {\n /**\n * Whether or not the next step button should float directly above the footer.\n */\n @Input()\n floating = false;\n\n /**\n * Whether or not element can be hidden when step status is completed.\n */\n @Input()\n set canHide(value: boolean) {\n this._canHide = value;\n\n if (!value) {\n this._showElement();\n }\n }\n\n get canHide(): boolean {\n return this._canHide;\n }\n\n /** @hidden */\n private _canHide = true;\n\n /** @hidden */\n private readonly _elRef = inject(ElementRef);\n\n /** @hidden */\n _getElRef(): ElementRef {\n return this._elRef;\n }\n\n /** @hidden */\n _showElement(): void {\n this._elRef.nativeElement.style.removeProperty('display');\n }\n\n /** @hidden */\n _hideElement(): void {\n this._elRef.nativeElement.style.display = 'none';\n }\n}\n","<div class=\"fd-wizard__next-step\" [class.fd-wizard__next-step--floating]=\"floating\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { WizardNextStepComponent } from '../wizard-next-step/wizard-next-step.component';\nimport { WizardSize } from '../wizard-progress-bar/wizard-progress-bar.directive';\n\nexport type WizardContentBackground = 'solid' | 'list' | 'transparent';\n\n@Component({\n selector: 'fd-wizard-content',\n templateUrl: './wizard-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './wizard-content.component.scss',\n standalone: true\n})\nexport class WizardContentComponent {\n /**\n * The type of wizard background ('solid', 'list', or 'transparent').\n */\n @Input()\n contentBackground: WizardContentBackground;\n\n /**\n * Size (horizontal paddings) of the wizard content.\n */\n @Input()\n size: WizardSize;\n\n /** @hidden */\n @ViewChild('contentTemplate')\n contentTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(WizardNextStepComponent)\n nextStep: WizardNextStepComponent;\n\n /** @hidden */\n wizardContentId: string;\n\n /** @hidden */\n tallContent = false;\n}\n","<ng-template #contentTemplate>\n <section\n role=\"region\"\n [id]=\"wizardContentId\"\n class=\"fd-wizard__content\"\n [class]=\"\n (contentBackground ? 'fd-wizard__content--' + contentBackground + ' ' : '') +\n (size ? 'fd-wizard__content--' + size : '')\n \"\n [class.fd-wizard-tall-content]=\"tallContent\"\n >\n <div class=\"fd-wizard__step-content-container\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\n\nexport interface WizardComponentInterface {\n displaySummaryStep: boolean;\n ariaLabel: string;\n}\n\nexport const WIZARD = new InjectionToken<WizardComponentInterface>('Wizard component dependency');\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n selector: 'fd-wizard-navigation',\n templateUrl: './wizard-navigation.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNavigationComponent {\n /** Aria label for the wizard navigation component element. */\n @Input()\n set ariaLabel(value: Nullable<string>) {\n this._ariaLabel = value;\n }\n get ariaLabel(): string | undefined {\n return this._ariaLabel ?? this._wizard?.ariaLabel;\n }\n\n /** @hidden */\n private _ariaLabel: Nullable<string>;\n\n /** @hidden */\n constructor(@Optional() @Inject(WIZARD) private _wizard?: WizardComponentInterface) {}\n}\n","<nav class=\"fd-wizard__navigation\" [attr.aria-label]=\"ariaLabel\">\n <ng-content></ng-content>\n</nav>\n","import { Directive, Input } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport type WizardSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-wizard-progress-bar]',\n host: {\n class: 'fd-wizard__progress-bar',\n '[class.fd-wizard__progress-bar--sm]': 'size === \"sm\"',\n '[class.fd-wizard__progress-bar--md]': 'size === \"md\"',\n '[class.fd-wizard__progress-bar--lg]': 'size === \"lg\"',\n '[class.fd-wizard__progress-bar--xl]': 'size === \"xl\"',\n '[style.display]': 'visible ? \"\" : \"none\"'\n },\n standalone: true\n})\nexport class WizardProgressBarDirective {\n /**\n * Size (horizontal paddings) of the wizard progress bar.\n */\n @Input()\n size: Nullable<WizardSize> = null;\n\n /** @hidden */\n visible = true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { WizardStepIndicator } from './models/wizard-step';\n\nexport const ACTIVE_STEP_STATUS = 'active';\nexport const CURRENT_STEP_STATUS = 'current';\nexport const UPCOMING_STEP_STATUS = 'upcoming';\nexport const COMPLETED_STEP_STATUS = 'completed';\nexport const FD_WIZARD_STEP_INDICATOR = new InjectionToken<WizardStepIndicator>('FdWizardStepindicator');\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n signal\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ActionSheetBodyComponent,\n ActionSheetComponent,\n ActionSheetControlComponent,\n ActionSheetItemComponent\n} from '@fundamental-ngx/core/action-sheet';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { Subscription } from 'rxjs';\nimport { FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WizardStepComponent } from '../wizard-step/wizard-step.component';\n\n@Component({\n selector: 'fd-wizard-step-indicator',\n templateUrl: './wizard-step-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_WIZARD_STEP_INDICATOR,\n useExisting: WizardStepIndicatorComponent\n }\n ],\n imports: [\n ActionSheetComponent,\n ActionSheetControlComponent,\n NgTemplateOutlet,\n ActionSheetBodyComponent,\n ActionSheetItemComponent,\n IconComponent\n ]\n})\nexport class WizardStepIndicatorComponent implements WizardStepIndicator, OnDestroy {\n /**\n * The icon to use for this step.\n */\n @Input()\n glyph: Nullable<string>;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /**\n * Event emitted when this step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ViewChild(ActionSheetComponent)\n actionSheet: ActionSheetComponent;\n\n /** @hidden */\n stackedItems$ = signal<WizardStepComponent[]>([]);\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n stepItemClicked(step?: WizardStepComponent, event?: MouseEvent): void {\n if (step && step.visited) {\n if (this.actionSheet) {\n this.actionSheet.close();\n }\n event?.preventDefault();\n this.stepIndicatorItemClicked.emit(step);\n }\n }\n\n /** @hidden */\n setStackedItems(items: WizardStepComponent[]): void {\n this.stackedItems$.set(items || []);\n }\n}\n","@if (stackedItems$() && stackedItems$().length > 1) {\n <fd-action-sheet [style.pointer-events]=\"'all'\">\n <fd-action-sheet-control>\n <span class=\"fd-wizard__step-indicator\">\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n @for (step of stackedItems$(); track step) {\n <li\n fd-action-sheet-item\n [label]=\"step.label\"\n [glyph]=\"step.glyph\"\n [glyphFont]=\"glyphFont\"\n [disabled]=\"!step.visited\"\n (click)=\"stepItemClicked(step, $event)\"\n ></li>\n }\n </fd-action-sheet-body>\n </fd-action-sheet>\n} @else {\n <span\n class=\"fd-wizard__step-indicator\"\n (click)=\"stepItemClicked(stackedItems$().length ? stackedItems$()[0] : undefined, $event)\"\n >\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n}\n<ng-template #stepIndicatorContent>\n @if (glyph) {\n <fd-icon [glyph]=\"glyph\" class=\"fd-wizard__icon\"></fd-icon>\n }\n <ng-content></ng-content>\n</ng-template>\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\nimport { WizardContentComponent } from '../wizard-content/wizard-content.component';\n\nexport type WizardStepStatus = 'completed' | 'current' | 'upcoming' | 'active';\n\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-wizard-step]',\n host: {\n class: 'fd-wizard__step',\n '[class.fd-wizard__step--completed]': 'status === \"completed\" || completed',\n '[class.fd-wizard__step--current]': 'status === \"current\"',\n '[class.fd-wizard__step--upcoming]': 'status === \"upcoming\"',\n '[class.fd-wizard__step--active]': 'status === \"active\"',\n '[attr.aria-label]': 'ariaLabel'\n },\n templateUrl: './wizard-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: []\n})\nexport class WizardStepComponent implements OnChanges, AfterViewInit, OnDestroy {\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * @deprecated\n */\n @Input()\n ariaRoleDecription = 'Navigation';\n\n /**\n * The type of step ('completed', 'current', 'upcoming', and 'active'.)\n */\n @Input()\n status: WizardStepStatus;\n\n /**\n * Whether or not this is a 'branching' step.\n */\n @Input()\n branching = false;\n\n /**\n * The label text.\n */\n @Input()\n label: string;\n\n /**\n * The smaller text for labeling the step as optional.\n */\n @Input()\n optionalText: string;\n\n /**\n * Whether or not this step is the summary page.\n */\n @Input()\n isSummary = false;\n\n /**\n * User-defined validation function which determines if user can navigate between steps.\n */\n @Input()\n stepClickValidator: (visited: boolean, completed: boolean) => boolean | Promise<boolean>;\n\n /**\n * Event emitted when the wizard step's status changes.\n */\n @Output()\n statusChange = new EventEmitter<WizardStepStatus>();\n\n /**\n * Event emitted when a step is clicked.\n */\n @Output()\n stepClicked = new EventEmitter<WizardStepComponent>();\n\n /**\n * Event emitted when a step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ContentChild(WizardContentComponent)\n content: WizardContentComponent;\n\n /** @hidden */\n @ContentChild(FD_WIZARD_STEP_INDICATOR)\n stepIndicator: WizardStepIndicator<WizardStepComponent>;\n\n /** The wizard label span element. */\n @ViewChild('wizardLabel', { read: ElementRef })\n wizardLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('progressBarLink', { read: ElementRef })\n progressBarLink: ElementRef;\n\n /** @hidden */\n glyph: string;\n\n /** @hidden */\n visited = false;\n\n /** @hidden */\n completed = false;\n\n /** @hidden */\n _stepId: number;\n\n /** @hidden */\n _finalStep = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() @Inject(WIZARD) private _wizard: WizardComponentInterface\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.status) {\n if (\n changes.status.previousValue === CURRENT_STEP_STATUS &&\n changes.status.currentValue === COMPLETED_STEP_STATUS\n ) {\n this.completed = true;\n }\n this.statusChange.emit(this.status);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.isSummary && !this._wizard?.displaySummaryStep) {\n this._summaryInit();\n } else if (this.stepIndicator) {\n this._notSummaryInit();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n setFinalStep(val: boolean): void {\n this._finalStep = val;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n async stepContainerKeypress(event?: KeyboardEvent): Promise<void> {\n if (event) {\n event.preventDefault();\n }\n\n if (\n this.visited &&\n (!event || KeyUtil.isKeyCode(event, [SPACE, ENTER])) &&\n (!this.stepIndicator ||\n !this.stepIndicator.stackedItems$() ||\n !this.stepIndicator.stackedItems$().length) &&\n (this.stepClickValidator === undefined ||\n (await this.stepClickValidator(this.visited, this.completed)) === true)\n ) {\n this.stepClicked.emit(this);\n }\n }\n\n /** @hidden */\n getClassList(): DOMTokenList {\n return this._elRef.nativeElement.classList;\n }\n\n /** @hidden */\n hasLabel(label: string): boolean {\n return this._elRef.nativeElement.classList.contains(label);\n }\n\n /** @hidden */\n getStepClientWidth(): number {\n return this._elRef.nativeElement.clientWidth;\n }\n\n /** @hidden */\n removeFromDom(): void {\n if (this._elRef.nativeElement.parentNode) {\n this._elRef.nativeElement.parentNode.removeChild(this._elRef.nativeElement);\n }\n }\n\n /** @hidden */\n _summaryInit(): void {\n this._elRef.nativeElement.style.display = 'none';\n this.content.tallContent = true;\n }\n\n /** @hidden */\n _notSummaryInit(): void {\n this._subscriptions.add(\n this.stepIndicator.stepIndicatorItemClicked.subscribe((step) => {\n this.stepIndicatorItemClicked.emit(step);\n })\n );\n if (this.stepIndicator.glyph) {\n this.glyph = this.stepIndicator.glyph;\n }\n }\n}\n","<div class=\"fd-wizard__step-wrapper\">\n @if (label || optionalText) {\n <a\n #progressBarLink\n class=\"fd-wizard__step-container\"\n (click)=\"stepContainerKeypress()\"\n (keypress)=\"stepContainerKeypress($event)\"\n [style.cursor]=\"visited ? 'pointer' : 'auto'\"\n [style.pointer-events]=\"visited ? 'auto' : 'none'\"\n [attr.tabindex]=\"status === 'current' ? 0 : -1\"\n role=\"navigation\"\n >\n <ng-content select=\"fd-wizard-step-indicator\"></ng-content>\n <div class=\"fd-wizard__label-container\" [class.fd-wizard__label-container--optional]=\"optionalText\">\n <div #wizardLabel>\n <span class=\"fd-wizard__label\">{{ label }}</span>\n @if (optionalText) {\n <span class=\"fd-wizard__optional-text\">\n {{ optionalText }}\n </span>\n }\n </div>\n </div>\n </a>\n }\n <ng-content></ng-content>\n @if (!_finalStep || branching) {\n <span\n class=\"fd-wizard__connector\"\n [class.fd-wizard__connector--active]=\"completed\"\n [class.fd-wizard__connector--branching]=\"branching\"\n >\n </span>\n }\n</div>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, QueryList, inject } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS } from './constants';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\n\n@Injectable()\nexport class WizardService {\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n progressBarKeyHandler(event: any, steps: QueryList<WizardStepComponent>, index: number): void {\n const rtlDirection = this._rtlService?.rtlSignal();\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (\n steps.get(index - 1)?.status === COMPLETED_STEP_STATUS ||\n steps.get(index - 1)?.status === CURRENT_STEP_STATUS\n ) {\n if (!rtlDirection) {\n this._focusPrevious(index, steps);\n } else {\n this._focusNext(index, steps);\n }\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (steps.get(index)?.status === COMPLETED_STEP_STATUS) {\n if (!rtlDirection) {\n this._focusNext(index, steps);\n } else {\n this._focusPrevious(index, steps);\n }\n }\n }\n }\n\n /** @hidden */\n private _focusNext(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index + 1 < steps.length) {\n steps.get(index + 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(0)?.progressBarLink.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _focusPrevious(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index - 1 >= 0) {\n steps.get(index - 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(steps.length - 1)?.progressBarLink.nativeElement.focus();\n }\n }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { Nullable, TabbableElementService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { ACTIVE_STEP_STATUS, COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS } from './constants';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WIZARD } from './wizard-injection-token';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardService } from './wizard.service';\n\nexport const STEP_MIN_WIDTH = 168;\nexport const STEP_STACKED_TOP_CLASS = 'fd-wizard__step--stacked-top';\nexport const STEP_STACKED_CLASS = 'fd-wizard__step--stacked';\nexport const STEP_NO_LABEL_CLASS = 'fd-wizard__step--no-label';\n\nexport const WIZARD_NAVIGATION_CLASS = 'fd-wizard__navigation';\nexport const WIZARD_CONTENT_CLASS = 'fd-wizard__content';\nexport const WIZARD_CONTAINER_WRAPPER_CLASS = 'fd-wizard-container-wrapper';\nexport const WIZARD_TALL_CONTENT_CLASS = 'fd-wizard-tall-content';\nexport const SHELLBAR_CLASS = 'fd-shellbar';\nexport const BAR_FOOTER_CLASS = 'fd-bar--footer';\nexport const BAR_FLOATING_FOOTER_CLASS = 'fd-bar--floating-footer';\n\nexport let _fromScrollToCurrentStep;\nexport let timer: any = null;\nexport const handleTimeoutReference = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n _fromScrollToCurrentStep = false;\n }, 150);\n};\n\n@Component({\n selector: 'fd-wizard',\n templateUrl: './wizard.component.html',\n styleUrl: './wizard.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WizardService,\n {\n provide: WIZARD,\n useExisting: WizardComponent\n }\n ],\n host: {\n role: 'region',\n '[attr.aria-label]': 'ariaLabel || _defaultAriaLabel()'\n },\n imports: [ScrollSpyDirective, CdkScrollable, ScrollbarDirective, NgTemplateOutlet]\n})\nexport class WizardComponent implements AfterViewInit, OnDestroy {\n /**\n * Whether or not to append the step to the wizard. If false, each step will be displayed on a different page.\n * Default is true.\n */\n @Input()\n appendToWizard = true;\n\n /**\n * Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n * is the combined height of the shellbar, wizard header and wizard footer.\n */\n @Input()\n contentHeight: Nullable<string | null>;\n\n /**\n * Whether or not apply responsive paddings styling.\n */\n @Input()\n @HostBinding('class.fd-wizard--responsive-paddings')\n responsivePaddings = false;\n\n /** Whether to display a summary step. */\n @Input()\n displaySummaryStep = false;\n\n /**\n * adding aria label to the component\n * If not provided, is being translated by i18n package\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ContentChildren(WizardStepComponent, { descendants: true })\n steps: QueryList<WizardStepComponent>;\n\n /** @hidden */\n @ContentChild(WizardProgressBarDirective)\n progressBar: WizardProgressBarDirective;\n\n /** @hidden */\n @ContentChildren(WizardContentComponent)\n wizardContent: WizardContentComponent;\n\n /** @hidden */\n @ViewChild('wrapperContainer')\n wrapperContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n scrollbar: ScrollbarDirective;\n\n /** @hidden */\n contentTemplates: TemplateRef<any>[] = [];\n\n /** @hidden */\n stackedStepsLeft: WizardStepComponent[] = [];\n\n /** @hidden */\n stackedStepsRight: WizardStepComponent[] = [];\n\n /** @hidden */\n protected _defaultAriaLabel = resolveTranslationSignal('coreWizard.ariaLabel');\n\n /** @hidden */\n private _stepEventSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _previousWidth: number;\n\n /** @hidden */\n private readonly _tabbableService = inject(TabbableElementService);\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private readonly _cdRef: ChangeDetectorRef,\n @Optional() @Inject(FD_DIALOG_BODY_COMPONENT) private _dialogBodyComponent: DialogBodyComponent\n ) {}\n\n /** @hidden */\n @HostListener('window:resize')\n resizeHandler(): void {\n const wizardWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n if (!this._previousWidth || wizardWidth <= this._previousWidth) {\n this._wizardShrinking();\n } else if (wizardWidth > this._previousWidth) {\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n this._previousWidth = wizardWidth;\n if (this.contentHeight) {\n this._elRef.nativeElement.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n this.contentHeight;\n } else {\n this._setContainerAndTallContentHeight();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this._subscriptions.closed) {\n return;\n }\n\n // fixes ExpressionChangedAfterItHasBeenCheckedError\n this._setContentTemplates();\n this._subscriptions.add(\n this.steps.changes.subscribe(() => {\n this._handleStepOrStatusChanges();\n this._setupStepEvents();\n })\n );\n this._setupStepEvents();\n this._cdRef.detectChanges();\n this._handleStepOrStatusChanges();\n this.resizeHandler();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._subscriptions.unsubscribe();\n this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);\n }\n\n /** @hidden */\n scrollSpyChange($event: HTMLElement): void {\n if (!_fromScrollToCurrentStep) {\n this.steps.forEach((step) => {\n if (step._stepId.toString() === $event.children[0].children[0].id) {\n step.status = CURRENT_STEP_STATUS;\n } else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {\n step.status = COMPLETED_STEP_STATUS;\n } else {\n step.status = UPCOMING_STEP_STATUS;\n }\n });\n }\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n\n /**\n * @hidden\n * @private\n * This function determines the height of the wizard content by looking for the document's shellbar, the wizard\n * navigation and the wizard footer, and calculating the height based on their presence.\n */\n private _calculateContentHeight(): number {\n let wizardNavHeight = 0;\n const shellbarHeight = this._getShellbarHeight();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n wizardNavHeight = this._getWizardNavHeight();\n }\n const wizardFooterHeight = this._getWizardFooterHeight();\n const dialogOffset = this._getDialogOffset();\n\n return shellbarHeight + wizardNavHeight + wizardFooterHeight + dialogOffset;\n }\n\n /** @hidden */\n private _getShellbarHeight(): number {\n return document.querySelector<HTMLElement>('.' + SHELLBAR_CLASS)?.clientHeight ?? 0;\n }\n\n /** @hidden */\n private _getWizardNavHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS)) {\n retVal = wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getWizardFooterHeight(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n if (dialogBody.querySelector('.' + BAR_FOOTER_CLASS)) {\n retVal = dialogBody.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;\n } else if (dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {\n retVal = dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;\n }\n }\n return retVal;\n }\n\n /** @hidden */\n private _getDialogOffset(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n const dialogComponent = dialogBody.closest('fd-dialog');\n\n if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {\n this._dialogBodyComponent.dialogConfig.verticalPadding = false;\n const dialogBodyTitle = dialogComponent.querySelector('.fd-title--h2');\n if (dialogBodyTitle) {\n retVal = dialogBodyTitle.offsetHeight;\n }\n retVal = retVal + window.innerHeight - dialogBody.offsetHeight;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n private _setContainerAndTallContentHeight(): void {\n const wizard = this._elRef.nativeElement;\n const combinedHeight = this.contentHeight ? this.contentHeight : this._calculateContentHeight();\n if (wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS)) {\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n }\n wizard.querySelectorAll('.' + WIZARD_CONTENT_CLASS).forEach((node) => {\n node.style.height = 'auto';\n });\n if (wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS)) {\n if (\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).offsetHeight <\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).offsetHeight\n ) {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n } else {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.paddingBottom = '24px';\n }\n }\n }\n\n /** @hidden */\n private _setupStepEvents(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._stepEventSubscriptions = new Subscription();\n this.steps.forEach((step) => {\n this._stepEventSubscriptions.add(\n step.stepClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n this._stepEventSubscriptions.add(\n step.statusChange.subscribe(() => {\n this._handleStepOrStatusChanges();\n })\n );\n this._stepEventSubscriptions.add(\n step.stepIndicatorItemClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n // need to call wizardShrinking for each step < 168px on first load\n if (step.wizardLabel && step.getStepClientWidth() < STEP_MIN_WIDTH) {\n this._wizardShrinking();\n }\n });\n }\n\n /** @hidden */\n private _wizardShrinking(): void {\n const currentStep = this._getCurrentStep();\n if (\n currentStep &&\n (!currentStep.isSummary || this.displaySummaryStep) &&\n currentStep.wizardLabel &&\n currentStep.getStepClientWidth() < STEP_MIN_WIDTH\n ) {\n this._hideSomeStep(currentStep);\n this._setStackedTop();\n }\n }\n\n /** @hidden */\n private _setContentTemplates(): void {\n const templatesLength = this.contentTemplates.length;\n this.contentTemplates = [];\n let _stepId = 0;\n const steps = this.steps.toArray();\n for (const step of steps) {\n if (step.content) {\n if (!step.isSummary || this.displaySummaryStep) {\n step.content.tallContent = false;\n }\n step.content.wizardContentId = _stepId.toString();\n }\n step._stepId = _stepId;\n _stepId++;\n step.setFinalStep(false);\n /*\n If the step is completed and appendToWizard is true, hide the nextStep button, unless it's the last step,\n or if there's a summary and it is the second to last step\n */\n if (\n step.completed &&\n this.appendToWizard &&\n step.content?.nextStep?.canHide &&\n step !== this._getLastNonSummaryStep()\n ) {\n step.content.nextStep._hideElement();\n } else if (\n step.content?.nextStep &&\n ((step.completed && this.appendToWizard) ||\n (step.visited && step.branching && step.status === CURRENT_STEP_STATUS))\n ) {\n step.content.nextStep._showElement();\n }\n if (\n step.visited ||\n ((step.status === CURRENT_STEP_STATUS || step.status === COMPLETED_STEP_STATUS) && step.content)\n ) {\n step.visited = true;\n if (step.status === CURRENT_STEP_STATUS && (!step.completed || !this.appendToWizard)) {\n step.content.tallContent = true;\n }\n\n const isCurrentStep = !this.appendToWizard && step.status === CURRENT_STEP_STATUS;\n\n if (!templatesLength || isCurrentStep) {\n this.contentTemplates = [step.content.contentTemplate];\n\n // If we found needed step, break the cycle, since it might set wrong step later.\n if (isCurrentStep) {\n break;\n }\n } else if (this.appendToWizard && (!step.isSummary || this.displaySummaryStep)) {\n this.contentTemplates.push(step.content.contentTemplate);\n }\n }\n }\n\n const lastVisibleTemplate = steps[this.contentTemplates.length - 1];\n if (lastVisibleTemplate && lastVisibleTemplate.content) {\n lastVisibleTemplate.content.tallContent = true;\n }\n this._setFinalStep();\n }\n\n /** @hidden */\n private _scrollToCurrentStep(): void {\n if (this.appendToWizard) {\n _fromScrollToCurrentStep = true;\n this.steps.forEach((step, index) => {\n if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {\n const child = this.wrapperContainer.nativeElement.children[0].children[index] as HTMLElement;\n const wizardNavigationHeight = this._elRef.nativeElement.querySelector(\n '.' + WIZARD_NAVIGATION_CLASS\n ).clientHeight;\n\n scrollTop(this.wrapperContainer.nativeElement, child.offsetTop - wizardNavigationHeight);\n\n if (index === 0) {\n this._focusFirstTabbableElement(index);\n } else {\n // setTimeout needed to allow for smooth scroll animation\n setTimeout(() => {\n this._focusFirstTabbableElement(index);\n }, 500);\n }\n }\n });\n this._setUpScrollListener();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(index = 0): void {\n const contentContainer = this._elRef.nativeElement.querySelectorAll('.fd-wizard__content')[index];\n this._tabbableService.getTabbableElement(contentContainer)?.focus();\n }\n\n /** @hidden */\n private _setUpScrollListener(): void {\n this.wrapperContainer?.nativeElement.addEventListener('scroll', handleTimeoutReference, false);\n }\n\n /** @hidden */\n private _hideSomeStep(currentStep: WizardStepComponent): void {\n // If a small step was found, get the step with a visible label furthest away from the current step and hide the label\n let stepsArray = this.steps.toArray();\n stepsArray = stepsArray.filter((step) => !step.hasLabel(STEP_NO_LABEL_CLASS));\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n stepsArray.pop();\n }\n if (stepsArray.length > 1) {\n let currentStepIndex = 0,\n stepToHide;\n if (currentStep) {\n currentStepIndex = stepsArray.indexOf(currentStep);\n }\n currentStepIndex > (stepsArray.length - 1) / 2\n ? (stepToHide = stepsArray[0])\n : (stepToHide = stepsArray[stepsArray.length - 1]);\n stepToHide.getClassList().add(STEP_NO_LABEL_CLASS);\n stepToHide.getClassList().add(STEP_STACKED_CLASS);\n if (stepsArray.indexOf(stepToHide) < currentStepIndex && !this.stackedStepsLeft.includes(stepToHide)) {\n this.stackedStepsLeft.splice(this.steps.toArray().indexOf(stepToHide), 0, stepToHide);\n } else if (\n stepsArray.indexOf(stepToHide) > currentStepIndex &&\n !this.stackedStepsRight.includes(stepToHide)\n ) {\n this.stackedStepsRight.unshift(stepToHide);\n }\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setStackedTop(): void {\n const currentStep = this._getCurrentStep();\n this.steps.forEach((step, index) => {\n if (step.stepIndicator) {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n if (this.steps.toArray()[index + 1] === currentStep) {\n if (this.steps.length > 1) {\n step.getClassList().add(STEP_STACKED_TOP_CLASS);\n if (!this.stackedStepsLeft.includes(step) && this.stackedStepsLeft.length >= 1) {\n this.stackedStepsLeft.splice(index, 0, step);\n }\n }\n step.stepIndicator.setStackedItems(this.stackedStepsLeft);\n } else {\n step.stepIndicator.stackedItems$.set([]);\n }\n }\n });\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n }\n\n /** @hidden */\n private _resetStepClasses(): void {\n this.steps.forEach((step) => {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n step.getClassList().remove(STEP_STACKED_CLASS);\n step.getClassList().remove(STEP_NO_LABEL_CLASS);\n });\n }\n\n /** @hidden */\n private _handleStepOrStatusChanges(): void {\n if (this._isCurrentStepSummary() && !this.displaySummaryStep) {\n setTimeout(() => {\n this.progressBar.visible = false;\n });\n this._showSummary();\n } else {\n this.progressBar.visible = true;\n\n this._setContentTemplates();\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n if (!this.appendToWizard) {\n this._focusFirstTabbableElement();\n }\n setTimeout(() => {\n this._cdRef.detectChanges();\n this.resizeHandler();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n this._scrollToCurrentStep();\n }\n });\n this._setFinalStep();\n }\n\n /** @hidden */\n private _setFinalStep(): void {\n const lastNonSummaryStep = this._getLastNonSummaryStep();\n if (lastNonSummaryStep) {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n this.steps.last.removeFromDom();\n }\n if (lastNonSummaryStep.content) {\n lastNonSummaryStep.content.tallContent = true;\n }\n lastNonSummaryStep.setFinalStep(true);\n }\n }\n\n /** @hidden */\n private _showSummary(): void {\n this.steps.forEach((step) => {\n if (!step.isSummary) {\n step.completed = true;\n }\n });\n const summary = this.steps.find((step) => step.isSummary);\n if (summary) {\n summary.content.tallContent = true;\n this.contentTemplates = [summary.content.contentTemplate];\n }\n }\n\n /** @hidden */\n private _isCurrentStepSummary(): boolean {\n return this.steps.some((step) => step.status === CURRENT_STEP_STATUS && step.isSummary);\n }\n\n /** @hidden */\n private _getCurrentStep(): WizardStepComponent {\n return this.steps.filter(\n (step) => step.status === CURRENT_STEP_STATUS || step.status === ACTIVE_STEP_STATUS\n )[0];\n }\n\n /** @hidden */\n private _shrinkWhileAnyStepIsTooNarrow(): void {\n // Add small delay for elements to render appropriately.\n setTimeout(() => {\n this.stackedStepsLeft = [];\n this.stackedStepsRight = [];\n this.steps.first.stepIndicator?.setStackedItems(this.stackedStepsLeft);\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n this._resetStepClasses();\n let i = 0;\n while (this._anyStepIsTooNarrow() && i < this.steps.length - 1) {\n i++;\n this._wizardShrinking();\n }\n }, 10);\n }\n\n /** @hidden */\n private _anyStepIsTooNarrow(): boolean {\n return this.steps.some((step) => step.getStepClientWidth() < STEP_MIN_WIDTH);\n }\n\n /** @hidden */\n private _stepClicked(clickedStep: WizardStepComponent): void {\n if (!clickedStep) {\n clickedStep = this.steps.first;\n }\n const clickedStepIndex = this.steps.toArray().indexOf(clickedStep);\n this.steps.forEach((step) => {\n if (step === clickedStep) {\n step.status = CURRENT_STEP_STATUS;\n step.statusChange.emit(CURRENT_STEP_STATUS);\n } else if (step !== clickedStep) {\n if (this.steps.toArray().indexOf(step) < clickedStepIndex) {\n step.status = COMPLETED_STEP_STATUS;\n step.statusChange.emit(COMPLETED_STEP_STATUS);\n } else if (this.steps.toArray().indexOf(step) > clickedStepIndex) {\n step.status = UPCOMING_STEP_STATUS;\n step.statusChange.emit(UPCOMING_STEP_STATUS);\n }\n }\n });\n setTimeout(() => {\n (document.activeElement as HTMLElement).blur(); // this function can focus step indicators undesirably\n });\n }\n\n /** @hidden */\n private _getLastNonSummaryStep(): WizardStepComponent {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n return this.steps.toArray()[this.steps.length - 2];\n }\n\n return this.steps.last;\n }\n}\n","<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n @if (appendToWizard) {\n <div\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n } @else {\n <div cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n }\n <ng-content></ng-content>\n</section>\n","import { NgModule } from '@angular/core';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WizardNavigationComponent } from './wizard-navigation/wizard-navigation.component';\nimport { WizardNextStepComponent } from './wizard-next-step/wizard-next-step.component';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepIndicatorComponent } from './wizard-step-indicator/wizard-step-indicator.component';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardComponent } from './wizard.component';\nimport { WizardService } from './wizard.service';\n\nconst components = [\n WizardComponent,\n WizardNavigationComponent,\n WizardProgressBarDirective,\n WizardStepComponent,\n WizardStepIndicatorComponent,\n WizardContentComponent,\n WizardNextStepComponent\n];\n\n/**\n * @deprecated\n * Use direct imports of `WizardComponent`,\n `WizardNavigationComponent`,\n `WizardProgressBarDirective`,\n `WizardStepComponent`,\n `WizardStepIndicatorComponent`,\n `WizardContentComponent`,\n `WizardNextStepComponent`\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [WizardService]\n})\nexport class WizardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-wizard.mjs","sources":["../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.ts","../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.html","../../../../libs/core/wizard/wizard-content/wizard-content.component.ts","../../../../libs/core/wizard/wizard-content/wizard-content.component.html","../../../../libs/core/wizard/wizard-injection-token.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.html","../../../../libs/core/wizard/wizard-progress-bar/wizard-progress-bar.directive.ts","../../../../libs/core/wizard/constants.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.html","../../../../libs/core/wizard/wizard-step/wizard-step.component.ts","../../../../libs/core/wizard/wizard-step/wizard-step.component.html","../../../../libs/core/wizard/wizard.service.ts","../../../../libs/core/wizard/wizard.component.ts","../../../../libs/core/wizard/wizard.component.html","../../../../libs/core/wizard/wizard.module.ts","../../../../libs/core/wizard/fundamental-ngx-core-wizard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, inject } from '@angular/core';\n\n@Component({\n selector: 'fd-wizard-next-step',\n templateUrl: './wizard-next-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNextStepComponent {\n /**\n * Whether or not the next step button should float directly above the footer.\n */\n @Input()\n floating = false;\n\n /**\n * Whether or not element can be hidden when step status is completed.\n */\n @Input()\n set canHide(value: boolean) {\n this._canHide = value;\n\n if (!value) {\n this._showElement();\n }\n }\n\n get canHide(): boolean {\n return this._canHide;\n }\n\n /** @hidden */\n private _canHide = true;\n\n /** @hidden */\n private readonly _elRef = inject(ElementRef);\n\n /** @hidden */\n _getElRef(): ElementRef {\n return this._elRef;\n }\n\n /** @hidden */\n _showElement(): void {\n this._elRef.nativeElement.style.removeProperty('display');\n }\n\n /** @hidden */\n _hideElement(): void {\n this._elRef.nativeElement.style.display = 'none';\n }\n}\n","<div class=\"fd-wizard__next-step\" [class.fd-wizard__next-step--floating]=\"floating\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { WizardNextStepComponent } from '../wizard-next-step/wizard-next-step.component';\nimport { WizardSize } from '../wizard-progress-bar/wizard-progress-bar.directive';\n\nexport type WizardContentBackground = 'solid' | 'list' | 'transparent';\n\n@Component({\n selector: 'fd-wizard-content',\n templateUrl: './wizard-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './wizard-content.component.scss',\n standalone: true\n})\nexport class WizardContentComponent {\n /**\n * The type of wizard background ('solid', 'list', or 'transparent').\n */\n @Input()\n contentBackground: WizardContentBackground;\n\n /**\n * Size (horizontal paddings) of the wizard content.\n */\n @Input()\n size: WizardSize;\n\n /** @hidden */\n @ViewChild('contentTemplate')\n contentTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(WizardNextStepComponent)\n nextStep: WizardNextStepComponent;\n\n /** @hidden */\n wizardContentId: string;\n\n /** @hidden */\n tallContent = false;\n}\n","<ng-template #contentTemplate>\n <section\n role=\"region\"\n [id]=\"wizardContentId\"\n class=\"fd-wizard__content\"\n [class]=\"\n (contentBackground ? 'fd-wizard__content--' + contentBackground + ' ' : '') +\n (size ? 'fd-wizard__content--' + size : '')\n \"\n [class.fd-wizard-tall-content]=\"tallContent\"\n >\n <div class=\"fd-wizard__step-content-container\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\n\nexport interface WizardComponentInterface {\n displaySummaryStep: boolean;\n ariaLabel: string;\n}\n\nexport const WIZARD = new InjectionToken<WizardComponentInterface>('Wizard component dependency');\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n selector: 'fd-wizard-navigation',\n templateUrl: './wizard-navigation.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNavigationComponent {\n /** Aria label for the wizard navigation component element. */\n @Input()\n set ariaLabel(value: Nullable<string>) {\n this._ariaLabel = value;\n }\n get ariaLabel(): string | undefined {\n return this._ariaLabel ?? this._wizard?.ariaLabel;\n }\n\n /** @hidden */\n private _ariaLabel: Nullable<string>;\n\n /** @hidden */\n constructor(@Optional() @Inject(WIZARD) private _wizard?: WizardComponentInterface) {}\n}\n","<nav class=\"fd-wizard__navigation\" [attr.aria-label]=\"ariaLabel\">\n <ng-content></ng-content>\n</nav>\n","import { Directive, Input } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport type WizardSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-wizard-progress-bar]',\n host: {\n class: 'fd-wizard__progress-bar',\n '[class.fd-wizard__progress-bar--sm]': 'size === \"sm\"',\n '[class.fd-wizard__progress-bar--md]': 'size === \"md\"',\n '[class.fd-wizard__progress-bar--lg]': 'size === \"lg\"',\n '[class.fd-wizard__progress-bar--xl]': 'size === \"xl\"',\n '[style.display]': 'visible ? \"\" : \"none\"'\n },\n standalone: true\n})\nexport class WizardProgressBarDirective {\n /**\n * Size (horizontal paddings) of the wizard progress bar.\n */\n @Input()\n size: Nullable<WizardSize> = null;\n\n /** @hidden */\n visible = true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { WizardStepIndicator } from './models/wizard-step';\n\nexport const ACTIVE_STEP_STATUS = 'active';\nexport const CURRENT_STEP_STATUS = 'current';\nexport const UPCOMING_STEP_STATUS = 'upcoming';\nexport const COMPLETED_STEP_STATUS = 'completed';\nexport const FD_WIZARD_STEP_INDICATOR = new InjectionToken<WizardStepIndicator>('FdWizardStepindicator');\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n signal\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ActionSheetBodyComponent,\n ActionSheetComponent,\n ActionSheetControlComponent,\n ActionSheetItemComponent\n} from '@fundamental-ngx/core/action-sheet';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { Subscription } from 'rxjs';\nimport { FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WizardStepComponent } from '../wizard-step/wizard-step.component';\n\n@Component({\n selector: 'fd-wizard-step-indicator',\n templateUrl: './wizard-step-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_WIZARD_STEP_INDICATOR,\n useExisting: WizardStepIndicatorComponent\n }\n ],\n imports: [\n ActionSheetComponent,\n ActionSheetControlComponent,\n NgTemplateOutlet,\n ActionSheetBodyComponent,\n ActionSheetItemComponent,\n IconComponent\n ]\n})\nexport class WizardStepIndicatorComponent implements WizardStepIndicator, OnDestroy {\n /**\n * The icon to use for this step.\n */\n @Input()\n glyph: Nullable<string>;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /**\n * Event emitted when this step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ViewChild(ActionSheetComponent)\n actionSheet: ActionSheetComponent;\n\n /** @hidden */\n stackedItems$ = signal<WizardStepComponent[]>([]);\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n stepItemClicked(step?: WizardStepComponent, event?: MouseEvent): void {\n if (step && step.visited) {\n if (this.actionSheet) {\n this.actionSheet.close();\n }\n event?.preventDefault();\n this.stepIndicatorItemClicked.emit(step);\n }\n }\n\n /** @hidden */\n setStackedItems(items: WizardStepComponent[]): void {\n this.stackedItems$.set(items || []);\n }\n}\n","@if (stackedItems$() && stackedItems$().length > 1) {\n <fd-action-sheet [style.pointer-events]=\"'all'\">\n <fd-action-sheet-control>\n <span class=\"fd-wizard__step-indicator\">\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n @for (step of stackedItems$(); track step) {\n <li\n fd-action-sheet-item\n [label]=\"step.label\"\n [glyph]=\"step.glyph\"\n [glyphFont]=\"glyphFont\"\n [disabled]=\"!step.visited\"\n (click)=\"stepItemClicked(step, $event)\"\n ></li>\n }\n </fd-action-sheet-body>\n </fd-action-sheet>\n} @else {\n <span\n class=\"fd-wizard__step-indicator\"\n (click)=\"stepItemClicked(stackedItems$().length ? stackedItems$()[0] : undefined, $event)\"\n >\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n}\n<ng-template #stepIndicatorContent>\n @if (glyph) {\n <fd-icon [glyph]=\"glyph\" class=\"fd-wizard__icon\"></fd-icon>\n }\n <ng-content></ng-content>\n</ng-template>\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\nimport { WizardContentComponent } from '../wizard-content/wizard-content.component';\n\nexport type WizardStepStatus = 'completed' | 'current' | 'upcoming' | 'active';\n\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-wizard-step]',\n host: {\n class: 'fd-wizard__step',\n '[class.fd-wizard__step--completed]': 'status === \"completed\" || completed',\n '[class.fd-wizard__step--current]': 'status === \"current\"',\n '[class.fd-wizard__step--upcoming]': 'status === \"upcoming\"',\n '[class.fd-wizard__step--active]': 'status === \"active\"',\n '[attr.aria-label]': 'ariaLabel'\n },\n templateUrl: './wizard-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: []\n})\nexport class WizardStepComponent implements OnChanges, AfterViewInit, OnDestroy {\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * @deprecated\n */\n @Input()\n ariaRoleDecription = 'Navigation';\n\n /**\n * The type of step ('completed', 'current', 'upcoming', and 'active'.)\n */\n @Input()\n status: WizardStepStatus;\n\n /**\n * Whether or not this is a 'branching' step.\n */\n @Input()\n branching = false;\n\n /**\n * The label text.\n */\n @Input()\n label: string;\n\n /**\n * The smaller text for labeling the step as optional.\n */\n @Input()\n optionalText: string;\n\n /**\n * Whether or not this step is the summary page.\n */\n @Input()\n isSummary = false;\n\n /**\n * User-defined validation function which determines if user can navigate between steps.\n */\n @Input()\n stepClickValidator: (visited: boolean, completed: boolean) => boolean | Promise<boolean>;\n\n /**\n * Event emitted when the wizard step's status changes.\n */\n @Output()\n statusChange = new EventEmitter<WizardStepStatus>();\n\n /**\n * Event emitted when a step is clicked.\n */\n @Output()\n stepClicked = new EventEmitter<WizardStepComponent>();\n\n /**\n * Event emitted when a step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ContentChild(WizardContentComponent)\n content: WizardContentComponent;\n\n /** @hidden */\n @ContentChild(FD_WIZARD_STEP_INDICATOR)\n stepIndicator: WizardStepIndicator<WizardStepComponent>;\n\n /** The wizard label span element. */\n @ViewChild('wizardLabel', { read: ElementRef })\n wizardLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('progressBarLink', { read: ElementRef })\n progressBarLink: ElementRef;\n\n /** @hidden */\n glyph: string;\n\n /** @hidden */\n visited = false;\n\n /** @hidden */\n completed = false;\n\n /** @hidden */\n _stepId: number;\n\n /** @hidden */\n _finalStep = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() @Inject(WIZARD) private _wizard: WizardComponentInterface\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.status) {\n if (\n changes.status.previousValue === CURRENT_STEP_STATUS &&\n changes.status.currentValue === COMPLETED_STEP_STATUS\n ) {\n this.completed = true;\n }\n this.statusChange.emit(this.status);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.isSummary && !this._wizard?.displaySummaryStep) {\n this._summaryInit();\n } else if (this.stepIndicator) {\n this._notSummaryInit();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n setFinalStep(val: boolean): void {\n this._finalStep = val;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n async stepContainerKeypress(event?: KeyboardEvent): Promise<void> {\n if (event) {\n event.preventDefault();\n }\n\n if (\n this.visited &&\n (!event || KeyUtil.isKeyCode(event, [SPACE, ENTER])) &&\n (!this.stepIndicator ||\n !this.stepIndicator.stackedItems$() ||\n !this.stepIndicator.stackedItems$().length) &&\n (this.stepClickValidator === undefined ||\n (await this.stepClickValidator(this.visited, this.completed)) === true)\n ) {\n this.stepClicked.emit(this);\n }\n }\n\n /** @hidden */\n getClassList(): DOMTokenList {\n return this._elRef.nativeElement.classList;\n }\n\n /** @hidden */\n hasLabel(label: string): boolean {\n return this._elRef.nativeElement.classList.contains(label);\n }\n\n /** @hidden */\n getStepClientWidth(): number {\n return this._elRef.nativeElement.clientWidth;\n }\n\n /** @hidden */\n removeFromDom(): void {\n if (this._elRef.nativeElement.parentNode) {\n this._elRef.nativeElement.parentNode.removeChild(this._elRef.nativeElement);\n }\n }\n\n /** @hidden */\n _summaryInit(): void {\n this._elRef.nativeElement.style.display = 'none';\n this.content.tallContent = true;\n }\n\n /** @hidden */\n _notSummaryInit(): void {\n this._subscriptions.add(\n this.stepIndicator.stepIndicatorItemClicked.subscribe((step) => {\n this.stepIndicatorItemClicked.emit(step);\n })\n );\n if (this.stepIndicator.glyph) {\n this.glyph = this.stepIndicator.glyph;\n }\n }\n}\n","<div class=\"fd-wizard__step-wrapper\">\n @if (label || optionalText) {\n <a\n #progressBarLink\n class=\"fd-wizard__step-container\"\n (click)=\"stepContainerKeypress()\"\n (keypress)=\"stepContainerKeypress($event)\"\n [style.cursor]=\"visited ? 'pointer' : 'auto'\"\n [style.pointer-events]=\"visited ? 'auto' : 'none'\"\n [attr.tabindex]=\"status === 'current' ? 0 : -1\"\n role=\"navigation\"\n >\n <ng-content select=\"fd-wizard-step-indicator\"></ng-content>\n <div class=\"fd-wizard__label-container\" [class.fd-wizard__label-container--optional]=\"optionalText\">\n <div #wizardLabel>\n <span class=\"fd-wizard__label\">{{ label }}</span>\n @if (optionalText) {\n <span class=\"fd-wizard__optional-text\">\n {{ optionalText }}\n </span>\n }\n </div>\n </div>\n </a>\n }\n <ng-content></ng-content>\n @if (!_finalStep || branching) {\n <span\n class=\"fd-wizard__connector\"\n [class.fd-wizard__connector--active]=\"completed\"\n [class.fd-wizard__connector--branching]=\"branching\"\n >\n </span>\n }\n</div>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, QueryList, inject } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS } from './constants';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\n\n@Injectable()\nexport class WizardService {\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n progressBarKeyHandler(event: any, steps: QueryList<WizardStepComponent>, index: number): void {\n const rtlDirection = this._rtlService?.rtlSignal();\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (\n steps.get(index - 1)?.status === COMPLETED_STEP_STATUS ||\n steps.get(index - 1)?.status === CURRENT_STEP_STATUS\n ) {\n if (!rtlDirection) {\n this._focusPrevious(index, steps);\n } else {\n this._focusNext(index, steps);\n }\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (steps.get(index)?.status === COMPLETED_STEP_STATUS) {\n if (!rtlDirection) {\n this._focusNext(index, steps);\n } else {\n this._focusPrevious(index, steps);\n }\n }\n }\n }\n\n /** @hidden */\n private _focusNext(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index + 1 < steps.length) {\n steps.get(index + 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(0)?.progressBarLink.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _focusPrevious(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index - 1 >= 0) {\n steps.get(index - 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(steps.length - 1)?.progressBarLink.nativeElement.focus();\n }\n }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { Nullable, TabbableElementService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { ACTIVE_STEP_STATUS, COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS } from './constants';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WIZARD } from './wizard-injection-token';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardService } from './wizard.service';\n\nexport const STEP_MIN_WIDTH = 168;\nexport const STEP_STACKED_TOP_CLASS = 'fd-wizard__step--stacked-top';\nexport const STEP_STACKED_CLASS = 'fd-wizard__step--stacked';\nexport const STEP_NO_LABEL_CLASS = 'fd-wizard__step--no-label';\n\nexport const WIZARD_NAVIGATION_CLASS = 'fd-wizard__navigation';\nexport const WIZARD_CONTENT_CLASS = 'fd-wizard__content';\nexport const WIZARD_CONTAINER_WRAPPER_CLASS = 'fd-wizard-container-wrapper';\nexport const WIZARD_TALL_CONTENT_CLASS = 'fd-wizard-tall-content';\nexport const SHELLBAR_CLASS = 'fd-shellbar';\nexport const BAR_FOOTER_CLASS = 'fd-bar--footer';\nexport const BAR_FLOATING_FOOTER_CLASS = 'fd-bar--floating-footer';\n\nexport let _fromScrollToCurrentStep;\nexport let timer: any = null;\nexport const handleTimeoutReference = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n _fromScrollToCurrentStep = false;\n }, 150);\n};\n\n@Component({\n selector: 'fd-wizard',\n templateUrl: './wizard.component.html',\n styleUrl: './wizard.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WizardService,\n {\n provide: WIZARD,\n useExisting: WizardComponent\n }\n ],\n host: {\n role: 'region',\n '[attr.aria-label]': 'ariaLabel || _defaultAriaLabel()'\n },\n imports: [ScrollSpyDirective, CdkScrollable, ScrollbarDirective, NgTemplateOutlet]\n})\nexport class WizardComponent implements AfterViewInit, OnDestroy {\n /**\n * Whether or not to append the step to the wizard. If false, each step will be displayed on a different page.\n * Default is true.\n */\n @Input()\n appendToWizard = true;\n\n /**\n * Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n * is the combined height of the shellbar, wizard header and wizard footer.\n */\n @Input()\n contentHeight: Nullable<string | null>;\n\n /**\n * Whether or not apply responsive paddings styling.\n */\n @Input()\n @HostBinding('class.fd-wizard--responsive-paddings')\n responsivePaddings = false;\n\n /** Whether to display a summary step. */\n @Input()\n displaySummaryStep = false;\n\n /**\n * adding aria label to the component\n * If not provided, is being translated by i18n package\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ContentChildren(WizardStepComponent, { descendants: true })\n steps: QueryList<WizardStepComponent>;\n\n /** @hidden */\n @ContentChild(WizardProgressBarDirective)\n progressBar: WizardProgressBarDirective;\n\n /** @hidden */\n @ContentChildren(WizardContentComponent)\n wizardContent: WizardContentComponent;\n\n /** @hidden */\n @ViewChild('wrapperContainer')\n wrapperContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n scrollbar: ScrollbarDirective;\n\n /** @hidden */\n contentTemplates: TemplateRef<any>[] = [];\n\n /** @hidden */\n stackedStepsLeft: WizardStepComponent[] = [];\n\n /** @hidden */\n stackedStepsRight: WizardStepComponent[] = [];\n\n /** @hidden */\n protected _defaultAriaLabel = resolveTranslationSignal('coreWizard.ariaLabel');\n\n /** @hidden */\n private _stepEventSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _previousWidth: number;\n\n /** @hidden */\n private readonly _tabbableService = inject(TabbableElementService);\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private readonly _cdRef: ChangeDetectorRef,\n @Optional() @Inject(FD_DIALOG_BODY_COMPONENT) private _dialogBodyComponent: DialogBodyComponent\n ) {}\n\n /** @hidden */\n @HostListener('window:resize')\n resizeHandler(): void {\n const wizardWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n if (!this._previousWidth || wizardWidth <= this._previousWidth) {\n this._wizardShrinking();\n } else if (wizardWidth > this._previousWidth) {\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n this._previousWidth = wizardWidth;\n if (this.contentHeight) {\n this._elRef.nativeElement.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n this.contentHeight;\n } else {\n this._setContainerAndTallContentHeight();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this._subscriptions.closed) {\n return;\n }\n\n // fixes ExpressionChangedAfterItHasBeenCheckedError\n this._setContentTemplates();\n this._subscriptions.add(\n this.steps.changes.subscribe(() => {\n this._handleStepOrStatusChanges();\n this._setupStepEvents();\n })\n );\n this._setupStepEvents();\n this._cdRef.detectChanges();\n this._handleStepOrStatusChanges();\n this.resizeHandler();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._subscriptions.unsubscribe();\n this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);\n }\n\n /** @hidden */\n scrollSpyChange($event: HTMLElement): void {\n if (!_fromScrollToCurrentStep) {\n this.steps.forEach((step) => {\n if (step._stepId.toString() === $event.children[0].children[0].id) {\n step.status = CURRENT_STEP_STATUS;\n } else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {\n step.status = COMPLETED_STEP_STATUS;\n } else {\n step.status = UPCOMING_STEP_STATUS;\n }\n });\n }\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n\n /**\n * @hidden\n * @private\n * This function determines the height of the wizard content by looking for the document's shellbar, the wizard\n * navigation and the wizard footer, and calculating the height based on their presence.\n */\n private _calculateContentHeight(): number {\n let wizardNavHeight = 0;\n const shellbarHeight = this._getShellbarHeight();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n wizardNavHeight = this._getWizardNavHeight();\n }\n const wizardFooterHeight = this._getWizardFooterHeight();\n const dialogOffset = this._getDialogOffset();\n\n return shellbarHeight + wizardNavHeight + wizardFooterHeight + dialogOffset;\n }\n\n /** @hidden */\n private _getShellbarHeight(): number {\n return document.querySelector<HTMLElement>('.' + SHELLBAR_CLASS)?.clientHeight ?? 0;\n }\n\n /** @hidden */\n private _getWizardNavHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS)) {\n retVal = wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getWizardFooterHeight(): number {\n const container = this._dialogBodyComponent?.elementRef.nativeElement ?? this._elRef.nativeElement;\n const footer =\n container.querySelector(`.${BAR_FOOTER_CLASS}`) ?? container.querySelector(`.${BAR_FLOATING_FOOTER_CLASS}`);\n return footer ? footer.offsetHeight : 0;\n }\n\n /** @hidden */\n private _getDialogOffset(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n\n if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {\n this._dialogBodyComponent.dialogConfig.verticalPadding = false;\n const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');\n if (dialogBodyTitle) {\n retVal = dialogBodyTitle.offsetHeight;\n }\n retVal = retVal + window.innerHeight - dialogBody.offsetHeight;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n private _setContainerAndTallContentHeight(): void {\n const wizard = this._elRef.nativeElement;\n const combinedHeight = this.contentHeight ? this.contentHeight : this._calculateContentHeight();\n if (wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS)) {\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n }\n wizard.querySelectorAll('.' + WIZARD_CONTENT_CLASS).forEach((node) => {\n node.style.height = 'auto';\n });\n if (wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS)) {\n if (\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).offsetHeight <\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).offsetHeight\n ) {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n } else {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.paddingBottom = '24px';\n }\n }\n }\n\n /** @hidden */\n private _setupStepEvents(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._stepEventSubscriptions = new Subscription();\n this.steps.forEach((step) => {\n this._stepEventSubscriptions.add(\n step.stepClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n this._stepEventSubscriptions.add(\n step.statusChange.subscribe(() => {\n this._handleStepOrStatusChanges();\n })\n );\n this._stepEventSubscriptions.add(\n step.stepIndicatorItemClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n // need to call wizardShrinking for each step < 168px on first load\n if (step.wizardLabel && step.getStepClientWidth() < STEP_MIN_WIDTH) {\n this._wizardShrinking();\n }\n });\n }\n\n /** @hidden */\n private _wizardShrinking(): void {\n const currentStep = this._getCurrentStep();\n if (\n currentStep &&\n (!currentStep.isSummary || this.displaySummaryStep) &&\n currentStep.wizardLabel &&\n currentStep.getStepClientWidth() < STEP_MIN_WIDTH\n ) {\n this._hideSomeStep(currentStep);\n this._setStackedTop();\n }\n }\n\n /** @hidden */\n private _setContentTemplates(): void {\n const templatesLength = this.contentTemplates.length;\n this.contentTemplates = [];\n let _stepId = 0;\n const steps = this.steps.toArray();\n for (const step of steps) {\n if (step.content) {\n if (!step.isSummary || this.displaySummaryStep) {\n step.content.tallContent = false;\n }\n step.content.wizardContentId = _stepId.toString();\n }\n step._stepId = _stepId;\n _stepId++;\n step.setFinalStep(false);\n /*\n If the step is completed and appendToWizard is true, hide the nextStep button, unless it's the last step,\n or if there's a summary and it is the second to last step\n */\n if (\n step.completed &&\n this.appendToWizard &&\n step.content?.nextStep?.canHide &&\n step !== this._getLastNonSummaryStep()\n ) {\n step.content.nextStep._hideElement();\n } else if (\n step.content?.nextStep &&\n ((step.completed && this.appendToWizard) ||\n (step.visited && step.branching && step.status === CURRENT_STEP_STATUS))\n ) {\n step.content.nextStep._showElement();\n }\n if (\n step.visited ||\n ((step.status === CURRENT_STEP_STATUS || step.status === COMPLETED_STEP_STATUS) && step.content)\n ) {\n step.visited = true;\n if (step.status === CURRENT_STEP_STATUS && (!step.completed || !this.appendToWizard)) {\n step.content.tallContent = true;\n }\n\n const isCurrentStep = !this.appendToWizard && step.status === CURRENT_STEP_STATUS;\n\n if (!templatesLength || isCurrentStep) {\n this.contentTemplates = [step.content.contentTemplate];\n\n // If we found needed step, break the cycle, since it might set wrong step later.\n if (isCurrentStep) {\n break;\n }\n } else if (this.appendToWizard && (!step.isSummary || this.displaySummaryStep)) {\n this.contentTemplates.push(step.content.contentTemplate);\n }\n }\n }\n\n const lastVisibleTemplate = steps[this.contentTemplates.length - 1];\n if (lastVisibleTemplate && lastVisibleTemplate.content) {\n lastVisibleTemplate.content.tallContent = true;\n }\n this._setFinalStep();\n }\n\n /** @hidden */\n private _scrollToCurrentStep(): void {\n if (this.appendToWizard) {\n _fromScrollToCurrentStep = true;\n this.steps.forEach((step, index) => {\n if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {\n const child = this.wrapperContainer.nativeElement.children[0].children[index] as HTMLElement;\n const wizardNavigationHeight = this._elRef.nativeElement.querySelector(\n '.' + WIZARD_NAVIGATION_CLASS\n ).clientHeight;\n\n scrollTop(this.wrapperContainer.nativeElement, child.offsetTop - wizardNavigationHeight);\n\n if (index === 0) {\n this._focusFirstTabbableElement(index);\n } else {\n // setTimeout needed to allow for smooth scroll animation\n setTimeout(() => {\n this._focusFirstTabbableElement(index);\n }, 500);\n }\n }\n });\n this._setUpScrollListener();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(index = 0): void {\n const contentContainer = this._elRef.nativeElement.querySelectorAll('.fd-wizard__content')[index];\n this._tabbableService.getTabbableElement(contentContainer)?.focus();\n }\n\n /** @hidden */\n private _setUpScrollListener(): void {\n this.wrapperContainer?.nativeElement.addEventListener('scroll', handleTimeoutReference, false);\n }\n\n /** @hidden */\n private _hideSomeStep(currentStep: WizardStepComponent): void {\n // If a small step was found, get the step with a visible label furthest away from the current step and hide the label\n let stepsArray = this.steps.toArray();\n stepsArray = stepsArray.filter((step) => !step.hasLabel(STEP_NO_LABEL_CLASS));\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n stepsArray.pop();\n }\n if (stepsArray.length > 1) {\n let currentStepIndex = 0,\n stepToHide;\n if (currentStep) {\n currentStepIndex = stepsArray.indexOf(currentStep);\n }\n currentStepIndex > (stepsArray.length - 1) / 2\n ? (stepToHide = stepsArray[0])\n : (stepToHide = stepsArray[stepsArray.length - 1]);\n stepToHide.getClassList().add(STEP_NO_LABEL_CLASS);\n stepToHide.getClassList().add(STEP_STACKED_CLASS);\n if (stepsArray.indexOf(stepToHide) < currentStepIndex && !this.stackedStepsLeft.includes(stepToHide)) {\n this.stackedStepsLeft.splice(this.steps.toArray().indexOf(stepToHide), 0, stepToHide);\n } else if (\n stepsArray.indexOf(stepToHide) > currentStepIndex &&\n !this.stackedStepsRight.includes(stepToHide)\n ) {\n this.stackedStepsRight.unshift(stepToHide);\n }\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setStackedTop(): void {\n const currentStep = this._getCurrentStep();\n this.steps.forEach((step, index) => {\n if (step.stepIndicator) {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n if (this.steps.toArray()[index + 1] === currentStep) {\n if (this.steps.length > 1) {\n step.getClassList().add(STEP_STACKED_TOP_CLASS);\n if (!this.stackedStepsLeft.includes(step) && this.stackedStepsLeft.length >= 1) {\n this.stackedStepsLeft.splice(index, 0, step);\n }\n }\n step.stepIndicator.setStackedItems(this.stackedStepsLeft);\n } else {\n step.stepIndicator.stackedItems$.set([]);\n }\n }\n });\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n }\n\n /** @hidden */\n private _resetStepClasses(): void {\n this.steps.forEach((step) => {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n step.getClassList().remove(STEP_STACKED_CLASS);\n step.getClassList().remove(STEP_NO_LABEL_CLASS);\n });\n }\n\n /** @hidden */\n private _handleStepOrStatusChanges(): void {\n if (this._isCurrentStepSummary() && !this.displaySummaryStep) {\n setTimeout(() => {\n this.progressBar.visible = false;\n });\n this._showSummary();\n } else {\n this.progressBar.visible = true;\n\n this._setContentTemplates();\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n if (!this.appendToWizard) {\n this._focusFirstTabbableElement();\n }\n setTimeout(() => {\n this._cdRef.detectChanges();\n this.resizeHandler();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n this._scrollToCurrentStep();\n }\n });\n this._setFinalStep();\n }\n\n /** @hidden */\n private _setFinalStep(): void {\n const lastNonSummaryStep = this._getLastNonSummaryStep();\n if (lastNonSummaryStep) {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n this.steps.last.removeFromDom();\n }\n if (lastNonSummaryStep.content) {\n lastNonSummaryStep.content.tallContent = true;\n }\n lastNonSummaryStep.setFinalStep(true);\n }\n }\n\n /** @hidden */\n private _showSummary(): void {\n this.steps.forEach((step) => {\n if (!step.isSummary) {\n step.completed = true;\n }\n });\n const summary = this.steps.find((step) => step.isSummary);\n if (summary) {\n summary.content.tallContent = true;\n this.contentTemplates = [summary.content.contentTemplate];\n }\n }\n\n /** @hidden */\n private _isCurrentStepSummary(): boolean {\n return this.steps.some((step) => step.status === CURRENT_STEP_STATUS && step.isSummary);\n }\n\n /** @hidden */\n private _getCurrentStep(): WizardStepComponent {\n return this.steps.filter(\n (step) => step.status === CURRENT_STEP_STATUS || step.status === ACTIVE_STEP_STATUS\n )[0];\n }\n\n /** @hidden */\n private _shrinkWhileAnyStepIsTooNarrow(): void {\n // Add small delay for elements to render appropriately.\n setTimeout(() => {\n this.stackedStepsLeft = [];\n this.stackedStepsRight = [];\n this.steps.first.stepIndicator?.setStackedItems(this.stackedStepsLeft);\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n this._resetStepClasses();\n let i = 0;\n while (this._anyStepIsTooNarrow() && i < this.steps.length - 1) {\n i++;\n this._wizardShrinking();\n }\n }, 10);\n }\n\n /** @hidden */\n private _anyStepIsTooNarrow(): boolean {\n return this.steps.some((step) => step.getStepClientWidth() < STEP_MIN_WIDTH);\n }\n\n /** @hidden */\n private _stepClicked(clickedStep: WizardStepComponent): void {\n if (!clickedStep) {\n clickedStep = this.steps.first;\n }\n const clickedStepIndex = this.steps.toArray().indexOf(clickedStep);\n this.steps.forEach((step) => {\n if (step === clickedStep) {\n step.status = CURRENT_STEP_STATUS;\n step.statusChange.emit(CURRENT_STEP_STATUS);\n } else if (step !== clickedStep) {\n if (this.steps.toArray().indexOf(step) < clickedStepIndex) {\n step.status = COMPLETED_STEP_STATUS;\n step.statusChange.emit(COMPLETED_STEP_STATUS);\n } else if (this.steps.toArray().indexOf(step) > clickedStepIndex) {\n step.status = UPCOMING_STEP_STATUS;\n step.statusChange.emit(UPCOMING_STEP_STATUS);\n }\n }\n });\n setTimeout(() => {\n (document.activeElement as HTMLElement).blur(); // this function can focus step indicators undesirably\n });\n }\n\n /** @hidden */\n private _getLastNonSummaryStep(): WizardStepComponent {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n return this.steps.toArray()[this.steps.length - 2];\n }\n\n return this.steps.last;\n }\n}\n","<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n @if (appendToWizard) {\n <div\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n } @else {\n <div cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n }\n <ng-content></ng-content>\n</section>\n","import { NgModule } from '@angular/core';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WizardNavigationComponent } from './wizard-navigation/wizard-navigation.component';\nimport { WizardNextStepComponent } from './wizard-next-step/wizard-next-step.component';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepIndicatorComponent } from './wizard-step-indicator/wizard-step-indicator.component';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardComponent } from './wizard.component';\nimport { WizardService } from './wizard.service';\n\nconst components = [\n WizardComponent,\n WizardNavigationComponent,\n WizardProgressBarDirective,\n WizardStepComponent,\n WizardStepIndicatorComponent,\n WizardContentComponent,\n WizardNextStepComponent\n];\n\n/**\n * @deprecated\n * Use direct imports of `WizardComponent`,\n `WizardNavigationComponent`,\n `WizardProgressBarDirective`,\n `WizardStepComponent`,\n `WizardStepIndicatorComponent`,\n `WizardContentComponent`,\n `WizardNextStepComponent`\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [WizardService]\n})\nexport class WizardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fundamental-ngx/core",
|
|
3
|
-
"version": "0.55.2-rc.
|
|
3
|
+
"version": "0.55.2-rc.3",
|
|
4
4
|
"schematics": "./schematics/collection.json",
|
|
5
5
|
"ng-update": {
|
|
6
6
|
"migrations": "./schematics/migrations.json"
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"@angular/forms": "^19.0.0",
|
|
24
24
|
"@angular/platform-browser": "^19.0.0",
|
|
25
25
|
"@angular/router": "^19.0.0",
|
|
26
|
-
"@fundamental-ngx/cdk": "0.55.2-rc.
|
|
27
|
-
"@fundamental-ngx/i18n": "0.55.2-rc.
|
|
26
|
+
"@fundamental-ngx/cdk": "0.55.2-rc.3",
|
|
27
|
+
"@fundamental-ngx/i18n": "0.55.2-rc.3",
|
|
28
28
|
"@sap-theming/theming-base-content": "^11.24.0",
|
|
29
29
|
"fundamental-styles": "0.38.0",
|
|
30
30
|
"rxjs": "^7.8.0"
|
|
@@ -135,10 +135,6 @@
|
|
|
135
135
|
"types": "./facets/index.d.ts",
|
|
136
136
|
"default": "./fesm2022/fundamental-ngx-core-facets.mjs"
|
|
137
137
|
},
|
|
138
|
-
"./feed-input": {
|
|
139
|
-
"types": "./feed-input/index.d.ts",
|
|
140
|
-
"default": "./fesm2022/fundamental-ngx-core-feed-input.mjs"
|
|
141
|
-
},
|
|
142
138
|
"./feed-list-item": {
|
|
143
139
|
"types": "./feed-list-item/index.d.ts",
|
|
144
140
|
"default": "./fesm2022/fundamental-ngx-core-feed-list-item.mjs"
|
|
@@ -155,6 +151,10 @@
|
|
|
155
151
|
"types": "./flexible-column-layout/index.d.ts",
|
|
156
152
|
"default": "./fesm2022/fundamental-ngx-core-flexible-column-layout.mjs"
|
|
157
153
|
},
|
|
154
|
+
"./feed-input": {
|
|
155
|
+
"types": "./feed-input/index.d.ts",
|
|
156
|
+
"default": "./fesm2022/fundamental-ngx-core-feed-input.mjs"
|
|
157
|
+
},
|
|
158
158
|
"./form": {
|
|
159
159
|
"types": "./form/index.d.ts",
|
|
160
160
|
"default": "./fesm2022/fundamental-ngx-core-form.mjs"
|
|
@@ -315,26 +315,26 @@
|
|
|
315
315
|
"types": "./resizable-card-layout/index.d.ts",
|
|
316
316
|
"default": "./fesm2022/fundamental-ngx-core-resizable-card-layout.mjs"
|
|
317
317
|
},
|
|
318
|
-
"./
|
|
319
|
-
"types": "./
|
|
320
|
-
"default": "./fesm2022/fundamental-ngx-core-
|
|
318
|
+
"./scroll-spy": {
|
|
319
|
+
"types": "./scroll-spy/index.d.ts",
|
|
320
|
+
"default": "./fesm2022/fundamental-ngx-core-scroll-spy.mjs"
|
|
321
321
|
},
|
|
322
322
|
"./segmented-button": {
|
|
323
323
|
"types": "./segmented-button/index.d.ts",
|
|
324
324
|
"default": "./fesm2022/fundamental-ngx-core-segmented-button.mjs"
|
|
325
325
|
},
|
|
326
|
-
"./
|
|
327
|
-
"types": "./
|
|
328
|
-
"default": "./fesm2022/fundamental-ngx-core-
|
|
329
|
-
},
|
|
330
|
-
"./select": {
|
|
331
|
-
"types": "./select/index.d.ts",
|
|
332
|
-
"default": "./fesm2022/fundamental-ngx-core-select.mjs"
|
|
326
|
+
"./scrollbar": {
|
|
327
|
+
"types": "./scrollbar/index.d.ts",
|
|
328
|
+
"default": "./fesm2022/fundamental-ngx-core-scrollbar.mjs"
|
|
333
329
|
},
|
|
334
330
|
"./shared": {
|
|
335
331
|
"types": "./shared/index.d.ts",
|
|
336
332
|
"default": "./fesm2022/fundamental-ngx-core-shared.mjs"
|
|
337
333
|
},
|
|
334
|
+
"./select": {
|
|
335
|
+
"types": "./select/index.d.ts",
|
|
336
|
+
"default": "./fesm2022/fundamental-ngx-core-select.mjs"
|
|
337
|
+
},
|
|
338
338
|
"./shellbar": {
|
|
339
339
|
"types": "./shellbar/index.d.ts",
|
|
340
340
|
"default": "./fesm2022/fundamental-ngx-core-shellbar.mjs"
|