@fundamental-ngx/core 0.47.0-rc.8 → 0.47.0

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 (150) hide show
  1. package/breadcrumb/breadcrumb.component.d.ts +1 -1
  2. package/carousel/carousel-item/carousel-item.component.d.ts +4 -4
  3. package/carousel/carousel-item.directive.d.ts +4 -4
  4. package/checkbox/checkbox/checkbox.component.d.ts +10 -10
  5. package/esm2022/breadcrumb/breadcrumb.component.mjs +2 -2
  6. package/esm2022/calendar/calendar-header/calendar-header.component.mjs +4 -5
  7. package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +4 -5
  8. package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +4 -5
  9. package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +4 -5
  10. package/esm2022/carousel/carousel-item/carousel-item.component.mjs +1 -1
  11. package/esm2022/carousel/carousel-item.directive.mjs +1 -1
  12. package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
  13. package/esm2022/combobox/combobox.component.mjs +2 -2
  14. package/esm2022/date-picker/date-picker.component.mjs +4 -5
  15. package/esm2022/datetime-picker/datetime-picker.component.mjs +8 -10
  16. package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +2 -2
  17. package/esm2022/feed-input/directives/feed-input-textarea.directive.mjs +16 -19
  18. package/esm2022/form/form-control/form-control.component.mjs +3 -3
  19. package/esm2022/form/form-label/form-label.component.mjs +5 -6
  20. package/esm2022/input-group/input-group.component.mjs +7 -5
  21. package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +4 -5
  22. package/esm2022/message-box/directives/message-box-template.directive.mjs +3 -3
  23. package/esm2022/message-strip/message-strip.component.mjs +8 -10
  24. package/esm2022/multi-combobox/base-multi-combobox.class.mjs +4 -4
  25. package/esm2022/multi-combobox/helpers.mjs +1 -1
  26. package/esm2022/multi-combobox/multi-announcer/multi-announcer.directive.mjs +11 -5
  27. package/esm2022/multi-combobox/multi-combobox.component.mjs +6 -6
  28. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +4 -5
  29. package/esm2022/multi-input/multi-input.component.mjs +3 -3
  30. package/esm2022/notification/notification-utils/notification-config.mjs +1 -1
  31. package/esm2022/notification/notification-utils/notification-ref.mjs +1 -1
  32. package/esm2022/object-attribute/fundamental-ngx-core-object-attribute.mjs +5 -0
  33. package/esm2022/object-attribute/index.mjs +3 -0
  34. package/esm2022/object-attribute/object-attribute.component.mjs +49 -0
  35. package/esm2022/object-attribute/object-attribute.module.mjs +16 -0
  36. package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -5
  37. package/esm2022/overflow-layout/overflow-layout.service.mjs +3 -3
  38. package/esm2022/pagination/pagination.component.mjs +2 -2
  39. package/esm2022/popover/popover-mobile/popover-mobile.module.mjs +6 -6
  40. package/esm2022/radio/radio-button/radio-button.component.mjs +2 -2
  41. package/esm2022/select/select-mobile/select-mobile.module.mjs +5 -5
  42. package/esm2022/select/select.component.mjs +3 -3
  43. package/esm2022/select/select.interface.mjs +1 -1
  44. package/esm2022/shellbar/product-menu/product-menu.component.mjs +8 -11
  45. package/esm2022/shellbar/shellbar-action/shellbar-action.component.mjs +6 -7
  46. package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +6 -7
  47. package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +5 -6
  48. package/esm2022/splitter/splitter-pane-container/splitter-pane-container.component.mjs +1 -1
  49. package/esm2022/switch/switch.component.mjs +1 -1
  50. package/esm2022/tabs/tab-list.component.mjs +6 -3
  51. package/esm2022/tabs/tabs.module.mjs +5 -1
  52. package/esm2022/time/time-column/time-column.component.mjs +1 -1
  53. package/esm2022/time/time.component.mjs +1 -1
  54. package/esm2022/time-picker/time-picker.component.mjs +2 -2
  55. package/esm2022/token/tokenizer.component.mjs +6 -7
  56. package/esm2022/toolbar/toolbar.component.mjs +10 -12
  57. package/esm2022/tree/components/tree-item/tree-item.component.mjs +5 -6
  58. package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +4 -6
  59. package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +2 -2
  60. package/feed-input/directives/feed-input-textarea.directive.d.ts +7 -8
  61. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +1 -1
  62. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-calendar.mjs +9 -10
  64. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  68. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-date-picker.mjs +3 -4
  70. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +8 -10
  72. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-feed-input.mjs +16 -19
  74. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-form.mjs +6 -7
  76. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-input-group.mjs +6 -4
  78. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-menu.mjs +3 -4
  80. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
  82. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-message-strip.mjs +7 -9
  84. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +15 -10
  86. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-multi-input.mjs +6 -7
  88. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +69 -0
  91. package/fesm2022/fundamental-ngx-core-object-attribute.mjs.map +1 -0
  92. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +18 -5
  93. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-core-pagination.mjs +1 -1
  95. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  96. package/fesm2022/fundamental-ngx-core-popover.mjs +4 -4
  97. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  98. package/fesm2022/fundamental-ngx-core-radio.mjs +1 -1
  99. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  100. package/fesm2022/fundamental-ngx-core-select.mjs +6 -6
  101. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  102. package/fesm2022/fundamental-ngx-core-shellbar.mjs +12 -14
  103. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  104. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  106. package/fesm2022/fundamental-ngx-core-tabs.mjs +9 -2
  107. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  108. package/fesm2022/fundamental-ngx-core-time-picker.mjs +1 -1
  109. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  110. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-token.mjs +5 -6
  112. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-toolbar.mjs +7 -8
  114. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -5
  116. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +6 -7
  118. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  119. package/form/form-control/form-control.component.d.ts +3 -3
  120. package/fundamental-ngx-core-v0.47.0.tgz +0 -0
  121. package/input-group/input-group.component.d.ts +10 -4
  122. package/message-box/directives/message-box-template.directive.d.ts +2 -2
  123. package/message-strip/message-strip.component.d.ts +2 -2
  124. package/multi-combobox/base-multi-combobox.class.d.ts +7 -7
  125. package/multi-combobox/helpers.d.ts +3 -3
  126. package/multi-combobox/multi-announcer/multi-announcer.directive.d.ts +4 -2
  127. package/notification/notification-utils/notification-config.d.ts +2 -2
  128. package/notification/notification-utils/notification-ref.d.ts +5 -5
  129. package/object-attribute/README.md +25 -0
  130. package/object-attribute/index.d.ts +2 -0
  131. package/object-attribute/object-attribute.component.d.ts +26 -0
  132. package/object-attribute/object-attribute.module.d.ts +7 -0
  133. package/overflow-layout/overflow-layout.component.d.ts +9 -1
  134. package/overflow-layout/overflow-layout.service.d.ts +1 -1
  135. package/package.json +9 -3
  136. package/pagination/pagination.component.d.ts +2 -2
  137. package/popover/popover-mobile/popover-mobile.module.d.ts +1 -1
  138. package/radio/radio-button/radio-button.component.d.ts +12 -12
  139. package/schematics/add-dependencies/index.js +4 -4
  140. package/select/select-mobile/select-mobile.module.d.ts +1 -1
  141. package/select/select.interface.d.ts +8 -8
  142. package/shellbar/product-menu/product-menu.component.d.ts +3 -3
  143. package/splitter/splitter-pane-container/splitter-pane-container.component.d.ts +1 -1
  144. package/switch/switch.component.d.ts +1 -1
  145. package/tabs/tab-list.component.d.ts +2 -0
  146. package/tabs/tabs.module.d.ts +4 -0
  147. package/time/time-column/time-column.component.d.ts +3 -3
  148. package/time/time.component.d.ts +1 -1
  149. package/toolbar/toolbar.component.d.ts +2 -2
  150. package/fundamental-ngx-core-v0.47.0-rc.8.tgz +0 -0
@@ -1,8 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Directive, Input, HostListener, Injectable, ElementRef, ChangeDetectorRef, DestroyRef, InjectionToken, Component, Inject, Optional, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, EventEmitter, Injector, Output, ContentChildren, NgModule } from '@angular/core';
2
+ import { inject, Directive, Input, ContentChildren, HostListener, Injectable, ElementRef, ChangeDetectorRef, DestroyRef, InjectionToken, Component, Inject, Optional, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, EventEmitter, Injector, Output, NgModule } from '@angular/core';
3
3
  import { LiveAnnouncer } from '@angular/cdk/a11y';
4
4
  import * as i1$1 from '@fundamental-ngx/cdk/utils';
5
5
  import { KeyUtil, isJsObject, isFunction, isString, RangeSelector, coerceArraySafe, TemplateDirective, resizeObservable, DynamicComponentService, AutoCompleteDirective, SearchHighlightPipe } from '@fundamental-ngx/cdk/utils';
6
+ import { TokenComponent, TokenizerComponent } from '@fundamental-ngx/core/token';
6
7
  import { resolveTranslationSyncFn, FdTranslatePipe } from '@fundamental-ngx/i18n';
7
8
  import { BACKSPACE, ESCAPE, ENTER, CONTROL, TAB, SHIFT, UP_ARROW, RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, ALT, A, SPACE } from '@angular/cdk/keycodes';
8
9
  import * as i3$1 from '@fundamental-ngx/cdk/data-source';
@@ -11,7 +12,6 @@ import * as i2 from '@fundamental-ngx/cdk/forms';
11
12
  import { isSelectItem, CvaControl, CvaDirective, isOptionItem, isSelectableOptionItem } from '@fundamental-ngx/cdk/forms';
12
13
  import { ListFocusItem, FD_LIST_COMPONENT, ListComponent, ListGroupHeaderDirective, ListTitleDirective, ListItemComponent, ListSecondaryDirective } from '@fundamental-ngx/core/list';
13
14
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
14
- import { TokenizerComponent, TokenComponent } from '@fundamental-ngx/core/token';
15
15
  import equal from 'fast-deep-equal';
16
16
  import { BehaviorSubject, Subscription, startWith, skip, timer, isObservable, Subject } from 'rxjs';
17
17
  import { takeUntil, debounceTime } from 'rxjs/operators';
@@ -67,13 +67,15 @@ class MultiAnnouncerDirective {
67
67
  count: this.multiAnnouncerOptions.length
68
68
  }));
69
69
  }
70
+ this._buildAnnouncement(this._resolveTranslation('coreMultiInput.navigateSelectionsWithArrows'));
70
71
  if (!this._resultsAnnounced) {
71
- this._buildAnnouncement(this._resolveTranslation('coreMultiInput.navigateSelectionsWithArrows'));
72
72
  this._noResultsAnnounced = false;
73
73
  this._resultsAnnounced = true;
74
74
  }
75
75
  }
76
- this._buildAnnouncement(this._resolveTranslation('coreMultiInput.escapeNavigateTokens'));
76
+ if (this._tokens && this._tokens.length) {
77
+ this._buildAnnouncement(this._resolveTranslation('coreMultiInput.escapeNavigateTokens'));
78
+ }
77
79
  this._makeAnnouncement(this._announcement);
78
80
  }
79
81
  }
@@ -88,7 +90,7 @@ class MultiAnnouncerDirective {
88
90
  });
89
91
  }
90
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MultiAnnouncerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
91
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: MultiAnnouncerDirective, isStandalone: true, selector: "[fdMultiAnnouncer]", inputs: { multiAnnouncerOptions: "multiAnnouncerOptions" }, host: { listeners: { "keyup": "_makeSearchTermChangeAnnouncements($event)" } }, exportAs: ["fdMultiAnnouncer"], ngImport: i0 }); }
93
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: MultiAnnouncerDirective, isStandalone: true, selector: "[fdMultiAnnouncer]", inputs: { multiAnnouncerOptions: "multiAnnouncerOptions" }, host: { listeners: { "keyup": "_makeSearchTermChangeAnnouncements($event)" } }, queries: [{ propertyName: "_tokens", predicate: TokenComponent, descendants: true }], exportAs: ["fdMultiAnnouncer"], ngImport: i0 }); }
92
94
  }
93
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MultiAnnouncerDirective, decorators: [{
94
96
  type: Directive,
@@ -99,6 +101,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
99
101
  }]
100
102
  }], propDecorators: { multiAnnouncerOptions: [{
101
103
  type: Input
104
+ }], _tokens: [{
105
+ type: ContentChildren,
106
+ args: [TokenComponent, { descendants: true }]
102
107
  }], _makeSearchTermChangeAnnouncements: [{
103
108
  type: HostListener,
104
109
  args: ['keyup', ['$event']]
@@ -984,7 +989,7 @@ class MultiComboboxComponent extends BaseMultiCombobox {
984
989
  if (event) {
985
990
  event.preventDefault();
986
991
  }
987
- const optionItem = this._suggestions.find((s) => s.value === token.value);
992
+ const optionItem = this._flatSuggestions.find((s) => s.value === token.value);
988
993
  if (optionItem) {
989
994
  this._toggleSelection(optionItem, true);
990
995
  this._rangeSelector.reset();
@@ -1228,11 +1233,11 @@ class MultiComboboxComponent extends BaseMultiCombobox {
1228
1233
  */
1229
1234
  _onListElementClicked(event, index) {
1230
1235
  // value has been changed at this point, so it can be safely used
1231
- const selectionState = this._suggestions[index].selected;
1236
+ const selectionState = this._flatSuggestions[index].selected;
1232
1237
  this._rangeSelector.onRangeElementToggled(index, event);
1233
1238
  const toRemoveSet = new Set();
1234
1239
  this._rangeSelector.applyValueToEachInRange((idx) => {
1235
- const current = this._suggestions[idx];
1240
+ const current = this._flatSuggestions[idx];
1236
1241
  if (current.selected !== selectionState) {
1237
1242
  if (current.selected) {
1238
1243
  // removing from "_selectedSuggestions" list
@@ -1342,7 +1347,7 @@ class MultiComboboxComponent extends BaseMultiCombobox {
1342
1347
  provide: MULTI_COMBOBOX_COMPONENT,
1343
1348
  useExisting: MultiComboboxComponent
1344
1349
  }
1345
- ], queries: [{ propertyName: "customTemplates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true, read: ElementRef }, { propertyName: "listComponent", first: true, predicate: FD_LIST_COMPONENT, descendants: true }, { propertyName: "mobileControlTemplate", first: true, predicate: ["mobileControlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "_inputGroup", first: true, predicate: ["inputGroup"], descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i2.CvaDirective, inputs: ["id", "inputId", "placeholder", "placeholder", "state", "state", "stateMessage", "stateMessage", "disabled", "disabled", "readonly", "readonly", "name", "name"] }, { directive: i3$1.DataSourceDirective, inputs: ["dataSource", "dataSource"], outputs: ["dataChanged", "dataChanged"] }], ngImport: i0, template: "<div class=\"fd-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fd-multi-combobox__list-container\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"this._cva.disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n #inputGroup\n [id]=\"this._cva.id + '-input-group-container'\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!this._cva.readonly\"\n [glyph]=\"!this._cva.readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && _onPrimaryButtonClick(false)\"\n (keydown)=\"_navigateByTokens($event)\"\n >\n <fd-tokenizer\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"_moreClicked()\"\n >\n <fd-token\n [readOnly]=\"this._cva.disabled\"\n (onCloseClick)=\"_removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"this._cva.ariaLabel\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && _onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [attr.aria-required]=\"this._cva.required\"\n [displayFn]=\"_displayFn\"\n class=\"fd-tokenizer__input\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"this._cva.id + '-input-group-container'\"\n class=\"fd-multi-combobox-input-group-custom\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel\"\n >\n <input\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"this._cva.ariaLabel\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched()\"\n (blur)=\"!mobile && _onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [displayFn]=\"_displayFn\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"_handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fd-multi-combobox__list fd-list--multi-input\"\n [id]=\"this._cva.id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width.px]=\"!mobile && minWidth\"\n [style.max-width.px]=\"autoResize && maxWidth\"\n [attr.aria-labelledby]=\"this._cva.id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n (keydown.shift.tab)=\"close()\"\n >\n <fd-form-message\n *ngIf=\"!!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n <fd-multi-combobox-select-all-toggler\n *ngIf=\"showSelectAll\"\n [selectAllHandler]=\"_handleSelectAllItems\"\n [valueChanges]=\"selectionChange\"\n [selectedItems]=\"_selectedSuggestions\"\n [flatItems]=\"_flatSuggestions\"\n ></fd-multi-combobox-select-all-toggler>\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup; else flatList\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else groupItemTemplateRenderer\">\n <label fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-template #groupItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-template #flatList>\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else optionItemTemplateRenderer\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #optionItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else secondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #secondaryItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fd-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}[class*=--compact] .fd-multi-combobox-tokenizer-custom:not([class*=--cozy]):not([class*=--condensed]),.is-compact .fd-multi-combobox-tokenizer-custom:not(.is-cozy):not(.is-condensed),.fd-multi-combobox-tokenizer-custom[class*=--compact],.fd-multi-combobox-tokenizer-custom.is-compact{width:calc(100% - 2rem)}.fd-multi-combobox-input-group-custom{display:inline-block}.fd-multi-combobox .fd-popover-custom{display:block}.fd-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fd-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fd-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}.fd-multi-combobox__list-container fd-form-message{max-width:100%;border-radius:0!important}.fd-dialog__body fd-form-message{display:block;max-width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdkAutoComplete]", inputs: ["options", "inputText", "enable", "matcher", "displayFn"], outputs: ["onComplete"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: SelectAllTogglerComponent, selector: "fd-multi-combobox-select-all-toggler", inputs: ["selectAllHandler", "valueChanges", "selectedItems", "flatItems"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "directive", type: MultiAnnouncerDirective, selector: "[fdMultiAnnouncer]", inputs: ["multiAnnouncerOptions"], exportAs: ["fdMultiAnnouncer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1350
+ ], queries: [{ propertyName: "customTemplates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true, read: ElementRef }, { propertyName: "listComponent", first: true, predicate: FD_LIST_COMPONENT, descendants: true }, { propertyName: "mobileControlTemplate", first: true, predicate: ["mobileControlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "_inputGroup", first: true, predicate: ["inputGroup"], descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i2.CvaDirective, inputs: ["id", "inputId", "placeholder", "placeholder", "state", "state", "stateMessage", "stateMessage", "disabled", "disabled", "readonly", "readonly", "name", "name"] }, { directive: i3$1.DataSourceDirective, inputs: ["dataSource", "dataSource"], outputs: ["dataChanged", "dataChanged"] }], ngImport: i0, template: "<div class=\"fd-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fd-multi-combobox__list-container\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"this._cva.disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n #inputGroup\n [id]=\"this._cva.id + '-input-group-container'\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!this._cva.readonly\"\n [glyph]=\"!this._cva.readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && _onPrimaryButtonClick(false)\"\n (keydown)=\"_navigateByTokens($event)\"\n >\n <fd-tokenizer\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"_moreClicked()\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n >\n <fd-token\n [readOnly]=\"this._cva.disabled\"\n (onCloseClick)=\"_removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && _onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [attr.aria-required]=\"this._cva.required\"\n [displayFn]=\"_displayFn\"\n class=\"fd-tokenizer__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"this._cva.id + '-input-group-container'\"\n class=\"fd-multi-combobox-input-group-custom\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel\"\n >\n <input\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched()\"\n (blur)=\"!mobile && _onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [displayFn]=\"_displayFn\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"_handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fd-multi-combobox__list fd-list--multi-input\"\n [id]=\"this._cva.id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width.px]=\"!mobile && minWidth\"\n [style.max-width.px]=\"autoResize && maxWidth\"\n [attr.aria-labelledby]=\"this._cva.id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n (keydown.shift.tab)=\"close()\"\n >\n <fd-form-message\n *ngIf=\"!!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n <fd-multi-combobox-select-all-toggler\n *ngIf=\"showSelectAll\"\n [selectAllHandler]=\"_handleSelectAllItems\"\n [valueChanges]=\"selectionChange\"\n [selectedItems]=\"_selectedSuggestions\"\n [flatItems]=\"_flatSuggestions\"\n ></fd-multi-combobox-select-all-toggler>\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup; else flatList\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else groupItemTemplateRenderer\">\n <label fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-template #groupItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-template #flatList>\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else optionItemTemplateRenderer\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #optionItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else secondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #secondaryItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fd-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}[class*=--compact] .fd-multi-combobox-tokenizer-custom:not([class*=--cozy]):not([class*=--condensed]),.is-compact .fd-multi-combobox-tokenizer-custom:not(.is-cozy):not(.is-condensed),.fd-multi-combobox-tokenizer-custom[class*=--compact],.fd-multi-combobox-tokenizer-custom.is-compact{width:calc(100% - 2rem)}.fd-multi-combobox-input-group-custom{display:inline-block}.fd-multi-combobox .fd-popover-custom{display:block}.fd-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fd-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fd-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}.fd-multi-combobox__list-container fd-form-message{max-width:100%;border-radius:0!important}.fd-dialog__body fd-form-message{display:block;max-width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdkAutoComplete]", inputs: ["options", "inputText", "enable", "matcher", "displayFn"], outputs: ["onComplete"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: SelectAllTogglerComponent, selector: "fd-multi-combobox-select-all-toggler", inputs: ["selectAllHandler", "valueChanges", "selectedItems", "flatItems"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "directive", type: MultiAnnouncerDirective, selector: "[fdMultiAnnouncer]", inputs: ["multiAnnouncerOptions"], exportAs: ["fdMultiAnnouncer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1346
1351
  }
1347
1352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MultiComboboxComponent, decorators: [{
1348
1353
  type: Component,
@@ -1398,7 +1403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
1398
1403
  FdTranslatePipe,
1399
1404
  SearchHighlightPipe,
1400
1405
  MultiAnnouncerDirective
1401
- ], template: "<div class=\"fd-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fd-multi-combobox__list-container\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"this._cva.disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n #inputGroup\n [id]=\"this._cva.id + '-input-group-container'\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!this._cva.readonly\"\n [glyph]=\"!this._cva.readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && _onPrimaryButtonClick(false)\"\n (keydown)=\"_navigateByTokens($event)\"\n >\n <fd-tokenizer\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"_moreClicked()\"\n >\n <fd-token\n [readOnly]=\"this._cva.disabled\"\n (onCloseClick)=\"_removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"this._cva.ariaLabel\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && _onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [attr.aria-required]=\"this._cva.required\"\n [displayFn]=\"_displayFn\"\n class=\"fd-tokenizer__input\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"this._cva.id + '-input-group-container'\"\n class=\"fd-multi-combobox-input-group-custom\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel\"\n >\n <input\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"this._cva.ariaLabel\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched()\"\n (blur)=\"!mobile && _onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [displayFn]=\"_displayFn\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"_handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fd-multi-combobox__list fd-list--multi-input\"\n [id]=\"this._cva.id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width.px]=\"!mobile && minWidth\"\n [style.max-width.px]=\"autoResize && maxWidth\"\n [attr.aria-labelledby]=\"this._cva.id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n (keydown.shift.tab)=\"close()\"\n >\n <fd-form-message\n *ngIf=\"!!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n <fd-multi-combobox-select-all-toggler\n *ngIf=\"showSelectAll\"\n [selectAllHandler]=\"_handleSelectAllItems\"\n [valueChanges]=\"selectionChange\"\n [selectedItems]=\"_selectedSuggestions\"\n [flatItems]=\"_flatSuggestions\"\n ></fd-multi-combobox-select-all-toggler>\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup; else flatList\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else groupItemTemplateRenderer\">\n <label fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-template #groupItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-template #flatList>\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else optionItemTemplateRenderer\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #optionItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else secondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #secondaryItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fd-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}[class*=--compact] .fd-multi-combobox-tokenizer-custom:not([class*=--cozy]):not([class*=--condensed]),.is-compact .fd-multi-combobox-tokenizer-custom:not(.is-cozy):not(.is-condensed),.fd-multi-combobox-tokenizer-custom[class*=--compact],.fd-multi-combobox-tokenizer-custom.is-compact{width:calc(100% - 2rem)}.fd-multi-combobox-input-group-custom{display:inline-block}.fd-multi-combobox .fd-popover-custom{display:block}.fd-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fd-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fd-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}.fd-multi-combobox__list-container fd-form-message{max-width:100%;border-radius:0!important}.fd-dialog__body fd-form-message{display:block;max-width:100%}\n"] }]
1406
+ ], template: "<div class=\"fd-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fd-multi-combobox__list-container\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"this._cva.disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n #inputGroup\n [id]=\"this._cva.id + '-input-group-container'\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!this._cva.readonly\"\n [glyph]=\"!this._cva.readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && _onPrimaryButtonClick(false)\"\n (keydown)=\"_navigateByTokens($event)\"\n >\n <fd-tokenizer\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"_moreClicked()\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n >\n <fd-token\n [readOnly]=\"this._cva.disabled\"\n (onCloseClick)=\"_removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && _onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [attr.aria-required]=\"this._cva.required\"\n [displayFn]=\"_displayFn\"\n class=\"fd-tokenizer__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"this._cva.id + '-input-group-container'\"\n class=\"fd-multi-combobox-input-group-custom\"\n [state]=\"this._cva.state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"this._cva.disabled || this._cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"this._cva.disabled || this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [glyphAriaLabel]=\"this._cva.ariaLabel\"\n >\n <input\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"this._cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? this._cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"this._cva.id\"\n [name]=\"this._cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"this._cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"this._cva.placeholder\"\n (focus)=\"this._cva.onTouched()\"\n (blur)=\"!mobile && _onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"this._cva.readonly\"\n [attr.aria-readonly]=\"this._cva.readonly\"\n [displayFn]=\"_displayFn\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"_handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fd-multi-combobox__list fd-list--multi-input\"\n [id]=\"this._cva.id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width.px]=\"!mobile && minWidth\"\n [style.max-width.px]=\"autoResize && maxWidth\"\n [attr.aria-labelledby]=\"this._cva.id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n (keydown.shift.tab)=\"close()\"\n >\n <fd-form-message\n *ngIf=\"!!this._cva.stateMessage\"\n [type]=\"this._cva.state\"\n [innerHtml]=\"this._cva.stateMessage\"\n ></fd-form-message>\n <fd-multi-combobox-select-all-toggler\n *ngIf=\"showSelectAll\"\n [selectAllHandler]=\"_handleSelectAllItems\"\n [valueChanges]=\"selectionChange\"\n [selectedItems]=\"_selectedSuggestions\"\n [flatItems]=\"_flatSuggestions\"\n ></fd-multi-combobox-select-all-toggler>\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup; else flatList\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else groupItemTemplateRenderer\">\n <label fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-template #groupItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-template #flatList>\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else optionItemTemplateRenderer\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #optionItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else secondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #secondaryItemTemplateRenderer>\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fd-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}[class*=--compact] .fd-multi-combobox-tokenizer-custom:not([class*=--cozy]):not([class*=--condensed]),.is-compact .fd-multi-combobox-tokenizer-custom:not(.is-cozy):not(.is-condensed),.fd-multi-combobox-tokenizer-custom[class*=--compact],.fd-multi-combobox-tokenizer-custom.is-compact{width:calc(100% - 2rem)}.fd-multi-combobox-input-group-custom{display:inline-block}.fd-multi-combobox .fd-popover-custom{display:block}.fd-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fd-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fd-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}.fd-multi-combobox__list-container fd-form-message{max-width:100%;border-radius:0!important}.fd-dialog__body fd-form-message{display:block;max-width:100%}\n"] }]
1402
1407
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ViewContainerRef }, { type: i1$1.DynamicComponentService }]; }, propDecorators: { showSelectAll: [{
1403
1408
  type: Input
1404
1409
  }], selectedItems: [{