@fundamental-ngx/core 0.47.0-rc.2 → 0.47.0-rc.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/breadcrumb/breadcrumb.component.d.ts +1 -1
  2. package/carousel/carousel-item/carousel-item.component.d.ts +4 -4
  3. package/carousel/carousel-item.directive.d.ts +4 -4
  4. package/checkbox/checkbox/checkbox.component.d.ts +10 -10
  5. package/esm2022/breadcrumb/breadcrumb.component.mjs +2 -2
  6. package/esm2022/calendar/calendar-header/calendar-header.component.mjs +4 -5
  7. package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +4 -5
  8. package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +4 -5
  9. package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +4 -5
  10. package/esm2022/carousel/carousel-item/carousel-item.component.mjs +1 -1
  11. package/esm2022/carousel/carousel-item.directive.mjs +1 -1
  12. package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
  13. package/esm2022/combobox/combobox.component.mjs +2 -2
  14. package/esm2022/date-picker/date-picker.component.mjs +4 -5
  15. package/esm2022/datetime-picker/datetime-picker.component.mjs +8 -10
  16. package/esm2022/form/form-label/form-label.component.mjs +5 -6
  17. package/esm2022/input-group/input-group.component.mjs +7 -5
  18. package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +4 -5
  19. package/esm2022/message-box/directives/message-box-template.directive.mjs +3 -3
  20. package/esm2022/message-strip/message-strip.component.mjs +8 -10
  21. package/esm2022/multi-combobox/base-multi-combobox.class.mjs +4 -4
  22. package/esm2022/multi-combobox/helpers.mjs +1 -1
  23. package/esm2022/multi-combobox/multi-announcer/multi-announcer.directive.mjs +11 -5
  24. package/esm2022/multi-combobox/multi-combobox.component.mjs +3 -3
  25. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +4 -5
  26. package/esm2022/multi-input/multi-input.component.mjs +3 -3
  27. package/esm2022/notification/notification-utils/notification-config.mjs +1 -1
  28. package/esm2022/notification/notification-utils/notification-ref.mjs +1 -1
  29. package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -5
  30. package/esm2022/overflow-layout/overflow-layout.service.mjs +3 -3
  31. package/esm2022/pagination/pagination.component.mjs +1 -1
  32. package/esm2022/popover/popover-mobile/popover-mobile.module.mjs +6 -6
  33. package/esm2022/radio/radio-button/radio-button.component.mjs +2 -2
  34. package/esm2022/select/select-mobile/select-mobile.module.mjs +5 -5
  35. package/esm2022/select/select.component.mjs +3 -3
  36. package/esm2022/select/select.interface.mjs +1 -1
  37. package/esm2022/shellbar/product-menu/product-menu.component.mjs +8 -11
  38. package/esm2022/shellbar/shellbar-action/shellbar-action.component.mjs +6 -7
  39. package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +6 -7
  40. package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +5 -6
  41. package/esm2022/splitter/splitter-pane-container/splitter-pane-container.component.mjs +1 -1
  42. package/esm2022/switch/switch.component.mjs +1 -1
  43. package/esm2022/tabs/tab-list.component.mjs +2 -2
  44. package/esm2022/time/time-column/time-column.component.mjs +1 -1
  45. package/esm2022/time/time.component.mjs +1 -1
  46. package/esm2022/time-picker/time-picker.component.mjs +2 -2
  47. package/esm2022/token/tokenizer.component.mjs +6 -7
  48. package/esm2022/toolbar/toolbar.component.mjs +10 -12
  49. package/esm2022/tree/components/tree-item/tree-item.component.mjs +5 -6
  50. package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +4 -6
  51. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +1 -1
  52. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-calendar.mjs +9 -10
  54. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  58. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-date-picker.mjs +3 -4
  60. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +8 -10
  62. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-form.mjs +4 -5
  64. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-input-group.mjs +6 -4
  66. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-menu.mjs +3 -4
  68. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
  70. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-message-strip.mjs +7 -9
  72. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +12 -7
  74. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-multi-input.mjs +6 -7
  76. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +18 -5
  79. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-popover.mjs +4 -4
  82. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-radio.mjs +1 -1
  84. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-select.mjs +6 -6
  86. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-shellbar.mjs +12 -14
  88. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-tabs.mjs +1 -1
  92. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-time-picker.mjs +1 -1
  94. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  96. package/fesm2022/fundamental-ngx-core-token.mjs +5 -6
  97. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  98. package/fesm2022/fundamental-ngx-core-toolbar.mjs +7 -8
  99. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  100. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -5
  101. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  102. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +6 -7
  103. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  104. package/fundamental-ngx-core-v0.47.0-rc.21.tgz +0 -0
  105. package/input-group/input-group.component.d.ts +10 -4
  106. package/message-box/directives/message-box-template.directive.d.ts +2 -2
  107. package/message-strip/message-strip.component.d.ts +2 -2
  108. package/multi-combobox/base-multi-combobox.class.d.ts +7 -7
  109. package/multi-combobox/helpers.d.ts +3 -3
  110. package/multi-combobox/multi-announcer/multi-announcer.directive.d.ts +4 -2
  111. package/notification/notification-utils/notification-config.d.ts +2 -2
  112. package/notification/notification-utils/notification-ref.d.ts +5 -5
  113. package/overflow-layout/overflow-layout.component.d.ts +9 -1
  114. package/overflow-layout/overflow-layout.service.d.ts +1 -1
  115. package/package.json +3 -3
  116. package/pagination/pagination.component.d.ts +2 -2
  117. package/popover/popover-mobile/popover-mobile.module.d.ts +1 -1
  118. package/radio/radio-button/radio-button.component.d.ts +12 -12
  119. package/schematics/add-dependencies/index.js +4 -4
  120. package/select/select-mobile/select-mobile.module.d.ts +1 -1
  121. package/select/select.interface.d.ts +8 -8
  122. package/shellbar/product-menu/product-menu.component.d.ts +3 -3
  123. package/splitter/splitter-pane-container/splitter-pane-container.component.d.ts +1 -1
  124. package/switch/switch.component.d.ts +1 -1
  125. package/time/time-column/time-column.component.d.ts +3 -3
  126. package/time/time.component.d.ts +1 -1
  127. package/toolbar/toolbar.component.d.ts +2 -2
  128. package/fundamental-ngx-core-v0.47.0-rc.2.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-overflow-layout.mjs","sources":["../../../../libs/core/src/lib/overflow-layout/tokens/overflow-expand.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-expand.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-container-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item-ref.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item-container.directive.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-container.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-popover-content.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.service.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-focusable-item.token.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.html","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-focusable-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.module.ts","../../../../libs/core/src/lib/overflow-layout/fundamental-ngx-core-overflow-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { OverflowExpand } from '../interfaces/overflow-expand.interface';\n\nexport const FD_OVERFLOW_EXPAND = new InjectionToken<OverflowExpand>('FdOverflowLayoutExpand');\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { OverflowExpand, OverflowExpandDirectiveContext } from '../interfaces/overflow-expand.interface';\nimport { FD_OVERFLOW_EXPAND } from '../tokens/overflow-expand.token';\n\n/**\n * Structural directive which is responsible for rendering the \"More\" button and handling further logic.\n */\n@Directive({\n selector: '[fdOverflowExpand]',\n providers: [\n {\n provide: FD_OVERFLOW_EXPAND,\n useExisting: OverflowExpandDirective\n }\n ],\n standalone: true\n})\nexport class OverflowExpandDirective<T extends any[] = any[]> implements OverflowExpand<T> {\n /** Items to expand */\n @Input()\n fdOverflowExpandItems: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowExpandDirective,\n ctx: OverflowExpandDirectiveContext\n ): ctx is OverflowExpandDirectiveContext {\n return true;\n }\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowExpandDirectiveContext<T>>) {}\n}\n","import { Directive, ElementRef, OnDestroy, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core';\n\n/**\n * Directive to hide component without actual destroying of the component instance.\n */\n@Directive({\n selector: '[fdOverflowItemContainerRef]',\n standalone: true\n})\nexport class OverflowItemContainerRefDirective implements OnDestroy {\n /** @hidden */\n private _viewRef: ViewRef;\n\n /** @hidden */\n private _detached = false;\n\n /** @hidden */\n private _hidden = false;\n\n /**\n * Shows or hides element without destroying the view itself.\n * @param value\n */\n set hidden(value: boolean) {\n if (this._hidden === value) {\n return;\n }\n this._hidden = value;\n if (value && !this._detached) {\n this._viewRef = this._viewContainerRef.detach()!;\n this._detached = true;\n } else if (!value && this._viewRef && !this._viewRef.destroyed && this._detached) {\n this._viewRef = this._viewContainerRef.insert(this._viewRef);\n this._detached = false;\n }\n }\n\n /** @hidden */\n constructor(\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef,\n private _elmRef: ElementRef\n ) {\n // Create embedded view right away and manipulate its visibility later.\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewRef?.destroy();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\n\nexport const FD_OVERFLOW_ITEM_REF = new InjectionToken<OverflowItemRef>('OverflowLayoutItemRef');\n","import { Directive, ElementRef, inject, INJECTOR, Input, TemplateRef } from '@angular/core';\nimport { OverflowItemDirectiveContext, OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\n\n/**\n * Structural directive which is used to pass the context of the item to the template engine.\n */\n@Directive({\n selector: '[fdOverflowItemRef]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM_REF,\n useExisting: OverflowItemRefDirective\n }\n ],\n standalone: true\n})\nexport class OverflowItemRefDirective<T = any> implements OverflowItemRef<T> {\n /**\n * Element ref of the `fdOverflowLayoutItem` directive.\n */\n elementRef: ElementRef<HTMLElement>;\n /**\n * `fdOverflowLayoutItem` directive.\n */\n overflowItem: OverflowItem;\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this._hidden = value;\n this.overflowItem.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._hidden;\n }\n\n /** @hidden */\n _hidden = false;\n\n /** Index of the item in the visible or hidden array of Overflow Layout Component's items. */\n index: number;\n\n /**\n * The index of the item in the array of items.\n */\n globalIndex: number;\n\n /** Whether this item is last in the array. */\n first: boolean;\n\n /** Whether this item is first in the array. */\n last: boolean;\n\n /** Whether the item is softly hidden. */\n softHidden = true;\n\n /** Item instance. Used for correct autocomplete. */\n @Input('fdOverflowItemRef')\n item: T;\n\n /** @hidden */\n readonly injector = inject(INJECTOR);\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowItemDirectiveContext<T>>) {}\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowItemRefDirective,\n ctx: OverflowItemDirectiveContext\n ): ctx is OverflowItemDirectiveContext {\n return true;\n }\n\n /**\n * Sets the element reference of the `fdOverflowLayoutItem` directive.`\n * @param elmRef\n */\n setElementRef(elmRef: ElementRef): void {\n if (this.elementRef) {\n return;\n }\n this.elementRef = elmRef;\n }\n\n /**\n * Sets the `fdOverflowLayoutItem` directive.\n * @param item\n */\n setOverflowItem(item: OverflowItem): void {\n this.overflowItem = item;\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input } from '@angular/core';\nimport { OverflowItemContainerRefDirective } from './overflow-item-container-ref.directive';\n\n@Directive({\n selector: '[fdOverflowLayoutItemContainer]',\n standalone: true\n})\nexport class OverflowLayoutItemContainerDirective {\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__item';\n\n /**\n * Whether this item is the first one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--last')\n last = false;\n\n /**\n * Whether this item is the last one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--first')\n first = false;\n\n /**\n * Whether this item is softly hidden. Used during free space calculation without flickering of the items.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--soft-hidden')\n softHidden = true;\n\n /**\n * Container reference.\n */\n @ContentChild(OverflowItemContainerRefDirective)\n containerRef: OverflowItemContainerRefDirective;\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\n\nexport const FD_OVERFLOW_CONTAINER = new InjectionToken<OverflowContainer>('FdOverflowContainer');\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, HostBinding, HostListener, Inject, Input, OnDestroy, Optional } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from '../interfaces/overflow-popover-content.interface';\nimport { FD_OVERFLOW_CONTAINER } from '../tokens/overflow-container.token';\n\n/**\n * Directive to wrap Overlay Layout \"More\" popover content.\n * Used to apply keyboard navigation through the items.\n */\n@Directive({\n selector: '[fdOverflowLayoutPopoverContent]',\n standalone: true\n})\nexport class OverflowLayoutPopoverContentDirective implements OverflowPopoverContent, OnDestroy {\n /**\n * Array of hidden items.\n */\n @Input()\n set items(value: OverflowItemRef[]) {\n // Need to set items with a delay so that elementRef of the focusable item would refresh.\n setTimeout(() => {\n this._items = value;\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(\n this._items\n .filter((item) => item.overflowItem.focusableItem?.focusable)\n .map((item) => item.overflowItem.focusableItem)\n )\n .withWrap()\n .withHorizontalOrientation(this._dir);\n });\n }\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__popover-container';\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<OverflowLayoutFocusableItem>;\n\n /** @hidden */\n private _items: OverflowItemRef[];\n\n /** @hidden */\n private _dir: 'ltr' | 'rtl' = 'ltr';\n\n /** @hidden */\n constructor(\n @Inject(FD_OVERFLOW_CONTAINER) private _overflowContainer: OverflowContainer,\n @Optional() private _rtl: RtlService\n ) {\n this._overflowContainer?.registerPopoverContent(this);\n\n this._rtl?.rtl.pipe(takeUntilDestroyed()).subscribe((rtl) => {\n this._dir = rtl ? 'rtl' : 'ltr';\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager = this._keyboardEventsManager.withHorizontalOrientation(this._dir);\n }\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._items.findIndex((item) => item.overflowItem.elmRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager, so we get a change fired\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /**\n * Focuses on the first tabbable element inside directive's element.\n */\n focusFirstTabbableElement(): void {\n this._keyboardEventsManager.setActiveItem(0);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime, distinctUntilChanged, filter, Observable, skip, Subject, Subscription } from 'rxjs';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\n\nexport interface OverflowLayoutConfig {\n items: OverflowItemRef[];\n focusableItems: OverflowLayoutFocusableItem[];\n visibleItems: OverflowLayoutItemContainerDirective[];\n itemsWrapper: HTMLElement;\n showMoreContainer: HTMLElement;\n layoutContainerElement: HTMLElement;\n maxVisibleItems: number;\n direction: 'left' | 'right';\n enableKeyboardNavigation: boolean;\n reverseHiddenItems: boolean;\n}\n\nexport class OverflowLayoutListeningResult {\n /** Whether to show more button */\n showMore = false;\n\n /** Overflow item s */\n items: OverflowItemRef[] = [];\n\n /** Hidden overflow items */\n hiddenItems: OverflowItemRef[] = [];\n\n /** Visible overflow items */\n visibleItems: OverflowItemRef[] = [];\n}\n\n@Injectable()\nexport class OverflowLayoutService implements OnDestroy {\n /**\n * Overflow Layout config.\n */\n config: OverflowLayoutConfig;\n\n /**\n * Overflow Layout calculation result.\n */\n result = new OverflowLayoutListeningResult();\n\n /** @hidden */\n private _listenToItemResize = true;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _detectChanges$ = new Subject<void>();\n\n /** @hidden */\n private _result$ = new Subject<OverflowLayoutListeningResult>();\n\n /**\n * Observable which emits when changes detection is required.\n */\n get detectChanges(): Observable<void> {\n return this._detectChanges$.asObservable();\n }\n\n /**\n * Observable which emits when new calculation result is available.\n */\n get onResult(): Observable<OverflowLayoutListeningResult> {\n return this._result$.asObservable();\n }\n\n /** @hidden */\n constructor(private _elRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n /** @hidden */\n startListening(config: OverflowLayoutConfig): void {\n this.setConfig(config);\n this.fitVisibleItems();\n this._listenToSizeChanges(this._elRef.nativeElement, this.config.itemsWrapper);\n }\n\n /** @hidden */\n setConfig(config: OverflowLayoutConfig): void {\n this.config = config;\n }\n\n /** @hidden */\n private _emitResult(): void {\n this._result$.next(this.result);\n }\n\n /** @hidden */\n private _listenToSizeChanges(...elements: HTMLElement[]): void {\n elements.forEach((element) =>\n this._subscription.add(\n resizeObservable(element)\n .pipe(\n skip(1),\n filter(() => this._listenToItemResize),\n distinctUntilChanged(),\n debounceTime(30)\n )\n .subscribe(() => {\n setTimeout(() => {\n this.fitVisibleItems();\n });\n })\n )\n );\n }\n\n /**\n * Calculates available space for items and hides items that are not fitting into the container.\n */\n fitVisibleItems(): void {\n this._listenToItemResize = false;\n this._allItems = this.config.items;\n\n let allItems = [...this.config.items];\n let visibleContainerItems = [...this.config.visibleItems];\n\n this._elRef.nativeElement.style.height = `${this._elRef.nativeElement.clientHeight}px`;\n\n allItems.forEach((item, index) => {\n // Softly hide previously completely hidden item in order to correctly calculate it's size.\n item.softHidden = true;\n item.hidden = false;\n item.index = index;\n item.first = index === 0;\n item.last = index === allItems.length - 1;\n item.globalIndex = index;\n visibleContainerItems[index].containerRef.hidden = false;\n });\n\n this._detectChanges$.next();\n\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n visibleContainerItems =\n this.config.direction === 'right' ? visibleContainerItems : visibleContainerItems.reverse();\n\n this.result.showMore = false;\n this._emitResult();\n const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n const itemsContainerWidth = allItems.reduce(\n (total, item) => total + (this._getElementWidth(item.elementRef.nativeElement) || 0),\n 0\n );\n\n if (\n containerWidth >= itemsContainerWidth &&\n this.config.visibleItems.length <= this.config.maxVisibleItems &&\n this._hiddenItems.length === 0\n ) {\n // Make all items fully visible.\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n this.result.showMore = false;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._listenToItemResize = true;\n this._elRef.nativeElement.style.height = '';\n return;\n }\n this.result.showMore = true;\n this._emitResult();\n let fittingElmCount = 0;\n let fittingElmsWidth = 0;\n let shouldHideItems = false;\n\n const showMoreContainerWidth = Math.ceil(this._getElementWidth(this.config.showMoreContainer));\n let layoutWidth = containerWidth - showMoreContainerWidth;\n\n // Try to find all forced visible items\n const forcedItemsIndexes = this._getForcedItemsIndexes();\n\n forcedItemsIndexes.forEach((itemIndex) => {\n const container = this.config.visibleItems[itemIndex];\n if (!container) {\n return;\n }\n const elementSize = this._getElementWidth(container.elementRef.nativeElement);\n\n layoutWidth -= elementSize;\n });\n\n const maxVisibleItems =\n this.config.maxVisibleItems -\n forcedItemsIndexes.filter((index) => index >= this.config.maxVisibleItems).length;\n\n if (layoutWidth < 0 && forcedItemsIndexes.length > 0) {\n console.warn(\n 'There is no enough space to fit all forced visible items into the container. Please adjust their visibility accordingly.'\n );\n }\n\n this._detectChanges$.next();\n\n visibleContainerItems.forEach((item, index) => {\n const itemRef = allItems[index];\n if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {\n item.containerRef.hidden = true;\n item.softHidden = false;\n itemRef.hidden = true;\n return;\n }\n\n const elementSize = this._getElementWidth(item.elementRef.nativeElement);\n const combinedWidth = fittingElmsWidth + elementSize;\n\n const condition =\n (combinedWidth <= layoutWidth ||\n (item === this.config.visibleItems[this.config.visibleItems.length - 1] &&\n combinedWidth <= layoutWidth + showMoreContainerWidth)) &&\n fittingElmCount < maxVisibleItems;\n\n if (condition) {\n fittingElmsWidth += elementSize;\n fittingElmCount++;\n } else if (!itemRef.overflowItem.forceVisibility) {\n shouldHideItems = true;\n item.softHidden = false;\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n }\n });\n\n // Reverse original order back.\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n\n let hiddenItems = allItems.filter((i) => i.hidden);\n hiddenItems = this.config.reverseHiddenItems ? hiddenItems.reverse() : hiddenItems;\n const visibleItems = allItems.filter((i) => !i.hidden);\n\n visibleItems.forEach((item, index) => {\n item.index = index;\n item.first = index === 0;\n item.last = index === visibleItems.length - 1;\n });\n\n this._hiddenItems = hiddenItems.map((item, index) => {\n item.first = index === 0;\n item.last = index === hiddenItems.length - 1;\n item.index = index;\n return item;\n });\n\n this.result.showMore = this._hiddenItems.length > 0;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._elRef.nativeElement.style.height = '';\n\n this._listenToItemResize = true;\n }\n\n /** @hidden */\n private _getForcedItemsIndexes(): number[] {\n return this._allItems\n .map((item, index) => (item.overflowItem.forceVisibility ? index : -1))\n .filter((i) => i > -1);\n }\n\n /**\n * @hidden\n * Returns combined width of the element including margins.\n * @param element Element to calculate width of.\n */\n private _getElementWidth(element: HTMLElement): number {\n const elementStyle = getComputedStyle(element);\n const elementWidth = element.getBoundingClientRect().width;\n const elementSize = elementWidth + parseFloat(elementStyle.marginLeft) + parseFloat(elementStyle.marginRight);\n\n return Math.ceil(elementSize);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\n\nexport const FD_OVERFLOW_FOCUSABLE_ITEM = new InjectionToken<OverflowLayoutFocusableItem>(\n 'FdOverflowLayoutFocusableItem'\n);\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subject, Subscription, debounceTime, filter, first, fromEvent, startWith } from 'rxjs';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowContainer } from './interfaces/overflow-container.interface';\nimport { OverflowExpand } from './interfaces/overflow-expand.interface';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';\nimport { OverflowLayoutConfig, OverflowLayoutService } from './overflow-layout.service';\nimport { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';\nimport { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from './tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';\n\n@Component({\n selector: 'fd-overflow-layout',\n templateUrl: './overflow-layout.component.html',\n styleUrls: ['./overflow-layout.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_OVERFLOW_CONTAINER,\n useExisting: OverflowLayoutComponent\n },\n OverflowLayoutService\n ],\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n NgFor,\n OverflowLayoutItemContainerDirective,\n OverflowItemContainerRefDirective,\n PopoverComponent,\n PopoverControlComponent,\n ButtonComponent,\n PopoverBodyComponent,\n OverflowLayoutPopoverContentDirective,\n FdTranslatePipe\n ]\n})\nexport class OverflowLayoutComponent implements OnInit, AfterViewInit, OnDestroy, OverflowContainer {\n /**\n * Maximum amount of visible items.\n */\n @Input()\n set maxVisibleItems(value: number) {\n if (value === this._maxVisibleItems) {\n return;\n }\n this._maxVisibleItems = value;\n this.triggerRecalculation();\n }\n\n get maxVisibleItems(): number {\n return this._maxVisibleItems;\n }\n\n /**\n * Keyboard event to listen for keyboard navigation through items.\n */\n @Input()\n navigationTrigger: 'keyup' | 'keydown' = 'keyup';\n\n /** Direction of the fitting items calculation. */\n @Input()\n showMorePosition: 'left' | 'right' = 'right';\n\n /** Whether to render hidden items in reverse order. */\n @Input()\n reverseHiddenItems = false;\n\n /** Whether to enable keyboard navigation. */\n @Input()\n enableKeyboardNavigation = true;\n\n /**\n * Event, triggered when amount of visible items has been changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when amount of hidden items has been changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /**\n * @hidden\n * List of items to display.\n */\n @ContentChildren(FD_OVERFLOW_ITEM_REF, { descendants: true })\n _items: QueryList<OverflowItemRef>;\n\n /**\n * @hidden\n * Template for the custom \"More\" button.\n */\n @ContentChild(FD_OVERFLOW_EXPAND)\n _moreButton: Nullable<OverflowExpand>;\n\n /**\n * @hidden\n * List of items that can be focused\n */\n @ContentChildren(FD_OVERFLOW_FOCUSABLE_ITEM, { descendants: true })\n _focusableOverflowItems: QueryList<OverflowLayoutFocusableItem>;\n\n /**\n * @hidden\n * List of rendered items.\n */\n @ViewChildren(OverflowLayoutItemContainerDirective)\n _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;\n\n /**\n * @hidden\n * Items wrapper directive.\n */\n @ViewChild('itemsWrapper')\n _itemsWrapper: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Layout container element.\n */\n @ViewChild('layoutContainer')\n _layoutContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @hidden\n * \"More\" button container element.\n */\n @ViewChild('showMoreContainer')\n _showMoreContainer: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _showMore = false;\n\n /** @hidden */\n @HostBinding('class')\n readonly _initialClass = 'fd-overflow-layout';\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _overflowPopoverContent: OverflowPopoverContent;\n\n /** @hidden */\n private _fillTrigger$ = new Subject<void>();\n\n /** @hidden */\n private _maxVisibleItems = Infinity;\n\n /** @hidden */\n private _canListenToResize = false;\n\n /** @hidden */\n private _dir: 'rtl' | 'ltr' = 'ltr';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** Overflow Layout more button text */\n @Input()\n moreItemsButtonText: (hiddenItemsCount: number) => string = (count) => `${count} more`;\n\n /** @hidden */\n private get _config(): OverflowLayoutConfig {\n return {\n visibleItems: this._visibleItems.toArray(),\n items: this._items.toArray(),\n focusableItems: this._focusableOverflowItems.toArray(),\n itemsWrapper: this._itemsWrapper.nativeElement,\n showMoreContainer: this._showMoreContainer.nativeElement,\n layoutContainerElement: this._layoutContainer.nativeElement,\n maxVisibleItems: this.maxVisibleItems,\n direction: this.showMorePosition,\n enableKeyboardNavigation: this.enableKeyboardNavigation,\n reverseHiddenItems: this.reverseHiddenItems\n };\n }\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n private readonly _ngZone: NgZone,\n protected _cdr: ChangeDetectorRef,\n protected _overflowLayoutService: OverflowLayoutService,\n @Optional() private readonly _rtl: RtlService\n ) {\n this._subscription.add(\n this._fillTrigger$.pipe(debounceTime(30)).subscribe(() => {\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setupKeyboardListener();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscription.add(\n this._overflowLayoutService.detectChanges.subscribe(() => {\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._overflowLayoutService.onResult.subscribe((result) => {\n this._hiddenItems = result.hiddenItems;\n this._showMore = result.showMore;\n\n this.hiddenItemsCount.emit(result.hiddenItems.length);\n this.visibleItemsCount.emit(this._allItems.filter((i) => !i.hidden).length);\n\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._items.changes.pipe(startWith(() => this._items)).subscribe(() => {\n this._allItems = this._items.toArray();\n\n this._cdr.detectChanges();\n\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n this._setFocusKeyManager();\n this._subscribeToRtl();\n\n // There might be cases when the elements are not rendered yet, but the component is initialized already.\n // It may happen when it's inside the components that are wrapping ng-content with ng-containers and so on.\n // IntersectionObserver is a good solution for this case, but it's hardly manageable when testing.\n this._ngZone.onStable.pipe(first()).subscribe(() => {\n this._overflowLayoutService.startListening(this._config);\n\n this._canListenToResize = true;\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = null;\n }\n\n /**\n * Triggers layout recalculation of the items.\n */\n triggerRecalculation(): void {\n if (!this._canListenToResize) {\n return;\n }\n\n this._fillTrigger$.next();\n }\n\n /**\n * Sets current focused element.\n * @param element Element that needs to be focused.\n */\n setFocusedElement(element: OverflowLayoutFocusableItem): void {\n const index = this._focusableOverflowItems.toArray().findIndex((item) => item === element);\n\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n /**\n * Registers popover content directive for main component.\n * @param content {OverflowPopoverContent} directive\n */\n registerPopoverContent(content: OverflowPopoverContent): void {\n this._overflowPopoverContent = content;\n }\n\n /** @hidden */\n _itemsTrackFn(_: number, item: OverflowItemRef): TemplateRef<any> {\n return item.templateRef;\n }\n\n /** @hidden */\n _onPopoverStateChange(opened: boolean): void {\n if (opened) {\n this._overflowPopoverContent?.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _setupKeyboardListener(): void {\n this._subscription.add(\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, this.navigationTrigger)\n .pipe(filter(() => this.enableKeyboardNavigation))\n .subscribe((event) => {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._focusableOverflowItems\n .toArray()\n .findIndex((item) => item.focusable && item.elementRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager so, we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n })\n );\n }\n\n /** @hidden */\n private _setFocusKeyManager(): void {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n this._dir = this._rtl?.rtl.value ? 'rtl' : 'ltr';\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this._focusableOverflowItems)\n .withWrap()\n .withHorizontalOrientation(this._dir)\n .withVerticalOrientation()\n .skipPredicate((item) => !item.navigable || item.hidden);\n }\n\n /** @hidden Rtl change subscription */\n private _subscribeToRtl(): void {\n if (!this._rtl || !this.enableKeyboardNavigation) {\n return;\n }\n\n this._subscription.add(\n this._rtl.rtl.subscribe((isRtl) => {\n this._dir = isRtl ? 'rtl' : 'ltr';\n\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir);\n })\n );\n }\n}\n","<ng-template [ngIf]=\"showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate : { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\n\nexport const FD_OVERFLOW_ITEM = new InjectionToken<OverflowItem>('FdOverflowItem');\n","import { Directive, ElementRef, HostBinding, HostListener, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from '../tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n@Directive({\n selector: '[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]',\n providers: [\n {\n provide: FD_OVERFLOW_FOCUSABLE_ITEM,\n useExisting: OverflowLayoutFocusableItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutFocusableItemDirective implements OverflowLayoutFocusableItem, OnInit {\n /** Whether the item should be focusable. */\n @Input()\n focusable = true;\n\n /** Whether the item should be navigable via keyboard. */\n @Input()\n navigable = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n private get _tabindex(): number {\n return this.focusable ? 0 : -1;\n }\n\n /** Whether the item is hidden. */\n get hidden(): boolean {\n return !!this._overflowItem?.hidden;\n }\n\n /** @hidden */\n @HostListener('focus')\n private _onFocus(): void {\n this._overflowContainer.setFocusedElement(this);\n }\n\n /** @hidden */\n constructor(\n private readonly _overflowContainer: OverflowLayoutComponent,\n @Inject(FD_OVERFLOW_ITEM) @Optional() private readonly _overflowItem: OverflowItem,\n public readonly elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this._overflowItem) {\n this._overflowItem.focusableItem = this;\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n/**\n * Directive to mark element as part of for Overflow Layout Component items.\n */\n@Directive({\n selector: '[fdOverflowLayoutItem]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM,\n useExisting: OverflowLayoutItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutItemDirective implements OverflowItem, OnInit {\n /** Whether to force the visibility of the item. */\n @Input()\n set forceVisibility(value: boolean) {\n if (value === this._forceVisibility) {\n return;\n }\n\n this._forceVisibility = value;\n this._overflowContainer.triggerRecalculation();\n }\n\n get forceVisibility(): boolean {\n return this._forceVisibility;\n }\n\n /**\n * Event emitted when `hidden` property has been changed.\n */\n @Output()\n hiddenChange = new EventEmitter<boolean>();\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._overflowItemRef?.hidden === true;\n }\n\n /**\n * Focusable item for keyboard navigation.\n */\n focusableItem: OverflowLayoutFocusableItem;\n\n /** Reference to the element */\n elmRef = inject(ElementRef);\n\n /** @hidden */\n protected _overflowItemRef: OverflowItemRef | null = inject(FD_OVERFLOW_ITEM_REF, {\n optional: true,\n skipSelf: true\n });\n /** @hidden */\n private _forceVisibility = false;\n /** @hidden */\n private _overflowContainer = inject(OverflowLayoutComponent);\n\n /** @hidden */\n ngOnInit(): void {\n this._overflowItemRef?.setElementRef(this.elmRef);\n this._overflowItemRef?.setOverflowItem(this);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OverflowExpandDirective } from './directives/overflow-expand.directive';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowItemRefDirective } from './directives/overflow-item-ref.directive';\nimport { OverflowLayoutFocusableItemDirective } from './directives/overflow-layout-focusable-item.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutItemDirective } from './directives/overflow-layout-item.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowLayoutComponent } from './overflow-layout.component';\n\n/**\n * @deprecated\n * Use direct imports of OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n */\n@NgModule({\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ],\n exports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ]\n})\nexport class OverflowLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.OverflowLayoutService","i2"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-overflow-layout.mjs","sources":["../../../../libs/core/src/lib/overflow-layout/tokens/overflow-expand.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-expand.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-container-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item-ref.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item-container.directive.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-container.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-popover-content.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.service.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-focusable-item.token.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.html","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-focusable-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.module.ts","../../../../libs/core/src/lib/overflow-layout/fundamental-ngx-core-overflow-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { OverflowExpand } from '../interfaces/overflow-expand.interface';\n\nexport const FD_OVERFLOW_EXPAND = new InjectionToken<OverflowExpand>('FdOverflowLayoutExpand');\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { OverflowExpand, OverflowExpandDirectiveContext } from '../interfaces/overflow-expand.interface';\nimport { FD_OVERFLOW_EXPAND } from '../tokens/overflow-expand.token';\n\n/**\n * Structural directive which is responsible for rendering the \"More\" button and handling further logic.\n */\n@Directive({\n selector: '[fdOverflowExpand]',\n providers: [\n {\n provide: FD_OVERFLOW_EXPAND,\n useExisting: OverflowExpandDirective\n }\n ],\n standalone: true\n})\nexport class OverflowExpandDirective<T extends any[] = any[]> implements OverflowExpand<T> {\n /** Items to expand */\n @Input()\n fdOverflowExpandItems: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowExpandDirective,\n ctx: OverflowExpandDirectiveContext\n ): ctx is OverflowExpandDirectiveContext {\n return true;\n }\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowExpandDirectiveContext<T>>) {}\n}\n","import { Directive, ElementRef, OnDestroy, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core';\n\n/**\n * Directive to hide component without actual destroying of the component instance.\n */\n@Directive({\n selector: '[fdOverflowItemContainerRef]',\n standalone: true\n})\nexport class OverflowItemContainerRefDirective implements OnDestroy {\n /** @hidden */\n private _viewRef: ViewRef;\n\n /** @hidden */\n private _detached = false;\n\n /** @hidden */\n private _hidden = false;\n\n /**\n * Shows or hides element without destroying the view itself.\n * @param value\n */\n set hidden(value: boolean) {\n if (this._hidden === value) {\n return;\n }\n this._hidden = value;\n if (value && !this._detached) {\n this._viewRef = this._viewContainerRef.detach()!;\n this._detached = true;\n } else if (!value && this._viewRef && !this._viewRef.destroyed && this._detached) {\n this._viewRef = this._viewContainerRef.insert(this._viewRef);\n this._detached = false;\n }\n }\n\n /** @hidden */\n constructor(\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef,\n private _elmRef: ElementRef\n ) {\n // Create embedded view right away and manipulate its visibility later.\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewRef?.destroy();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\n\nexport const FD_OVERFLOW_ITEM_REF = new InjectionToken<OverflowItemRef>('OverflowLayoutItemRef');\n","import { Directive, ElementRef, inject, INJECTOR, Input, TemplateRef } from '@angular/core';\nimport { OverflowItemDirectiveContext, OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\n\n/**\n * Structural directive which is used to pass the context of the item to the template engine.\n */\n@Directive({\n selector: '[fdOverflowItemRef]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM_REF,\n useExisting: OverflowItemRefDirective\n }\n ],\n standalone: true\n})\nexport class OverflowItemRefDirective<T = any> implements OverflowItemRef<T> {\n /**\n * Element ref of the `fdOverflowLayoutItem` directive.\n */\n elementRef: ElementRef<HTMLElement>;\n /**\n * `fdOverflowLayoutItem` directive.\n */\n overflowItem: OverflowItem;\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this._hidden = value;\n this.overflowItem.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._hidden;\n }\n\n /** @hidden */\n _hidden = false;\n\n /** Index of the item in the visible or hidden array of Overflow Layout Component's items. */\n index: number;\n\n /**\n * The index of the item in the array of items.\n */\n globalIndex: number;\n\n /** Whether this item is last in the array. */\n first: boolean;\n\n /** Whether this item is first in the array. */\n last: boolean;\n\n /** Whether the item is softly hidden. */\n softHidden = true;\n\n /** Item instance. Used for correct autocomplete. */\n @Input('fdOverflowItemRef')\n item: T;\n\n /** @hidden */\n readonly injector = inject(INJECTOR);\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowItemDirectiveContext<T>>) {}\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowItemRefDirective,\n ctx: OverflowItemDirectiveContext\n ): ctx is OverflowItemDirectiveContext {\n return true;\n }\n\n /**\n * Sets the element reference of the `fdOverflowLayoutItem` directive.`\n * @param elmRef\n */\n setElementRef(elmRef: ElementRef): void {\n if (this.elementRef) {\n return;\n }\n this.elementRef = elmRef;\n }\n\n /**\n * Sets the `fdOverflowLayoutItem` directive.\n * @param item\n */\n setOverflowItem(item: OverflowItem): void {\n this.overflowItem = item;\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input } from '@angular/core';\nimport { OverflowItemContainerRefDirective } from './overflow-item-container-ref.directive';\n\n@Directive({\n selector: '[fdOverflowLayoutItemContainer]',\n standalone: true\n})\nexport class OverflowLayoutItemContainerDirective {\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__item';\n\n /**\n * Whether this item is the first one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--last')\n last = false;\n\n /**\n * Whether this item is the last one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--first')\n first = false;\n\n /**\n * Whether this item is softly hidden. Used during free space calculation without flickering of the items.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--soft-hidden')\n softHidden = true;\n\n /**\n * Container reference.\n */\n @ContentChild(OverflowItemContainerRefDirective)\n containerRef: OverflowItemContainerRefDirective;\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\n\nexport const FD_OVERFLOW_CONTAINER = new InjectionToken<OverflowContainer>('FdOverflowContainer');\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, HostBinding, HostListener, Inject, Input, OnDestroy, Optional } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from '../interfaces/overflow-popover-content.interface';\nimport { FD_OVERFLOW_CONTAINER } from '../tokens/overflow-container.token';\n\n/**\n * Directive to wrap Overlay Layout \"More\" popover content.\n * Used to apply keyboard navigation through the items.\n */\n@Directive({\n selector: '[fdOverflowLayoutPopoverContent]',\n standalone: true\n})\nexport class OverflowLayoutPopoverContentDirective implements OverflowPopoverContent, OnDestroy {\n /**\n * Array of hidden items.\n */\n @Input()\n set items(value: OverflowItemRef[]) {\n // Need to set items with a delay so that elementRef of the focusable item would refresh.\n setTimeout(() => {\n this._items = value;\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(\n this._items\n .filter((item) => item.overflowItem.focusableItem?.focusable)\n .map((item) => item.overflowItem.focusableItem)\n )\n .withWrap()\n .withHorizontalOrientation(this._dir);\n });\n }\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__popover-container';\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<OverflowLayoutFocusableItem>;\n\n /** @hidden */\n private _items: OverflowItemRef[];\n\n /** @hidden */\n private _dir: 'ltr' | 'rtl' = 'ltr';\n\n /** @hidden */\n constructor(\n @Inject(FD_OVERFLOW_CONTAINER) private _overflowContainer: OverflowContainer,\n @Optional() private _rtl: RtlService\n ) {\n this._overflowContainer?.registerPopoverContent(this);\n\n this._rtl?.rtl.pipe(takeUntilDestroyed()).subscribe((rtl) => {\n this._dir = rtl ? 'rtl' : 'ltr';\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager = this._keyboardEventsManager.withHorizontalOrientation(this._dir);\n }\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._items.findIndex((item) => item.overflowItem.elmRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager, so we get a change fired\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /**\n * Focuses on the first tabbable element inside directive's element.\n */\n focusFirstTabbableElement(): void {\n this._keyboardEventsManager.setActiveItem(0);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject, Subscription, debounceTime, distinctUntilChanged, filter, skip } from 'rxjs';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\n\nexport interface OverflowLayoutConfig {\n items: OverflowItemRef[];\n focusableItems: OverflowLayoutFocusableItem[];\n visibleItems: OverflowLayoutItemContainerDirective[];\n itemsWrapper: HTMLElement;\n showMoreContainer?: HTMLElement;\n layoutContainerElement: HTMLElement;\n maxVisibleItems: number;\n direction: 'left' | 'right';\n enableKeyboardNavigation: boolean;\n reverseHiddenItems: boolean;\n}\n\nexport class OverflowLayoutListeningResult {\n /** Whether to show more button */\n showMore = false;\n\n /** Overflow item s */\n items: OverflowItemRef[] = [];\n\n /** Hidden overflow items */\n hiddenItems: OverflowItemRef[] = [];\n\n /** Visible overflow items */\n visibleItems: OverflowItemRef[] = [];\n}\n\n@Injectable()\nexport class OverflowLayoutService implements OnDestroy {\n /**\n * Overflow Layout config.\n */\n config: OverflowLayoutConfig;\n\n /**\n * Overflow Layout calculation result.\n */\n result = new OverflowLayoutListeningResult();\n\n /** @hidden */\n private _listenToItemResize = true;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _detectChanges$ = new Subject<void>();\n\n /** @hidden */\n private _result$ = new Subject<OverflowLayoutListeningResult>();\n\n /**\n * Observable which emits when changes detection is required.\n */\n get detectChanges(): Observable<void> {\n return this._detectChanges$.asObservable();\n }\n\n /**\n * Observable which emits when new calculation result is available.\n */\n get onResult(): Observable<OverflowLayoutListeningResult> {\n return this._result$.asObservable();\n }\n\n /** @hidden */\n constructor(private _elRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n /** @hidden */\n startListening(config: OverflowLayoutConfig): void {\n this.setConfig(config);\n this.fitVisibleItems();\n this._listenToSizeChanges(this._elRef.nativeElement, this.config.itemsWrapper);\n }\n\n /** @hidden */\n setConfig(config: OverflowLayoutConfig): void {\n this.config = config;\n }\n\n /** @hidden */\n private _emitResult(): void {\n this._result$.next(this.result);\n }\n\n /** @hidden */\n private _listenToSizeChanges(...elements: HTMLElement[]): void {\n elements.forEach((element) =>\n this._subscription.add(\n resizeObservable(element)\n .pipe(\n skip(1),\n filter(() => this._listenToItemResize),\n distinctUntilChanged(),\n debounceTime(30)\n )\n .subscribe(() => {\n setTimeout(() => {\n this.fitVisibleItems();\n });\n })\n )\n );\n }\n\n /**\n * Calculates available space for items and hides items that are not fitting into the container.\n */\n fitVisibleItems(): void {\n this._listenToItemResize = false;\n this._allItems = this.config.items;\n\n let allItems = [...this.config.items];\n let visibleContainerItems = [...this.config.visibleItems];\n\n this._elRef.nativeElement.style.height = `${this._elRef.nativeElement.clientHeight}px`;\n\n allItems.forEach((item, index) => {\n // Softly hide previously completely hidden item in order to correctly calculate it's size.\n item.softHidden = true;\n item.hidden = false;\n item.index = index;\n item.first = index === 0;\n item.last = index === allItems.length - 1;\n item.globalIndex = index;\n visibleContainerItems[index].containerRef.hidden = false;\n });\n\n this._detectChanges$.next();\n\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n visibleContainerItems =\n this.config.direction === 'right' ? visibleContainerItems : visibleContainerItems.reverse();\n\n this.result.showMore = false;\n this._emitResult();\n const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n const itemsContainerWidth = allItems.reduce(\n (total, item) => total + (this._getElementWidth(item.elementRef.nativeElement) || 0),\n 0\n );\n\n if (\n containerWidth >= itemsContainerWidth &&\n this.config.visibleItems.length <= this.config.maxVisibleItems &&\n this._hiddenItems.length === 0\n ) {\n // Make all items fully visible.\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n this.result.showMore = false;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._listenToItemResize = true;\n this._elRef.nativeElement.style.height = '';\n return;\n }\n this.result.showMore = true;\n this._emitResult();\n let fittingElmCount = 0;\n let fittingElmsWidth = 0;\n let shouldHideItems = false;\n\n const showMoreContainerWidth = Math.ceil(\n this.config.showMoreContainer ? this._getElementWidth(this.config.showMoreContainer) : 0\n );\n let layoutWidth = containerWidth - showMoreContainerWidth;\n\n // Try to find all forced visible items\n const forcedItemsIndexes = this._getForcedItemsIndexes();\n\n forcedItemsIndexes.forEach((itemIndex) => {\n const container = this.config.visibleItems[itemIndex];\n if (!container) {\n return;\n }\n const elementSize = this._getElementWidth(container.elementRef.nativeElement);\n\n layoutWidth -= elementSize;\n });\n\n const maxVisibleItems =\n this.config.maxVisibleItems -\n forcedItemsIndexes.filter((index) => index >= this.config.maxVisibleItems).length;\n\n if (layoutWidth < 0 && forcedItemsIndexes.length > 0) {\n console.warn(\n 'There is no enough space to fit all forced visible items into the container. Please adjust their visibility accordingly.'\n );\n }\n\n this._detectChanges$.next();\n\n visibleContainerItems.forEach((item, index) => {\n const itemRef = allItems[index];\n if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {\n item.containerRef.hidden = true;\n item.softHidden = false;\n itemRef.hidden = true;\n return;\n }\n\n const elementSize = this._getElementWidth(item.elementRef.nativeElement);\n const combinedWidth = fittingElmsWidth + elementSize;\n\n const condition =\n (combinedWidth <= layoutWidth ||\n (item === this.config.visibleItems[this.config.visibleItems.length - 1] &&\n combinedWidth <= layoutWidth + showMoreContainerWidth)) &&\n fittingElmCount < maxVisibleItems;\n\n if (condition) {\n fittingElmsWidth += elementSize;\n fittingElmCount++;\n } else if (!itemRef.overflowItem.forceVisibility) {\n shouldHideItems = true;\n item.softHidden = false;\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n }\n });\n\n // Reverse original order back.\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n\n let hiddenItems = allItems.filter((i) => i.hidden);\n hiddenItems = this.config.reverseHiddenItems ? hiddenItems.reverse() : hiddenItems;\n const visibleItems = allItems.filter((i) => !i.hidden);\n\n visibleItems.forEach((item, index) => {\n item.index = index;\n item.first = index === 0;\n item.last = index === visibleItems.length - 1;\n });\n\n this._hiddenItems = hiddenItems.map((item, index) => {\n item.first = index === 0;\n item.last = index === hiddenItems.length - 1;\n item.index = index;\n return item;\n });\n\n this.result.showMore = this._hiddenItems.length > 0;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._elRef.nativeElement.style.height = '';\n\n this._listenToItemResize = true;\n }\n\n /** @hidden */\n private _getForcedItemsIndexes(): number[] {\n return this._allItems\n .map((item, index) => (item.overflowItem.forceVisibility ? index : -1))\n .filter((i) => i > -1);\n }\n\n /**\n * @hidden\n * Returns combined width of the element including margins.\n * @param element Element to calculate width of.\n */\n private _getElementWidth(element: HTMLElement): number {\n const elementStyle = getComputedStyle(element);\n const elementWidth = element.getBoundingClientRect().width;\n const elementSize = elementWidth + parseFloat(elementStyle.marginLeft) + parseFloat(elementStyle.marginRight);\n\n return Math.ceil(elementSize);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\n\nexport const FD_OVERFLOW_FOCUSABLE_ITEM = new InjectionToken<OverflowLayoutFocusableItem>(\n 'FdOverflowLayoutFocusableItem'\n);\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subject, Subscription, debounceTime, filter, first, fromEvent, startWith } from 'rxjs';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowContainer } from './interfaces/overflow-container.interface';\nimport { OverflowExpand } from './interfaces/overflow-expand.interface';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';\nimport { OverflowLayoutConfig, OverflowLayoutService } from './overflow-layout.service';\nimport { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';\nimport { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from './tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';\n\n@Component({\n selector: 'fd-overflow-layout',\n templateUrl: './overflow-layout.component.html',\n styleUrls: ['./overflow-layout.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_OVERFLOW_CONTAINER,\n useExisting: OverflowLayoutComponent\n },\n OverflowLayoutService\n ],\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n NgFor,\n OverflowLayoutItemContainerDirective,\n OverflowItemContainerRefDirective,\n PopoverComponent,\n PopoverControlComponent,\n ButtonComponent,\n PopoverBodyComponent,\n OverflowLayoutPopoverContentDirective,\n FdTranslatePipe\n ]\n})\nexport class OverflowLayoutComponent implements OnInit, AfterViewInit, OnDestroy, OverflowContainer {\n /**\n * Maximum amount of visible items.\n */\n @Input()\n set maxVisibleItems(value: number) {\n if (value === this._maxVisibleItems) {\n return;\n }\n this._maxVisibleItems = value;\n this.triggerRecalculation();\n }\n\n get maxVisibleItems(): number {\n return this._maxVisibleItems;\n }\n\n /**\n * Keyboard event to listen for keyboard navigation through items.\n */\n @Input()\n navigationTrigger: 'keyup' | 'keydown' = 'keyup';\n\n /** Direction of the fitting items calculation. */\n @Input()\n showMorePosition: 'left' | 'right' = 'right';\n\n /** Whether the show more button should be rendered */\n @Input({ transform: coerceBooleanProperty })\n renderShowMoreButton: BooleanInput = true;\n\n /** Whether to render hidden items in reverse order. */\n @Input()\n reverseHiddenItems = false;\n\n /** Whether to enable keyboard navigation. */\n @Input()\n enableKeyboardNavigation = true;\n\n /**\n * Event, triggered when amount of visible items has been changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when amount of hidden items has been changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when hidden items have been changed.\n */\n @Output()\n hiddenItemsChange = new EventEmitter<OverflowItemRef[]>();\n\n /**\n * @hidden\n * List of items to display.\n */\n @ContentChildren(FD_OVERFLOW_ITEM_REF, { descendants: true })\n _items: QueryList<OverflowItemRef>;\n\n /**\n * @hidden\n * Template for the custom \"More\" button.\n */\n @ContentChild(FD_OVERFLOW_EXPAND)\n _moreButton: Nullable<OverflowExpand>;\n\n /**\n * @hidden\n * List of items that can be focused\n */\n @ContentChildren(FD_OVERFLOW_FOCUSABLE_ITEM, { descendants: true })\n _focusableOverflowItems: QueryList<OverflowLayoutFocusableItem>;\n\n /**\n * @hidden\n * List of rendered items.\n */\n @ViewChildren(OverflowLayoutItemContainerDirective)\n _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;\n\n /**\n * @hidden\n * Items wrapper directive.\n */\n @ViewChild('itemsWrapper')\n _itemsWrapper: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Layout container element.\n */\n @ViewChild('layoutContainer')\n _layoutContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @hidden\n * \"More\" button container element.\n */\n @ViewChild('showMoreContainer')\n _showMoreContainer: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _showMore = false;\n\n /** @hidden */\n @HostBinding('class')\n readonly _initialClass = 'fd-overflow-layout';\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _overflowPopoverContent: OverflowPopoverContent;\n\n /** @hidden */\n private _fillTrigger$ = new Subject<void>();\n\n /** @hidden */\n private _maxVisibleItems = Infinity;\n\n /** @hidden */\n private _canListenToResize = false;\n\n /** @hidden */\n private _dir: 'rtl' | 'ltr' = 'ltr';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** Overflow Layout more button text */\n @Input()\n moreItemsButtonText: (hiddenItemsCount: number) => string = (count) => `${count} more`;\n\n /** @hidden */\n private get _config(): OverflowLayoutConfig {\n return {\n visibleItems: this._visibleItems.toArray(),\n items: this._items.toArray(),\n focusableItems: this._focusableOverflowItems.toArray(),\n itemsWrapper: this._itemsWrapper.nativeElement,\n showMoreContainer: this._showMoreContainer?.nativeElement,\n layoutContainerElement: this._layoutContainer.nativeElement,\n maxVisibleItems: this.maxVisibleItems,\n direction: this.showMorePosition,\n enableKeyboardNavigation: this.enableKeyboardNavigation,\n reverseHiddenItems: this.reverseHiddenItems\n };\n }\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n private readonly _ngZone: NgZone,\n protected _cdr: ChangeDetectorRef,\n protected _overflowLayoutService: OverflowLayoutService,\n @Optional() private readonly _rtl: RtlService\n ) {\n this._subscription.add(\n this._fillTrigger$.pipe(debounceTime(30)).subscribe(() => {\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setupKeyboardListener();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscription.add(\n this._overflowLayoutService.detectChanges.subscribe(() => {\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._overflowLayoutService.onResult.subscribe((result) => {\n this._hiddenItems = result.hiddenItems;\n this._showMore = result.showMore;\n\n this.hiddenItemsChange.emit(result.hiddenItems);\n this.hiddenItemsCount.emit(result.hiddenItems.length);\n this.visibleItemsCount.emit(this._allItems.filter((i) => !i.hidden).length);\n\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._items.changes.pipe(startWith(() => this._items)).subscribe(() => {\n this._allItems = this._items.toArray();\n\n this._cdr.detectChanges();\n\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n this._setFocusKeyManager();\n this._subscribeToRtl();\n\n // There might be cases when the elements are not rendered yet, but the component is initialized already.\n // It may happen when it's inside the components that are wrapping ng-content with ng-containers and so on.\n // IntersectionObserver is a good solution for this case, but it's hardly manageable when testing.\n this._ngZone.onStable.pipe(first()).subscribe(() => {\n this._overflowLayoutService.startListening(this._config);\n\n this._canListenToResize = true;\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = null;\n }\n\n /**\n * Triggers layout recalculation of the items.\n */\n triggerRecalculation(): void {\n if (!this._canListenToResize) {\n return;\n }\n\n this._fillTrigger$.next();\n }\n\n /**\n * Sets current focused element.\n * @param element Element that needs to be focused.\n */\n setFocusedElement(element: OverflowLayoutFocusableItem): void {\n const index = this._focusableOverflowItems.toArray().findIndex((item) => item === element);\n\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n /**\n * Registers popover content directive for main component.\n * @param content {OverflowPopoverContent} directive\n */\n registerPopoverContent(content: OverflowPopoverContent): void {\n this._overflowPopoverContent = content;\n }\n\n /** @hidden */\n _itemsTrackFn(_: number, item: OverflowItemRef): TemplateRef<any> {\n return item.templateRef;\n }\n\n /** @hidden */\n _onPopoverStateChange(opened: boolean): void {\n if (opened) {\n this._overflowPopoverContent?.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _setupKeyboardListener(): void {\n this._subscription.add(\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, this.navigationTrigger)\n .pipe(filter(() => this.enableKeyboardNavigation))\n .subscribe((event) => {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._focusableOverflowItems\n .toArray()\n .findIndex((item) => item.focusable && item.elementRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager so, we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n })\n );\n }\n\n /** @hidden */\n private _setFocusKeyManager(): void {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n this._dir = this._rtl?.rtl.value ? 'rtl' : 'ltr';\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this._focusableOverflowItems)\n .withWrap()\n .withHorizontalOrientation(this._dir)\n .withVerticalOrientation()\n .skipPredicate((item) => !item.navigable || item.hidden);\n }\n\n /** @hidden Rtl change subscription */\n private _subscribeToRtl(): void {\n if (!this._rtl || !this.enableKeyboardNavigation) {\n return;\n }\n\n this._subscription.add(\n this._rtl.rtl.subscribe((isRtl) => {\n this._dir = isRtl ? 'rtl' : 'ltr';\n\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir);\n })\n );\n }\n}\n","<ng-template [ngIf]=\"renderShowMoreButton && showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"renderShowMoreButton && showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate : { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\n\nexport const FD_OVERFLOW_ITEM = new InjectionToken<OverflowItem>('FdOverflowItem');\n","import { Directive, ElementRef, HostBinding, HostListener, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from '../tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n@Directive({\n selector: '[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]',\n providers: [\n {\n provide: FD_OVERFLOW_FOCUSABLE_ITEM,\n useExisting: OverflowLayoutFocusableItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutFocusableItemDirective implements OverflowLayoutFocusableItem, OnInit {\n /** Whether the item should be focusable. */\n @Input()\n focusable = true;\n\n /** Whether the item should be navigable via keyboard. */\n @Input()\n navigable = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n private get _tabindex(): number {\n return this.focusable ? 0 : -1;\n }\n\n /** Whether the item is hidden. */\n get hidden(): boolean {\n return !!this._overflowItem?.hidden;\n }\n\n /** @hidden */\n @HostListener('focus')\n private _onFocus(): void {\n this._overflowContainer.setFocusedElement(this);\n }\n\n /** @hidden */\n constructor(\n private readonly _overflowContainer: OverflowLayoutComponent,\n @Inject(FD_OVERFLOW_ITEM) @Optional() private readonly _overflowItem: OverflowItem,\n public readonly elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this._overflowItem) {\n this._overflowItem.focusableItem = this;\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n/**\n * Directive to mark element as part of for Overflow Layout Component items.\n */\n@Directive({\n selector: '[fdOverflowLayoutItem]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM,\n useExisting: OverflowLayoutItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutItemDirective implements OverflowItem, OnInit {\n /** Whether to force the visibility of the item. */\n @Input()\n set forceVisibility(value: boolean) {\n if (value === this._forceVisibility) {\n return;\n }\n\n this._forceVisibility = value;\n this._overflowContainer.triggerRecalculation();\n }\n\n get forceVisibility(): boolean {\n return this._forceVisibility;\n }\n\n /**\n * Event emitted when `hidden` property has been changed.\n */\n @Output()\n hiddenChange = new EventEmitter<boolean>();\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._overflowItemRef?.hidden === true;\n }\n\n /**\n * Focusable item for keyboard navigation.\n */\n focusableItem: OverflowLayoutFocusableItem;\n\n /** Reference to the element */\n elmRef = inject(ElementRef);\n\n /** @hidden */\n protected _overflowItemRef: OverflowItemRef | null = inject(FD_OVERFLOW_ITEM_REF, {\n optional: true,\n skipSelf: true\n });\n /** @hidden */\n private _forceVisibility = false;\n /** @hidden */\n private _overflowContainer = inject(OverflowLayoutComponent);\n\n /** @hidden */\n ngOnInit(): void {\n this._overflowItemRef?.setElementRef(this.elmRef);\n this._overflowItemRef?.setOverflowItem(this);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OverflowExpandDirective } from './directives/overflow-expand.directive';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowItemRefDirective } from './directives/overflow-item-ref.directive';\nimport { OverflowLayoutFocusableItemDirective } from './directives/overflow-layout-focusable-item.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutItemDirective } from './directives/overflow-layout-item.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowLayoutComponent } from './overflow-layout.component';\n\n/**\n * @deprecated\n * Use direct imports of OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n */\n@NgModule({\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ],\n exports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ]\n})\nexport class OverflowLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.OverflowLayoutService","i2"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-pagination.mjs","sources":["../../../../libs/core/src/lib/pagination/pagination.service.ts","../../../../libs/core/src/lib/pagination/pagination.component.ts","../../../../libs/core/src/lib/pagination/pagination.component.html","../../../../libs/core/src/lib/pagination/pagination.module.ts","../../../../libs/core/src/lib/pagination/fundamental-ngx-core-pagination.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core';\n\nimport { Pagination } from './pagination.model';\n\n/** Constant representing the number of pages which appear before and after current page. */\nconst CORNER_DISPLAY_PAGES = 1;\nconst SIDE_CURRENT_DISPLAY_PAGES = 2;\n\n/**\n * Service that is used to retrieve all the pages, the number of pages, and to validate the pagination object.\n */\n@Injectable()\nexport class PaginationService {\n /** @hidden */\n public readonly moreElementValue = -1;\n\n /**\n * Returns a number array representing the pages of the pagination object.\n * Array length always the same and configured by CORNER_DISPLAY_PAGES & SIDE_CURRENT_DISPLAY_PAGES.\n * @param pagination An object of type *Pagination*.\n */\n getPages(pagination: Pagination): number[] {\n if (!pagination.currentPage) {\n pagination.currentPage = 1;\n }\n\n this.validate(pagination);\n\n const totalPages = this.getTotalPages(pagination);\n const pages = new Array(totalPages).fill(undefined).map((_, i) => i + 1);\n\n // +1 for current page, +2 for \"more\" elements - after start & before end pages\n const pagesToDisplay = CORNER_DISPLAY_PAGES * 2 + SIDE_CURRENT_DISPLAY_PAGES * 2 + 1 + 2;\n\n if (pages.length <= pagesToDisplay) {\n return pages;\n }\n\n const pagesBefore = pagination.currentPage - 1;\n const pagesAfter = totalPages - pagination.currentPage;\n const minimalPagesGap = Math.round(pagesToDisplay / 2);\n\n if (pagesBefore < minimalPagesGap) {\n return [\n ...pages.slice(0, pagesToDisplay - 2),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n if (pagesAfter < minimalPagesGap) {\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(totalPages - pagesToDisplay + 2)\n ];\n }\n\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(\n pagination.currentPage - SIDE_CURRENT_DISPLAY_PAGES - 1,\n pagination.currentPage + SIDE_CURRENT_DISPLAY_PAGES\n ),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n /**\n * Retrieves the total number of pages.\n * @param pagination An object of type *Pagination*.\n */\n getTotalPages(pagination: Pagination): number {\n if (!pagination.itemsPerPage) {\n return 0;\n }\n\n return Math.ceil(pagination.totalItems / pagination.itemsPerPage);\n }\n\n /**\n * Provides validation for the pagination object.\n * @param pagination An object of type *Pagination*.\n */\n validate(pagination: Pagination): void {\n if (isDevMode()) {\n if (isNaN(pagination.totalItems) || pagination.totalItems <= 0) {\n console.warn(\n `\"totalItems\" must be a number greater than zero but got \"${pagination.totalItems}\". This warning only appears in development mode.`\n );\n }\n\n if (isNaN(pagination.itemsPerPage!) || pagination.itemsPerPage! <= 0) {\n console.warn(\n `\"itemsPerPage\" must be a number greater than zero but got \"${pagination.itemsPerPage}\". This warning only appears in development mode.`\n );\n }\n }\n }\n}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceArray, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule, NgModel } from '@angular/forms';\nimport { Observable, Subscription, firstValueFrom } from 'rxjs';\n\nimport { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { OnlyDigitsDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FormControlComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Pagination } from './pagination.model';\nimport { PaginationService } from './pagination.service';\n\n/** Constant representing the default number of items per page. */\nconst DEFAULT_ITEMS_PER_PAGE = 10;\n\ninterface CurrentShowing {\n from: number;\n to: number;\n totalCount: number;\n}\n\nlet paginationUniqueId = 0;\n\n/**\n * The component that is used to provide navigation between paged information.\n * ```html\n * <fd-pagination\n * [totalItems]=\"50\"\n * [itemsPerPage]=\"10\"\n * [currentPage]=\"3\">\n * </fd-pagination>\n * ```\n */\n@Component({\n selector: 'fd-pagination',\n templateUrl: './pagination.component.html',\n providers: [PaginationService, contentDensityObserverProviders()],\n host: {\n class: 'fd-pagination',\n '[class.fd-pagination--mobile]': 'mobile',\n '[class.fd-pagination--short]': '_lastPage <= 9'\n },\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: true,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n FocusKeyManagerListDirective,\n ButtonComponent,\n FocusKeyManagerItemDirective,\n NgFor,\n FormLabelComponent,\n FormsModule,\n FormControlComponent,\n OnlyDigitsDirective,\n SelectComponent,\n OptionComponent,\n FdTranslatePipe\n ]\n})\nexport class PaginationComponent implements OnChanges, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild(FocusKeyManagerListDirective)\n readonly _focusKeyManagerList: FocusKeyManagerListDirective;\n\n /** @hidden */\n @ViewChildren(FocusKeyManagerItemDirective)\n readonly _focusKeyManagerItems: QueryList<FocusKeyManagerItemDirective>;\n\n /** @hidden */\n @ViewChild('pageInputElement', { read: ElementRef })\n readonly _pageInputElement: ElementRef;\n\n /** @hidden */\n @ViewChild('currentPageElement', { read: ElementRef })\n readonly _currentPageElement: ElementRef;\n\n /** Id for the pagination component. If omitted, a unique one is generated. */\n @Input()\n id: string = 'fd-pagination-' + paginationUniqueId++;\n\n /** Whether component should be shown in the mobile mode. */\n @Input()\n set mobile(value: BooleanInput) {\n this._mobile = coerceBooleanProperty(value);\n }\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Represents the total number of items. */\n @Input()\n totalItems: number;\n\n /** Represents the current page number. */\n @Input()\n set currentPage(value: number) {\n this._currentPage = Math.floor(coerceNumberProperty(value, 1));\n }\n get currentPage(): number {\n return this._currentPage;\n }\n\n /** Represents the number of items per page. */\n @Input()\n set itemsPerPage(value: number) {\n value = Math.floor(coerceNumberProperty(value, DEFAULT_ITEMS_PER_PAGE));\n\n this._itemsPerPage = Math.max(value, 1);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n /**\n * The custom template show range of item by current page of items.\n * It has higher priority than `itemsPerPageOptions` property.\n */\n @Input()\n itemsPerPageTemplate: TemplateRef<any>;\n\n /** Represents the options for items per page. */\n @Input()\n set itemsPerPageOptions(value: number[]) {\n this._itemsPerPageOptions = coerceArray<number>(value)\n .map((v) => coerceNumberProperty(v, 0))\n .map((v) => Math.floor(v))\n .filter((v) => v > 0)\n .sort((a, b) => a - b);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPageOptions(): number[] {\n return this._itemsPerPageOptions;\n }\n\n /** Whether to display the total number of items. */\n @Input()\n displayTotalItems = true;\n\n /**\n * The template show range of item by current page of items.\n * Default view: Showing {{ from }}-{{ to }} of {{ of }}\n */\n @Input()\n displayTextTemplate: TemplateRef<any>;\n\n /** Event emitted when the page is changed. */\n @Output()\n pageChangeStart = new EventEmitter<number>();\n\n /** Event emitted when items per page option is changed.*/\n @Output()\n itemsPerPageChange = new EventEmitter<number>();\n\n /** @hidden */\n _pages: number[] = [];\n\n /** @hidden */\n _pagesBeforeCurrent: number[];\n\n /** @hidden */\n _pagesAfterCurrent: number[];\n\n /**\n * Retrieves an object that represents\n * the total number of items, the current page, and the number of items per page.\n */\n get paginationObject(): Pagination {\n return {\n totalItems: this.totalItems,\n currentPage: this.currentPage,\n itemsPerPage: this.itemsPerPage\n };\n }\n\n /** @hidden */\n get _lastPage(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get isFirstPage(): boolean {\n return this.currentPage === 1;\n }\n\n /** @hidden */\n get isLastPage(): boolean {\n return this.currentPage === this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPages(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPagesElementId(): string {\n return this.id + '__total';\n }\n\n /** @hidden */\n get _moreElementValue(): number {\n return this.paginationService.moreElementValue;\n }\n\n /** @hidden */\n _currentShowing: CurrentShowing = {\n from: 0,\n to: 0,\n totalCount: 0\n };\n\n /** @hidden */\n _displayedPageSizeOptions: number[] = [];\n\n /** @hidden */\n private _itemsPerPage: number = DEFAULT_ITEMS_PER_PAGE;\n\n /** @hidden */\n private _mobile = false;\n\n /** @hidden */\n private _itemsPerPageOptions: number[];\n\n /** @hidden */\n private _currentPage = 1;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _translationResolver = new TranslationResolver();\n\n /** @hidden */\n constructor(\n private readonly paginationService: PaginationService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _liveAnnouncer: LiveAnnouncer,\n @Inject(FD_LANGUAGE) private readonly _language: Observable<FdLanguage>,\n @Optional() private readonly _rtlService: RtlService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.currentPage) {\n this.currentPage = changes.currentPage.currentValue;\n }\n if (!this.currentPage || this.currentPage < 1) {\n this.currentPage = 1;\n } else {\n const totalPages = this.paginationService.getTotalPages(this.paginationObject);\n if (this.currentPage > totalPages) {\n this.currentPage = totalPages;\n }\n }\n this._refreshPages();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(this._rtlService?.rtl.subscribe(() => this._refreshPages()));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n skipItemPredicate(item: any): boolean {\n return (\n getComputedStyle(item.nativeElement).display === 'none' ||\n item.nativeElement.getAttribute('disabled') === 'true'\n );\n }\n\n /**\n * Navigates to a specific page.\n * @param page The page to navigate to.\n * @param event The mouse event (optional).\n */\n goToPage(page: number, event?: Event): void {\n if (page > this._lastPage || page < 1) {\n return;\n }\n\n this._refreshPages();\n\n if (event) {\n this._focusCurrentPage();\n }\n\n this.pageChangeStart.emit(page);\n\n this._announcePage(page);\n }\n\n /** Navigates to the first page */\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n /**\n * Navigates to a previous page.\n */\n previousPage(): void {\n this.goToPage(this.currentPage - 1);\n }\n\n /**\n * Navigates to the next page.\n */\n nextPage(): void {\n this.goToPage(this.currentPage + 1);\n }\n\n /** Navigates to the last page */\n goToLastPage(): void {\n this.goToPage(this._lastPage);\n }\n\n /** @hidden */\n _onChangePerPage = (event: number): void => {\n this.itemsPerPage = event;\n this.itemsPerPageChange.emit(this.itemsPerPage);\n\n this._refreshPages();\n\n const maxPage = this._pages[this._pages.length - 1];\n if (this.currentPage > maxPage) {\n this.pageChangeStart.emit(maxPage);\n }\n };\n\n /** @hidden */\n _restoreInputValue(model: NgModel): void {\n model.reset(this.currentPage);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _refreshPages(): void {\n const pagination = this.paginationObject;\n\n this._pages = this.paginationService.getPages(pagination);\n\n const currentPageIndex = this._pages.findIndex((page) => page === this.currentPage);\n\n this._pagesBeforeCurrent = this._pages.slice(0, currentPageIndex);\n this._pagesAfterCurrent = this._pages.slice(currentPageIndex + 1);\n\n const itemsPerPage = pagination.itemsPerPage ?? DEFAULT_ITEMS_PER_PAGE;\n\n this._currentShowing = {\n from: this.currentPage - 1 === 0 ? 1 : (this.currentPage - 1) * itemsPerPage + 1,\n to: Math.min((this.currentPage - 1) * itemsPerPage + itemsPerPage, this.totalItems),\n totalCount: this.totalItems\n };\n\n this._cdr.markForCheck();\n }\n\n /** Focus current page link/input using FocusKeyManager\n * @hidden\n */\n private _focusCurrentPage(): void {\n const currentPageNativeElement =\n getComputedStyle(this._currentPageElement.nativeElement).display === 'none'\n ? this._pageInputElement.nativeElement\n : this._currentPageElement.nativeElement;\n\n const index = this._focusKeyManagerItems\n .toArray()\n .findIndex((elem) => elem.nativeElement === currentPageNativeElement);\n\n this._focusKeyManagerList.focusItem(index);\n }\n\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n private _updateDisplayedPageSizeOptions(): void {\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.itemsPerPage) {\n this._itemsPerPage = this.itemsPerPageOptions.length ? this.itemsPerPageOptions[0] : DEFAULT_ITEMS_PER_PAGE;\n }\n\n this._displayedPageSizeOptions = this.itemsPerPageOptions?.slice() ?? [];\n\n if (!this._displayedPageSizeOptions.includes(this.itemsPerPage)) {\n this._displayedPageSizeOptions.push(this.itemsPerPage);\n }\n\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private async _announcePage(page: number): Promise<void> {\n await this._liveAnnouncer.announce(\n this._translationResolver.resolve(\n await firstValueFrom(this._language),\n 'corePagination.currentPageAriaLabel',\n {\n pageNumber: page,\n totalCount: this.totalItems\n }\n )\n );\n }\n}\n","<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"'corePagination.ariaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.firstLabel' | fdTranslate\"\n [title]=\"'corePagination.firstLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.previousLabel' | fdTranslate\"\n [title]=\"'corePagination.previousLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage }\"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{ 'corePagination.labelBeforeInputMobile' | fdTranslate }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n 'corePagination.inputAriaLabel' | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n 'corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.nextLabel' | fdTranslate\"\n [title]=\"'corePagination.nextLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.lastLabel' | fdTranslate\"\n [title]=\"'corePagination.lastLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ 'corePagination.itemsPerPageLabel' | fdTranslate }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n imports: [PaginationComponent],\n exports: [PaginationComponent]\n})\nexport class PaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-pagination.mjs","sources":["../../../../libs/core/src/lib/pagination/pagination.service.ts","../../../../libs/core/src/lib/pagination/pagination.component.ts","../../../../libs/core/src/lib/pagination/pagination.component.html","../../../../libs/core/src/lib/pagination/pagination.module.ts","../../../../libs/core/src/lib/pagination/fundamental-ngx-core-pagination.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core';\n\nimport { Pagination } from './pagination.model';\n\n/** Constant representing the number of pages which appear before and after current page. */\nconst CORNER_DISPLAY_PAGES = 1;\nconst SIDE_CURRENT_DISPLAY_PAGES = 2;\n\n/**\n * Service that is used to retrieve all the pages, the number of pages, and to validate the pagination object.\n */\n@Injectable()\nexport class PaginationService {\n /** @hidden */\n public readonly moreElementValue = -1;\n\n /**\n * Returns a number array representing the pages of the pagination object.\n * Array length always the same and configured by CORNER_DISPLAY_PAGES & SIDE_CURRENT_DISPLAY_PAGES.\n * @param pagination An object of type *Pagination*.\n */\n getPages(pagination: Pagination): number[] {\n if (!pagination.currentPage) {\n pagination.currentPage = 1;\n }\n\n this.validate(pagination);\n\n const totalPages = this.getTotalPages(pagination);\n const pages = new Array(totalPages).fill(undefined).map((_, i) => i + 1);\n\n // +1 for current page, +2 for \"more\" elements - after start & before end pages\n const pagesToDisplay = CORNER_DISPLAY_PAGES * 2 + SIDE_CURRENT_DISPLAY_PAGES * 2 + 1 + 2;\n\n if (pages.length <= pagesToDisplay) {\n return pages;\n }\n\n const pagesBefore = pagination.currentPage - 1;\n const pagesAfter = totalPages - pagination.currentPage;\n const minimalPagesGap = Math.round(pagesToDisplay / 2);\n\n if (pagesBefore < minimalPagesGap) {\n return [\n ...pages.slice(0, pagesToDisplay - 2),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n if (pagesAfter < minimalPagesGap) {\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(totalPages - pagesToDisplay + 2)\n ];\n }\n\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(\n pagination.currentPage - SIDE_CURRENT_DISPLAY_PAGES - 1,\n pagination.currentPage + SIDE_CURRENT_DISPLAY_PAGES\n ),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n /**\n * Retrieves the total number of pages.\n * @param pagination An object of type *Pagination*.\n */\n getTotalPages(pagination: Pagination): number {\n if (!pagination.itemsPerPage) {\n return 0;\n }\n\n return Math.ceil(pagination.totalItems / pagination.itemsPerPage);\n }\n\n /**\n * Provides validation for the pagination object.\n * @param pagination An object of type *Pagination*.\n */\n validate(pagination: Pagination): void {\n if (isDevMode()) {\n if (isNaN(pagination.totalItems) || pagination.totalItems <= 0) {\n console.warn(\n `\"totalItems\" must be a number greater than zero but got \"${pagination.totalItems}\". This warning only appears in development mode.`\n );\n }\n\n if (isNaN(pagination.itemsPerPage!) || pagination.itemsPerPage! <= 0) {\n console.warn(\n `\"itemsPerPage\" must be a number greater than zero but got \"${pagination.itemsPerPage}\". This warning only appears in development mode.`\n );\n }\n }\n }\n}\n","import { FocusableOption, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceArray, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule, NgModel } from '@angular/forms';\nimport { Observable, Subscription, firstValueFrom } from 'rxjs';\n\nimport { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { OnlyDigitsDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FormControlComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Pagination } from './pagination.model';\nimport { PaginationService } from './pagination.service';\n\n/** Constant representing the default number of items per page. */\nconst DEFAULT_ITEMS_PER_PAGE = 10;\n\ninterface CurrentShowing {\n from: number;\n to: number;\n totalCount: number;\n}\n\nlet paginationUniqueId = 0;\n\n/**\n * The component that is used to provide navigation between paged information.\n * ```html\n * <fd-pagination\n * [totalItems]=\"50\"\n * [itemsPerPage]=\"10\"\n * [currentPage]=\"3\">\n * </fd-pagination>\n * ```\n */\n@Component({\n selector: 'fd-pagination',\n templateUrl: './pagination.component.html',\n providers: [PaginationService, contentDensityObserverProviders()],\n host: {\n class: 'fd-pagination',\n '[class.fd-pagination--mobile]': 'mobile',\n '[class.fd-pagination--short]': '_lastPage <= 9'\n },\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: true,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n FocusKeyManagerListDirective,\n ButtonComponent,\n FocusKeyManagerItemDirective,\n NgFor,\n FormLabelComponent,\n FormsModule,\n FormControlComponent,\n OnlyDigitsDirective,\n SelectComponent,\n OptionComponent,\n FdTranslatePipe\n ]\n})\nexport class PaginationComponent implements OnChanges, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild(FocusKeyManagerListDirective)\n readonly _focusKeyManagerList: FocusKeyManagerListDirective;\n\n /** @hidden */\n @ViewChildren(FocusKeyManagerItemDirective)\n readonly _focusKeyManagerItems: QueryList<FocusKeyManagerItemDirective>;\n\n /** @hidden */\n @ViewChild('pageInputElement', { read: ElementRef })\n readonly _pageInputElement: ElementRef;\n\n /** @hidden */\n @ViewChild('currentPageElement', { read: ElementRef })\n readonly _currentPageElement: ElementRef;\n\n /** Id for the pagination component. If omitted, a unique one is generated. */\n @Input()\n id: string = 'fd-pagination-' + paginationUniqueId++;\n\n /** Whether component should be shown in the mobile mode. */\n @Input()\n set mobile(value: BooleanInput) {\n this._mobile = coerceBooleanProperty(value);\n }\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Represents the total number of items. */\n @Input()\n totalItems: number;\n\n /** Represents the current page number. */\n @Input()\n set currentPage(value: number) {\n this._currentPage = Math.floor(coerceNumberProperty(value, 1));\n }\n get currentPage(): number {\n return this._currentPage;\n }\n\n /** Represents the number of items per page. */\n @Input()\n set itemsPerPage(value: number) {\n value = Math.floor(coerceNumberProperty(value, DEFAULT_ITEMS_PER_PAGE));\n\n this._itemsPerPage = Math.max(value, 1);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n /**\n * The custom template show range of item by current page of items.\n * It has higher priority than `itemsPerPageOptions` property.\n */\n @Input()\n itemsPerPageTemplate: TemplateRef<any>;\n\n /** Represents the options for items per page. */\n @Input()\n set itemsPerPageOptions(value: number[]) {\n this._itemsPerPageOptions = coerceArray<number>(value)\n .map((v) => coerceNumberProperty(v, 0))\n .map((v) => Math.floor(v))\n .filter((v) => v > 0)\n .sort((a, b) => a - b);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPageOptions(): number[] {\n return this._itemsPerPageOptions;\n }\n\n /** Whether to display the total number of items. */\n @Input()\n displayTotalItems = true;\n\n /**\n * The template show range of item by current page of items.\n * Default view: Showing {{ from }}-{{ to }} of {{ of }}\n */\n @Input()\n displayTextTemplate: TemplateRef<any>;\n\n /** Event emitted when the page is changed. */\n @Output()\n pageChangeStart = new EventEmitter<number>();\n\n /** Event emitted when items per page option is changed.*/\n @Output()\n itemsPerPageChange = new EventEmitter<number>();\n\n /** @hidden */\n _pages: number[] = [];\n\n /** @hidden */\n _pagesBeforeCurrent: number[];\n\n /** @hidden */\n _pagesAfterCurrent: number[];\n\n /**\n * Retrieves an object that represents\n * the total number of items, the current page, and the number of items per page.\n */\n get paginationObject(): Pagination {\n return {\n totalItems: this.totalItems,\n currentPage: this.currentPage,\n itemsPerPage: this.itemsPerPage\n };\n }\n\n /** @hidden */\n get _lastPage(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get isFirstPage(): boolean {\n return this.currentPage === 1;\n }\n\n /** @hidden */\n get isLastPage(): boolean {\n return this.currentPage === this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPages(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPagesElementId(): string {\n return this.id + '__total';\n }\n\n /** @hidden */\n get _moreElementValue(): number {\n return this.paginationService.moreElementValue;\n }\n\n /** @hidden */\n _currentShowing: CurrentShowing = {\n from: 0,\n to: 0,\n totalCount: 0\n };\n\n /** @hidden */\n _displayedPageSizeOptions: number[] = [];\n\n /** @hidden */\n private _itemsPerPage: number = DEFAULT_ITEMS_PER_PAGE;\n\n /** @hidden */\n private _mobile = false;\n\n /** @hidden */\n private _itemsPerPageOptions: number[];\n\n /** @hidden */\n private _currentPage = 1;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _translationResolver = new TranslationResolver();\n\n /** @hidden */\n constructor(\n private readonly paginationService: PaginationService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _liveAnnouncer: LiveAnnouncer,\n @Inject(FD_LANGUAGE) private readonly _language: Observable<FdLanguage>,\n @Optional() private readonly _rtlService: RtlService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.currentPage) {\n this.currentPage = changes.currentPage.currentValue;\n }\n if (!this.currentPage || this.currentPage < 1) {\n this.currentPage = 1;\n } else {\n const totalPages = this.paginationService.getTotalPages(this.paginationObject);\n if (this.currentPage > totalPages) {\n this.currentPage = totalPages;\n }\n }\n this._refreshPages();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(this._rtlService?.rtl.subscribe(() => this._refreshPages()));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n skipItemPredicate(item: ElementRef & FocusableOption): boolean {\n return (\n getComputedStyle(item.nativeElement).display === 'none' ||\n item.nativeElement.getAttribute('disabled') === 'true'\n );\n }\n\n /**\n * Navigates to a specific page.\n * @param page The page to navigate to.\n * @param event The mouse event (optional).\n */\n goToPage(page: number, event?: Event): void {\n if (page > this._lastPage || page < 1) {\n return;\n }\n\n this._refreshPages();\n\n if (event) {\n this._focusCurrentPage();\n }\n\n this.pageChangeStart.emit(page);\n\n this._announcePage(page);\n }\n\n /** Navigates to the first page */\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n /**\n * Navigates to a previous page.\n */\n previousPage(): void {\n this.goToPage(this.currentPage - 1);\n }\n\n /**\n * Navigates to the next page.\n */\n nextPage(): void {\n this.goToPage(this.currentPage + 1);\n }\n\n /** Navigates to the last page */\n goToLastPage(): void {\n this.goToPage(this._lastPage);\n }\n\n /** @hidden */\n _onChangePerPage = (event: number): void => {\n this.itemsPerPage = event;\n this.itemsPerPageChange.emit(this.itemsPerPage);\n\n this._refreshPages();\n\n const maxPage = this._pages[this._pages.length - 1];\n if (this.currentPage > maxPage) {\n this.pageChangeStart.emit(maxPage);\n }\n };\n\n /** @hidden */\n _restoreInputValue(model: NgModel): void {\n model.reset(this.currentPage);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _refreshPages(): void {\n const pagination = this.paginationObject;\n\n this._pages = this.paginationService.getPages(pagination);\n\n const currentPageIndex = this._pages.findIndex((page) => page === this.currentPage);\n\n this._pagesBeforeCurrent = this._pages.slice(0, currentPageIndex);\n this._pagesAfterCurrent = this._pages.slice(currentPageIndex + 1);\n\n const itemsPerPage = pagination.itemsPerPage ?? DEFAULT_ITEMS_PER_PAGE;\n\n this._currentShowing = {\n from: this.currentPage - 1 === 0 ? 1 : (this.currentPage - 1) * itemsPerPage + 1,\n to: Math.min((this.currentPage - 1) * itemsPerPage + itemsPerPage, this.totalItems),\n totalCount: this.totalItems\n };\n\n this._cdr.markForCheck();\n }\n\n /** Focus current page link/input using FocusKeyManager\n * @hidden\n */\n private _focusCurrentPage(): void {\n const currentPageNativeElement =\n getComputedStyle(this._currentPageElement.nativeElement).display === 'none'\n ? this._pageInputElement.nativeElement\n : this._currentPageElement.nativeElement;\n\n const index = this._focusKeyManagerItems\n .toArray()\n .findIndex((elem) => elem.nativeElement === currentPageNativeElement);\n\n this._focusKeyManagerList.focusItem(index);\n }\n\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n private _updateDisplayedPageSizeOptions(): void {\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.itemsPerPage) {\n this._itemsPerPage = this.itemsPerPageOptions.length ? this.itemsPerPageOptions[0] : DEFAULT_ITEMS_PER_PAGE;\n }\n\n this._displayedPageSizeOptions = this.itemsPerPageOptions?.slice() ?? [];\n\n if (!this._displayedPageSizeOptions.includes(this.itemsPerPage)) {\n this._displayedPageSizeOptions.push(this.itemsPerPage);\n }\n\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private async _announcePage(page: number): Promise<void> {\n await this._liveAnnouncer.announce(\n this._translationResolver.resolve(\n await firstValueFrom(this._language),\n 'corePagination.currentPageAriaLabel',\n {\n pageNumber: page,\n totalCount: this.totalItems\n }\n )\n );\n }\n}\n","<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"'corePagination.ariaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.firstLabel' | fdTranslate\"\n [title]=\"'corePagination.firstLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.previousLabel' | fdTranslate\"\n [title]=\"'corePagination.previousLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage }\"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{ 'corePagination.labelBeforeInputMobile' | fdTranslate }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n 'corePagination.inputAriaLabel' | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n 'corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.nextLabel' | fdTranslate\"\n [title]=\"'corePagination.nextLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.lastLabel' | fdTranslate\"\n [title]=\"'corePagination.lastLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ 'corePagination.itemsPerPageLabel' | fdTranslate }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n imports: [PaginationComponent],\n exports: [PaginationComponent]\n})\nexport class PaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}