@fundamental-ngx/core 0.33.4-rc.6 → 0.33.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/action-bar/package.json +3 -3
- package/action-sheet/package.json +3 -3
- package/alert/package.json +3 -3
- package/avatar/avatar.component.d.ts +2 -0
- package/avatar/esm2020/avatar.component.mjs +8 -5
- package/avatar/fesm2015/fundamental-ngx-core-avatar.mjs +7 -4
- package/avatar/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/avatar/fesm2020/fundamental-ngx-core-avatar.mjs +7 -4
- package/avatar/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/avatar/package.json +3 -3
- package/avatar-group/package.json +3 -3
- package/bar/package.json +3 -3
- package/breadcrumb/package.json +3 -3
- package/busy-indicator/package.json +3 -3
- package/button/package.json +3 -3
- package/calendar/package.json +3 -3
- package/card/package.json +3 -3
- package/carousel/package.json +3 -3
- package/checkbox/checkbox/checkbox.component.d.ts +30 -35
- package/checkbox/esm2020/checkbox/checkbox.component.mjs +61 -80
- package/checkbox/fesm2015/fundamental-ngx-core-checkbox.mjs +59 -77
- package/checkbox/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/checkbox/fesm2020/fundamental-ngx-core-checkbox.mjs +59 -77
- package/checkbox/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/checkbox/package.json +3 -3
- package/combobox/package.json +3 -3
- package/date-picker/package.json +3 -3
- package/datetime/package.json +3 -3
- package/datetime-picker/package.json +3 -3
- package/dialog/package.json +3 -3
- package/dynamic-page/package.json +3 -3
- package/dynamic-side-content/package.json +3 -3
- package/esm2020/avatar/avatar.component.mjs +8 -5
- package/esm2020/checkbox/checkbox/checkbox.component.mjs +61 -80
- package/esm2020/input-group/input-group.component.mjs +2 -2
- package/esm2020/list/list-item/list-item.component.mjs +6 -2
- package/esm2020/multi-input/multi-input.component.mjs +38 -11
- package/esm2020/utils/helpers/range-selector.mjs +113 -0
- package/esm2020/utils/public_api.mjs +2 -1
- package/facets/package.json +3 -3
- package/feed-input/package.json +3 -3
- package/feed-list-item/package.json +3 -3
- package/fesm2015/fundamental-ngx-core-avatar.mjs +7 -4
- package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-checkbox.mjs +59 -77
- package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-list.mjs +5 -1
- package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +40 -11
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs +114 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-avatar.mjs +7 -4
- package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-checkbox.mjs +59 -77
- package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-list.mjs +5 -1
- package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +38 -11
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs +114 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/file-uploader/package.json +3 -3
- package/fixed-card-layout/package.json +3 -3
- package/flexible-column-layout/package.json +3 -3
- package/form/package.json +3 -3
- package/formatted-text/package.json +3 -3
- package/grid-list/package.json +3 -3
- package/icon/package.json +3 -3
- package/illustrated-message/package.json +3 -3
- package/infinite-scroll/package.json +3 -3
- package/info-label/package.json +3 -3
- package/inline-help/package.json +3 -3
- package/input-group/esm2020/input-group.component.mjs +2 -2
- package/input-group/fesm2015/fundamental-ngx-core-input-group.mjs +2 -2
- package/input-group/fesm2020/fundamental-ngx-core-input-group.mjs +2 -2
- package/input-group/package.json +3 -3
- package/layout-grid/package.json +3 -3
- package/layout-panel/package.json +3 -3
- package/link/package.json +3 -3
- package/list/esm2020/list-item/list-item.component.mjs +6 -2
- package/list/fesm2015/fundamental-ngx-core-list.mjs +5 -1
- package/list/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/list/fesm2020/fundamental-ngx-core-list.mjs +5 -1
- package/list/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/list/package.json +3 -3
- package/menu/package.json +3 -3
- package/message-box/package.json +3 -3
- package/message-page/package.json +2 -2
- package/message-strip/package.json +3 -3
- package/message-toast/package.json +3 -3
- package/micro-process-flow/package.json +3 -3
- package/mobile-mode/package.json +3 -3
- package/multi-input/esm2020/multi-input.component.mjs +38 -11
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs +40 -11
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs +38 -11
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/multi-input.component.d.ts +8 -1
- package/multi-input/package.json +3 -3
- package/nested-list/package.json +3 -3
- package/notification/package.json +3 -3
- package/object-identifier/package.json +3 -3
- package/object-marker/package.json +3 -3
- package/object-number/package.json +3 -3
- package/object-status/package.json +3 -3
- package/package.json +7 -7
- package/pagination/package.json +3 -3
- package/panel/package.json +3 -3
- package/popover/package.json +3 -3
- package/product-switch/package.json +3 -3
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +3 -3
- package/radio/package.json +3 -3
- package/rating-indicator/package.json +3 -3
- package/resizable-card-layout/package.json +3 -3
- package/scroll-spy/package.json +3 -3
- package/scrollbar/package.json +3 -3
- package/segmented-button/package.json +3 -3
- package/select/package.json +3 -3
- package/shared/package.json +3 -3
- package/shellbar/package.json +3 -3
- package/side-navigation/package.json +3 -3
- package/slider/package.json +3 -3
- package/split-button/package.json +3 -3
- package/splitter/package.json +3 -3
- package/status-indicator/package.json +3 -3
- package/step-input/package.json +3 -3
- package/switch/package.json +3 -3
- package/table/package.json +3 -3
- package/tabs/package.json +3 -3
- package/tests/package.json +2 -2
- package/text/package.json +3 -3
- package/tile/package.json +3 -3
- package/time/package.json +3 -3
- package/time-picker/package.json +3 -3
- package/timeline/package.json +3 -3
- package/title/package.json +3 -3
- package/token/package.json +3 -3
- package/toolbar/package.json +3 -3
- package/tree/package.json +3 -3
- package/upload-collection/package.json +3 -3
- package/utils/esm2020/helpers/range-selector.mjs +113 -0
- package/utils/esm2020/public_api.mjs +2 -1
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs +114 -1
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs +114 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/helpers/range-selector.d.ts +84 -0
- package/utils/package.json +6 -6
- package/utils/public_api.d.ts +1 -0
- package/vertical-navigation/package.json +3 -3
- package/wizard/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-list.mjs","sources":["../../../../libs/core/src/lib/list/directives/list-link.directive.ts","../../../../libs/core/src/lib/list/list-focus-item.model.ts","../../../../libs/core/src/lib/list/list-item/list-item.component.ts","../../../../libs/core/src/lib/list/list-item/list-item.component.html","../../../../libs/core/src/lib/list/directives/list-navigation-item-arrow.directive.ts","../../../../libs/core/src/lib/list/directives/list-navigation-item-text.directive.ts","../../../../libs/core/src/lib/list/list-navigation-item/list-navigation-item.component.ts","../../../../libs/core/src/lib/list/list-navigation-item/list-navigation-item.component.html","../../../../libs/core/src/lib/list/list.component.ts","../../../../libs/core/src/lib/list/list.component.html","../../../../libs/core/src/lib/list/list-message.directive.ts","../../../../libs/core/src/lib/list/directives/list-footer.directive.ts","../../../../libs/core/src/lib/list/directives/list-title.directive.ts","../../../../libs/core/src/lib/list/directives/list-group-header.directive.ts","../../../../libs/core/src/lib/list/directives/list-secondary.directive.ts","../../../../libs/core/src/lib/list/directives/list-icon.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-byline.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-byline-left.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-byline-right.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-content.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-thumbnail.directive.ts","../../../../libs/core/src/lib/list/directives/list-title-text.directive.ts","../../../../libs/core/src/lib/list/list.module.ts","../../../../libs/core/src/lib/list/fundamental-ngx-core-list.ts"],"sourcesContent":["import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-link], [fdListLink]'\n})\nexport class ListLinkDirective {\n /** Defines if navigation indicator arrow should be included inside list item */\n @Input()\n @HostBinding('class.fd-list__link--navigation-indicator')\n navigationIndicator = false;\n\n /** Defines if link should be treated as a navigated */\n @Input()\n @HostBinding('class.is-navigated')\n navigated = false;\n\n /** Defines if item is selected */\n @Input()\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('class.fd-list__link')\n fdListLinkClass = true;\n}\n","import { ElementRef, EventEmitter } from '@angular/core';\nimport { KeyboardSupportItemInterface } from '@fundamental-ngx/core/utils';\n\nexport class ListFocusItem implements KeyboardSupportItemInterface {\n /** @hidden Implementation of KeyboardSupportItemInterface */\n keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n constructor(readonly elementRef: ElementRef) {}\n\n /** @hidden */\n click(): void {\n this.elementRef?.nativeElement?.click();\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef?.nativeElement?.focus();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ListLinkDirective } from '../directives/list-link.directive';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { KeyUtil } from '@fundamental-ngx/core/utils';\nimport { LIST_ITEM_COMPONENT, ListItemInterface } from '@fundamental-ngx/core/utils';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { ListFocusItem } from '../list-focus-item.model';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\n\n/**\n * The component that represents a list item.\n * The list item can contain plain text, links or actions.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdListItem] ,[fd-list-item]',\n templateUrl: './list-item.component.html',\n host: {\n class: 'fd-list__item',\n role: 'listitem'\n },\n providers: [\n {\n provide: LIST_ITEM_COMPONENT,\n useExisting: forwardRef(() => ListItemComponent)\n },\n {\n provide: ListFocusItem,\n useExisting: forwardRef(() => ListItemComponent)\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ListItemComponent extends ListFocusItem implements AfterContentInit, OnDestroy, ListItemInterface {\n /** Whether list item is selected */\n @Input()\n @HostBinding('attr.aria-selected')\n @HostBinding('class.is-selected')\n selected = false;\n\n /** tab index attribute */\n @Input()\n @HostBinding('attr.tabindex')\n get tabindex(): number {\n return this._tabIndex;\n }\n set tabindex(value: number) {\n this._tabIndex = coerceNumberProperty(value, -1);\n }\n\n /** Whether there is no data inside list item */\n @Input()\n @HostBinding('class.fd-list__item--no-data')\n noData = false;\n\n /** Whether there is item performs some action */\n @Input()\n @HostBinding('class.fd-list__item--action')\n action = false;\n\n /** Whether there is item performs some action */\n @Input()\n @HostBinding('class.fd-list__item--interractive')\n interactive = false;\n\n /** Whether list item contains busy indicator */\n @Input()\n @HostBinding('class.fd-list__item--growing')\n growing = false;\n\n /** Counter on list item */\n @Input()\n counter: number;\n\n /** Whether list item should contain additional unRead styles */\n @Input()\n @HostBinding('class.fd-list__item--unread')\n unread = false;\n\n /** @hidden Implementation of KeyboardSupportItemInterface | TODO Revisit KeyboardSupportItemInterface*/\n @Output()\n keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Whether list item contains link */\n @HostBinding('class.fd-list__item--link')\n link = false;\n\n /** @hidden */\n @ContentChild(CheckboxComponent)\n checkbox: CheckboxComponent;\n\n /** @hidden */\n @ContentChild(RadioButtonComponent)\n radio: RadioButtonComponent;\n\n /** @hidden */\n @ContentChildren(ListLinkDirective)\n linkDirectives: QueryList<ListLinkDirective>;\n\n /** @hidden */\n @ContentChildren(ButtonComponent, { descendants: true })\n buttons: QueryList<ButtonComponent>;\n\n /** @hidden Implementation of KeyboardSupportItemInterface | TODO Revisit KeyboardSupportItemInterface*/\n clicked = new EventEmitter<MouseEvent>();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _tabIndex = 0;\n\n constructor(public elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef) {\n super(elementRef);\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._listenOnLinkQueryChange();\n this._listenOnButtonQueryChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keydownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n if (this.checkbox) {\n this.checkbox.nextValue();\n this._muteEvent(event);\n }\n if (this.radio) {\n this.radio.labelClicked(event);\n this._muteEvent(event);\n }\n }\n this.keyDown.emit(event);\n }\n\n /** Handler for mouse events */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n this.clicked.emit(event);\n if (this.checkbox && !this.link) {\n this.checkbox.nextValue();\n }\n if (this.radio && !this.link) {\n this.radio.labelClicked(event);\n }\n }\n\n /** @hidden */\n private _listenOnLinkQueryChange(): void {\n this.linkDirectives.changes.pipe(takeUntil(this._onDestroy$), startWith(0)).subscribe(() => {\n this.link = this.linkDirectives.length > 0;\n this._changeDetectorRef.detectChanges();\n });\n }\n\n /** @hidden */\n private _listenOnButtonQueryChange(): void {\n this.buttons.changes.pipe(takeUntil(this._onDestroy$), startWith(0)).subscribe(() => {\n this.buttons.forEach(this._addClassToButtons);\n });\n }\n\n /** @hidden */\n private _addClassToButtons(button: ButtonComponent): void {\n button.class += 'fd-list__button';\n button.buildComponentCssClass();\n button.detectChanges();\n }\n\n /** @hidden */\n private _muteEvent(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","<ng-container *ngIf=\"checkbox || radio\">\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n</ng-container>\n\n<ng-content></ng-content>\n\n<span *ngIf=\"counter || counter === 0\" class=\"fd-list__item-counter\">\n {{ counter.toString() | slice: 0:5 }}\n</span>\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-navigation-item-arrow], [fdListNavigaitonItemArrow]'\n})\nexport class ListNavigationItemArrowDirective {\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item-arrow')\n navigationItemArrowClass = true;\n\n /** @hidden */\n @HostBinding('class.sap-icon--navigation-right-arrow')\n rightArrowClass = true;\n\n /** @hidden */\n @HostBinding('class.sap-icon--navigation-down-arrow')\n downArrowClass = false;\n\n /** @hidden */\n @HostBinding('class.is-expanded')\n expanded = false;\n\n /** @hidden */\n _setExpanded(expanded: boolean): void {\n if (this.expanded !== expanded) {\n this.rightArrowClass = !this.rightArrowClass;\n this.downArrowClass = !this.downArrowClass;\n }\n this.expanded = expanded;\n }\n}\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-navigation-item-text], [fdListNavigaitonItemText]'\n})\nexport class ListNavigationItemTextDirective {\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item-text')\n navigationItemTextClass = true;\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n get elementRef(): ElementRef<HTMLElement> {\n return this._elementRef;\n }\n}\n","import { AfterContentInit, Component, ContentChild, forwardRef, HostBinding, HostListener, Input } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ListComponent } from '../list.component';\nimport { ListNavigationItemArrowDirective } from '../directives/list-navigation-item-arrow.directive';\nimport { ListNavigationItemTextDirective } from '../directives/list-navigation-item-text.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-list-navigation-item], [fdListNavigaitonItem]',\n templateUrl: './list-navigation-item.component.html',\n styleUrls: ['./list-navigation-item.component.scss']\n})\nexport class ListNavigationItemComponent implements AfterContentInit {\n /** Whether or not the list item is expanded. */\n @Input()\n @HostBinding('class.is-expanded')\n expanded = false;\n\n /** Whether or not this list item is indicated for navigation. */\n @Input()\n @HostBinding('class.fd-list__navigation-item--indicated')\n indicated = false;\n\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item')\n _navigationItemClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item--expandable')\n _isExpandable = false;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n _tabIndex;\n\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item--condensed')\n _condensed = false;\n\n /** @hidden */\n @ContentChild(forwardRef(() => ListComponent))\n _listComponent: ListComponent;\n\n /** @hidden */\n @ContentChild(ListNavigationItemArrowDirective)\n _listNavigationItemArrow: ListNavigationItemArrowDirective;\n\n /** @hidden */\n @ContentChild(IconComponent)\n _iconComponent: IconComponent;\n\n /** @hidden */\n @ContentChild(ListNavigationItemTextDirective)\n _text: ListNavigationItemTextDirective;\n\n /** @hidden */\n _innerText: string;\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._listComponent) {\n this._isExpandable = true;\n } else {\n this._tabIndex = 0;\n }\n if (this._iconComponent) {\n this._iconComponent._navigationItemIcon = true;\n }\n this._innerText = this._text.elementRef.nativeElement.innerText;\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n onItemClick(event: MouseEvent): void {\n event.stopPropagation();\n this._handleExpandedChanges(!this.expanded);\n }\n\n /** @hidden */\n _childIndicatedAndCollapsed(): boolean {\n let retVal = false;\n this._listComponent?._navItems?.forEach((navItem) => {\n if (navItem.indicated && !navItem.expanded) {\n retVal = true;\n }\n });\n\n return retVal;\n }\n\n /** @hidden */\n private _handleExpandedChanges(expanded: boolean): void {\n if (this._isExpandable) {\n this.expanded = expanded;\n this._listNavigationItemArrow._setExpanded(this.expanded);\n }\n }\n}\n","<ng-container *ngIf=\"!expanded || !_isExpandable || !_condensed || !_listComponent\">\n <ng-content></ng-content\n ><span *ngIf=\"indicated || _childIndicatedAndCollapsed()\" class=\"fd-list__navigation-item-indicator\"></span>\n</ng-container>\n<ng-container *ngIf=\"expanded && _isExpandable && _condensed && _listComponent\">\n <div\n class=\"fd-popover__body fd-popover__body--no-arrow fd-list__navigation-item-popover--first-level\"\n aria-hidden=\"false\"\n >\n <ul class=\"fd-list\">\n <li class=\"fd-list__navigation-item fd-list__navigation-item--condensed\">\n <fd-icon class=\"fd-list__navigation-item-icon\" [glyph]=\"_iconComponent.glyph\"></fd-icon>\n <span class=\"fd-list__navigation-item-text\">{{ _innerText }}</span>\n </li>\n </ul>\n </div>\n <div\n class=\"fd-popover__body fd-popover__body--no-arrow fd-list__navigation-item-popover--second-level\"\n aria-hidden=\"false\"\n >\n <ul class=\"fd-list\">\n <li\n *ngFor=\"let navItem of _listComponent._navItems\"\n class=\"fd-list__navigation-item fd-list__navigation-item--condensed\"\n [class.fd-list__navigation-item--indicated]=\"navItem.indicated\"\n tabindex=\"0\"\n >\n <span *ngIf=\"navItem._innerText\" class=\"fd-list__navigation-item-text\">{{ navItem._innerText }}</span>\n <span *ngIf=\"navItem.indicated\" class=\"fd-list__navigation-item-indicator\"></span>\n </li>\n </ul>\n </div>\n</ng-container>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { merge, Subject, Subscription } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { FocusEscapeDirection, KeyboardSupportService } from '@fundamental-ngx/core/utils';\nimport { ListGroupHeaderDirective } from './directives/list-group-header.directive';\nimport { ListFocusItem } from './list-focus-item.model';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { ListNavigationItemComponent } from './list-navigation-item/list-navigation-item.component';\n\ntype FocusItem = ListGroupHeaderDirective | ListItemComponent;\n/**\n * The directive that represents a list.\n * It is used to display a list of items with simple information such as scopes, names, etc.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-list], [fdList]',\n templateUrl: `./list.component.html`,\n host: {\n class: 'fd-list',\n role: 'list'\n },\n styleUrls: ['./list.component.scss', '../utils/drag-and-drop/drag-and-drop.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [KeyboardSupportService]\n})\nexport class ListComponent implements OnInit, AfterContentInit, OnDestroy {\n /** Whether dropdown mode is included to component, used for Select and Combobox */\n @Input()\n @HostBinding('class.fd-list--dropdown')\n dropdownMode = false;\n\n /** Whether multi mode is included to component, used for MultiInput */\n @Input()\n @HostBinding('class.fd-list--multi-input')\n multiInputMode = false;\n\n /** Whether list is used in mobile mode*/\n @Input()\n @HostBinding('class.fd-list--mobile')\n mobileMode = false;\n\n /** Whether compact mode is included to component */\n @Input()\n @HostBinding('class.fd-list--compact')\n compact?: boolean;\n\n /** Whether list component contains message */\n @Input()\n @HostBinding('class.fd-list--has-message')\n hasMessage = false;\n\n /** Whether list component has removed borders */\n @Input()\n @HostBinding('class.fd-list--no-border')\n noBorder = false;\n\n /** Whether list component has navigation indicators */\n @Input()\n @HostBinding('class.fd-list--navigation-indication')\n navigationIndicator = false;\n\n /** Whether list component has checkboxes or radio buttons included */\n @Input()\n @HostBinding('class.fd-list--selection')\n selection = false;\n\n /** Whether internal keyboard support should be enabled. It's enabled by default */\n @Input()\n keyboardSupport = true;\n\n /** Whether list should have a byline */\n @Input()\n @HostBinding('class.fd-list--byline')\n byline = false;\n\n /** Event thrown, when focus escapes the list */\n @Output()\n focusEscapeList = new EventEmitter<FocusEscapeDirection>();\n\n /** Whether list component includes links */\n @HostBinding('class.fd-list--navigation')\n hasNavigation = false;\n\n /** @hidden */\n @ContentChildren(ListItemComponent)\n items: QueryList<ListItemComponent>;\n\n /** @hidden */\n @ContentChildren(ListNavigationItemComponent)\n _navItems: QueryList<ListNavigationItemComponent>;\n\n /** @hidden */\n @ContentChildren(ListFocusItem)\n private _focusItems: QueryList<FocusItem>;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _keyboardSupportService: KeyboardSupportService<FocusItem>,\n private _cdr: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._cdr.detectChanges();\n })\n );\n }\n this._listenOnListFocusEscape();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._keyboardSupportService.setKeyboardService(this._focusItems, false);\n this._listenOnQueryChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (this.keyboardSupport) {\n this._keyboardSupportService.onKeyDown(event);\n }\n }\n\n /** Set fake focus on element with passed index */\n setItemActive(index: number): void {\n this._keyboardSupportService.keyManager.setActiveItem(index);\n }\n\n /** @hidden */\n private _listenOnQueryChange(): void {\n this._focusItems.changes.pipe(startWith(0), takeUntil(this._onDestroy$)).subscribe(() => {\n this._recheckLinks();\n this._listenOnItemsClick();\n });\n }\n\n /** @hidden */\n private _listenOnItemsClick(): void {\n /** Finish all of the streams, from before */\n this._onRefresh$.next();\n /** Merge refresh/destroy observables */\n const refreshObs = merge(this._onRefresh$, this._onDestroy$);\n this._focusItems.forEach((item, index) =>\n item.clicked.pipe(takeUntil(refreshObs)).subscribe(() => this.setItemActive(index))\n );\n }\n\n /** @hidden */\n private _recheckLinks(): void {\n const items = this.items.filter((item) => item.link);\n this.hasNavigation = items.length > 0;\n }\n\n /** @hidden */\n private _listenOnListFocusEscape(): void {\n this._keyboardSupportService.focusEscapeList\n .pipe(takeUntil(this._onDestroy$))\n .subscribe((direction) => this.focusEscapeList.emit(direction));\n }\n}\n","<ng-content></ng-content>\n","import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core';\nimport { MessageStates } from '@fundamental-ngx/core/form';\nimport { applyCssClass } from '@fundamental-ngx/core/utils';\nimport { CssClassBuilder } from '@fundamental-ngx/core/utils';\n\n@Directive({\n selector: '[fd-list-message], [fdListMessage]'\n})\nexport class ListMessageDirective implements OnChanges, OnInit, CssClassBuilder {\n /** Type of the message. Can be 'success' | 'error' | 'warning' | 'information' */\n @Input()\n type: MessageStates;\n\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return ['fd-list__message', this.type ? 'fd-list__message--' + this.type : '', this.class];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdListFooter], [fd-list-footer]'\n})\nexport class ListFooterDirective {\n /** @hidden */\n @HostBinding('class.fd-list__footer')\n fdListFooterClass = true;\n}\n","import { Directive, ElementRef, HostBinding, Input, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-title], [fdListTitle]'\n})\nexport class ListTitleDirective implements OnInit {\n /** @hidden */\n @HostBinding('class.fd-list__title')\n fdListTitleClass = true;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n @HostBinding('class.fd-list__title--wrap')\n wrap = false;\n\n /** @hidden */\n constructor(public elRef: ElementRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n const nativeEl = this.elRef.nativeElement;\n if (nativeEl.tagName === 'A') {\n nativeEl.setAttribute('tabIndex', '-1');\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\nimport { ListFocusItem } from '../list-focus-item.model';\n\n@Directive({\n selector: '[fdListGroupHeader], [fd-list-group-header]',\n host: {\n '[style.outline]': '\"none\"',\n '[class.fd-list__item]': 'true',\n '[class.fd-list__group-header]': 'true'\n },\n providers: [\n {\n provide: ListFocusItem,\n useExisting: forwardRef(() => ListGroupHeaderDirective)\n }\n ]\n})\nexport class ListGroupHeaderDirective extends ListFocusItem {\n /** tab index attribute */\n @Input()\n @HostBinding('attr.tabindex')\n get tabindex(): number {\n return this._tabIndex;\n }\n set tabindex(value: number) {\n this._tabIndex = coerceNumberProperty(value, -1);\n }\n /** @hidden Implementation of KeyboardSupportItemInterface */\n @Output()\n keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** @hidden */\n clicked = new EventEmitter<MouseEvent>();\n\n /** @hidden */\n private _tabIndex = -1;\n\n constructor(readonly elementRef: ElementRef) {\n super(elementRef);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keydownHandler(event: KeyboardEvent): void {\n this.keyDown.emit(event);\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-secondary] ,[fdListSecondary]'\n})\nexport class ListSecondaryDirective {\n /** @hidden */\n @HostBinding('class.fd-list__secondary')\n fdListSecondaryClass = true;\n}\n","import { Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\nimport { applyCssClass } from '@fundamental-ngx/core/utils';\n\n@Directive({\n selector: '[fdListIcon], [fd-list-icon]'\n})\nexport class ListIconDirective implements OnChanges, OnInit {\n /** The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n * */\n @Input()\n glyph: string;\n\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /** Role attribute for list icon */\n @Input()\n @HostBinding('attr.role')\n role = 'presentation';\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return ['fd-list__icon', this.glyph ? 'sap-icon--' + this.glyph : '', this.class];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: '[fdListByline], [fd-list-byline]',\n host: {\n class: 'fd-list__byline',\n '[class.fd-list__byline--2-col]': 'twoCol',\n '[class.fd-list__byline--wrap]': 'wrap'\n }\n})\nexport class ListBylineDirective {\n /** Whether or not this is a 2-column byline. */\n @Input()\n twoCol = false;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n wrap = false;\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[fdListBylineLeft], [fd-list-byline-left]'\n})\nexport class ListBylineLeftDirective {\n /** @hidden */\n @HostBinding('class.fd-list__byline-left')\n fdListBylineLeftClass = true;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n @HostBinding('class.fd-list__byline-left--wrap')\n wrap = false;\n}\n","import { Directive, Input } from '@angular/core';\n\nexport type ListBylineStatus = 'neutral' | 'positive' | 'negative' | 'critical' | 'informative';\n\n@Directive({\n selector: '[fdListBylineRight], [fd-list-byline-right]',\n host: {\n class: 'fd-list__byline-right',\n '[class.fd-list__byline-right--neutral]': 'status === \"neutral\"',\n '[class.fd-list__byline-right--positive]': 'status === \"positive\"',\n '[class.fd-list__byline-right--negative]': 'status === \"negative\"',\n '[class.fd-list__byline-right--critical]': 'status === \"critical\"',\n '[class.fd-list__byline-right--informative]': 'status === \"informative\"',\n '[class.fd-list__byline-right--wrap]': 'wrap'\n }\n})\nexport class ListBylineRightDirective {\n /** Semantic status of byline\n * Possible options are:\n * 'neutral' | 'positive' | 'negative' | 'critical' | 'informative'\n */\n @Input()\n status: ListBylineStatus;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n wrap = false;\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[fdListContent], [fd-list-content]'\n})\nexport class ListContentDirective {\n /** @hidden */\n @HostBinding('class.fd-list__content')\n fdListContentClass = true;\n\n /** Whether or not this is a 2-column content. */\n @Input()\n @HostBinding('class.fd-list__content--2-col')\n twoCol = false;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdListThumbnail], [fd-list-thumbnail]'\n})\nexport class ListThumbnailDirective {\n /** @hidden */\n @HostBinding('class.fd-list__thumbnail')\n fdListThumbnailClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-title-text], [fdListTitleText]'\n})\nexport class ListTitleTextDirective {\n /** @hidden */\n @HostBinding('class.fd-list__title-text')\n fdListTitleText = true;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ListComponent } from './list.component';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { ListMessageDirective } from './list-message.directive';\nimport { ListLinkDirective } from './directives/list-link.directive';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { ListFooterDirective } from './directives/list-footer.directive';\nimport { ListTitleDirective } from './directives/list-title.directive';\nimport { ListGroupHeaderDirective } from './directives/list-group-header.directive';\nimport { ListSecondaryDirective } from './directives/list-secondary.directive';\nimport { ListIconDirective } from './directives/list-icon.directive';\nimport { ListBylineDirective } from './directives/byline/list-byline.directive';\nimport { ListBylineLeftDirective } from './directives/byline/list-byline-left.directive';\nimport { ListBylineRightDirective } from './directives/byline/list-byline-right.directive';\nimport { ListContentDirective } from './directives/byline/list-content.directive';\nimport { ListThumbnailDirective } from './directives/byline/list-thumbnail.directive';\nimport { ListTitleTextDirective } from './directives/list-title-text.directive';\nimport { ListNavigationItemComponent } from './list-navigation-item/list-navigation-item.component';\nimport { ListNavigationItemArrowDirective } from './directives/list-navigation-item-arrow.directive';\nimport { ListNavigationItemTextDirective } from './directives/list-navigation-item-text.directive';\nimport { IconModule } from '@fundamental-ngx/core/icon';\n\n@NgModule({\n declarations: [\n ListComponent,\n ListItemComponent,\n ListTitleDirective,\n ListSecondaryDirective,\n ListIconDirective,\n ListFooterDirective,\n ListGroupHeaderDirective,\n ListMessageDirective,\n ListLinkDirective,\n ListBylineDirective,\n ListBylineLeftDirective,\n ListBylineRightDirective,\n ListContentDirective,\n ListThumbnailDirective,\n ListTitleTextDirective,\n ListNavigationItemComponent,\n ListNavigationItemArrowDirective,\n ListNavigationItemTextDirective\n ],\n imports: [CommonModule, FormModule, IconModule],\n exports: [\n ListComponent,\n ListItemComponent,\n ListTitleDirective,\n ListFooterDirective,\n ListGroupHeaderDirective,\n ListSecondaryDirective,\n ListIconDirective,\n ListMessageDirective,\n ListLinkDirective,\n ListBylineDirective,\n ListBylineLeftDirective,\n ListBylineRightDirective,\n ListContentDirective,\n ListThumbnailDirective,\n ListTitleTextDirective,\n ListNavigationItemComponent,\n ListNavigationItemArrowDirective,\n ListNavigationItemTextDirective\n ]\n})\nexport class ListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-list.mjs","sources":["../../../../libs/core/src/lib/list/directives/list-link.directive.ts","../../../../libs/core/src/lib/list/list-focus-item.model.ts","../../../../libs/core/src/lib/list/list-item/list-item.component.ts","../../../../libs/core/src/lib/list/list-item/list-item.component.html","../../../../libs/core/src/lib/list/directives/list-navigation-item-arrow.directive.ts","../../../../libs/core/src/lib/list/directives/list-navigation-item-text.directive.ts","../../../../libs/core/src/lib/list/list-navigation-item/list-navigation-item.component.ts","../../../../libs/core/src/lib/list/list-navigation-item/list-navigation-item.component.html","../../../../libs/core/src/lib/list/list.component.ts","../../../../libs/core/src/lib/list/list.component.html","../../../../libs/core/src/lib/list/list-message.directive.ts","../../../../libs/core/src/lib/list/directives/list-footer.directive.ts","../../../../libs/core/src/lib/list/directives/list-title.directive.ts","../../../../libs/core/src/lib/list/directives/list-group-header.directive.ts","../../../../libs/core/src/lib/list/directives/list-secondary.directive.ts","../../../../libs/core/src/lib/list/directives/list-icon.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-byline.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-byline-left.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-byline-right.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-content.directive.ts","../../../../libs/core/src/lib/list/directives/byline/list-thumbnail.directive.ts","../../../../libs/core/src/lib/list/directives/list-title-text.directive.ts","../../../../libs/core/src/lib/list/list.module.ts","../../../../libs/core/src/lib/list/fundamental-ngx-core-list.ts"],"sourcesContent":["import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-link], [fdListLink]'\n})\nexport class ListLinkDirective {\n /** Defines if navigation indicator arrow should be included inside list item */\n @Input()\n @HostBinding('class.fd-list__link--navigation-indicator')\n navigationIndicator = false;\n\n /** Defines if link should be treated as a navigated */\n @Input()\n @HostBinding('class.is-navigated')\n navigated = false;\n\n /** Defines if item is selected */\n @Input()\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('class.fd-list__link')\n fdListLinkClass = true;\n}\n","import { ElementRef, EventEmitter } from '@angular/core';\nimport { KeyboardSupportItemInterface } from '@fundamental-ngx/core/utils';\n\nexport class ListFocusItem implements KeyboardSupportItemInterface {\n /** @hidden Implementation of KeyboardSupportItemInterface */\n keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n constructor(readonly elementRef: ElementRef) {}\n\n /** @hidden */\n click(): void {\n this.elementRef?.nativeElement?.click();\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef?.nativeElement?.focus();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ListLinkDirective } from '../directives/list-link.directive';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { KeyUtil } from '@fundamental-ngx/core/utils';\nimport { LIST_ITEM_COMPONENT, ListItemInterface } from '@fundamental-ngx/core/utils';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { ListFocusItem } from '../list-focus-item.model';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\n\n/**\n * The component that represents a list item.\n * The list item can contain plain text, links or actions.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdListItem] ,[fd-list-item]',\n templateUrl: './list-item.component.html',\n host: {\n class: 'fd-list__item',\n role: 'listitem'\n },\n providers: [\n {\n provide: LIST_ITEM_COMPONENT,\n useExisting: forwardRef(() => ListItemComponent)\n },\n {\n provide: ListFocusItem,\n useExisting: forwardRef(() => ListItemComponent)\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ListItemComponent extends ListFocusItem implements AfterContentInit, OnDestroy, ListItemInterface {\n /** Whether list item is selected */\n @Input()\n @HostBinding('attr.aria-selected')\n @HostBinding('class.is-selected')\n selected = false;\n\n /** tab index attribute */\n @Input()\n @HostBinding('attr.tabindex')\n get tabindex(): number {\n return this._tabIndex;\n }\n set tabindex(value: number) {\n this._tabIndex = coerceNumberProperty(value, -1);\n }\n\n /** Whether there is no data inside list item */\n @Input()\n @HostBinding('class.fd-list__item--no-data')\n noData = false;\n\n /** Whether there is item performs some action */\n @Input()\n @HostBinding('class.fd-list__item--action')\n action = false;\n\n /** Whether there is item performs some action */\n @Input()\n @HostBinding('class.fd-list__item--interractive')\n interactive = false;\n\n /** Whether list item contains busy indicator */\n @Input()\n @HostBinding('class.fd-list__item--growing')\n growing = false;\n\n /** Counter on list item */\n @Input()\n counter: number;\n\n /** Whether list item should contain additional unRead styles */\n @Input()\n @HostBinding('class.fd-list__item--unread')\n unread = false;\n\n /** @hidden Implementation of KeyboardSupportItemInterface | TODO Revisit KeyboardSupportItemInterface*/\n @Output()\n keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Whether list item contains link */\n @HostBinding('class.fd-list__item--link')\n link = false;\n\n /** @hidden */\n @ContentChild(CheckboxComponent)\n checkbox: CheckboxComponent;\n\n /** @hidden */\n @ContentChild(RadioButtonComponent)\n radio: RadioButtonComponent;\n\n /** @hidden */\n @ContentChildren(ListLinkDirective)\n linkDirectives: QueryList<ListLinkDirective>;\n\n /** @hidden */\n @ContentChildren(ButtonComponent, { descendants: true })\n buttons: QueryList<ButtonComponent>;\n\n /** @hidden Implementation of KeyboardSupportItemInterface | TODO Revisit KeyboardSupportItemInterface*/\n clicked = new EventEmitter<MouseEvent>();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _tabIndex = 0;\n\n constructor(public elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef) {\n super(elementRef);\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._listenOnLinkQueryChange();\n this._listenOnButtonQueryChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keydownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n if (this.checkbox) {\n this.checkbox.nextValue();\n this._muteEvent(event);\n }\n if (this.radio) {\n this.radio.labelClicked(event);\n this._muteEvent(event);\n }\n }\n this.keyDown.emit(event);\n }\n\n /** Handler for mouse events */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n this.clicked.emit(event);\n if (this.checkbox && !this.link) {\n if (!this.checkbox.elementRef.nativeElement.contains(event.target as Node)) {\n // clicking on the checkbox is not suppressed\n // so we should only process clicks if clicked on the list-item, not checkbox itself\n this.checkbox.nextValue();\n }\n }\n if (this.radio && !this.link) {\n this.radio.labelClicked(event);\n }\n }\n\n /** @hidden */\n private _listenOnLinkQueryChange(): void {\n this.linkDirectives.changes.pipe(takeUntil(this._onDestroy$), startWith(0)).subscribe(() => {\n this.link = this.linkDirectives.length > 0;\n this._changeDetectorRef.detectChanges();\n });\n }\n\n /** @hidden */\n private _listenOnButtonQueryChange(): void {\n this.buttons.changes.pipe(takeUntil(this._onDestroy$), startWith(0)).subscribe(() => {\n this.buttons.forEach(this._addClassToButtons);\n });\n }\n\n /** @hidden */\n private _addClassToButtons(button: ButtonComponent): void {\n button.class += 'fd-list__button';\n button.buildComponentCssClass();\n button.detectChanges();\n }\n\n /** @hidden */\n private _muteEvent(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","<ng-container *ngIf=\"checkbox || radio\">\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n</ng-container>\n\n<ng-content></ng-content>\n\n<span *ngIf=\"counter || counter === 0\" class=\"fd-list__item-counter\">\n {{ counter.toString() | slice: 0:5 }}\n</span>\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-navigation-item-arrow], [fdListNavigaitonItemArrow]'\n})\nexport class ListNavigationItemArrowDirective {\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item-arrow')\n navigationItemArrowClass = true;\n\n /** @hidden */\n @HostBinding('class.sap-icon--navigation-right-arrow')\n rightArrowClass = true;\n\n /** @hidden */\n @HostBinding('class.sap-icon--navigation-down-arrow')\n downArrowClass = false;\n\n /** @hidden */\n @HostBinding('class.is-expanded')\n expanded = false;\n\n /** @hidden */\n _setExpanded(expanded: boolean): void {\n if (this.expanded !== expanded) {\n this.rightArrowClass = !this.rightArrowClass;\n this.downArrowClass = !this.downArrowClass;\n }\n this.expanded = expanded;\n }\n}\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-navigation-item-text], [fdListNavigaitonItemText]'\n})\nexport class ListNavigationItemTextDirective {\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item-text')\n navigationItemTextClass = true;\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n get elementRef(): ElementRef<HTMLElement> {\n return this._elementRef;\n }\n}\n","import { AfterContentInit, Component, ContentChild, forwardRef, HostBinding, HostListener, Input } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ListComponent } from '../list.component';\nimport { ListNavigationItemArrowDirective } from '../directives/list-navigation-item-arrow.directive';\nimport { ListNavigationItemTextDirective } from '../directives/list-navigation-item-text.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-list-navigation-item], [fdListNavigaitonItem]',\n templateUrl: './list-navigation-item.component.html',\n styleUrls: ['./list-navigation-item.component.scss']\n})\nexport class ListNavigationItemComponent implements AfterContentInit {\n /** Whether or not the list item is expanded. */\n @Input()\n @HostBinding('class.is-expanded')\n expanded = false;\n\n /** Whether or not this list item is indicated for navigation. */\n @Input()\n @HostBinding('class.fd-list__navigation-item--indicated')\n indicated = false;\n\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item')\n _navigationItemClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item--expandable')\n _isExpandable = false;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n _tabIndex;\n\n /** @hidden */\n @HostBinding('class.fd-list__navigation-item--condensed')\n _condensed = false;\n\n /** @hidden */\n @ContentChild(forwardRef(() => ListComponent))\n _listComponent: ListComponent;\n\n /** @hidden */\n @ContentChild(ListNavigationItemArrowDirective)\n _listNavigationItemArrow: ListNavigationItemArrowDirective;\n\n /** @hidden */\n @ContentChild(IconComponent)\n _iconComponent: IconComponent;\n\n /** @hidden */\n @ContentChild(ListNavigationItemTextDirective)\n _text: ListNavigationItemTextDirective;\n\n /** @hidden */\n _innerText: string;\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._listComponent) {\n this._isExpandable = true;\n } else {\n this._tabIndex = 0;\n }\n if (this._iconComponent) {\n this._iconComponent._navigationItemIcon = true;\n }\n this._innerText = this._text.elementRef.nativeElement.innerText;\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n onItemClick(event: MouseEvent): void {\n event.stopPropagation();\n this._handleExpandedChanges(!this.expanded);\n }\n\n /** @hidden */\n _childIndicatedAndCollapsed(): boolean {\n let retVal = false;\n this._listComponent?._navItems?.forEach((navItem) => {\n if (navItem.indicated && !navItem.expanded) {\n retVal = true;\n }\n });\n\n return retVal;\n }\n\n /** @hidden */\n private _handleExpandedChanges(expanded: boolean): void {\n if (this._isExpandable) {\n this.expanded = expanded;\n this._listNavigationItemArrow._setExpanded(this.expanded);\n }\n }\n}\n","<ng-container *ngIf=\"!expanded || !_isExpandable || !_condensed || !_listComponent\">\n <ng-content></ng-content\n ><span *ngIf=\"indicated || _childIndicatedAndCollapsed()\" class=\"fd-list__navigation-item-indicator\"></span>\n</ng-container>\n<ng-container *ngIf=\"expanded && _isExpandable && _condensed && _listComponent\">\n <div\n class=\"fd-popover__body fd-popover__body--no-arrow fd-list__navigation-item-popover--first-level\"\n aria-hidden=\"false\"\n >\n <ul class=\"fd-list\">\n <li class=\"fd-list__navigation-item fd-list__navigation-item--condensed\">\n <fd-icon class=\"fd-list__navigation-item-icon\" [glyph]=\"_iconComponent.glyph\"></fd-icon>\n <span class=\"fd-list__navigation-item-text\">{{ _innerText }}</span>\n </li>\n </ul>\n </div>\n <div\n class=\"fd-popover__body fd-popover__body--no-arrow fd-list__navigation-item-popover--second-level\"\n aria-hidden=\"false\"\n >\n <ul class=\"fd-list\">\n <li\n *ngFor=\"let navItem of _listComponent._navItems\"\n class=\"fd-list__navigation-item fd-list__navigation-item--condensed\"\n [class.fd-list__navigation-item--indicated]=\"navItem.indicated\"\n tabindex=\"0\"\n >\n <span *ngIf=\"navItem._innerText\" class=\"fd-list__navigation-item-text\">{{ navItem._innerText }}</span>\n <span *ngIf=\"navItem.indicated\" class=\"fd-list__navigation-item-indicator\"></span>\n </li>\n </ul>\n </div>\n</ng-container>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { merge, Subject, Subscription } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { FocusEscapeDirection, KeyboardSupportService } from '@fundamental-ngx/core/utils';\nimport { ListGroupHeaderDirective } from './directives/list-group-header.directive';\nimport { ListFocusItem } from './list-focus-item.model';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { ListNavigationItemComponent } from './list-navigation-item/list-navigation-item.component';\n\ntype FocusItem = ListGroupHeaderDirective | ListItemComponent;\n/**\n * The directive that represents a list.\n * It is used to display a list of items with simple information such as scopes, names, etc.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-list], [fdList]',\n templateUrl: `./list.component.html`,\n host: {\n class: 'fd-list',\n role: 'list'\n },\n styleUrls: ['./list.component.scss', '../utils/drag-and-drop/drag-and-drop.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [KeyboardSupportService]\n})\nexport class ListComponent implements OnInit, AfterContentInit, OnDestroy {\n /** Whether dropdown mode is included to component, used for Select and Combobox */\n @Input()\n @HostBinding('class.fd-list--dropdown')\n dropdownMode = false;\n\n /** Whether multi mode is included to component, used for MultiInput */\n @Input()\n @HostBinding('class.fd-list--multi-input')\n multiInputMode = false;\n\n /** Whether list is used in mobile mode*/\n @Input()\n @HostBinding('class.fd-list--mobile')\n mobileMode = false;\n\n /** Whether compact mode is included to component */\n @Input()\n @HostBinding('class.fd-list--compact')\n compact?: boolean;\n\n /** Whether list component contains message */\n @Input()\n @HostBinding('class.fd-list--has-message')\n hasMessage = false;\n\n /** Whether list component has removed borders */\n @Input()\n @HostBinding('class.fd-list--no-border')\n noBorder = false;\n\n /** Whether list component has navigation indicators */\n @Input()\n @HostBinding('class.fd-list--navigation-indication')\n navigationIndicator = false;\n\n /** Whether list component has checkboxes or radio buttons included */\n @Input()\n @HostBinding('class.fd-list--selection')\n selection = false;\n\n /** Whether internal keyboard support should be enabled. It's enabled by default */\n @Input()\n keyboardSupport = true;\n\n /** Whether list should have a byline */\n @Input()\n @HostBinding('class.fd-list--byline')\n byline = false;\n\n /** Event thrown, when focus escapes the list */\n @Output()\n focusEscapeList = new EventEmitter<FocusEscapeDirection>();\n\n /** Whether list component includes links */\n @HostBinding('class.fd-list--navigation')\n hasNavigation = false;\n\n /** @hidden */\n @ContentChildren(ListItemComponent)\n items: QueryList<ListItemComponent>;\n\n /** @hidden */\n @ContentChildren(ListNavigationItemComponent)\n _navItems: QueryList<ListNavigationItemComponent>;\n\n /** @hidden */\n @ContentChildren(ListFocusItem)\n private _focusItems: QueryList<FocusItem>;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _keyboardSupportService: KeyboardSupportService<FocusItem>,\n private _cdr: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._cdr.detectChanges();\n })\n );\n }\n this._listenOnListFocusEscape();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._keyboardSupportService.setKeyboardService(this._focusItems, false);\n this._listenOnQueryChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (this.keyboardSupport) {\n this._keyboardSupportService.onKeyDown(event);\n }\n }\n\n /** Set fake focus on element with passed index */\n setItemActive(index: number): void {\n this._keyboardSupportService.keyManager.setActiveItem(index);\n }\n\n /** @hidden */\n private _listenOnQueryChange(): void {\n this._focusItems.changes.pipe(startWith(0), takeUntil(this._onDestroy$)).subscribe(() => {\n this._recheckLinks();\n this._listenOnItemsClick();\n });\n }\n\n /** @hidden */\n private _listenOnItemsClick(): void {\n /** Finish all of the streams, from before */\n this._onRefresh$.next();\n /** Merge refresh/destroy observables */\n const refreshObs = merge(this._onRefresh$, this._onDestroy$);\n this._focusItems.forEach((item, index) =>\n item.clicked.pipe(takeUntil(refreshObs)).subscribe(() => this.setItemActive(index))\n );\n }\n\n /** @hidden */\n private _recheckLinks(): void {\n const items = this.items.filter((item) => item.link);\n this.hasNavigation = items.length > 0;\n }\n\n /** @hidden */\n private _listenOnListFocusEscape(): void {\n this._keyboardSupportService.focusEscapeList\n .pipe(takeUntil(this._onDestroy$))\n .subscribe((direction) => this.focusEscapeList.emit(direction));\n }\n}\n","<ng-content></ng-content>\n","import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core';\nimport { MessageStates } from '@fundamental-ngx/core/form';\nimport { applyCssClass } from '@fundamental-ngx/core/utils';\nimport { CssClassBuilder } from '@fundamental-ngx/core/utils';\n\n@Directive({\n selector: '[fd-list-message], [fdListMessage]'\n})\nexport class ListMessageDirective implements OnChanges, OnInit, CssClassBuilder {\n /** Type of the message. Can be 'success' | 'error' | 'warning' | 'information' */\n @Input()\n type: MessageStates;\n\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return ['fd-list__message', this.type ? 'fd-list__message--' + this.type : '', this.class];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdListFooter], [fd-list-footer]'\n})\nexport class ListFooterDirective {\n /** @hidden */\n @HostBinding('class.fd-list__footer')\n fdListFooterClass = true;\n}\n","import { Directive, ElementRef, HostBinding, Input, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-title], [fdListTitle]'\n})\nexport class ListTitleDirective implements OnInit {\n /** @hidden */\n @HostBinding('class.fd-list__title')\n fdListTitleClass = true;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n @HostBinding('class.fd-list__title--wrap')\n wrap = false;\n\n /** @hidden */\n constructor(public elRef: ElementRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n const nativeEl = this.elRef.nativeElement;\n if (nativeEl.tagName === 'A') {\n nativeEl.setAttribute('tabIndex', '-1');\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\nimport { ListFocusItem } from '../list-focus-item.model';\n\n@Directive({\n selector: '[fdListGroupHeader], [fd-list-group-header]',\n host: {\n '[style.outline]': '\"none\"',\n '[class.fd-list__item]': 'true',\n '[class.fd-list__group-header]': 'true'\n },\n providers: [\n {\n provide: ListFocusItem,\n useExisting: forwardRef(() => ListGroupHeaderDirective)\n }\n ]\n})\nexport class ListGroupHeaderDirective extends ListFocusItem {\n /** tab index attribute */\n @Input()\n @HostBinding('attr.tabindex')\n get tabindex(): number {\n return this._tabIndex;\n }\n set tabindex(value: number) {\n this._tabIndex = coerceNumberProperty(value, -1);\n }\n /** @hidden Implementation of KeyboardSupportItemInterface */\n @Output()\n keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** @hidden */\n clicked = new EventEmitter<MouseEvent>();\n\n /** @hidden */\n private _tabIndex = -1;\n\n constructor(readonly elementRef: ElementRef) {\n super(elementRef);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keydownHandler(event: KeyboardEvent): void {\n this.keyDown.emit(event);\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-secondary] ,[fdListSecondary]'\n})\nexport class ListSecondaryDirective {\n /** @hidden */\n @HostBinding('class.fd-list__secondary')\n fdListSecondaryClass = true;\n}\n","import { Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\nimport { applyCssClass } from '@fundamental-ngx/core/utils';\n\n@Directive({\n selector: '[fdListIcon], [fd-list-icon]'\n})\nexport class ListIconDirective implements OnChanges, OnInit {\n /** The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n * */\n @Input()\n glyph: string;\n\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /** Role attribute for list icon */\n @Input()\n @HostBinding('attr.role')\n role = 'presentation';\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return ['fd-list__icon', this.glyph ? 'sap-icon--' + this.glyph : '', this.class];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: '[fdListByline], [fd-list-byline]',\n host: {\n class: 'fd-list__byline',\n '[class.fd-list__byline--2-col]': 'twoCol',\n '[class.fd-list__byline--wrap]': 'wrap'\n }\n})\nexport class ListBylineDirective {\n /** Whether or not this is a 2-column byline. */\n @Input()\n twoCol = false;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n wrap = false;\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[fdListBylineLeft], [fd-list-byline-left]'\n})\nexport class ListBylineLeftDirective {\n /** @hidden */\n @HostBinding('class.fd-list__byline-left')\n fdListBylineLeftClass = true;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n @HostBinding('class.fd-list__byline-left--wrap')\n wrap = false;\n}\n","import { Directive, Input } from '@angular/core';\n\nexport type ListBylineStatus = 'neutral' | 'positive' | 'negative' | 'critical' | 'informative';\n\n@Directive({\n selector: '[fdListBylineRight], [fd-list-byline-right]',\n host: {\n class: 'fd-list__byline-right',\n '[class.fd-list__byline-right--neutral]': 'status === \"neutral\"',\n '[class.fd-list__byline-right--positive]': 'status === \"positive\"',\n '[class.fd-list__byline-right--negative]': 'status === \"negative\"',\n '[class.fd-list__byline-right--critical]': 'status === \"critical\"',\n '[class.fd-list__byline-right--informative]': 'status === \"informative\"',\n '[class.fd-list__byline-right--wrap]': 'wrap'\n }\n})\nexport class ListBylineRightDirective {\n /** Semantic status of byline\n * Possible options are:\n * 'neutral' | 'positive' | 'negative' | 'critical' | 'informative'\n */\n @Input()\n status: ListBylineStatus;\n\n /** Whether or not this should be wrapped, when too much text. */\n @Input()\n wrap = false;\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[fdListContent], [fd-list-content]'\n})\nexport class ListContentDirective {\n /** @hidden */\n @HostBinding('class.fd-list__content')\n fdListContentClass = true;\n\n /** Whether or not this is a 2-column content. */\n @Input()\n @HostBinding('class.fd-list__content--2-col')\n twoCol = false;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdListThumbnail], [fd-list-thumbnail]'\n})\nexport class ListThumbnailDirective {\n /** @hidden */\n @HostBinding('class.fd-list__thumbnail')\n fdListThumbnailClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fd-list-title-text], [fdListTitleText]'\n})\nexport class ListTitleTextDirective {\n /** @hidden */\n @HostBinding('class.fd-list__title-text')\n fdListTitleText = true;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ListComponent } from './list.component';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { ListMessageDirective } from './list-message.directive';\nimport { ListLinkDirective } from './directives/list-link.directive';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { ListFooterDirective } from './directives/list-footer.directive';\nimport { ListTitleDirective } from './directives/list-title.directive';\nimport { ListGroupHeaderDirective } from './directives/list-group-header.directive';\nimport { ListSecondaryDirective } from './directives/list-secondary.directive';\nimport { ListIconDirective } from './directives/list-icon.directive';\nimport { ListBylineDirective } from './directives/byline/list-byline.directive';\nimport { ListBylineLeftDirective } from './directives/byline/list-byline-left.directive';\nimport { ListBylineRightDirective } from './directives/byline/list-byline-right.directive';\nimport { ListContentDirective } from './directives/byline/list-content.directive';\nimport { ListThumbnailDirective } from './directives/byline/list-thumbnail.directive';\nimport { ListTitleTextDirective } from './directives/list-title-text.directive';\nimport { ListNavigationItemComponent } from './list-navigation-item/list-navigation-item.component';\nimport { ListNavigationItemArrowDirective } from './directives/list-navigation-item-arrow.directive';\nimport { ListNavigationItemTextDirective } from './directives/list-navigation-item-text.directive';\nimport { IconModule } from '@fundamental-ngx/core/icon';\n\n@NgModule({\n declarations: [\n ListComponent,\n ListItemComponent,\n ListTitleDirective,\n ListSecondaryDirective,\n ListIconDirective,\n ListFooterDirective,\n ListGroupHeaderDirective,\n ListMessageDirective,\n ListLinkDirective,\n ListBylineDirective,\n ListBylineLeftDirective,\n ListBylineRightDirective,\n ListContentDirective,\n ListThumbnailDirective,\n ListTitleTextDirective,\n ListNavigationItemComponent,\n ListNavigationItemArrowDirective,\n ListNavigationItemTextDirective\n ],\n imports: [CommonModule, FormModule, IconModule],\n exports: [\n ListComponent,\n ListItemComponent,\n ListTitleDirective,\n ListFooterDirective,\n ListGroupHeaderDirective,\n ListSecondaryDirective,\n ListIconDirective,\n ListMessageDirective,\n ListLinkDirective,\n ListBylineDirective,\n ListBylineLeftDirective,\n ListBylineRightDirective,\n ListContentDirective,\n ListThumbnailDirective,\n ListTitleTextDirective,\n ListNavigationItemComponent,\n ListNavigationItemArrowDirective,\n ListNavigationItemTextDirective\n ]\n})\nexport class ListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { CommonModule } from '@angular/common';
|
|
|
5
5
|
import { __decorate, __metadata } from 'tslib';
|
|
6
6
|
import * as i10 from '@angular/forms';
|
|
7
7
|
import { FormControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
8
|
-
import { DOWN_ARROW, UP_ARROW,
|
|
8
|
+
import { SPACE, ENTER, DOWN_ARROW, UP_ARROW, ESCAPE, TAB } from '@angular/cdk/keycodes';
|
|
9
9
|
import { BehaviorSubject, Subscription, combineLatest } from 'rxjs';
|
|
10
10
|
import * as i2$1 from '@fundamental-ngx/core/popover';
|
|
11
11
|
import { PopoverComponent, PopoverModule } from '@fundamental-ngx/core/popover';
|
|
@@ -15,10 +15,10 @@ import { TokenizerComponent, TokenModule } from '@fundamental-ngx/core/token';
|
|
|
15
15
|
import * as i6 from '@fundamental-ngx/core/list';
|
|
16
16
|
import { ListComponent, ListModule } from '@fundamental-ngx/core/list';
|
|
17
17
|
import * as i1$1 from '@fundamental-ngx/core/utils';
|
|
18
|
-
import { uuidv4, KeyUtil, applyCssClass, PipeModule, AutoCompleteModule } from '@fundamental-ngx/core/utils';
|
|
18
|
+
import { RangeSelector, uuidv4, KeyUtil, applyCssClass, PipeModule, AutoCompleteModule } from '@fundamental-ngx/core/utils';
|
|
19
19
|
import * as i1 from '@fundamental-ngx/core/dialog';
|
|
20
20
|
import { DialogModule } from '@fundamental-ngx/core/dialog';
|
|
21
|
-
import { takeUntil, startWith, map } from 'rxjs/operators';
|
|
21
|
+
import { takeUntil, distinctUntilChanged, first, startWith, map, shareReplay } from 'rxjs/operators';
|
|
22
22
|
import { MobileModeBase, MobileModeControl, MOBILE_MODE_CONFIG } from '@fundamental-ngx/core/mobile-mode';
|
|
23
23
|
import * as i2 from '@fundamental-ngx/core/title';
|
|
24
24
|
import * as i3 from '@fundamental-ngx/core/button';
|
|
@@ -252,6 +252,8 @@ class MultiInputComponent {
|
|
|
252
252
|
/** @hidden */
|
|
253
253
|
this._subscriptions = new Subscription();
|
|
254
254
|
/** @hidden */
|
|
255
|
+
this._rangeSelector = new RangeSelector();
|
|
256
|
+
/** @hidden */
|
|
255
257
|
this.onChange = () => { };
|
|
256
258
|
/** @hidden */
|
|
257
259
|
this.onTouched = () => { };
|
|
@@ -288,8 +290,10 @@ class MultiInputComponent {
|
|
|
288
290
|
if (!this.inputId) {
|
|
289
291
|
this.inputId = uuidv4();
|
|
290
292
|
}
|
|
291
|
-
this._subscriptions.add(this._searchTermCtrl.valueChanges.subscribe((searchTerm) => {
|
|
293
|
+
this._subscriptions.add(this._searchTermCtrl.valueChanges.pipe(distinctUntilChanged()).subscribe((searchTerm) => {
|
|
292
294
|
this.searchTermChange.emit(searchTerm);
|
|
295
|
+
// resetting existing selection state, if any
|
|
296
|
+
this._rangeSelector.reset();
|
|
293
297
|
}));
|
|
294
298
|
}
|
|
295
299
|
/** @hidden */
|
|
@@ -394,10 +398,34 @@ class MultiInputComponent {
|
|
|
394
398
|
this._propagateChange();
|
|
395
399
|
}
|
|
396
400
|
/** @hidden */
|
|
397
|
-
|
|
398
|
-
if (event) {
|
|
399
|
-
|
|
401
|
+
_onCheckboxKeyup(value, event, index) {
|
|
402
|
+
if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {
|
|
403
|
+
this._onCheckboxClick(value, event, index);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
/** @hidden */
|
|
407
|
+
async _onCheckboxClick(value, event, index, isListItem = false) {
|
|
408
|
+
const toggledSelection = !this._selectionModel.isSelected(value);
|
|
409
|
+
this._rangeSelector.onRangeElementToggled(index, event);
|
|
410
|
+
const sub = this.viewModel$.pipe(first()).subscribe((vm) => {
|
|
411
|
+
this._rangeSelector.applyValueToEachInRange((idx) => this._handleSelect(toggledSelection, vm.displayedOptions[idx].value, false));
|
|
412
|
+
});
|
|
413
|
+
this._subscriptions.add(sub);
|
|
414
|
+
if (isListItem) {
|
|
415
|
+
this.openChangeHandle(false);
|
|
400
416
|
}
|
|
417
|
+
else {
|
|
418
|
+
// stop propagation on the checkbox so event doesn't reach the list item
|
|
419
|
+
event.stopPropagation();
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
/** @hidden */
|
|
423
|
+
_onTokenClick(value, resetSearch, event) {
|
|
424
|
+
event?.preventDefault(); // prevent this function from being called twice when checkbox updates
|
|
425
|
+
this._handleSelect(false, value, resetSearch);
|
|
426
|
+
}
|
|
427
|
+
/** @hidden */
|
|
428
|
+
_handleSelect(checked, value, resetSearch = true) {
|
|
401
429
|
const previousLength = this._selectionModel.selected.length;
|
|
402
430
|
if (checked) {
|
|
403
431
|
this._selectionModel.select(value);
|
|
@@ -416,7 +444,6 @@ class MultiInputComponent {
|
|
|
416
444
|
// On Mobile mode changes are propagated only on approve.
|
|
417
445
|
this._propagateChange();
|
|
418
446
|
}
|
|
419
|
-
/** @hidden */
|
|
420
447
|
_handleInputKeydown(event) {
|
|
421
448
|
if (KeyUtil.isKeyCode(event, DOWN_ARROW) && !this.mobile) {
|
|
422
449
|
if (event.altKey) {
|
|
@@ -621,7 +648,7 @@ class MultiInputComponent {
|
|
|
621
648
|
selectedOptions,
|
|
622
649
|
displayedOptions
|
|
623
650
|
};
|
|
624
|
-
}));
|
|
651
|
+
}), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
625
652
|
}
|
|
626
653
|
}
|
|
627
654
|
MultiInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: MultiInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.DynamicComponentService }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: i1$1.RtlService, optional: true }, { token: i1$1.ContentDensityService, optional: true }, { token: i1$1.FocusTrapService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -632,7 +659,7 @@ MultiInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
632
659
|
multi: true
|
|
633
660
|
},
|
|
634
661
|
MenuKeyboardService
|
|
635
|
-
], viewQueries: [{ propertyName: "popoverRef", first: true, predicate: PopoverComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["control"], descendants: true, read: TemplateRef }, { propertyName: "listTemplate", first: true, predicate: ["list"], descendants: true, read: TemplateRef }, { propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true, read: ElementRef }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"viewModel$ | async as vm\">\n <div class=\"fd-multi-input fd-multi-input-custom\">\n <div class=\"fd-multi-input-field\">\n <ng-container [ngTemplateOutlet]=\"control\" *ngIf=\"mobile && !open\"></ng-container>\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list\"\n *ngIf=\"!mobile\"\n [isOpen]=\"open\"\n (isOpenChange)=\"openChangeHandle($event)\"\n (input)=\"!open && openChangeHandle(true)\"\n [triggers]=\"[]\"\n [maxWidth]=\"bodyMaxWidth\"\n [focusTrapped]=\"true\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n class=\"fd-multi-input-popover-custom\"\n >\n <fd-popover-control>\n <form (submit)=\"_onSubmit()\">\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </form>\n </fd-popover-control>\n <fd-popover-body\n [attr.aria-hidden]=\"!open\"\n [class.fd-popover__body--hidden]=\"!vm.displayedOptions.length\"\n >\n <ng-container *ngTemplateOutlet=\"list\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n\n <ng-template #control>\n <fd-input-group\n class=\"fd-multi-input-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"displayAddonButton\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [isExpanded]=\"open && !mobile && vm.displayedOptions.length > 0\"\n [isControl]=\"true\"\n [glyph]=\"displayAddonButton ? glyph : ''\"\n [iconTitle]=\"title\"\n (addOnButtonClicked)=\"_addOnButtonClicked()\"\n >\n <fd-tokenizer\n [compactCollapse]=\"compactCollapse\"\n [compact]=\"compact\"\n [open]=\"open\"\n [tokenizerFocusable]=\"false\"\n (moreClickedEvent)=\"_moreClicked()\"\n class=\"fd-multi-input-tokenizer-custom\"\n [class.fd-multi-input-tokenizer-custom--compact]=\"compact\"\n tabindex=\"-1\"\n >\n <fd-token\n *ngFor=\"let option of vm.selectedOptions\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n (onCloseClick)=\"_handleSelect(false, option.value, true, $event)\"\n (onRemove)=\"_handleSelect(false, option.value, false)\"\n >\n <span [innerHtml]=\"option.label\"></span>\n </fd-token>\n <input\n type=\"text\"\n class=\"fd-input fd-tokenizer__input fd-multi-input-tokenizer-input\"\n autocomplete=\"off\"\n fd-form-control\n fd-input-group-input\n fd-auto-complete\n (onComplete)=\"_handleComplete($event)\"\n #searchInputElement\n [displayFn]=\"displayFn\"\n [inputText]=\"_searchTermCtrl.value\"\n [options]=\"dropdownValues\"\n [enable]=\"autoComplete && !mobile\"\n [placeholder]=\"placeholder\"\n [formControl]=\"_searchTermCtrl\"\n [compact]=\"compact\"\n [attr.aria-required]=\"required\"\n [class.fd-input--compact]=\"compact\"\n (keydown)=\"_handleInputKeydown($event)\"\n [attr.id]=\"inputId\"\n />\n </fd-tokenizer>\n </fd-input-group>\n </ng-template>\n\n <ng-template #list>\n <ul\n *ngIf=\"vm.displayedOptions.length\"\n fd-list\n class=\"fd-multi-input-menu-overflow\"\n [selection]=\"true\"\n [mobileMode]=\"mobile\"\n [compact]=\"compact\"\n [style.maxHeight]=\"!mobile ? maxHeight : 'auto'\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [style.minWidth]=\"'100%'\"\n >\n <li\n *ngFor=\"let option of vm.displayedOptions\"\n fd-list-item\n (click)=\"dialogApprove()\"\n [selected]=\"_selectionModel.isSelected(option.value)\"\n >\n <fd-checkbox\n [compact]=\"compact\"\n (ngModelChange)=\"_handleSelect($event, option.value, false)\"\n [ngModel]=\"_selectionModel.isSelected(option.value)\"\n >\n <!-- TODO -->\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"itemSource\"\n [ngTemplateOutletContext]=\"{ option: option }\"\n ></ng-container>\n </li>\n <li\n *ngIf=\"showAllButton && vm.displayedOptions.length < dropdownValues.length\"\n fd-list-item\n class=\"fd-multi-input-show-all\"\n (keyDown)=\"_showAllKeyDown($event)\"\n (click)=\"_showAllClicked($event)\"\n >\n <a fd-link tabindex=\"0\">Show All ({{ dropdownValues.length }})</a>\n </li>\n </ul>\n </ng-template>\n\n <ng-template let-option=\"option\" #itemSource>\n <span\n *ngIf=\"!itemTemplate\"\n fd-list-title\n [innerHtml]=\"option.label | highlight: _searchTermCtrl.value:highlight\"\n >\n </span>\n\n <ng-container *ngIf=\"itemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option.item }\"\n ></ng-container>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fd-multi-input-input-group-custom{max-width:100%}.fd-multi-input-custom{display:block}.fd-multi-input-item{cursor:pointer;padding:0}.fd-multi-input-popover-size{overflow:auto;display:block}.fd-multi-input-popover-custom.fd-popover-custom{max-width:100%;display:block}.fd-multi-input-popover-custom.fd-popover-custom .fd-tokenizer{height:100%}.fd-multi-input-menu-overflow{max-width:37.5rem;overflow:auto}.fd-input.fd-multi-input-tokenizer-input{margin-top:0;margin-bottom:0;padding-left:0;background-color:transparent}.fd-multi-input-show-all{width:100%;display:flex;justify-content:flex-end;background-color:transparent}.fd-multi-input-show-all .fd-link:active{color:inherit}.fd-multi-input-checkbox{width:100%;cursor:pointer}.fd-multi-input-checkbox .fd-checkbox__label{color:inherit}.fd-list--multi-input{max-width:100%}.fd-popover__body--hidden{display:none}\n"], components: [{ type: i2$1.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { type: i2$1.PopoverControlComponent, selector: "fd-popover-control" }, { type: i2$1.PopoverBodyComponent, selector: "fd-popover-body" }, { type: i3$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "compact", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby"], outputs: ["addOnButtonClicked", "search"] }, { type: i4$1.TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "ariaRoleDescription", "compact", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { type: i4$1.TokenComponent, selector: "fd-token", inputs: ["disabled", "compact", "selected", "readOnly", "deleteButtonLabel", "ariaRoleDescription"], outputs: ["onCloseClick", "onRemove", "onTokenClick"] }, { type: i5.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "compact", "type", "class"] }, { type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "compact", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "tabindex", "noData", "action", "interactive", "growing", "counter", "unread"], outputs: ["keyDown"] }, { type: i7.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "compact", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { type: i8.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.InputGroupInputDirective, selector: "[fd-input-group-input]", inputs: ["class", "compact"] }, { type: i1$1.AutoCompleteDirective, selector: "[fd-auto-complete]", inputs: ["options", "inputText", "enable", "displayFn"], outputs: ["onComplete"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }], pipes: { "async": i9.AsyncPipe, "highlight": i1$1.SearchHighlightPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
662
|
+
], viewQueries: [{ propertyName: "popoverRef", first: true, predicate: PopoverComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["control"], descendants: true, read: TemplateRef }, { propertyName: "listTemplate", first: true, predicate: ["list"], descendants: true, read: TemplateRef }, { propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true, read: ElementRef }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"viewModel$ | async as vm\">\n <div class=\"fd-multi-input fd-multi-input-custom\">\n <div class=\"fd-multi-input-field\">\n <ng-container [ngTemplateOutlet]=\"control\" *ngIf=\"mobile && !open\"></ng-container>\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list\"\n *ngIf=\"!mobile\"\n [isOpen]=\"open\"\n (isOpenChange)=\"openChangeHandle($event)\"\n (input)=\"!open && openChangeHandle(true)\"\n [triggers]=\"[]\"\n [maxWidth]=\"bodyMaxWidth\"\n [focusTrapped]=\"true\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n class=\"fd-multi-input-popover-custom\"\n >\n <fd-popover-control>\n <form (submit)=\"_onSubmit()\">\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </form>\n </fd-popover-control>\n <fd-popover-body\n [attr.aria-hidden]=\"!open\"\n [class.fd-popover__body--hidden]=\"!vm.displayedOptions.length\"\n >\n <ng-container *ngTemplateOutlet=\"list\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n\n <ng-template #control>\n <fd-input-group\n class=\"fd-multi-input-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"displayAddonButton\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [isExpanded]=\"open && !mobile && vm.displayedOptions.length > 0\"\n [isControl]=\"true\"\n [glyph]=\"displayAddonButton ? glyph : ''\"\n [iconTitle]=\"title\"\n (addOnButtonClicked)=\"_addOnButtonClicked()\"\n >\n <fd-tokenizer\n [compactCollapse]=\"compactCollapse\"\n [compact]=\"compact\"\n [open]=\"open\"\n [tokenizerFocusable]=\"false\"\n (moreClickedEvent)=\"_moreClicked()\"\n class=\"fd-multi-input-tokenizer-custom\"\n [class.fd-multi-input-tokenizer-custom--compact]=\"compact\"\n tabindex=\"-1\"\n >\n <fd-token\n *ngFor=\"let option of vm.selectedOptions\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n (onCloseClick)=\"_onTokenClick(option.value, true, $event)\"\n (onRemove)=\"_onTokenClick(option.value, false)\"\n >\n <span [innerHtml]=\"option.label\"></span>\n </fd-token>\n <input\n type=\"text\"\n class=\"fd-input fd-tokenizer__input fd-multi-input-tokenizer-input\"\n autocomplete=\"off\"\n fd-form-control\n fd-input-group-input\n fd-auto-complete\n (onComplete)=\"_handleComplete($event)\"\n #searchInputElement\n [displayFn]=\"displayFn\"\n [inputText]=\"_searchTermCtrl.value\"\n [options]=\"dropdownValues\"\n [enable]=\"autoComplete && !mobile\"\n [placeholder]=\"placeholder\"\n [formControl]=\"_searchTermCtrl\"\n [compact]=\"compact\"\n [attr.aria-required]=\"required\"\n [class.fd-input--compact]=\"compact\"\n (keydown)=\"_handleInputKeydown($event)\"\n [attr.id]=\"inputId\"\n />\n </fd-tokenizer>\n </fd-input-group>\n </ng-template>\n\n <ng-template #list>\n <ul\n *ngIf=\"vm.displayedOptions.length\"\n fd-list\n class=\"fd-multi-input-menu-overflow\"\n [selection]=\"true\"\n [mobileMode]=\"mobile\"\n [compact]=\"compact\"\n [style.maxHeight]=\"!mobile ? maxHeight : 'auto'\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [style.minWidth]=\"'100%'\"\n >\n <li\n *ngFor=\"let option of vm.displayedOptions; let idx = index\"\n fd-list-item\n (click)=\"_onCheckboxClick(option.value, $event, idx, true)\"\n (keyup)=\"_onCheckboxKeyup(option.value, $event, idx)\"\n [selected]=\"_selectionModel.isSelected(option.value)\"\n >\n <fd-checkbox\n [compact]=\"compact\"\n [value]=\"_selectionModel.isSelected(option.value)\"\n (click)=\"_onCheckboxClick(option.value, $event, idx)\"\n >\n <!-- TODO -->\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"itemSource\"\n [ngTemplateOutletContext]=\"{ option: option }\"\n ></ng-container>\n </li>\n <li\n *ngIf=\"showAllButton && vm.displayedOptions.length < dropdownValues.length\"\n fd-list-item\n class=\"fd-multi-input-show-all\"\n (keyDown)=\"_showAllKeyDown($event)\"\n (click)=\"_showAllClicked($event)\"\n >\n <a fd-link tabindex=\"0\">Show All ({{ dropdownValues.length }})</a>\n </li>\n </ul>\n </ng-template>\n\n <ng-template let-option=\"option\" #itemSource>\n <span\n *ngIf=\"!itemTemplate\"\n fd-list-title\n [innerHtml]=\"option.label | highlight: _searchTermCtrl.value:highlight\"\n >\n </span>\n\n <ng-container *ngIf=\"itemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option.item }\"\n ></ng-container>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fd-multi-input-input-group-custom{max-width:100%}.fd-multi-input-custom{display:block}.fd-multi-input-item{cursor:pointer;padding:0}.fd-multi-input-popover-size{overflow:auto;display:block}.fd-multi-input-popover-custom.fd-popover-custom{max-width:100%;display:block}.fd-multi-input-popover-custom.fd-popover-custom .fd-tokenizer{height:100%}.fd-multi-input-menu-overflow{max-width:37.5rem;overflow:auto}.fd-input.fd-multi-input-tokenizer-input{margin-top:0;margin-bottom:0;padding-left:0;background-color:transparent}.fd-multi-input-show-all{width:100%;display:flex;justify-content:flex-end;background-color:transparent}.fd-multi-input-show-all .fd-link:active{color:inherit}.fd-multi-input-checkbox{width:100%;cursor:pointer}.fd-multi-input-checkbox .fd-checkbox__label{color:inherit}.fd-list--multi-input{max-width:100%}.fd-popover__body--hidden{display:none}\n"], components: [{ type: i2$1.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { type: i2$1.PopoverControlComponent, selector: "fd-popover-control" }, { type: i2$1.PopoverBodyComponent, selector: "fd-popover-body" }, { type: i3$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "compact", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby"], outputs: ["addOnButtonClicked", "search"] }, { type: i4$1.TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "ariaRoleDescription", "compact", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { type: i4$1.TokenComponent, selector: "fd-token", inputs: ["disabled", "compact", "selected", "readOnly", "deleteButtonLabel", "ariaRoleDescription"], outputs: ["onCloseClick", "onRemove", "onTokenClick"] }, { type: i5.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "compact", "type", "class"] }, { type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "compact", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "tabindex", "noData", "action", "interactive", "growing", "counter", "unread"], outputs: ["keyDown"] }, { type: i7.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "compact", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { type: i8.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.InputGroupInputDirective, selector: "[fd-input-group-input]", inputs: ["class", "compact"] }, { type: i1$1.AutoCompleteDirective, selector: "[fd-auto-complete]", inputs: ["options", "inputText", "enable", "displayFn"], outputs: ["onComplete"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }], pipes: { "async": i9.AsyncPipe, "highlight": i1$1.SearchHighlightPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
636
663
|
__decorate([
|
|
637
664
|
applyCssClass,
|
|
638
665
|
__metadata("design:type", Function),
|
|
@@ -650,7 +677,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
650
677
|
multi: true
|
|
651
678
|
},
|
|
652
679
|
MenuKeyboardService
|
|
653
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"viewModel$ | async as vm\">\n <div class=\"fd-multi-input fd-multi-input-custom\">\n <div class=\"fd-multi-input-field\">\n <ng-container [ngTemplateOutlet]=\"control\" *ngIf=\"mobile && !open\"></ng-container>\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list\"\n *ngIf=\"!mobile\"\n [isOpen]=\"open\"\n (isOpenChange)=\"openChangeHandle($event)\"\n (input)=\"!open && openChangeHandle(true)\"\n [triggers]=\"[]\"\n [maxWidth]=\"bodyMaxWidth\"\n [focusTrapped]=\"true\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n class=\"fd-multi-input-popover-custom\"\n >\n <fd-popover-control>\n <form (submit)=\"_onSubmit()\">\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </form>\n </fd-popover-control>\n <fd-popover-body\n [attr.aria-hidden]=\"!open\"\n [class.fd-popover__body--hidden]=\"!vm.displayedOptions.length\"\n >\n <ng-container *ngTemplateOutlet=\"list\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n\n <ng-template #control>\n <fd-input-group\n class=\"fd-multi-input-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"displayAddonButton\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [isExpanded]=\"open && !mobile && vm.displayedOptions.length > 0\"\n [isControl]=\"true\"\n [glyph]=\"displayAddonButton ? glyph : ''\"\n [iconTitle]=\"title\"\n (addOnButtonClicked)=\"_addOnButtonClicked()\"\n >\n <fd-tokenizer\n [compactCollapse]=\"compactCollapse\"\n [compact]=\"compact\"\n [open]=\"open\"\n [tokenizerFocusable]=\"false\"\n (moreClickedEvent)=\"_moreClicked()\"\n class=\"fd-multi-input-tokenizer-custom\"\n [class.fd-multi-input-tokenizer-custom--compact]=\"compact\"\n tabindex=\"-1\"\n >\n <fd-token\n *ngFor=\"let option of vm.selectedOptions\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n (onCloseClick)=\"
|
|
680
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"viewModel$ | async as vm\">\n <div class=\"fd-multi-input fd-multi-input-custom\">\n <div class=\"fd-multi-input-field\">\n <ng-container [ngTemplateOutlet]=\"control\" *ngIf=\"mobile && !open\"></ng-container>\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list\"\n *ngIf=\"!mobile\"\n [isOpen]=\"open\"\n (isOpenChange)=\"openChangeHandle($event)\"\n (input)=\"!open && openChangeHandle(true)\"\n [triggers]=\"[]\"\n [maxWidth]=\"bodyMaxWidth\"\n [focusTrapped]=\"true\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n class=\"fd-multi-input-popover-custom\"\n >\n <fd-popover-control>\n <form (submit)=\"_onSubmit()\">\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </form>\n </fd-popover-control>\n <fd-popover-body\n [attr.aria-hidden]=\"!open\"\n [class.fd-popover__body--hidden]=\"!vm.displayedOptions.length\"\n >\n <ng-container *ngTemplateOutlet=\"list\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n\n <ng-template #control>\n <fd-input-group\n class=\"fd-multi-input-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"displayAddonButton\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [isExpanded]=\"open && !mobile && vm.displayedOptions.length > 0\"\n [isControl]=\"true\"\n [glyph]=\"displayAddonButton ? glyph : ''\"\n [iconTitle]=\"title\"\n (addOnButtonClicked)=\"_addOnButtonClicked()\"\n >\n <fd-tokenizer\n [compactCollapse]=\"compactCollapse\"\n [compact]=\"compact\"\n [open]=\"open\"\n [tokenizerFocusable]=\"false\"\n (moreClickedEvent)=\"_moreClicked()\"\n class=\"fd-multi-input-tokenizer-custom\"\n [class.fd-multi-input-tokenizer-custom--compact]=\"compact\"\n tabindex=\"-1\"\n >\n <fd-token\n *ngFor=\"let option of vm.selectedOptions\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n (onCloseClick)=\"_onTokenClick(option.value, true, $event)\"\n (onRemove)=\"_onTokenClick(option.value, false)\"\n >\n <span [innerHtml]=\"option.label\"></span>\n </fd-token>\n <input\n type=\"text\"\n class=\"fd-input fd-tokenizer__input fd-multi-input-tokenizer-input\"\n autocomplete=\"off\"\n fd-form-control\n fd-input-group-input\n fd-auto-complete\n (onComplete)=\"_handleComplete($event)\"\n #searchInputElement\n [displayFn]=\"displayFn\"\n [inputText]=\"_searchTermCtrl.value\"\n [options]=\"dropdownValues\"\n [enable]=\"autoComplete && !mobile\"\n [placeholder]=\"placeholder\"\n [formControl]=\"_searchTermCtrl\"\n [compact]=\"compact\"\n [attr.aria-required]=\"required\"\n [class.fd-input--compact]=\"compact\"\n (keydown)=\"_handleInputKeydown($event)\"\n [attr.id]=\"inputId\"\n />\n </fd-tokenizer>\n </fd-input-group>\n </ng-template>\n\n <ng-template #list>\n <ul\n *ngIf=\"vm.displayedOptions.length\"\n fd-list\n class=\"fd-multi-input-menu-overflow\"\n [selection]=\"true\"\n [mobileMode]=\"mobile\"\n [compact]=\"compact\"\n [style.maxHeight]=\"!mobile ? maxHeight : 'auto'\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [style.minWidth]=\"'100%'\"\n >\n <li\n *ngFor=\"let option of vm.displayedOptions; let idx = index\"\n fd-list-item\n (click)=\"_onCheckboxClick(option.value, $event, idx, true)\"\n (keyup)=\"_onCheckboxKeyup(option.value, $event, idx)\"\n [selected]=\"_selectionModel.isSelected(option.value)\"\n >\n <fd-checkbox\n [compact]=\"compact\"\n [value]=\"_selectionModel.isSelected(option.value)\"\n (click)=\"_onCheckboxClick(option.value, $event, idx)\"\n >\n <!-- TODO -->\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"itemSource\"\n [ngTemplateOutletContext]=\"{ option: option }\"\n ></ng-container>\n </li>\n <li\n *ngIf=\"showAllButton && vm.displayedOptions.length < dropdownValues.length\"\n fd-list-item\n class=\"fd-multi-input-show-all\"\n (keyDown)=\"_showAllKeyDown($event)\"\n (click)=\"_showAllClicked($event)\"\n >\n <a fd-link tabindex=\"0\">Show All ({{ dropdownValues.length }})</a>\n </li>\n </ul>\n </ng-template>\n\n <ng-template let-option=\"option\" #itemSource>\n <span\n *ngIf=\"!itemTemplate\"\n fd-list-title\n [innerHtml]=\"option.label | highlight: _searchTermCtrl.value:highlight\"\n >\n </span>\n\n <ng-container *ngIf=\"itemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option.item }\"\n ></ng-container>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fd-multi-input-input-group-custom{max-width:100%}.fd-multi-input-custom{display:block}.fd-multi-input-item{cursor:pointer;padding:0}.fd-multi-input-popover-size{overflow:auto;display:block}.fd-multi-input-popover-custom.fd-popover-custom{max-width:100%;display:block}.fd-multi-input-popover-custom.fd-popover-custom .fd-tokenizer{height:100%}.fd-multi-input-menu-overflow{max-width:37.5rem;overflow:auto}.fd-input.fd-multi-input-tokenizer-input{margin-top:0;margin-bottom:0;padding-left:0;background-color:transparent}.fd-multi-input-show-all{width:100%;display:flex;justify-content:flex-end;background-color:transparent}.fd-multi-input-show-all .fd-link:active{color:inherit}.fd-multi-input-checkbox{width:100%;cursor:pointer}.fd-multi-input-checkbox .fd-checkbox__label{color:inherit}.fd-list--multi-input{max-width:100%}.fd-popover__body--hidden{display:none}\n"] }]
|
|
654
681
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.DynamicComponentService }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: i1$1.RtlService, decorators: [{
|
|
655
682
|
type: Optional
|
|
656
683
|
}] }, { type: i1$1.ContentDensityService, decorators: [{
|