@fundamental-ngx/core 0.43.16 → 0.43.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/calendar/calendar-directives.d.ts +11 -9
  2. package/calendar/calendar-header/calendar-header.component.d.ts +5 -23
  3. package/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.d.ts +1 -20
  4. package/calendar/calendar-views/calendar-day-view/calendar-day-view.component.d.ts +3 -41
  5. package/calendar/calendar-views/calendar-month-view/calendar-month-view.component.d.ts +1 -20
  6. package/calendar/calendar-views/calendar-year-view/calendar-year-view.component.d.ts +1 -20
  7. package/calendar/calendar.module.d.ts +2 -1
  8. package/calendar/i18n/calendar-i18n-labels.d.ts +20 -22
  9. package/calendar/patch-deprecated-i18n-labels.d.ts +6 -0
  10. package/combobox/combobox.component.d.ts +17 -9
  11. package/esm2020/calendar/calendar-directives.mjs +27 -20
  12. package/esm2020/calendar/calendar-header/calendar-header.component.mjs +30 -60
  13. package/esm2020/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +9 -34
  14. package/esm2020/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +10 -62
  15. package/esm2020/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +9 -34
  16. package/esm2020/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +9 -34
  17. package/esm2020/calendar/calendar.component.mjs +13 -3
  18. package/esm2020/calendar/calendar.module.mjs +5 -4
  19. package/esm2020/calendar/i18n/calendar-i18n-labels.mjs +22 -28
  20. package/esm2020/calendar/patch-deprecated-i18n-labels.mjs +26 -0
  21. package/esm2020/combobox/combobox.component.mjs +37 -11
  22. package/esm2020/date-picker/date-picker.component.mjs +1 -1
  23. package/esm2020/datetime-picker/datetime-picker.component.mjs +12 -7
  24. package/esm2020/file-uploader/file-uploader.component.mjs +12 -13
  25. package/esm2020/input-group/input-group.component.mjs +6 -4
  26. package/esm2020/list/list-focus-item.model.mjs +5 -2
  27. package/esm2020/list/list-item/list-item.component.mjs +5 -8
  28. package/esm2020/list/list.component.mjs +12 -7
  29. package/esm2020/multi-combobox/index.mjs +2 -1
  30. package/esm2020/multi-combobox/multi-announcer/multi-announcer.directive.mjs +103 -0
  31. package/esm2020/multi-combobox/multi-combobox.component.mjs +18 -19
  32. package/esm2020/multi-combobox/multi-combobox.module.mjs +3 -2
  33. package/esm2020/multi-input/multi-input.component.mjs +15 -12
  34. package/esm2020/multi-input/multi-input.module.mjs +3 -2
  35. package/esm2020/pagination/pagination.component.mjs +1 -1
  36. package/esm2020/popover/base/base-popover.class.mjs +2 -2
  37. package/esm2020/popover/popover-body/popover-body.component.mjs +2 -2
  38. package/esm2020/select/select-key-manager.service.mjs +5 -5
  39. package/esm2020/select/select.component.mjs +22 -11
  40. package/esm2020/select/select.interface.mjs +1 -1
  41. package/esm2020/shellbar/user-menu/shellbar-user-menu.component.mjs +3 -3
  42. package/esm2020/table/table-wrapper.component.mjs +2 -2
  43. package/esm2020/table/table.component.mjs +2 -2
  44. package/esm2020/time-picker/time-picker.component.mjs +1 -1
  45. package/esm2020/token/token.component.mjs +10 -8
  46. package/esm2020/token/tokenizer.component.mjs +5 -4
  47. package/fesm2015/fundamental-ngx-core-calendar.mjs +156 -282
  48. package/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
  49. package/fesm2015/fundamental-ngx-core-combobox.mjs +32 -7
  50. package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
  51. package/fesm2015/fundamental-ngx-core-date-picker.mjs +1 -1
  52. package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
  53. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +11 -6
  54. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  55. package/fesm2015/fundamental-ngx-core-file-uploader.mjs +11 -12
  56. package/fesm2015/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  57. package/fesm2015/fundamental-ngx-core-input-group.mjs +5 -3
  58. package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  59. package/fesm2015/fundamental-ngx-core-list.mjs +17 -11
  60. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  61. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +121 -21
  62. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  63. package/fesm2015/fundamental-ngx-core-multi-input.mjs +15 -11
  64. package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  65. package/fesm2015/fundamental-ngx-core-pagination.mjs +1 -1
  66. package/fesm2015/fundamental-ngx-core-pagination.mjs.map +1 -1
  67. package/fesm2015/fundamental-ngx-core-popover.mjs +2 -2
  68. package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  69. package/fesm2015/fundamental-ngx-core-select.mjs +134 -122
  70. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  71. package/fesm2015/fundamental-ngx-core-shellbar.mjs +2 -2
  72. package/fesm2015/fundamental-ngx-core-shellbar.mjs.map +1 -1
  73. package/fesm2015/fundamental-ngx-core-table.mjs +4 -4
  74. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  75. package/fesm2015/fundamental-ngx-core-time-picker.mjs +1 -1
  76. package/fesm2015/fundamental-ngx-core-time-picker.mjs.map +1 -1
  77. package/fesm2015/fundamental-ngx-core-token.mjs +11 -9
  78. package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  79. package/fesm2020/fundamental-ngx-core-calendar.mjs +162 -282
  80. package/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
  81. package/fesm2020/fundamental-ngx-core-combobox.mjs +34 -8
  82. package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
  83. package/fesm2020/fundamental-ngx-core-date-picker.mjs +1 -1
  84. package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
  85. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +11 -6
  86. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  87. package/fesm2020/fundamental-ngx-core-file-uploader.mjs +11 -12
  88. package/fesm2020/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  89. package/fesm2020/fundamental-ngx-core-input-group.mjs +5 -3
  90. package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  91. package/fesm2020/fundamental-ngx-core-list.mjs +17 -11
  92. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  93. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +115 -20
  94. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  95. package/fesm2020/fundamental-ngx-core-multi-input.mjs +15 -11
  96. package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  97. package/fesm2020/fundamental-ngx-core-pagination.mjs +1 -1
  98. package/fesm2020/fundamental-ngx-core-pagination.mjs.map +1 -1
  99. package/fesm2020/fundamental-ngx-core-popover.mjs +2 -2
  100. package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  101. package/fesm2020/fundamental-ngx-core-select.mjs +134 -123
  102. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  103. package/fesm2020/fundamental-ngx-core-shellbar.mjs +2 -2
  104. package/fesm2020/fundamental-ngx-core-shellbar.mjs.map +1 -1
  105. package/fesm2020/fundamental-ngx-core-table.mjs +4 -4
  106. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  107. package/fesm2020/fundamental-ngx-core-time-picker.mjs +1 -1
  108. package/fesm2020/fundamental-ngx-core-time-picker.mjs.map +1 -1
  109. package/fesm2020/fundamental-ngx-core-token.mjs +11 -9
  110. package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  111. package/file-uploader/file-uploader.component.d.ts +1 -1
  112. package/fundamental-ngx-core-v0.43.18.tgz +0 -0
  113. package/input-group/input-group.component.d.ts +7 -1
  114. package/list/list-focus-item.model.d.ts +8 -3
  115. package/list/list-item/list-item.component.d.ts +5 -6
  116. package/list/list.component.d.ts +6 -4
  117. package/multi-combobox/index.d.ts +1 -0
  118. package/multi-combobox/multi-announcer/multi-announcer.directive.d.ts +39 -0
  119. package/multi-combobox/multi-combobox.component.d.ts +1 -1
  120. package/multi-combobox/multi-combobox.module.d.ts +2 -1
  121. package/multi-input/multi-input.component.d.ts +5 -3
  122. package/multi-input/multi-input.module.d.ts +2 -1
  123. package/package.json +3 -3
  124. package/schematics/add-dependencies/index.js +4 -4
  125. package/select/select-key-manager.service.d.ts +1 -1
  126. package/select/select.component.d.ts +18 -12
  127. package/select/select.interface.d.ts +4 -5
  128. package/token/token.component.d.ts +4 -2
  129. package/fundamental-ngx-core-v0.43.16.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-token.mjs","sources":["../../../../libs/core/src/lib/token/token.component.ts","../../../../libs/core/src/lib/token/token.component.html","../../../../libs/core/src/lib/token/tokenizer.component.ts","../../../../libs/core/src/lib/token/tokenizer.component.html","../../../../libs/core/src/lib/token/token-input.directive.ts","../../../../libs/core/src/lib/token/deprecated-tokenizer-content-density.directive.ts","../../../../libs/core/src/lib/token/token.module.ts","../../../../libs/core/src/lib/token/fundamental-ngx-core-token.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { DestroyedService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * A token is used to represent contextualizing information.\n * They can be useful to show applied filters, selected values for form fields or object metadata.\n */\n@Component({\n selector: 'fd-token',\n templateUrl: './token.component.html',\n styleUrls: ['./token.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders(), DestroyedService],\n host: {\n '[style.max-width.%]': '100'\n }\n})\nexport class TokenComponent implements AfterViewInit, OnDestroy {\n /** Whether the token is disabled. */\n @Input()\n disabled = false;\n\n /** @hidden */\n @ViewChild('tokenWrapperElement')\n tokenWrapperElement: ElementRef;\n\n /** @hidden */\n @ViewChild('content')\n readonly _content: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: ViewContainerRef;\n\n /** @hidden */\n private _selected = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Whether the token is selected. */\n @Input()\n set selected(val: boolean) {\n if (this._selected !== val) {\n this._cdRef.markForCheck();\n }\n this._selected = val;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n /** Whether the token is read-only. */\n @Input()\n readOnly = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * label for close icon\n */\n @Input()\n deleteButtonLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * role description for token\n */\n @Input()\n ariaRoleDescription: string;\n\n /** Emitted when the *x* icon is clicked. Specifically, any pseudo-element. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onCloseClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /** Emitted when token should be removed */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onRemove: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emitted when a token is clicked. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenClick = new EventEmitter<MouseEvent>();\n\n /** Emitted when a there's a keydown registered on the token. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenKeydown = new EventEmitter<KeyboardEvent>();\n\n /**\n * Emitted when token element received or lost focus.\n */\n @Output()\n elementFocused = new EventEmitter<boolean>();\n\n /** @hidden */\n totalCount: number;\n\n /** @hidden */\n private readonly _destroy$ = inject(DestroyedService);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewContainer.createEmbeddedView(this._content);\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'focus')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this.elementFocused.emit(true);\n });\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this.elementFocused.emit(false);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n closeClickHandler(event?): void {\n if (event) {\n event.stopPropagation();\n if (!this.disabled) {\n this.onCloseClick.emit(event);\n }\n }\n }\n\n /** @hidden */\n tokenClickHandler(event): void {\n this.onTokenClick.emit(event);\n }\n\n /** @hidden */\n tokenKeydownHandler(event): void {\n this.onTokenKeydown.emit(event);\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.onTokenClick.emit(event);\n }\n }\n\n /** @hidden */\n _setTotalCount(count: number): void {\n this.totalCount = count;\n this._cdRef.markForCheck();\n }\n}\n","<span\n #tokenWrapperElement\n class=\"fd-token\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-roledescription]=\"ariaRoleDescription\"\n (click)=\"tokenClickHandler($event)\"\n (keydown)=\"tokenKeydownHandler($event)\"\n [attr.aria-setsize]=\"totalCount\"\n [class.fd-token__disabled]=\"disabled\"\n [class.fd-token--selected]=\"selected\"\n [class.fd-token--readonly]=\"readOnly\"\n [attr.aria-selected]=\"selected\"\n>\n <span class=\"fd-token__text no-text-select\">\n <ng-container #viewContainer></ng-container>\n </span>\n <span\n (click)=\"closeClickHandler($event)\"\n role=\"button\"\n [attr.aria-label]=\"deleteButtonLabel || ('coreToken.deleteButtonLabel' | fdTranslate)\"\n *ngIf=\"!readOnly\"\n class=\"fd-token__close\"\n ></span>\n</span>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import {\n A,\n BACKSPACE,\n DELETE,\n DOWN_ARROW,\n ENTER,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n forwardRef\n} from '@angular/core';\nimport {\n CssClassBuilder,\n KeyUtil,\n Nullable,\n RtlService,\n applyCssClass,\n resizeObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FormControlComponent } from '@fundamental-ngx/core/form';\nimport { BehaviorSubject, Observable, Subject, Subscription, fromEvent, merge, startWith } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\nimport { TokenComponent } from './token.component';\n\n@Component({\n selector: 'fd-tokenizer',\n templateUrl: './tokenizer.component.html',\n styleUrls: ['./tokenizer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()]\n})\nexport class TokenizerComponent implements AfterViewInit, OnDestroy, CssClassBuilder, OnInit, OnChanges {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** Disables possibility to remove tokens by keyboard */\n @Input()\n disableKeyboardDeletion = false;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TokenComponent))\n tokenList: QueryList<TokenComponent>;\n\n /** @hidden */\n @ContentChild(forwardRef(() => FormControlComponent), { read: ElementRef })\n input: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('tokenizerInner')\n tokenizerInnerEl: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @ViewChild('moreElementSpan')\n moreElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('inputGroupAddOn') set content(content: ElementRef<HTMLElement>) {\n this.inputGroupAddonEl = content;\n }\n\n /** @hidden */\n @ViewChildren('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: QueryList<ViewContainerRef>;\n\n /** @hidden */\n get _hiddenTokens(): TokenComponent[] {\n return this.tokenList.filter((token) => token.elementRef.nativeElement.style.display === 'none');\n }\n\n /**\n * @hidden\n * Observable state of the compact mode.\n */\n get _compact$(): Observable<boolean> {\n return this._contentDensityObserver.isCompact$;\n }\n\n /**\n * @hidden\n * Component is in compact mode, determined by the consumer\n */\n get _compact(): boolean {\n return this._contentDensityObserver.isCompact;\n }\n\n /** @hidden */\n inputGroupAddonEl: ElementRef;\n\n /** Whether to use cozy visuals but compact collapsing behavior. */\n @Input()\n compactCollapse = false;\n\n /** Whether tokenizer should have fake focus indicator, when input is focused inside*/\n @Input()\n tokenizerFocusable = true;\n\n /** The value for the tokenizer input */\n @Input()\n inputValue: string;\n\n /** Icon of the button on the right of the input field. */\n @Input()\n glyph: string;\n\n /** Word to use for when there are extra tokens. */\n @Input()\n moreTerm = 'more';\n\n /** @hidden */\n @Input()\n open: boolean;\n\n /** Event emitted when the search term changes. Use *$event* to access the new term. */\n @Output()\n readonly moreClickedEvent: EventEmitter<any> = new EventEmitter<any>();\n\n /** @hidden */\n previousElementWidth: number;\n\n /** @hidden */\n moreTokensLeft: Array<TokenComponent> = [];\n\n /** @hidden */\n moreTokensRight: Array<TokenComponent> = [];\n\n /** @hidden */\n previousTokenCount: number;\n\n /** @hidden */\n tokenListChangesSubscription: Subscription;\n\n /** @hidden */\n tokenListClickSubscriptions: Subscription[] = [];\n\n /** @hidden */\n hiddenCozyTokenCount = 0;\n\n /** @hidden Used to add focus to tokenizer element */\n _tokenizerHasFocus = false;\n\n /** @hidden */\n _showOverflowPopover = true;\n\n /** @hidden */\n _showMoreElement = false;\n\n /** @hidden */\n _tokensContainerWidth = 'auto';\n\n /** @hidden\n * Variable which will keep the index of the first token pressed in the tokenizer\n */\n private _firstElementInSelection: number | null = null;\n\n /** @hidden\n * Variable which will keep the index of the last token pressed in the tokenizer\n */\n private _lastElementInSelection: number | null = null;\n\n /** @hidden\n * Flag which will say if the last keyboard and click operation they used was using control\n */\n private _ctrlPrevious: boolean;\n\n /** @hidden\n * Flag which will say if they held shift and clicked highlighting elements before or\n */\n private _directionShiftIsRight: boolean | null = null;\n\n /** An RxJS Subject that will kill the data stream upon destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _eventListeners: (() => void)[] = [];\n\n /** @hidden */\n private _forceAllTokensToDisplay = false;\n\n /** @hidden */\n private _tokenElementFocused = new BehaviorSubject(false);\n\n /** @hidden */\n private _inputElementFocused = false;\n\n /** @hidden */\n private _tokenElementFocusedSub: Nullable<Subscription>;\n\n /** @hidden */\n constructor(\n readonly _contentDensityObserver: ContentDensityObserver,\n public readonly elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() private _rtlService: RtlService,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private readonly _document: Document\n ) {\n this._eventListeners.push(\n this._renderer.listen('window', 'click', (e: Event) => {\n if (this.elementRef.nativeElement.contains(e.target) === false) {\n this.tokenList.forEach((token) => {\n token.selected = false;\n });\n }\n })\n );\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.input?.nativeElement) {\n this._inputKeydownEvent();\n }\n\n // watch for changes to the tokenList and attempt to expand/collapse tokens as needed\n this.tokenList.changes.pipe(startWith(null)).subscribe(() => {\n this.tokenListChangesSubscription?.unsubscribe();\n this.tokenListChangesSubscription = new Subscription();\n this._resetTokens();\n this.tokenList.forEach((token) => {\n this.tokenListChangesSubscription.add(\n token.onCloseClick.subscribe(() => {\n this._resetTokens();\n })\n );\n this.tokenListChangesSubscription.add(\n token.elementFocused.subscribe((isFocused) => {\n this._tokenElementFocused.next(isFocused);\n })\n );\n });\n });\n\n if (!this._compact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n this._listenElementEvents();\n this.previousElementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._listenOnResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.tokenListChangesSubscription?.unsubscribe();\n this._tokenElementFocusedSub?.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._eventListeners.forEach((e) => e());\n this._unsubscribeClicks();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden\n * 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 return [this.class];\n }\n\n /** @hidden */\n handleTokenClickSubscriptions(): void {\n this._unsubscribeClicks();\n this.tokenList.forEach((token, index) => {\n if (token.tokenWrapperElement) {\n token.tokenWrapperElement.nativeElement.tabIndex = -1;\n }\n this.tokenListClickSubscriptions.push(\n token.onTokenClick.subscribe((event) => {\n event.stopPropagation();\n this.focusTokenElement(index);\n if (this._isControlKey(event)) {\n this._ctrlSelected(token, index);\n } else if (!event.shiftKey || this._ctrlPrevious) {\n this._basicSelected(token, index);\n } else if (event.shiftKey) {\n this.resetFirstAndLastElement();\n this._shiftSelected(index);\n }\n })\n );\n this.tokenListClickSubscriptions.push(\n token.onTokenKeydown.subscribe((event) => {\n this.handleKeyDown(event, index);\n })\n );\n });\n }\n\n /** @hidden */\n focusTokenElement(newIndex: number): HTMLElement | undefined {\n let elementToFocus: HTMLElement | undefined;\n const tokenListArray: TokenComponent[] = this.tokenList.toArray();\n if (tokenListArray[newIndex]) {\n elementToFocus = tokenListArray[newIndex].tokenWrapperElement.nativeElement;\n // element needs tabindex in order to be focused\n elementToFocus!.focus();\n }\n\n return elementToFocus;\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDown(keyboardEvent: KeyboardEvent): void {\n if (\n KeyUtil.isKeyCode(keyboardEvent, [DELETE, BACKSPACE]) &&\n (!this._isInputFocused() || this._tokensSelected()) &&\n !this.disableKeyboardDeletion\n ) {\n const selectedElements = this._getActiveTokens();\n const focusedTokenIndex = this._getFocusedTokenIndex();\n selectedElements.forEach((element) => element.onCloseClick.emit());\n if (selectedElements.length > 0) {\n if (KeyUtil.isKeyCode(keyboardEvent, DELETE)) {\n this._focusInput();\n } else {\n this.focusTokenElement(focusedTokenIndex - 1);\n }\n }\n }\n\n if (\n KeyUtil.isKeyCode(keyboardEvent, BACKSPACE) &&\n this._isInputFocused() &&\n !this._getInputValue() &&\n !this.disableKeyboardDeletion\n ) {\n this.focusTokenElement(this.tokenList.length - 1);\n }\n }\n\n /** @hidden */\n onResize(): void {\n if (this.elementRef) {\n const elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._resetTokens();\n this.previousElementWidth = elementWidth;\n if (!this._compact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n }\n }\n\n /** @hidden */\n handleKeyDown(event: KeyboardEvent, fromIndex: number): void {\n let newIndex: number | undefined;\n const rtl = this._rtlService && this._rtlService.rtl ? this._rtlService.rtl.getValue() : false;\n if (KeyUtil.isKeyCode(event, SPACE) && !this._isInputFocused()) {\n const token = this.tokenList.find((_, index) => index === fromIndex);\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n token && (token.selected = !token.selected);\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this._focusInput();\n } else if (this._goBackRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowLeft(fromIndex);\n newIndex = fromIndex - 1;\n } else if (this._goForwardRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowRight(fromIndex);\n newIndex = fromIndex + 1;\n } else if (KeyUtil.isKeyCode(event, A) && !this._getInputValue() && this._isControlKey(event)) {\n event.preventDefault();\n this.tokenList.forEach((token) => (token.selected = true));\n }\n if (newIndex === this.tokenList.length && this._goForwardRequested(event, rtl)) {\n this._focusInput();\n } else if (newIndex! > this.tokenList.length - this.moreTokensRight.length && this._isInputFocused()) {\n this.focusTokenElement(newIndex! - this.moreTokensRight.length);\n } else if (newIndex || newIndex === 0) {\n this.focusTokenElement(newIndex);\n }\n }\n\n /** @hidden */\n getCombinedTokenWidth(): number {\n let totalTokenWidth = this._getTokensAreaWidthWithoutTokens();\n // get the width of each token\n this.tokenList.forEach((token) => {\n totalTokenWidth = totalTokenWidth + token.elementRef.nativeElement.getBoundingClientRect().width;\n });\n\n return totalTokenWidth;\n }\n\n /**\n * Check whether user intends to go back to the previous token\n **/\n private _goBackRequested($event: KeyboardEvent, rtl: boolean): boolean {\n if (!rtl) {\n return KeyUtil.isKeyCode($event, LEFT_ARROW) || KeyUtil.isKeyCode($event, UP_ARROW);\n }\n return KeyUtil.isKeyCode($event, RIGHT_ARROW) || KeyUtil.isKeyCode($event, DOWN_ARROW);\n }\n\n /**\n * Check whether user intends to go forward to the next token\n **/\n private _goForwardRequested($event: KeyboardEvent, rtl: boolean): boolean {\n if (!rtl) {\n return KeyUtil.isKeyCode($event, RIGHT_ARROW) || KeyUtil.isKeyCode($event, DOWN_ARROW);\n }\n return KeyUtil.isKeyCode($event, LEFT_ARROW) || KeyUtil.isKeyCode($event, UP_ARROW);\n }\n\n /** @hidden */\n private _getTokensAreaWidthWithoutTokens(): number {\n let totalTokenWidth = 0;\n // add input width\n if (this.input?.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.input.nativeElement.getBoundingClientRect().width;\n }\n // add the width of the \"____ more\" element\n if (this.moreTokensLeft.length > 0 && this.moreElement && this.moreElement.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.moreElement.nativeElement.getBoundingClientRect().width;\n }\n // add the input group addon\n if (this.inputGroupAddonEl && this.inputGroupAddonEl.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.inputGroupAddonEl.nativeElement.getBoundingClientRect().width;\n }\n\n return totalTokenWidth;\n }\n\n /** @hidden */\n moreClicked(): void {\n this.moreClickedEvent.emit();\n }\n\n /** Removes all selected tokens */\n removeSelectedTokens(): void {\n const selectedElements = this._getActiveTokens();\n selectedElements.forEach((element) => element.onRemove.emit());\n }\n\n /** @hidden */\n private _handleArrowLeft(fromIndex: number): void {\n // if the leftmost visible token is selected, and there are moreTokensLeft, need to display a moreTokenLeft\n if (fromIndex === this.moreTokensLeft.length) {\n const poppedToken = this.moreTokensLeft.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the right that no longer fit\n this._collapseTokens('right');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n _showAllTokens(): void {\n this._forceAllTokensToDisplay = true;\n this._inputElementFocused = true;\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n token._viewContainer.createEmbeddedView(token._content);\n });\n this._tokensContainerWidth = 'auto';\n this._showMoreElement = false;\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n _hideTokens(): void {\n setTimeout(() => {\n this._inputElementFocused = false;\n const tokenFocused = this._getFocusedTokenIndex() > -1;\n\n if (tokenFocused) {\n this._waitForFocusToDisappear();\n return;\n }\n this._forceAllTokensToDisplay = false;\n this._resetTokens();\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n });\n }\n\n /** @hidden */\n private _waitForFocusToDisappear(): void {\n this._tokenElementFocusedSub?.unsubscribe();\n // 5 ms delay for other token to receive focus, check if _showAllTokens was called again\n this._tokenElementFocusedSub = this._tokenElementFocused\n .pipe(\n debounceTime(5),\n filter((isFocused) => isFocused && !this._inputElementFocused)\n )\n .subscribe(() => {\n this._hideTokens();\n });\n }\n\n /** @hidden */\n private _handleArrowRight(fromIndex: number): void {\n if (fromIndex === this.tokenList.length - this.moreTokensRight.length - 1 && this.moreTokensRight.length) {\n const poppedToken = this.moreTokensRight.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the left that no longer fit\n this._collapseTokens('left');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _collapseTokens(side?: string): void {\n if (this._forceAllTokensToDisplay) {\n return;\n }\n if (!this._compact && !this.compactCollapse) {\n this._getHiddenCozyTokenCount();\n return;\n }\n this._cdRef.detectChanges();\n this._viewContainer.forEach((viewContainer) => viewContainer.clear());\n\n const availableWidth = this._getTokensAreaWidthWithoutTokens();\n\n if (this.tokenList.length === 1) {\n const tokenWidth = this.tokenList.get(0)?.elementRef.nativeElement.getBoundingClientRect().width;\n this._tokensContainerWidth = availableWidth < tokenWidth ? `calc(100% - ${availableWidth}px)` : 'auto';\n return;\n } else {\n this._tokensContainerWidth = 'auto';\n }\n\n this._checkMoreElementVisibility();\n\n this.tokenList.forEach((token) => token._viewContainer.createEmbeddedView(token._content));\n\n let elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n let combinedTokenWidth = this.getCombinedTokenWidth(); // the combined width of all tokens, the \"____ more\" text, and the input\n let i = 0;\n /*\n When resizing, we want to collapse the tokens on the left first. However, when the user is navigating through\n a group of overflowing tokens using the arrow left key, we may need to hide tokens on the right. So if this\n function has been called with the param 'right' it will collapse tokens from the right side of the list rather\n than the (default) left side.\n */\n if (side === 'right') {\n i = this.tokenList.length - 1;\n }\n while (combinedTokenWidth > elementWidth && (side === 'right' ? i >= 0 : i < this.tokenList.length)) {\n // loop through the tokens and hide them until the combinedTokenWidth fits in the elementWidth\n const token = this.tokenList.get(i);\n const moreTokens = side === 'right' ? this.moreTokensRight : this.moreTokensLeft;\n\n if (token) {\n if (moreTokens.indexOf(token) === -1) {\n moreTokens.push(token);\n }\n token.elementRef.nativeElement.style.display = 'none';\n }\n // get the new elementWidth and combinedTokenWidth as these will have changed after setting a token display to 'none'\n elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._checkMoreElementVisibility();\n combinedTokenWidth = this.getCombinedTokenWidth();\n side === 'right' ? i-- : i++;\n }\n\n this._cdRef.detectChanges();\n if (this._showOverflowPopover) {\n this._hiddenTokens.forEach((hiddenToken, index) => {\n hiddenToken._viewContainer.clear();\n this._viewContainer.get(index)?.createEmbeddedView(hiddenToken._content);\n });\n }\n }\n\n /** @hidden */\n private _resetTokens(): void {\n this.moreTokensLeft = [];\n this.moreTokensRight = [];\n if (this._compact || this.compactCollapse || this._forceAllTokensToDisplay) {\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n });\n this._cdRef.markForCheck();\n this._collapseTokens();\n } else {\n this._getHiddenCozyTokenCount();\n }\n this.handleTokenClickSubscriptions();\n this.previousTokenCount = this.tokenList.length;\n this.tokenList.forEach((token) => token._setTotalCount(this.tokenList.length));\n this._cdRef.markForCheck();\n }\n\n /** @hidden */\n private _getHiddenCozyTokenCount(): void {\n const elementLeft = this.elementRef.nativeElement.getBoundingClientRect().left;\n this.hiddenCozyTokenCount = 0;\n this.tokenList.forEach((token) => {\n if (\n token.tokenWrapperElement &&\n token.tokenWrapperElement.nativeElement.getBoundingClientRect().right < elementLeft\n ) {\n this.hiddenCozyTokenCount += 1;\n }\n });\n\n this._checkMoreElementVisibility();\n }\n\n /** @hidden */\n private _handleCozyTokenCount(): void {\n // because justify-content breaks scrollbar, it cannot be used on cozy screens, so use JS to scroll to the end\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n if (this.hiddenCozyTokenCount > 0) {\n // need to do this again in case \"____ more\" text was added\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n }\n }\n\n /** @hidden */\n private _makeElementVisible(elementRef: ElementRef): void {\n elementRef.nativeElement.style.display = 'inline-block';\n elementRef.nativeElement.style.visibility = 'visible';\n }\n\n /** @hidden */\n private _unsubscribeClicks(): void {\n if (this.tokenListClickSubscriptions && this.tokenListClickSubscriptions.length) {\n this.tokenListClickSubscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n }\n }\n\n /** @hidden */\n private _inputKeydownEvent(): void {\n this._eventListeners.push(\n this._renderer.listen(this.input.nativeElement, 'keydown', (event: KeyboardEvent) => {\n this.handleKeyDown(event, this.tokenList.length);\n })\n );\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and no key is being held down.*/\n private _basicSelected(token, index): void {\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n token.selected = true;\n this._ctrlPrevious = false;\n }\n\n /** @hidden Restart first and last elements for shift selection.*/\n private resetFirstAndLastElement(): void {\n const reset = !this.tokenList.some((token) => token.selected);\n if (reset) {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n }\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the shift key is being held down.*/\n private _shiftSelected(index): void {\n if (!this._firstElementInSelection && !this._lastElementInSelection) {\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n this._directionShiftIsRight = null;\n } else {\n if (this._firstElementInSelection && index < this._firstElementInSelection) {\n if (this._directionShiftIsRight) {\n this._lastElementInSelection = this._firstElementInSelection;\n }\n this._directionShiftIsRight = false;\n this._firstElementInSelection = index;\n } else if (this._lastElementInSelection && index > this._lastElementInSelection) {\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = this._lastElementInSelection;\n }\n this._directionShiftIsRight = true;\n this._lastElementInSelection = index;\n }\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = index;\n } else if (this._directionShiftIsRight) {\n this._lastElementInSelection = index;\n }\n }\n\n this.tokenList.forEach((token, indexOfToken) => {\n token.selected =\n this._firstElementInSelection != null &&\n this._lastElementInSelection != null &&\n indexOfToken >= this._firstElementInSelection &&\n indexOfToken <= this._lastElementInSelection;\n });\n this._ctrlPrevious = false;\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the control or meta key is being held down.*/\n private _ctrlSelected(token, index): void {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n const selected = token.selected;\n token.selected = true;\n if (selected) {\n token.selected = false;\n this.tokenList.forEach((element, indexOfToken) => {\n if (!this._firstElementInSelection) {\n if (element.selected) {\n this._firstElementInSelection = indexOfToken;\n }\n } else {\n this._lastElementInSelection = indexOfToken;\n }\n });\n if (index === this._lastElementInSelection) {\n this._lastElementInSelection = this._lastElementInSelection! - 1;\n }\n if (index === this._firstElementInSelection) {\n this._firstElementInSelection = this._firstElementInSelection! - 1;\n }\n }\n this._ctrlPrevious = true;\n }\n\n /** Get selected and focused tokens */\n private _getActiveTokens(): TokenComponent[] {\n return this.tokenList.filter((item) => item.selected || this._isTokenFocused(item));\n }\n\n /** @hidden */\n private _getFocusedTokenIndex(): number {\n return this.tokenList.toArray().findIndex((token) => this._isTokenFocused(token));\n }\n\n /** @hidden */\n private _isTokenFocused(token: TokenComponent): boolean {\n return token.tokenWrapperElement.nativeElement === this._document.activeElement;\n }\n\n /** @hidden */\n private _isInputFocused(): boolean {\n return this._document.activeElement === this.input.nativeElement;\n }\n\n /** @hidden */\n private _tokensSelected(): boolean {\n return this.tokenList.some((t) => t.selected);\n }\n\n /** @hidden */\n private _getInputValue(): string {\n return this.input.nativeElement.value;\n }\n\n /** @hidden */\n private _focusInput(): void {\n this.input.nativeElement.focus();\n }\n\n /** @hidden */\n private _isControlKey(keyboardEvent: KeyboardEvent | MouseEvent): boolean {\n return keyboardEvent.ctrlKey || keyboardEvent.metaKey;\n }\n\n /** @hidden */\n private _listenElementEvents(): void {\n merge(\n fromEvent<Event>(this.elementRef.nativeElement, 'focus', { capture: true }).pipe(\n filter((event) => (event['target'] as any)?.tagName === 'INPUT' && this.tokenizerFocusable),\n map(() => true)\n ),\n fromEvent<Event>(this.elementRef.nativeElement, 'blur', { capture: true }).pipe(map(() => false))\n )\n .pipe(\n // debounceTime is needed in order to filter subsequent focus-blur events, that happen simultaneously\n debounceTime(10),\n takeUntil(this._onDestroy$)\n )\n .subscribe((focused) => {\n this._tokenizerHasFocus = focused;\n this._cdRef.markForCheck();\n });\n }\n\n /** @hidden Listen window resize and distribute cards on column change */\n private _listenOnResize(): void {\n this.onResize();\n resizeObservable(this.elementRef.nativeElement)\n .pipe(debounceTime(30), takeUntil(this._onDestroy$))\n .subscribe(() => this.onResize());\n }\n\n /** @hidden */\n private _checkMoreElementVisibility(): void {\n const showMoreElement =\n (this.moreTokensLeft.length > 0 || this.moreTokensRight.length > 0 || this.hiddenCozyTokenCount > 0) &&\n !this.open &&\n !this._tokenizerHasFocus;\n\n if (showMoreElement === this._showMoreElement) {\n return;\n }\n\n this._showMoreElement = showMoreElement;\n\n this._cdRef.detectChanges();\n }\n}\n","<div\n class=\"fd-tokenizer fd-tokenizer--scrollable\"\n [class.is-focus]=\"_tokenizerHasFocus\"\n [attr.aria-label]=\"'coreTokenizer.tokenizerLabel' | fdTranslate\"\n>\n <div class=\"fd-tokenizer__inner\" #tokenizerInner>\n <div role=\"listbox\" [style.width]=\"_tokensContainerWidth\">\n <ng-content select=\"fd-token\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_showOverflowPopover && ((_compact$ | async) || compactCollapse); else moreElement\">\n <ng-container *ngTemplateOutlet=\"tokensOverflow\"></ng-container>\n </ng-container>\n\n <ng-content select=\"[fd-form-control]\"></ng-content>\n </div>\n <span fd-input-group-addon *ngIf=\"glyph\" #inputGroupAddOn [button]=\"true\" placement=\"after\">\n <button fd-button class=\"fd-tokenizer-addon\" fdType=\"transparent\" [glyph]=\"glyph\" type=\"button\"></button>\n </span>\n</div>\n\n<ng-template #tokensOverflow>\n <fd-popover placement=\"bottom-start\" title=\"\" [noArrow]=\"false\" [focusTrapped]=\"true\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"moreElement\"></ng-container>\n </fd-popover-control>\n\n <fd-popover-body>\n <ul fd-list class=\"fd-tokenizer__overflow-list\">\n <li fd-list-item class=\"fd-tokenizer__overflow-list-item\" *ngFor=\"let token of _hiddenTokens\">\n <ng-container #viewContainer></ng-container>\n\n <span\n *ngIf=\"!token.readOnly\"\n class=\"fd-token__close\"\n role=\"button\"\n [attr.aria-label]=\"token.deleteButtonLabel || ('coreToken.deleteButtonLabel' | fdTranslate)\"\n (click)=\"token.closeClickHandler($event)\"\n ></span>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #moreElement>\n <span\n (click)=\"moreClicked()\"\n *ngIf=\"_showMoreElement && _hiddenTokens.length > 0 && !_tokenizerHasFocus\"\n #moreElementSpan\n class=\"fd-tokenizer-more\"\n role=\"button\"\n tabindex=\"-1\"\n >\n <ng-container *ngIf=\"(_compact$ | async) || compactCollapse\">\n {{ 'coreTokenizer.moreLabel' | fdTranslate : { count: moreTokensLeft.length + moreTokensRight.length } }}\n </ng-container>\n <ng-container *ngIf=\"(_compact$ | async) === false && !compactCollapse\">\n {{ 'coreTokenizer.moreLabel' | fdTranslate : { count: hiddenCozyTokenCount } }}\n </ng-container>\n </span>\n</ng-template>\n","import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core';\nimport { applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { CssClassBuilder } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tokenizer-input]'\n})\nexport class TokenizerInputDirective implements OnInit, OnChanges, CssClassBuilder {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden\n * 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 return ['fd-tokenizer__input', this.class];\n }\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n","import { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\nimport { Directive, forwardRef } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-tokenizer[compact], fd-token[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedTokenizerContentDensityDirective)\n }\n ]\n})\nexport class DeprecatedTokenizerContentDensityDirective extends DeprecatedCompactDirective {\n /** @hidden */\n constructor() {\n super('fd-tokenizer[compact], fd-token');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TokenComponent } from './token.component';\nimport { TokenizerComponent } from './tokenizer.component';\nimport { TokenizerInputDirective } from './token-input.directive';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { DeprecatedTokenizerContentDensityDirective } from './deprecated-tokenizer-content-density.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n declarations: [\n TokenComponent,\n TokenizerComponent,\n TokenizerInputDirective,\n DeprecatedTokenizerContentDensityDirective\n ],\n imports: [\n CommonModule,\n InputGroupModule,\n ButtonModule,\n PopoverModule,\n ListModule,\n ContentDensityModule,\n I18nModule\n ],\n exports: [\n TokenComponent,\n TokenizerComponent,\n TokenizerInputDirective,\n DeprecatedTokenizerContentDensityDirective,\n ContentDensityModule\n ]\n})\nexport class TokenModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i8"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-token.mjs","sources":["../../../../libs/core/src/lib/token/token.component.ts","../../../../libs/core/src/lib/token/token.component.html","../../../../libs/core/src/lib/token/tokenizer.component.ts","../../../../libs/core/src/lib/token/tokenizer.component.html","../../../../libs/core/src/lib/token/token-input.directive.ts","../../../../libs/core/src/lib/token/deprecated-tokenizer-content-density.directive.ts","../../../../libs/core/src/lib/token/token.module.ts","../../../../libs/core/src/lib/token/fundamental-ngx-core-token.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { DestroyedService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * A token is used to represent contextualizing information.\n * They can be useful to show applied filters, selected values for form fields or object metadata.\n */\n@Component({\n selector: 'fd-token',\n templateUrl: './token.component.html',\n styleUrls: ['./token.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders(), DestroyedService],\n host: {\n '[style.max-width.%]': '100'\n }\n})\nexport class TokenComponent implements AfterViewInit, OnDestroy {\n /** Whether the token is disabled. */\n @Input()\n disabled = false;\n\n /** @hidden */\n @ViewChild('tokenWrapperElement')\n tokenWrapperElement: ElementRef;\n\n /** @hidden */\n @ViewChild('content')\n readonly _content: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: ViewContainerRef;\n\n /** @hidden */\n private _selected = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Whether the token is selected. */\n @Input()\n set selected(val: boolean) {\n if (this._selected !== val) {\n this._cdRef.markForCheck();\n }\n this._selected = val;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n /** Whether the token is read-only. */\n @Input()\n readOnly = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * label for close icon\n */\n @Input()\n deleteButtonLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * role description for token\n */\n @Input()\n ariaRoleDescription: string;\n\n /** Emitted when the *x* icon is clicked. Specifically, any pseudo-element. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onCloseClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /** Emitted when token should be removed */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onRemove: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emitted when a token is clicked. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenClick = new EventEmitter<MouseEvent>();\n\n /** Emitted when a there's a keydown registered on the token. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenKeydown = new EventEmitter<KeyboardEvent>();\n\n /**\n * Emitted when token element received or lost focus.\n */\n @Output()\n elementFocused = new EventEmitter<boolean>();\n\n /** @hidden */\n _totalCount: number;\n\n /** @hidden */\n _itemPosition: number;\n\n /** @hidden */\n private readonly _destroy$ = inject(DestroyedService);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewContainer.createEmbeddedView(this._content);\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'focus')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this.elementFocused.emit(true);\n });\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this.elementFocused.emit(false);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n closeClickHandler(event?): void {\n if (event) {\n event.stopPropagation();\n if (!this.disabled) {\n this.onCloseClick.emit(event);\n }\n }\n }\n\n /** @hidden */\n tokenClickHandler(event): void {\n this.onTokenClick.emit(event);\n }\n\n /** @hidden */\n tokenKeydownHandler(event): void {\n this.onTokenKeydown.emit(event);\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.onTokenClick.emit(event);\n }\n }\n\n /** @hidden */\n _setTotalCount(count: number, itemPosition: number): void {\n this._totalCount = count;\n this._itemPosition = itemPosition;\n this._cdRef.markForCheck();\n }\n}\n","<span\n #tokenWrapperElement\n class=\"fd-token\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-roledescription]=\"ariaRoleDescription\"\n (click)=\"tokenClickHandler($event)\"\n (keydown)=\"tokenKeydownHandler($event)\"\n [attr.aria-setsize]=\"_totalCount\"\n [attr.aria-posinset]=\"_itemPosition\"\n [class.fd-token__disabled]=\"disabled\"\n [class.fd-token--selected]=\"selected\"\n [class.fd-token--readonly]=\"readOnly\"\n [attr.aria-selected]=\"selected\"\n>\n <span class=\"fd-token__text no-text-select\">\n <ng-container #viewContainer></ng-container>\n </span>\n <span\n (click)=\"closeClickHandler($event)\"\n role=\"button\"\n [attr.aria-label]=\"deleteButtonLabel || ('coreToken.deleteButtonLabel' | fdTranslate)\"\n *ngIf=\"!readOnly\"\n class=\"fd-token__close\"\n ></span>\n</span>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n A,\n BACKSPACE,\n DELETE,\n DOWN_ARROW,\n ENTER,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n forwardRef\n} from '@angular/core';\nimport {\n CssClassBuilder,\n KeyUtil,\n Nullable,\n RtlService,\n applyCssClass,\n resizeObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FormControlComponent } from '@fundamental-ngx/core/form';\nimport { BehaviorSubject, Observable, Subject, Subscription, fromEvent, merge, startWith } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\nimport { TokenComponent } from './token.component';\n\n@Component({\n selector: 'fd-tokenizer',\n templateUrl: './tokenizer.component.html',\n styleUrls: ['./tokenizer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()]\n})\nexport class TokenizerComponent implements AfterViewInit, OnDestroy, CssClassBuilder, OnInit, OnChanges {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** Disables possibility to remove tokens by keyboard */\n @Input()\n disableKeyboardDeletion = false;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TokenComponent))\n tokenList: QueryList<TokenComponent>;\n\n /** @hidden */\n @ContentChild(forwardRef(() => FormControlComponent), { read: ElementRef })\n input: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('tokenizerInner')\n tokenizerInnerEl: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @ViewChild('moreElementSpan')\n moreElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('inputGroupAddOn') set content(content: ElementRef<HTMLElement>) {\n this.inputGroupAddonEl = content;\n }\n\n /** @hidden */\n @ViewChildren('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: QueryList<ViewContainerRef>;\n\n /** @hidden */\n get _hiddenTokens(): TokenComponent[] {\n return this.tokenList.filter((token) => token.elementRef.nativeElement.style.display === 'none');\n }\n\n /**\n * @hidden\n * Observable state of the compact mode.\n */\n get _compact$(): Observable<boolean> {\n return this._contentDensityObserver.isCompact$;\n }\n\n /**\n * @hidden\n * Component is in compact mode, determined by the consumer\n */\n get _compact(): boolean {\n return this._contentDensityObserver.isCompact;\n }\n\n /** @hidden */\n inputGroupAddonEl: ElementRef;\n\n /** Whether to use cozy visuals but compact collapsing behavior. */\n @Input()\n compactCollapse = false;\n\n /** Whether tokenizer should have fake focus indicator, when input is focused inside*/\n @Input()\n tokenizerFocusable = true;\n\n /** The value for the tokenizer input */\n @Input()\n inputValue: string;\n\n /** Icon of the button on the right of the input field. */\n @Input()\n glyph: string;\n\n /** Word to use for when there are extra tokens. */\n @Input()\n moreTerm = 'more';\n\n /** @hidden */\n @Input()\n open: boolean;\n\n /** Event emitted when the search term changes. Use *$event* to access the new term. */\n @Output()\n readonly moreClickedEvent: EventEmitter<any> = new EventEmitter<any>();\n\n /** @hidden */\n previousElementWidth: number;\n\n /** @hidden */\n moreTokensLeft: Array<TokenComponent> = [];\n\n /** @hidden */\n moreTokensRight: Array<TokenComponent> = [];\n\n /** @hidden */\n previousTokenCount: number;\n\n /** @hidden */\n tokenListChangesSubscription: Subscription;\n\n /** @hidden */\n tokenListClickSubscriptions: Subscription[] = [];\n\n /** @hidden */\n hiddenCozyTokenCount = 0;\n\n /** @hidden Used to add focus to tokenizer element */\n _tokenizerHasFocus = false;\n\n /** @hidden */\n _showOverflowPopover = true;\n\n /** @hidden */\n _showMoreElement = false;\n\n /** @hidden */\n _tokensContainerWidth = 'auto';\n\n /** @hidden\n * Variable which will keep the index of the first token pressed in the tokenizer\n */\n private _firstElementInSelection: number | null = null;\n\n /** @hidden\n * Variable which will keep the index of the last token pressed in the tokenizer\n */\n private _lastElementInSelection: number | null = null;\n\n /** @hidden\n * Flag which will say if the last keyboard and click operation they used was using control\n */\n private _ctrlPrevious: boolean;\n\n /** @hidden\n * Flag which will say if they held shift and clicked highlighting elements before or\n */\n private _directionShiftIsRight: boolean | null = null;\n\n /** An RxJS Subject that will kill the data stream upon destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _eventListeners: (() => void)[] = [];\n\n /** @hidden */\n private _forceAllTokensToDisplay = false;\n\n /** @hidden */\n private _tokenElementFocused = new BehaviorSubject(false);\n\n /** @hidden */\n private _inputElementFocused = false;\n\n /** @hidden */\n private _tokenElementFocusedSub: Nullable<Subscription>;\n\n /** @hidden */\n constructor(\n readonly _contentDensityObserver: ContentDensityObserver,\n public readonly elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() private _rtlService: RtlService,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private readonly _document: Document\n ) {\n this._eventListeners.push(\n this._renderer.listen('window', 'click', (e: Event) => {\n if (this.elementRef.nativeElement.contains(e.target) === false) {\n this.tokenList.forEach((token) => {\n token.selected = false;\n });\n }\n })\n );\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.input?.nativeElement) {\n this._inputKeydownEvent();\n }\n\n // watch for changes to the tokenList and attempt to expand/collapse tokens as needed\n this.tokenList.changes.pipe(startWith(null)).subscribe(() => {\n this.tokenListChangesSubscription?.unsubscribe();\n this.tokenListChangesSubscription = new Subscription();\n this._resetTokens();\n this.tokenList.forEach((token) => {\n this.tokenListChangesSubscription.add(\n token.onCloseClick.subscribe(() => {\n this._resetTokens();\n })\n );\n this.tokenListChangesSubscription.add(\n token.elementFocused.subscribe((isFocused) => {\n this._tokenElementFocused.next(isFocused);\n })\n );\n });\n });\n\n if (!this._compact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n this._listenElementEvents();\n this.previousElementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._listenOnResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.tokenListChangesSubscription?.unsubscribe();\n this._tokenElementFocusedSub?.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._eventListeners.forEach((e) => e());\n this._unsubscribeClicks();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden\n * 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 return [this.class];\n }\n\n /** @hidden */\n handleTokenClickSubscriptions(): void {\n this._unsubscribeClicks();\n this.tokenList.forEach((token, index) => {\n if (token.tokenWrapperElement) {\n token.tokenWrapperElement.nativeElement.tabIndex = -1;\n }\n this.tokenListClickSubscriptions.push(\n token.onTokenClick.subscribe((event) => {\n event.stopPropagation();\n this.focusTokenElement(index);\n if (this._isControlKey(event)) {\n this._ctrlSelected(token, index);\n } else if (!event.shiftKey || this._ctrlPrevious) {\n this._basicSelected(token, index);\n } else if (event.shiftKey) {\n this.resetFirstAndLastElement();\n this._shiftSelected(index);\n }\n })\n );\n this.tokenListClickSubscriptions.push(\n token.onTokenKeydown.subscribe((event) => {\n this.handleKeyDown(event, index);\n })\n );\n });\n }\n\n /** @hidden */\n focusTokenElement(newIndex: number): HTMLElement | undefined {\n let elementToFocus: HTMLElement | undefined;\n const tokenListArray: TokenComponent[] = this.tokenList.toArray();\n if (tokenListArray[newIndex]) {\n elementToFocus = tokenListArray[newIndex].tokenWrapperElement.nativeElement;\n // element needs tabindex in order to be focused\n elementToFocus!.focus();\n }\n\n return elementToFocus;\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDown(keyboardEvent: KeyboardEvent): void {\n if (\n KeyUtil.isKeyCode(keyboardEvent, [DELETE, BACKSPACE]) &&\n (!this._isInputFocused() || this._tokensSelected()) &&\n !this.disableKeyboardDeletion\n ) {\n const selectedElements = this._getActiveTokens();\n const focusedTokenIndex = this._getFocusedTokenIndex();\n selectedElements.forEach((element) => element.onCloseClick.emit());\n if (selectedElements.length > 0) {\n if (KeyUtil.isKeyCode(keyboardEvent, DELETE)) {\n this._focusInput();\n } else {\n this.focusTokenElement(focusedTokenIndex - 1);\n }\n }\n }\n\n if (\n KeyUtil.isKeyCode(keyboardEvent, BACKSPACE) &&\n this._isInputFocused() &&\n !this._getInputValue() &&\n !this.disableKeyboardDeletion\n ) {\n this.focusTokenElement(this.tokenList.length - 1);\n }\n }\n\n /** @hidden */\n onResize(): void {\n if (this.elementRef) {\n const elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._resetTokens();\n this.previousElementWidth = elementWidth;\n if (!this._compact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n }\n }\n\n /** @hidden */\n handleKeyDown(event: KeyboardEvent, fromIndex: number): void {\n let newIndex: number | undefined;\n const rtl = this._rtlService && this._rtlService.rtl ? this._rtlService.rtl.getValue() : false;\n if (KeyUtil.isKeyCode(event, SPACE) && !this._isInputFocused()) {\n const token = this.tokenList.find((_, index) => index === fromIndex);\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n token && (token.selected = !token.selected);\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this._focusInput();\n } else if (this._goBackRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowLeft(fromIndex);\n newIndex = fromIndex - 1;\n } else if (this._goForwardRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowRight(fromIndex);\n newIndex = fromIndex + 1;\n } else if (KeyUtil.isKeyCode(event, A) && !this._getInputValue() && this._isControlKey(event)) {\n event.preventDefault();\n this.tokenList.forEach((token) => (token.selected = true));\n }\n if (newIndex === this.tokenList.length && this._goForwardRequested(event, rtl)) {\n this._focusInput();\n } else if (newIndex! > this.tokenList.length - this.moreTokensRight.length && this._isInputFocused()) {\n this.focusTokenElement(newIndex! - this.moreTokensRight.length);\n } else if (newIndex || newIndex === 0) {\n this.focusTokenElement(newIndex);\n }\n }\n\n /** @hidden */\n getCombinedTokenWidth(): number {\n let totalTokenWidth = this._getTokensAreaWidthWithoutTokens();\n // get the width of each token\n this.tokenList.forEach((token) => {\n totalTokenWidth = totalTokenWidth + token.elementRef.nativeElement.getBoundingClientRect().width;\n });\n\n return totalTokenWidth;\n }\n\n /**\n * Check whether user intends to go back to the previous token\n **/\n private _goBackRequested($event: KeyboardEvent, rtl: boolean): boolean {\n if (!rtl) {\n return KeyUtil.isKeyCode($event, LEFT_ARROW) || KeyUtil.isKeyCode($event, UP_ARROW);\n }\n return KeyUtil.isKeyCode($event, RIGHT_ARROW) || KeyUtil.isKeyCode($event, DOWN_ARROW);\n }\n\n /**\n * Check whether user intends to go forward to the next token\n **/\n private _goForwardRequested($event: KeyboardEvent, rtl: boolean): boolean {\n if (!rtl) {\n return KeyUtil.isKeyCode($event, RIGHT_ARROW) || KeyUtil.isKeyCode($event, DOWN_ARROW);\n }\n return KeyUtil.isKeyCode($event, LEFT_ARROW) || KeyUtil.isKeyCode($event, UP_ARROW);\n }\n\n /** @hidden */\n private _getTokensAreaWidthWithoutTokens(): number {\n let totalTokenWidth = 0;\n // add input width\n if (this.input?.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.input.nativeElement.getBoundingClientRect().width;\n }\n // add the width of the \"____ more\" element\n if (this.moreTokensLeft.length > 0 && this.moreElement && this.moreElement.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.moreElement.nativeElement.getBoundingClientRect().width;\n }\n // add the input group addon\n if (this.inputGroupAddonEl && this.inputGroupAddonEl.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.inputGroupAddonEl.nativeElement.getBoundingClientRect().width;\n }\n\n return totalTokenWidth;\n }\n\n /** @hidden */\n moreClicked(): void {\n this.moreClickedEvent.emit();\n }\n\n /** Removes all selected tokens */\n removeSelectedTokens(): void {\n const selectedElements = this._getActiveTokens();\n selectedElements.forEach((element) => element.onRemove.emit());\n }\n\n /** @hidden */\n private _handleArrowLeft(fromIndex: number): void {\n // if the leftmost visible token is selected, and there are moreTokensLeft, need to display a moreTokenLeft\n if (fromIndex === this.moreTokensLeft.length) {\n const poppedToken = this.moreTokensLeft.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the right that no longer fit\n this._collapseTokens('right');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n _showAllTokens(): void {\n this._forceAllTokensToDisplay = true;\n this._inputElementFocused = true;\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n token._viewContainer.createEmbeddedView(token._content);\n });\n this._tokensContainerWidth = 'auto';\n this._showMoreElement = false;\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n _hideTokens(): void {\n setTimeout(() => {\n this._inputElementFocused = false;\n const tokenFocused = this._getFocusedTokenIndex() > -1;\n\n if (tokenFocused) {\n this._waitForFocusToDisappear();\n return;\n }\n this._forceAllTokensToDisplay = false;\n this._resetTokens();\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n });\n }\n\n /** @hidden */\n private _waitForFocusToDisappear(): void {\n this._tokenElementFocusedSub?.unsubscribe();\n // 5 ms delay for other token to receive focus, check if _showAllTokens was called again\n this._tokenElementFocusedSub = this._tokenElementFocused\n .pipe(\n debounceTime(5),\n filter((isFocused) => isFocused && !this._inputElementFocused)\n )\n .subscribe(() => {\n this._hideTokens();\n });\n }\n\n /** @hidden */\n private _handleArrowRight(fromIndex: number): void {\n if (fromIndex === this.tokenList.length - this.moreTokensRight.length - 1 && this.moreTokensRight.length) {\n const poppedToken = this.moreTokensRight.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the left that no longer fit\n this._collapseTokens('left');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _collapseTokens(side?: string): void {\n if (this._forceAllTokensToDisplay) {\n return;\n }\n if (!this._compact && !this.compactCollapse) {\n this._getHiddenCozyTokenCount();\n return;\n }\n this._cdRef.detectChanges();\n this._viewContainer.forEach((viewContainer) => viewContainer.clear());\n\n const availableWidth = this._getTokensAreaWidthWithoutTokens();\n\n if (this.tokenList.length === 1) {\n const tokenWidth = this.tokenList.get(0)?.elementRef.nativeElement.getBoundingClientRect().width;\n this._tokensContainerWidth = availableWidth < tokenWidth ? `calc(100% - ${availableWidth}px)` : 'auto';\n return;\n } else {\n this._tokensContainerWidth = 'auto';\n }\n\n this._checkMoreElementVisibility();\n\n this.tokenList.forEach((token) => token._viewContainer.createEmbeddedView(token._content));\n\n let elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n let combinedTokenWidth = this.getCombinedTokenWidth(); // the combined width of all tokens, the \"____ more\" text, and the input\n let i = 0;\n /*\n When resizing, we want to collapse the tokens on the left first. However, when the user is navigating through\n a group of overflowing tokens using the arrow left key, we may need to hide tokens on the right. So if this\n function has been called with the param 'right' it will collapse tokens from the right side of the list rather\n than the (default) left side.\n */\n if (side === 'right') {\n i = this.tokenList.length - 1;\n }\n while (combinedTokenWidth > elementWidth && (side === 'right' ? i >= 0 : i < this.tokenList.length)) {\n // loop through the tokens and hide them until the combinedTokenWidth fits in the elementWidth\n const token = this.tokenList.get(i);\n const moreTokens = side === 'right' ? this.moreTokensRight : this.moreTokensLeft;\n\n if (token) {\n if (moreTokens.indexOf(token) === -1) {\n moreTokens.push(token);\n }\n token.elementRef.nativeElement.style.display = 'none';\n }\n // get the new elementWidth and combinedTokenWidth as these will have changed after setting a token display to 'none'\n elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._checkMoreElementVisibility();\n combinedTokenWidth = this.getCombinedTokenWidth();\n side === 'right' ? i-- : i++;\n }\n\n this._cdRef.detectChanges();\n if (this._showOverflowPopover) {\n this._hiddenTokens.forEach((hiddenToken, index) => {\n hiddenToken._viewContainer.clear();\n this._viewContainer.get(index)?.createEmbeddedView(hiddenToken._content);\n });\n }\n }\n\n /** @hidden */\n private _resetTokens(): void {\n this.moreTokensLeft = [];\n this.moreTokensRight = [];\n if (this._compact || this.compactCollapse || this._forceAllTokensToDisplay) {\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n });\n this._cdRef.markForCheck();\n this._collapseTokens();\n } else {\n this._getHiddenCozyTokenCount();\n }\n this.handleTokenClickSubscriptions();\n this.previousTokenCount = this.tokenList.length;\n this.tokenList.forEach((token, index) => token._setTotalCount(this.tokenList.length, index + 1));\n this._cdRef.markForCheck();\n }\n\n /** @hidden */\n private _getHiddenCozyTokenCount(): void {\n const elementLeft = this.elementRef.nativeElement.getBoundingClientRect().left;\n this.hiddenCozyTokenCount = 0;\n this.tokenList.forEach((token) => {\n if (\n token.tokenWrapperElement &&\n token.tokenWrapperElement.nativeElement.getBoundingClientRect().right < elementLeft\n ) {\n this.hiddenCozyTokenCount += 1;\n }\n });\n\n this._checkMoreElementVisibility();\n }\n\n /** @hidden */\n private _handleCozyTokenCount(): void {\n // because justify-content breaks scrollbar, it cannot be used on cozy screens, so use JS to scroll to the end\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n if (this.hiddenCozyTokenCount > 0) {\n // need to do this again in case \"____ more\" text was added\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n }\n }\n\n /** @hidden */\n private _makeElementVisible(elementRef: ElementRef): void {\n elementRef.nativeElement.style.display = 'inline-block';\n elementRef.nativeElement.style.visibility = 'visible';\n }\n\n /** @hidden */\n private _unsubscribeClicks(): void {\n if (this.tokenListClickSubscriptions && this.tokenListClickSubscriptions.length) {\n this.tokenListClickSubscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n }\n }\n\n /** @hidden */\n private _inputKeydownEvent(): void {\n this._eventListeners.push(\n this._renderer.listen(this.input.nativeElement, 'keydown', (event: KeyboardEvent) => {\n this.handleKeyDown(event, this.tokenList.length);\n })\n );\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and no key is being held down.*/\n private _basicSelected(token, index): void {\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n token.selected = true;\n this._ctrlPrevious = false;\n }\n\n /** @hidden Restart first and last elements for shift selection.*/\n private resetFirstAndLastElement(): void {\n const reset = !this.tokenList.some((token) => token.selected);\n if (reset) {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n }\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the shift key is being held down.*/\n private _shiftSelected(index): void {\n if (!this._firstElementInSelection && !this._lastElementInSelection) {\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n this._directionShiftIsRight = null;\n } else {\n if (this._firstElementInSelection && index < this._firstElementInSelection) {\n if (this._directionShiftIsRight) {\n this._lastElementInSelection = this._firstElementInSelection;\n }\n this._directionShiftIsRight = false;\n this._firstElementInSelection = index;\n } else if (this._lastElementInSelection && index > this._lastElementInSelection) {\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = this._lastElementInSelection;\n }\n this._directionShiftIsRight = true;\n this._lastElementInSelection = index;\n }\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = index;\n } else if (this._directionShiftIsRight) {\n this._lastElementInSelection = index;\n }\n }\n\n this.tokenList.forEach((token, indexOfToken) => {\n token.selected =\n this._firstElementInSelection != null &&\n this._lastElementInSelection != null &&\n indexOfToken >= this._firstElementInSelection &&\n indexOfToken <= this._lastElementInSelection;\n });\n this._ctrlPrevious = false;\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the control or meta key is being held down.*/\n private _ctrlSelected(token, index): void {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n const selected = token.selected;\n token.selected = true;\n if (selected) {\n token.selected = false;\n this.tokenList.forEach((element, indexOfToken) => {\n if (!this._firstElementInSelection) {\n if (element.selected) {\n this._firstElementInSelection = indexOfToken;\n }\n } else {\n this._lastElementInSelection = indexOfToken;\n }\n });\n if (index === this._lastElementInSelection) {\n this._lastElementInSelection = this._lastElementInSelection! - 1;\n }\n if (index === this._firstElementInSelection) {\n this._firstElementInSelection = this._firstElementInSelection! - 1;\n }\n }\n this._ctrlPrevious = true;\n }\n\n /** Get selected and focused tokens */\n private _getActiveTokens(): TokenComponent[] {\n return this.tokenList.filter((item) => item.selected || this._isTokenFocused(item));\n }\n\n /** @hidden */\n private _getFocusedTokenIndex(): number {\n return this.tokenList.toArray().findIndex((token) => this._isTokenFocused(token));\n }\n\n /** @hidden */\n private _isTokenFocused(token: TokenComponent): boolean {\n return token.tokenWrapperElement.nativeElement === this._document.activeElement;\n }\n\n /** @hidden */\n private _isInputFocused(): boolean {\n return this._document.activeElement === this.input.nativeElement;\n }\n\n /** @hidden */\n private _tokensSelected(): boolean {\n return this.tokenList.some((t) => t.selected);\n }\n\n /** @hidden */\n private _getInputValue(): string {\n return this.input.nativeElement.value;\n }\n\n /** @hidden */\n private _focusInput(): void {\n this.input.nativeElement.focus();\n }\n\n /** @hidden */\n private _isControlKey(keyboardEvent: KeyboardEvent | MouseEvent): boolean {\n return keyboardEvent.ctrlKey || keyboardEvent.metaKey;\n }\n\n /** @hidden */\n private _listenElementEvents(): void {\n merge(\n fromEvent<Event>(this.elementRef.nativeElement, 'focus', { capture: true }).pipe(\n filter((event) => (event['target'] as any)?.tagName === 'INPUT' && this.tokenizerFocusable),\n map(() => true)\n ),\n fromEvent<Event>(this.elementRef.nativeElement, 'blur', { capture: true }).pipe(map(() => false))\n )\n .pipe(\n // debounceTime is needed in order to filter subsequent focus-blur events, that happen simultaneously\n debounceTime(10),\n takeUntil(this._onDestroy$)\n )\n .subscribe((focused) => {\n this._tokenizerHasFocus = focused;\n this._cdRef.markForCheck();\n });\n }\n\n /** @hidden Listen window resize and distribute cards on column change */\n private _listenOnResize(): void {\n this.onResize();\n resizeObservable(this.elementRef.nativeElement)\n .pipe(debounceTime(30), takeUntil(this._onDestroy$))\n .subscribe(() => this.onResize());\n }\n\n /** @hidden */\n private _checkMoreElementVisibility(): void {\n const showMoreElement =\n (this.moreTokensLeft.length > 0 || this.moreTokensRight.length > 0 || this.hiddenCozyTokenCount > 0) &&\n !this.open &&\n !this._tokenizerHasFocus;\n\n if (showMoreElement === this._showMoreElement) {\n return;\n }\n\n this._showMoreElement = showMoreElement;\n\n this._cdRef.detectChanges();\n }\n}\n","<div class=\"fd-tokenizer fd-tokenizer--scrollable\" [class.is-focus]=\"_tokenizerHasFocus\">\n <div class=\"fd-tokenizer__inner\" #tokenizerInner>\n <div\n role=\"listbox\"\n [attr.aria-label]=\"'coreTokenizer.tokenizerLabel' | fdTranslate\"\n [style.width]=\"_tokensContainerWidth\"\n >\n <ng-content select=\"fd-token\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_showOverflowPopover && ((_compact$ | async) || compactCollapse); else moreElement\">\n <ng-container *ngTemplateOutlet=\"tokensOverflow\"></ng-container>\n </ng-container>\n\n <ng-content select=\"[fd-form-control]\"></ng-content>\n </div>\n <span fd-input-group-addon *ngIf=\"glyph\" #inputGroupAddOn [button]=\"true\" placement=\"after\">\n <button fd-button class=\"fd-tokenizer-addon\" fdType=\"transparent\" [glyph]=\"glyph\" type=\"button\"></button>\n </span>\n</div>\n\n<ng-template #tokensOverflow>\n <fd-popover placement=\"bottom-start\" title=\"\" [noArrow]=\"false\" [focusTrapped]=\"true\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"moreElement\"></ng-container>\n </fd-popover-control>\n\n <fd-popover-body>\n <ul fd-list class=\"fd-tokenizer__overflow-list\">\n <li fd-list-item class=\"fd-tokenizer__overflow-list-item\" *ngFor=\"let token of _hiddenTokens\">\n <ng-container #viewContainer></ng-container>\n\n <span\n *ngIf=\"!token.readOnly\"\n class=\"fd-token__close\"\n role=\"button\"\n [attr.aria-label]=\"token.deleteButtonLabel || ('coreToken.deleteButtonLabel' | fdTranslate)\"\n (click)=\"token.closeClickHandler($event)\"\n ></span>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #moreElement>\n <span\n (click)=\"moreClicked()\"\n *ngIf=\"_showMoreElement && _hiddenTokens.length > 0 && !_tokenizerHasFocus\"\n #moreElementSpan\n class=\"fd-tokenizer-more\"\n role=\"button\"\n tabindex=\"-1\"\n >\n <ng-container *ngIf=\"(_compact$ | async) || compactCollapse\">\n {{ 'coreTokenizer.moreLabel' | fdTranslate : { count: moreTokensLeft.length + moreTokensRight.length } }}\n </ng-container>\n <ng-container *ngIf=\"(_compact$ | async) === false && !compactCollapse\">\n {{ 'coreTokenizer.moreLabel' | fdTranslate : { count: hiddenCozyTokenCount } }}\n </ng-container>\n </span>\n</ng-template>\n","import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core';\nimport { applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { CssClassBuilder } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tokenizer-input]'\n})\nexport class TokenizerInputDirective implements OnInit, OnChanges, CssClassBuilder {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden\n * 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 return ['fd-tokenizer__input', this.class];\n }\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n","import { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\nimport { Directive, forwardRef } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-tokenizer[compact], fd-token[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedTokenizerContentDensityDirective)\n }\n ]\n})\nexport class DeprecatedTokenizerContentDensityDirective extends DeprecatedCompactDirective {\n /** @hidden */\n constructor() {\n super('fd-tokenizer[compact], fd-token');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TokenComponent } from './token.component';\nimport { TokenizerComponent } from './tokenizer.component';\nimport { TokenizerInputDirective } from './token-input.directive';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { DeprecatedTokenizerContentDensityDirective } from './deprecated-tokenizer-content-density.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n declarations: [\n TokenComponent,\n TokenizerComponent,\n TokenizerInputDirective,\n DeprecatedTokenizerContentDensityDirective\n ],\n imports: [\n CommonModule,\n InputGroupModule,\n ButtonModule,\n PopoverModule,\n ListModule,\n ContentDensityModule,\n I18nModule\n ],\n exports: [\n TokenComponent,\n TokenizerComponent,\n TokenizerInputDirective,\n DeprecatedTokenizerContentDensityDirective,\n ContentDensityModule\n ]\n})\nexport class TokenModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i8"],"mappings":"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"}
@@ -93,7 +93,7 @@ export declare class FileUploaderComponent implements ControlValueAccessor, OnDe
93
93
  /** @hidden */
94
94
  validateFiles(event: File[]): void;
95
95
  /** @hidden */
96
- setInputValue(selectedFiles: File[]): void;
96
+ setInputValue(selectedFiles: File[], fromClear?: boolean): void;
97
97
  /** @hidden */
98
98
  keyDownHandle(event: KeyboardEvent): void;
99
99
  /**
@@ -66,6 +66,12 @@ export declare class InputGroupComponent implements ControlValueAccessor, AfterV
66
66
  isExpanded: boolean;
67
67
  /** Label applied to button with glyph element. */
68
68
  glyphAriaLabel: Nullable<string>;
69
+ /**
70
+ * Whether the input group addon button should be aria-hidden
71
+ * Useful in cases when the title is already applied on the
72
+ * input group parent component
73
+ **/
74
+ addonButtonAriaHidden: Nullable<boolean>;
69
75
  /** The tooltip for the input group icon. */
70
76
  iconTitle: Nullable<string>;
71
77
  /** @deprecated renamed to "ariaLabelledBy" */
@@ -146,5 +152,5 @@ export declare class InputGroupComponent implements ControlValueAccessor, AfterV
146
152
  /** @hidden */
147
153
  private _focusOut;
148
154
  static ɵfac: i0.ɵɵFactoryDeclaration<InputGroupComponent, never>;
149
- static ɵcmp: i0.ɵɵComponentDeclaration<InputGroupComponent, "fd-input-group", never, { "inputTemplate": "inputTemplate"; "placement": "placement"; "required": "required"; "inline": "inline"; "placeholder": "placeholder"; "addOnText": "addOnText"; "buttonFocusable": "buttonFocusable"; "type": "type"; "glyph": "glyph"; "button": "button"; "disabled": "disabled"; "readonly": "readonly"; "state": "state"; "isControl": "isControl"; "showFocus": "showFocus"; "isExpanded": "isExpanded"; "glyphAriaLabel": "glyphAriaLabel"; "iconTitle": "iconTitle"; "ariaLabelledby": "ariaLabelledby"; "ariaLabelledBy": "ariaLabelledBy"; }, { "addOnButtonClicked": "addOnButtonClicked"; "search": "search"; }, ["inputElement", "addOnElement"], ["*"], false, never>;
155
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputGroupComponent, "fd-input-group", never, { "inputTemplate": "inputTemplate"; "placement": "placement"; "required": "required"; "inline": "inline"; "placeholder": "placeholder"; "addOnText": "addOnText"; "buttonFocusable": "buttonFocusable"; "type": "type"; "glyph": "glyph"; "button": "button"; "disabled": "disabled"; "readonly": "readonly"; "state": "state"; "isControl": "isControl"; "showFocus": "showFocus"; "isExpanded": "isExpanded"; "glyphAriaLabel": "glyphAriaLabel"; "addonButtonAriaHidden": "addonButtonAriaHidden"; "iconTitle": "iconTitle"; "ariaLabelledby": "ariaLabelledby"; "ariaLabelledBy": "ariaLabelledBy"; }, { "addOnButtonClicked": "addOnButtonClicked"; "search": "search"; }, ["inputElement", "addOnElement"], ["*"], false, never>;
150
156
  }
@@ -2,11 +2,16 @@ import { ElementRef, EventEmitter } from '@angular/core';
2
2
  import { KeyboardSupportItemInterface } from '@fundamental-ngx/cdk/utils';
3
3
  import { Subject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
- export declare abstract class ListFocusItem implements KeyboardSupportItemInterface {
5
+ export declare abstract class ListFocusItem<T = any> implements KeyboardSupportItemInterface {
6
6
  readonly elementRef: ElementRef;
7
7
  /** tab index attribute */
8
8
  set tabindex(value: number);
9
9
  get tabindex(): number;
10
+ /**
11
+ * Value of the list item.
12
+ * Used for dropdown-based controls such as combobox, select, etc.
13
+ */
14
+ value: T;
10
15
  /** @hidden */
11
16
  readonly _focused$: Subject<{
12
17
  focusedWithin: boolean;
@@ -29,6 +34,6 @@ export declare abstract class ListFocusItem implements KeyboardSupportItemInterf
29
34
  focus(): void;
30
35
  /** @hidden */
31
36
  setIsFirst(value: boolean): void;
32
- static ɵfac: i0.ɵɵFactoryDeclaration<ListFocusItem, never>;
33
- static ɵdir: i0.ɵɵDirectiveDeclaration<ListFocusItem, never, never, { "tabindex": "tabindex"; }, {}, never, never, false, never>;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListFocusItem<any>, never>;
38
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ListFocusItem<any>, never, never, { "tabindex": "tabindex"; "value": "value"; }, {}, never, never, false, never>;
34
39
  }
@@ -1,18 +1,17 @@
1
1
  import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
2
+ import { ListItemInterface, Nullable } from '@fundamental-ngx/cdk/utils';
3
+ import { ButtonComponent } from '@fundamental-ngx/core/button';
2
4
  import { CheckboxComponent } from '@fundamental-ngx/core/checkbox';
3
5
  import { RadioButtonComponent } from '@fundamental-ngx/core/radio';
4
6
  import { ListLinkDirective } from '../directives/list-link.directive';
5
- import { ListItemInterface } from '@fundamental-ngx/cdk/utils';
6
7
  import { ListFocusItem } from '../list-focus-item.model';
7
- import { ButtonComponent } from '@fundamental-ngx/core/button';
8
- import { Nullable } from '@fundamental-ngx/cdk/utils';
9
8
  import { ListUnreadIndicator } from '../list-unread-indicator.interface';
10
9
  import * as i0 from "@angular/core";
11
10
  /**
12
11
  * The component that represents a list item.
13
12
  * The list item can contain plain text, links or actions.
14
13
  */
15
- export declare class ListItemComponent extends ListFocusItem implements AfterContentInit, OnDestroy, ListItemInterface {
14
+ export declare class ListItemComponent<T = any> extends ListFocusItem<T> implements AfterContentInit, OnDestroy, ListItemInterface {
16
15
  readonly elementRef: ElementRef;
17
16
  private readonly _changeDetectorRef;
18
17
  private readonly _unreadIndicator?;
@@ -97,6 +96,6 @@ export declare class ListItemComponent extends ListFocusItem implements AfterCon
97
96
  private _addClassToButtons;
98
97
  /** @hidden */
99
98
  private _muteEvent;
100
- static ɵfac: i0.ɵɵFactoryDeclaration<ListItemComponent, [null, null, { optional: true; }]>;
101
- static ɵcmp: i0.ɵɵComponentDeclaration<ListItemComponent, "[fdListItem] ,[fd-list-item]", never, { "selected": "selected"; "ariaDescribedBy": "ariaDescribedBy"; "noData": "noData"; "action": "action"; "interactive": "interactive"; "growing": "growing"; "counter": "counter"; "unread": "unread"; "byline": "byline"; "selectedListItemScreenReaderText": "selectedListItemScreenReaderText"; "navigatedListItemScreenReaderText": "navigatedListItemScreenReaderText"; "navigatableListItemScreenReaderText": "navigatableListItemScreenReaderText"; }, { "keyDown": "keyDown"; }, ["radio", "checkbox", "linkDirectives", "buttons"], ["fd-checkbox", "fd-radio-button", "*"], false, never>;
99
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListItemComponent<any>, [null, null, { optional: true; }]>;
100
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListItemComponent<any>, "[fdListItem] ,[fd-list-item]", never, { "selected": "selected"; "ariaDescribedBy": "ariaDescribedBy"; "noData": "noData"; "action": "action"; "interactive": "interactive"; "growing": "growing"; "counter": "counter"; "unread": "unread"; "byline": "byline"; "selectedListItemScreenReaderText": "selectedListItemScreenReaderText"; "navigatedListItemScreenReaderText": "navigatedListItemScreenReaderText"; "navigatableListItemScreenReaderText": "navigatableListItemScreenReaderText"; }, { "keyDown": "keyDown"; }, ["radio", "checkbox", "linkDirectives", "buttons"], ["fd-checkbox", "fd-radio-button", "*"], false, never>;
102
101
  }
@@ -1,4 +1,4 @@
1
- import { AfterContentInit, ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
1
+ import { AfterContentInit, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
2
2
  import { FocusEscapeDirection, KeyboardSupportService, ListItemInterface, Nullable } from '@fundamental-ngx/cdk/utils';
3
3
  import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
4
4
  import { ListComponentInterface } from './list-component.interface';
@@ -12,8 +12,6 @@ import * as i0 from "@angular/core";
12
12
  */
13
13
  export declare class ListComponent implements ListComponentInterface, ListUnreadIndicator, OnInit, AfterContentInit, OnDestroy {
14
14
  private _keyboardSupportService;
15
- private _cdr;
16
- private _contentDensityObserver;
17
15
  /** Whether dropdown mode is included to component, used for Select and Combobox */
18
16
  dropdownMode: boolean;
19
17
  /** Whether multi mode is included to component, used for MultiInput */
@@ -60,7 +58,7 @@ export declare class ListComponent implements ListComponentInterface, ListUnread
60
58
  /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
61
59
  private readonly _onDestroy$;
62
60
  /** @hidden */
63
- constructor(_keyboardSupportService: KeyboardSupportService<ListFocusItem>, _cdr: ChangeDetectorRef, _contentDensityObserver: ContentDensityObserver);
61
+ constructor(_keyboardSupportService: KeyboardSupportService<ListFocusItem>, _contentDensityObserver: ContentDensityObserver);
64
62
  /** @hidden */
65
63
  ngOnInit(): void;
66
64
  /** @hidden */
@@ -71,6 +69,10 @@ export declare class ListComponent implements ListComponentInterface, ListUnread
71
69
  keyDownHandler(event: KeyboardEvent): void;
72
70
  /** Set fake focus on element with passed index */
73
71
  setItemActive(index: number, updateOnly?: boolean): void;
72
+ /**
73
+ * @returns Currently active list item.
74
+ */
75
+ getActiveItem(): ListFocusItem | null;
74
76
  /** @hidden */
75
77
  private _listenOnQueryChange;
76
78
  /** @hidden */
@@ -10,3 +10,4 @@ export * from './helpers';
10
10
  export * from './multi-combobox.token';
11
11
  export * from './models/multi-combobox.interface';
12
12
  export * from './models/selection-change.event';
13
+ export * from './multi-announcer/multi-announcer.directive';
@@ -0,0 +1,39 @@
1
+ import { FdLanguage } from '@fundamental-ngx/i18n';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export declare class MultiAnnouncerDirective {
5
+ private readonly _language$;
6
+ /** @hidden */
7
+ multiAnnouncerOptions: any[];
8
+ /** @hidden */
9
+ private _tokens;
10
+ /** @hidden */
11
+ private readonly _translationResolver;
12
+ /** @hidden */
13
+ private _noResultsAnnounced;
14
+ /** @hidden */
15
+ private _resultsAnnounced;
16
+ /** @hidden */
17
+ private _language;
18
+ /** @hidden */
19
+ private _announcement;
20
+ /** @hidden */
21
+ private readonly _liveAnnouncer;
22
+ /** @hidden */
23
+ constructor(_language$: Observable<FdLanguage>);
24
+ /** @hidden */
25
+ private _init;
26
+ /** @hidden */
27
+ private _makeSearchTermChangeAnnouncements;
28
+ /** @hidden */
29
+ private _buildAnnouncement;
30
+ /** @hidden */
31
+ private _makeAnnouncement;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultiAnnouncerDirective, never>;
33
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MultiAnnouncerDirective, "[fdMultiAnnouncer]", ["fdMultiAnnouncer"], { "multiAnnouncerOptions": "multiAnnouncerOptions"; }, {}, ["_tokens"], never, true, never>;
34
+ }
35
+ export declare class MultiAnnouncerModule {
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultiAnnouncerModule, never>;
37
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MultiAnnouncerModule, never, [typeof MultiAnnouncerDirective], [typeof MultiAnnouncerDirective]>;
38
+ static ɵinj: i0.ɵɵInjectorDeclaration<MultiAnnouncerModule>;
39
+ }
@@ -203,7 +203,7 @@ export declare class MultiComboboxComponent<T = any> extends BaseMultiCombobox<T
203
203
  */
204
204
  private _setInputTextFromOptionItem;
205
205
  /** @hidden */
206
- _onItemKeyDownHandler(event: KeyboardEvent, index: number): void;
206
+ _onItemKeyDownHandler(event: KeyboardEvent): void;
207
207
  /** @hidden */
208
208
  _onOptionClicked(event: MouseEvent, index: number): void;
209
209
  /**
@@ -13,8 +13,9 @@ import * as i11 from "@angular/forms";
13
13
  import * as i12 from "@fundamental-ngx/cdk/utils";
14
14
  import * as i13 from "@fundamental-ngx/core/content-density";
15
15
  import * as i14 from "@fundamental-ngx/core/toolbar";
16
+ import * as i15 from "./multi-announcer/multi-announcer.directive";
16
17
  export declare class MultiComboboxModule {
17
18
  static ɵfac: i0.ɵɵFactoryDeclaration<MultiComboboxModule, never>;
18
- static ɵmod: i0.ɵɵNgModuleDeclaration<MultiComboboxModule, [typeof i1.MultiComboboxComponent, typeof i2.SelectAllTogglerComponent], [typeof i3.CommonModule, typeof i4.I18nModule, typeof i5.PopoverModule, typeof i6.CheckboxModule, typeof i7.InputGroupModule, typeof i8.TokenModule, typeof i9.FormModule, typeof i10.ListModule, typeof i11.FormsModule, typeof i12.PipeModule, typeof i12.AutoCompleteModule, typeof i13.ContentDensityModule, typeof i14.ToolbarModule, typeof i12.MultiAnnouncerModule], [typeof i1.MultiComboboxComponent]>;
19
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MultiComboboxModule, [typeof i1.MultiComboboxComponent, typeof i2.SelectAllTogglerComponent], [typeof i3.CommonModule, typeof i4.I18nModule, typeof i5.PopoverModule, typeof i6.CheckboxModule, typeof i7.InputGroupModule, typeof i8.TokenModule, typeof i9.FormModule, typeof i10.ListModule, typeof i11.FormsModule, typeof i12.PipeModule, typeof i12.AutoCompleteModule, typeof i13.ContentDensityModule, typeof i14.ToolbarModule, typeof i15.MultiAnnouncerModule], [typeof i1.MultiComboboxComponent]>;
19
20
  static ɵinj: i0.ɵɵInjectorDeclaration<MultiComboboxModule>;
20
21
  }