@fundamental-ngx/core 0.35.1 → 0.35.2-rc.2

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 (208) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/directives/avatar-group-overflow-button.directive.d.ts +4 -2
  6. package/avatar-group/esm2020/directives/avatar-group-overflow-button.directive.mjs +5 -1
  7. package/avatar-group/fesm2015/fundamental-ngx-core-avatar-group.mjs +4 -0
  8. package/avatar-group/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  9. package/avatar-group/fesm2020/fundamental-ngx-core-avatar-group.mjs +4 -0
  10. package/avatar-group/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  11. package/avatar-group/package.json +1 -1
  12. package/bar/package.json +1 -1
  13. package/breadcrumb/package.json +1 -1
  14. package/busy-indicator/package.json +1 -1
  15. package/button/package.json +1 -1
  16. package/calendar/package.json +1 -1
  17. package/card/package.json +1 -1
  18. package/carousel/package.json +1 -1
  19. package/checkbox/package.json +1 -1
  20. package/combobox/package.json +1 -1
  21. package/date-picker/package.json +1 -1
  22. package/datetime/package.json +1 -1
  23. package/datetime-picker/package.json +1 -1
  24. package/dialog/package.json +1 -1
  25. package/dynamic-page/package.json +1 -1
  26. package/dynamic-side-content/package.json +1 -1
  27. package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +5 -1
  28. package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +17 -26
  29. package/esm2020/fundamental-ngx.module.mjs +8 -4
  30. package/esm2020/input-group/input-group.component.mjs +3 -3
  31. package/esm2020/overflow-layout/directives/overflow-expand.directive.mjs +36 -0
  32. package/esm2020/overflow-layout/directives/overflow-item-container-ref.directive.mjs +46 -0
  33. package/esm2020/overflow-layout/directives/overflow-item-ref.directive.mjs +57 -0
  34. package/esm2020/overflow-layout/directives/overflow-layout-item-container.directive.mjs +26 -0
  35. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +100 -0
  36. package/esm2020/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +68 -0
  37. package/esm2020/overflow-layout/fundamental-ngx-core-overflow-layout.mjs +5 -0
  38. package/esm2020/overflow-layout/index.mjs +15 -0
  39. package/esm2020/overflow-layout/interfaces/overflow-container.interface.mjs +2 -0
  40. package/esm2020/overflow-layout/interfaces/overflow-expand.interface.mjs +2 -0
  41. package/esm2020/overflow-layout/interfaces/overflow-item-ref.interface.mjs +2 -0
  42. package/esm2020/overflow-layout/interfaces/overflow-item.interface.mjs +2 -0
  43. package/esm2020/overflow-layout/interfaces/overflow-popover-content.interface.mjs +2 -0
  44. package/esm2020/overflow-layout/overflow-layout.component.mjs +300 -0
  45. package/esm2020/overflow-layout/overflow-layout.module.mjs +52 -0
  46. package/esm2020/overflow-layout/tokens/overflow-container.token.mjs +3 -0
  47. package/esm2020/overflow-layout/tokens/overflow-expand.token.mjs +3 -0
  48. package/esm2020/overflow-layout/tokens/overflow-item-ref.token.mjs +3 -0
  49. package/esm2020/overflow-layout/tokens/overflow-item.token.mjs +3 -0
  50. package/esm2020/public_api.mjs +2 -1
  51. package/esm2020/select/select.component.mjs +1 -2
  52. package/facets/package.json +1 -1
  53. package/feed-input/package.json +1 -1
  54. package/feed-list-item/package.json +1 -1
  55. package/fesm2015/fundamental-ngx-core-avatar-group.mjs +4 -0
  56. package/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  57. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
  58. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  59. package/fesm2015/fundamental-ngx-core-input-group.mjs +2 -2
  60. package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  61. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +672 -0
  62. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -0
  63. package/fesm2015/fundamental-ngx-core-select.mjs +0 -1
  64. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  65. package/fesm2015/fundamental-ngx-core.mjs +8 -3
  66. package/fesm2015/fundamental-ngx-core.mjs.map +1 -1
  67. package/fesm2020/fundamental-ngx-core-avatar-group.mjs +4 -0
  68. package/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  69. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
  70. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  71. package/fesm2020/fundamental-ngx-core-input-group.mjs +2 -2
  72. package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  73. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +660 -0
  74. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -0
  75. package/fesm2020/fundamental-ngx-core-select.mjs +0 -1
  76. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  77. package/fesm2020/fundamental-ngx-core.mjs +8 -3
  78. package/fesm2020/fundamental-ngx-core.mjs.map +1 -1
  79. package/file-uploader/package.json +1 -1
  80. package/fixed-card-layout/esm2020/fixed-card-layout.component.mjs +17 -26
  81. package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
  82. package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  83. package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
  84. package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  85. package/fixed-card-layout/fixed-card-layout.component.d.ts +4 -6
  86. package/fixed-card-layout/package.json +1 -1
  87. package/flexible-column-layout/package.json +1 -1
  88. package/form/package.json +1 -1
  89. package/formatted-text/package.json +1 -1
  90. package/fundamental-ngx.module.d.ts +2 -1
  91. package/grid-list/package.json +1 -1
  92. package/icon/package.json +1 -1
  93. package/illustrated-message/package.json +1 -1
  94. package/infinite-scroll/package.json +1 -1
  95. package/info-label/package.json +1 -1
  96. package/inline-help/package.json +1 -1
  97. package/input-group/esm2020/input-group.component.mjs +3 -3
  98. package/input-group/fesm2015/fundamental-ngx-core-input-group.mjs +2 -2
  99. package/input-group/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  100. package/input-group/fesm2020/fundamental-ngx-core-input-group.mjs +2 -2
  101. package/input-group/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  102. package/input-group/package.json +1 -1
  103. package/layout-grid/package.json +1 -1
  104. package/layout-panel/package.json +1 -1
  105. package/link/package.json +1 -1
  106. package/list/package.json +1 -1
  107. package/menu/package.json +1 -1
  108. package/message-box/package.json +1 -1
  109. package/message-strip/package.json +1 -1
  110. package/message-toast/package.json +1 -1
  111. package/micro-process-flow/package.json +1 -1
  112. package/mobile-mode/package.json +1 -1
  113. package/multi-input/package.json +1 -1
  114. package/nested-list/package.json +1 -1
  115. package/notification/package.json +1 -1
  116. package/object-identifier/package.json +1 -1
  117. package/object-marker/package.json +1 -1
  118. package/object-number/package.json +1 -1
  119. package/object-status/package.json +1 -1
  120. package/overflow-layout/README.md +7 -0
  121. package/overflow-layout/directives/overflow-expand.directive.d.ts +15 -0
  122. package/overflow-layout/directives/overflow-item-container-ref.directive.d.ts +25 -0
  123. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +42 -0
  124. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +16 -0
  125. package/overflow-layout/directives/overflow-layout-item.directive.d.ts +38 -0
  126. package/overflow-layout/directives/overflow-layout-popover-content.directive.d.ts +31 -0
  127. package/overflow-layout/esm2020/directives/overflow-expand.directive.mjs +36 -0
  128. package/overflow-layout/esm2020/directives/overflow-item-container-ref.directive.mjs +46 -0
  129. package/overflow-layout/esm2020/directives/overflow-item-ref.directive.mjs +57 -0
  130. package/overflow-layout/esm2020/directives/overflow-layout-item-container.directive.mjs +26 -0
  131. package/overflow-layout/esm2020/directives/overflow-layout-item.directive.mjs +100 -0
  132. package/overflow-layout/esm2020/directives/overflow-layout-popover-content.directive.mjs +68 -0
  133. package/overflow-layout/esm2020/fundamental-ngx-core-overflow-layout.mjs +5 -0
  134. package/overflow-layout/esm2020/index.mjs +15 -0
  135. package/overflow-layout/esm2020/interfaces/overflow-container.interface.mjs +2 -0
  136. package/overflow-layout/esm2020/interfaces/overflow-expand.interface.mjs +2 -0
  137. package/overflow-layout/esm2020/interfaces/overflow-item-ref.interface.mjs +2 -0
  138. package/overflow-layout/esm2020/interfaces/overflow-item.interface.mjs +2 -0
  139. package/overflow-layout/esm2020/interfaces/overflow-popover-content.interface.mjs +2 -0
  140. package/overflow-layout/esm2020/overflow-layout.component.mjs +300 -0
  141. package/overflow-layout/esm2020/overflow-layout.module.mjs +52 -0
  142. package/overflow-layout/esm2020/tokens/overflow-container.token.mjs +3 -0
  143. package/overflow-layout/esm2020/tokens/overflow-expand.token.mjs +3 -0
  144. package/overflow-layout/esm2020/tokens/overflow-item-ref.token.mjs +3 -0
  145. package/overflow-layout/esm2020/tokens/overflow-item.token.mjs +3 -0
  146. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs +672 -0
  147. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -0
  148. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs +660 -0
  149. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -0
  150. package/overflow-layout/fundamental-ngx-core-overflow-layout.d.ts +5 -0
  151. package/overflow-layout/index.d.ts +14 -0
  152. package/overflow-layout/interfaces/overflow-container.interface.d.ts +4 -0
  153. package/overflow-layout/interfaces/overflow-expand.interface.d.ts +11 -0
  154. package/overflow-layout/interfaces/overflow-item-ref.interface.d.ts +38 -0
  155. package/overflow-layout/interfaces/overflow-item.interface.d.ts +20 -0
  156. package/overflow-layout/interfaces/overflow-popover-content.interface.d.ts +11 -0
  157. package/overflow-layout/overflow-layout.component.d.ts +131 -0
  158. package/overflow-layout/overflow-layout.module.d.ts +16 -0
  159. package/overflow-layout/package.json +53 -0
  160. package/overflow-layout/tokens/overflow-container.token.d.ts +3 -0
  161. package/overflow-layout/tokens/overflow-expand.token.d.ts +3 -0
  162. package/overflow-layout/tokens/overflow-item-ref.token.d.ts +3 -0
  163. package/overflow-layout/tokens/overflow-item.token.d.ts +3 -0
  164. package/package.json +9 -1
  165. package/pagination/package.json +1 -1
  166. package/panel/package.json +1 -1
  167. package/popover/package.json +1 -1
  168. package/product-switch/package.json +1 -1
  169. package/progress-indicator/package.json +1 -1
  170. package/public_api.d.ts +1 -0
  171. package/quick-view/package.json +1 -1
  172. package/radio/package.json +1 -1
  173. package/rating-indicator/package.json +1 -1
  174. package/resizable-card-layout/package.json +1 -1
  175. package/scroll-spy/package.json +1 -1
  176. package/scrollbar/package.json +1 -1
  177. package/segmented-button/package.json +1 -1
  178. package/select/esm2020/select.component.mjs +1 -2
  179. package/select/fesm2015/fundamental-ngx-core-select.mjs +0 -1
  180. package/select/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  181. package/select/fesm2020/fundamental-ngx-core-select.mjs +0 -1
  182. package/select/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  183. package/select/package.json +1 -1
  184. package/shared/package.json +1 -1
  185. package/shellbar/package.json +1 -1
  186. package/side-navigation/package.json +1 -1
  187. package/slider/package.json +1 -1
  188. package/split-button/package.json +1 -1
  189. package/splitter/package.json +1 -1
  190. package/status-indicator/package.json +1 -1
  191. package/step-input/package.json +1 -1
  192. package/switch/package.json +1 -1
  193. package/table/package.json +1 -1
  194. package/tabs/package.json +1 -1
  195. package/text/package.json +1 -1
  196. package/theming/package.json +1 -1
  197. package/tile/package.json +1 -1
  198. package/time/package.json +1 -1
  199. package/time-picker/package.json +1 -1
  200. package/timeline/package.json +1 -1
  201. package/title/package.json +1 -1
  202. package/token/package.json +1 -1
  203. package/toolbar/package.json +1 -1
  204. package/tree/package.json +1 -1
  205. package/upload-collection/package.json +1 -1
  206. package/utils/package.json +1 -1
  207. package/vertical-navigation/package.json +1 -1
  208. package/wizard/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fundamental-ngx-core-overflow-layout.mjs","sources":["../../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-container-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/tokens/overflow-expand.token.ts","../../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item-ref.token.ts","../../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item.token.ts","../../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-popover-content.directive.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/directives/overflow-item-ref.directive.ts","../../../../../libs/core/src/lib/overflow-layout/directives/overflow-expand.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 { Directive, ElementRef, 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})\nexport class OverflowItemContainerRefDirective {\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._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","import { ContentChild, Directive, ElementRef, HostBinding } from '@angular/core';\nimport { OverflowItemContainerRefDirective } from './overflow-item-container-ref.directive';\n\n@Directive({\n selector: '[fdOverflowLayoutItemContainer]'\n})\nexport class OverflowLayoutItemContainerDirective {\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__item';\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 { InjectionToken } from '@angular/core';\nimport { OverflowExpand } from '../interfaces/overflow-expand.interface';\n\nexport const FD_OVERFLOW_EXPAND = new InjectionToken<OverflowExpand>('FdOverflowLayoutExpand');\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 { InjectionToken } from '@angular/core';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\n\nexport const FD_OVERFLOW_ITEM = new InjectionToken<OverflowItem>('FdOverflowItem');\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 } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/core/utils';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowPopoverContent } from '../interfaces/overflow-popover-content.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.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})\nexport class OverflowLayoutPopoverContentDirective implements OverflowPopoverContent {\n /**\n * Array of hidden items.\n */\n @Input()\n set items(value: OverflowItemRef[]) {\n this._items = value;\n this._keyboardEventsManager = new FocusKeyManager(\n this._items.filter((item) => item.overflowItem.focusable).map((item) => item.overflowItem)\n )\n .withWrap()\n .withHorizontalOrientation('ltr');\n }\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<OverflowItem>;\n\n /** @hidden */\n private _items: OverflowItemRef[];\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__popover-container';\n\n /** @hidden */\n constructor(@Inject(FD_OVERFLOW_CONTAINER) private _overflowContainer: OverflowContainer) {\n this._overflowContainer?.registerPopoverContent(this);\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.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 * Focuses on the first tabbable element inside directive's element.\n */\n focusFirstTabbableElement(): void {\n this._keyboardEventsManager.setActiveItem(0);\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n ChangeDetectorRef,\n ContentChild,\n HostBinding,\n ViewChild,\n ElementRef,\n NgZone,\n Output,\n EventEmitter,\n HostListener,\n Optional,\n TemplateRef,\n ViewChildren,\n AfterViewInit,\n OnDestroy,\n Input\n} from '@angular/core';\nimport { KeyUtil, resizeObservable, RtlService } from '@fundamental-ngx/core/utils';\nimport { debounceTime, distinctUntilChanged, filter, skip, Subject, Subscription } from 'rxjs';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowContainer } from './interfaces/overflow-container.interface';\nimport { OverflowExpand } from './interfaces/overflow-expand.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from './interfaces/overflow-item.interface';\nimport { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';\nimport { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';\nimport { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';\nimport { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';\nimport { FD_OVERFLOW_ITEM } from './tokens/overflow-item.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 ]\n})\nexport class OverflowLayoutComponent implements 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 * 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)\n _items: QueryList<OverflowItemRef>;\n\n /**\n * @hidden\n * Template for the custom \"More\" button.\n */\n @ContentChild(FD_OVERFLOW_EXPAND)\n _moreButton: OverflowExpand;\n\n /**\n * @hidden\n * List of items that can be focused.\n */\n @ContentChildren(FD_OVERFLOW_ITEM)\n _overflowItems: QueryList<OverflowItem>;\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 private readonly _initialClass = 'fd-overflow-layout';\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<OverflowItem>;\n\n /** @hidden */\n private _listenToItemResize = true;\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 _dir: 'rtl' | 'ltr' = 'ltr';\n\n /** @hidden */\n private _maxVisibleItems = Infinity;\n\n /** @hidden */\n constructor(\n private _cdr: ChangeDetectorRef,\n private _zone: NgZone,\n private _elRef: ElementRef,\n @Optional() private _rtlService: RtlService\n ) {\n this._subscription.add(this._fillTrigger$.pipe(debounceTime(30)).subscribe(() => this._fitVisibleItems()));\n }\n\n /**\n * Triggers layout recalculation of the items.\n */\n triggerRecalculation(): void {\n this._fillTrigger$.next();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n private _keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._allItems.findIndex(\n (item) => item.overflowItem?.focusable && item.elementRef.nativeElement === event.target\n );\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 * Sets current focused element.\n * @param element Element that needs to be focused.\n */\n setFocusedElement(element: OverflowItem): void {\n const index = this._overflowItems.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 ngAfterViewInit(): void {\n this._fitVisibleItems();\n this._setFocusKeyManager();\n this._listenToChanges();\n this._subscribeToRtl();\n }\n\n /** @hidden */\n private _listenToChanges(): void {\n this._subscription.add(\n this._items.changes.subscribe(() => {\n setTimeout(() => {\n this._fitVisibleItems();\n });\n })\n );\n\n this._listenToSizeChanges(this._elRef.nativeElement, this._itemsWrapper.nativeElement);\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 /** @hidden */\n private _fitVisibleItems(): void {\n this._listenToItemResize = false;\n this._allItems = this._items.toArray();\n this._visibleItems.forEach((i) => (i.containerRef.hidden = false));\n this._allItems.forEach((item, index) => {\n item.hidden = false;\n item.index = index;\n });\n this._cdr.detectChanges();\n const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n const itemsContainerWidth = this._itemsWrapper.nativeElement.getBoundingClientRect().width;\n\n if (\n containerWidth >= itemsContainerWidth &&\n this._visibleItems.length <= this.maxVisibleItems &&\n this._hiddenItems.length === 0\n ) {\n this._showMore = false;\n this._cdr.detectChanges();\n this._listenToItemResize = true;\n return;\n }\n this._showMore = true;\n let fittingElmCount = 0;\n let fittingElmsWidth = 0;\n let shouldHideItems = false;\n this._cdr.detectChanges();\n\n const showMoreContainerWidth = this._showMoreContainer.nativeElement.getBoundingClientRect().width;\n let layoutWidth = this._layoutContainer.nativeElement.getBoundingClientRect().width;\n\n // Try to find all forced visible items\n const forcedItemsIndexes = this._getForcedItemsIndexes();\n\n forcedItemsIndexes.forEach((itemIndex) => {\n const container = this._visibleItems.get(itemIndex);\n if (!container) {\n return;\n }\n const elementSize = this._getElementWidth(container.elementRef.nativeElement);\n\n layoutWidth -= elementSize;\n });\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._visibleItems.forEach((item, index) => {\n const itemRef = this._allItems[index];\n if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n return;\n }\n\n const elementSize = this._getElementWidth(item.elementRef.nativeElement);\n const combinedWidth = fittingElmsWidth + elementSize;\n\n if (\n (combinedWidth <= layoutWidth ||\n (item === this._visibleItems.last && combinedWidth <= layoutWidth + showMoreContainerWidth)) &&\n fittingElmCount < this.maxVisibleItems\n ) {\n fittingElmsWidth += elementSize;\n fittingElmCount++;\n } else if (!itemRef.overflowItem.forceVisibility) {\n shouldHideItems = true;\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n }\n });\n\n this._hiddenItems = this._allItems.filter((i) => i.hidden);\n this.visibleItemsCount.emit(this._allItems.filter((i) => !i.hidden).length);\n this.hiddenItemsCount.emit(this._hiddenItems.length);\n\n this._showMore = this._hiddenItems.length > 0;\n\n this._cdr.detectChanges();\n\n this._listenToItemResize = true;\n }\n\n /** @hidden */\n private _setFocusKeyManager(): void {\n this._dir = this._rtlService?.rtl.value ? 'rtl' : 'ltr';\n this._keyboardEventsManager = new FocusKeyManager(this._overflowItems)\n .withWrap()\n .withHorizontalOrientation(this._dir)\n .skipPredicate((item) => !item.focusable || item.hidden);\n }\n\n /** @hidden Rtl change subscription */\n private _subscribeToRtl(): void {\n if (!this._rtlService) {\n return;\n }\n\n const rtlSub = this._rtlService.rtl.subscribe((isRtl) => {\n this._dir = isRtl ? 'rtl' : 'ltr';\n\n this._keyboardEventsManager = this._keyboardEventsManager.withHorizontalOrientation(isRtl ? 'rtl' : 'ltr');\n });\n\n this._subscription.add(rtlSub);\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 elementSize;\n }\n}\n","<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div fdOverflowLayoutItemContainer>\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.hidden, index: item.index }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div class=\"fd-overflow-layout__more\" *ngIf=\"_showMore\" #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\n fd-button\n [fdMenu]=\"true\"\n i18n=\"@overflowLayout.moreItemsButton|Overflow Layout more button text\"\n fdType=\"transparent\"\n >\n {{ _hiddenItems.length }} more\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]=\"{ $implicit: item.hidden, index: item.index }\"\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","import { Directive, ElementRef, 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})\nexport class OverflowItemRefDirective implements OverflowItemRef {\n /**\n * Element ref of the `fdOverflowLayoutItem` directive.\n */\n elementRef: ElementRef<HTMLElement>;\n /**\n * `fdOverflowLayoutItem` directive.\n */\n overflowItem: OverflowItem;\n /**\n * Whether the item is hidden.\n */\n hidden = false;\n /**\n * Index of the item in the array of Overflow Layout Component's items.\n */\n index: number;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowItemRefDirective,\n ctx: OverflowItemDirectiveContext\n ): ctx is OverflowItemDirectiveContext {\n return true;\n }\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowItemDirectiveContext>) {}\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 { Directive, 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})\nexport class OverflowExpandDirective implements OverflowExpand {\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>) {}\n}\n","import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n SkipSelf\n} from '@angular/core';\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})\nexport class OverflowLayoutItemDirective implements OverflowItem, OnInit {\n /** Whether the item should be focusable. */\n @Input()\n focusable = false;\n\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 * Whether the item is hidden.\n */\n get hidden(): boolean {\n return this._overflowItemRef?.hidden === true;\n }\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n private get _tabindex(): number {\n return this.focusable ? 0 : -1;\n }\n\n /** @hidden */\n private _forceVisibility = false;\n\n /** @hidden */\n @HostListener('focus')\n onFocus(): void {\n this._overflowContainer.setFocusedElement(this);\n }\n\n /** @hidden */\n constructor(\n private _overflowContainer: OverflowLayoutComponent,\n public elmRef: ElementRef,\n @Optional() @SkipSelf() @Inject(FD_OVERFLOW_ITEM_REF) private _overflowItemRef: OverflowItemRef | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._overflowItemRef?.setElementRef(this.elmRef);\n this._overflowItemRef?.setOverflowItem(this);\n }\n\n /**\n * Focuses connected to the DOM element.\n */\n focus(): void {\n // Since we use detach() method of ViewContainerRef to remove elements from the visible list,\n // we need to check that element is connected to the DOM.\n this.elmRef.nativeElement.isConnected\n ? this.elmRef.nativeElement.focus()\n : this._overflowItemRef?.elementRef.nativeElement.isConnected\n ? this._overflowItemRef?.elementRef.nativeElement.focus()\n : this._overflowItemRef?.overflowItem.elmRef.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { OverflowLayoutComponent } from './overflow-layout.component';\nimport { OverflowItemRefDirective } from './directives/overflow-item-ref.directive';\nimport { OverflowExpandDirective } from './directives/overflow-expand.directive';\nimport { OverflowLayoutItemDirective } from './directives/overflow-layout-item.directive';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\n\n@NgModule({\n imports: [CommonModule, PopoverModule, ButtonModule],\n exports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective\n ],\n declarations: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective\n ]\n})\nexport class OverflowLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@fundamental-ngx/core/overflow-layout" />
5
+ export * from './index';
@@ -0,0 +1,14 @@
1
+ export * from './overflow-layout.module';
2
+ export * from './overflow-layout.component';
3
+ export * from './directives/overflow-expand.directive';
4
+ export * from './directives/overflow-item-ref.directive';
5
+ export * from './directives/overflow-layout-item.directive';
6
+ export * from './directives/overflow-item-container-ref.directive';
7
+ export * from './directives/overflow-layout-popover-content.directive';
8
+ export * from './interfaces/overflow-expand.interface';
9
+ export * from './interfaces/overflow-item-ref.interface';
10
+ export * from './interfaces/overflow-item.interface';
11
+ export * from './interfaces/overflow-popover-content.interface';
12
+ export * from './tokens/overflow-expand.token';
13
+ export * from './tokens/overflow-item-ref.token';
14
+ export * from './tokens/overflow-item.token';
@@ -0,0 +1,4 @@
1
+ import { OverflowPopoverContent } from './overflow-popover-content.interface';
2
+ export interface OverflowContainer {
3
+ registerPopoverContent(content: OverflowPopoverContent): void;
4
+ }
@@ -0,0 +1,11 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import { OverflowItemRef } from './overflow-item-ref.interface';
3
+ export declare type OverflowExpandDirectiveContext = {
4
+ $implicit: OverflowItemRef[];
5
+ };
6
+ export interface OverflowExpand {
7
+ /**
8
+ * Template reference of the directive.
9
+ */
10
+ templateRef: TemplateRef<OverflowExpandDirectiveContext>;
11
+ }
@@ -0,0 +1,38 @@
1
+ import { ElementRef, TemplateRef } from '@angular/core';
2
+ import { OverflowItem } from './overflow-item.interface';
3
+ export declare type OverflowItemDirectiveContext = {
4
+ $implicit: boolean;
5
+ index: number;
6
+ };
7
+ export interface OverflowItemRef {
8
+ /**
9
+ * Element reference.
10
+ */
11
+ elementRef: ElementRef<HTMLElement>;
12
+ /**
13
+ * Overflow item directive instance.
14
+ */
15
+ overflowItem: OverflowItem;
16
+ /**
17
+ * Whether the item is hidden.
18
+ */
19
+ hidden: boolean;
20
+ /**
21
+ * The index of the item in the array of items.
22
+ */
23
+ index: number;
24
+ /**
25
+ * Template reference of the directive.
26
+ */
27
+ templateRef: TemplateRef<OverflowItemDirectiveContext>;
28
+ /**
29
+ * Sets the element reference of the directive.
30
+ * @param elmRef Element reference.
31
+ */
32
+ setElementRef(elmRef: ElementRef): void;
33
+ /**
34
+ * Sets the overflow item directive.
35
+ * @param item Overflow item directive.
36
+ */
37
+ setOverflowItem(item: OverflowItem): void;
38
+ }
@@ -0,0 +1,20 @@
1
+ import { FocusableOption } from '@angular/cdk/a11y';
2
+ import { ElementRef } from '@angular/core';
3
+ export interface OverflowItem extends FocusableOption {
4
+ /**
5
+ * Whether the item is focusable.
6
+ */
7
+ focusable: boolean;
8
+ /**
9
+ * Whether to enforce the visibility of the item.
10
+ */
11
+ forceVisibility: boolean;
12
+ /**
13
+ * Element reference.
14
+ */
15
+ elmRef: ElementRef;
16
+ /**
17
+ * Whether the item is hidden.
18
+ */
19
+ hidden: boolean;
20
+ }
@@ -0,0 +1,11 @@
1
+ import { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';
2
+ export interface OverflowPopoverContent {
3
+ /**
4
+ * Array of hidden items.
5
+ */
6
+ items: OverflowItemRef[];
7
+ /**
8
+ * Focuses the first focusable item in the container.
9
+ */
10
+ focusFirstTabbableElement(): void;
11
+ }
@@ -0,0 +1,131 @@
1
+ import { QueryList, ChangeDetectorRef, ElementRef, NgZone, EventEmitter, TemplateRef, AfterViewInit, OnDestroy } from '@angular/core';
2
+ import { RtlService } from '@fundamental-ngx/core/utils';
3
+ import { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';
4
+ import { OverflowContainer } from './interfaces/overflow-container.interface';
5
+ import { OverflowExpand } from './interfaces/overflow-expand.interface';
6
+ import { OverflowItemRef } from './interfaces/overflow-item-ref.interface';
7
+ import { OverflowItem } from './interfaces/overflow-item.interface';
8
+ import { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';
9
+ import * as i0 from "@angular/core";
10
+ export declare class OverflowLayoutComponent implements AfterViewInit, OnDestroy, OverflowContainer {
11
+ private _cdr;
12
+ private _zone;
13
+ private _elRef;
14
+ private _rtlService;
15
+ /**
16
+ * Maximum amount of visible items.
17
+ */
18
+ set maxVisibleItems(value: number);
19
+ get maxVisibleItems(): number;
20
+ /**
21
+ * Event, triggered when amount of visible items has been changed.
22
+ */
23
+ visibleItemsCount: EventEmitter<number>;
24
+ /**
25
+ * Event, triggered when amount of hidden items has been changed.
26
+ */
27
+ hiddenItemsCount: EventEmitter<number>;
28
+ /**
29
+ * @hidden
30
+ * List of items to display.
31
+ */
32
+ _items: QueryList<OverflowItemRef>;
33
+ /**
34
+ * @hidden
35
+ * Template for the custom "More" button.
36
+ */
37
+ _moreButton: OverflowExpand;
38
+ /**
39
+ * @hidden
40
+ * List of items that can be focused.
41
+ */
42
+ _overflowItems: QueryList<OverflowItem>;
43
+ /**
44
+ * @hidden
45
+ * List of rendered items.
46
+ */
47
+ _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;
48
+ /**
49
+ * @hidden
50
+ * Items wrapper directive.
51
+ */
52
+ _itemsWrapper: ElementRef<HTMLElement>;
53
+ /**
54
+ * @hidden
55
+ * Layout container element.
56
+ */
57
+ _layoutContainer: ElementRef<HTMLDivElement>;
58
+ /**
59
+ * @hidden
60
+ * "More" button container element.
61
+ */
62
+ _showMoreContainer: ElementRef<HTMLDivElement>;
63
+ /** @hidden */
64
+ _allItems: OverflowItemRef[];
65
+ /** @hidden */
66
+ _hiddenItems: OverflowItemRef[];
67
+ /** @hidden */
68
+ _showMore: boolean;
69
+ /** @hidden */
70
+ private readonly _initialClass;
71
+ /** @hidden */
72
+ private _keyboardEventsManager;
73
+ /** @hidden */
74
+ private _listenToItemResize;
75
+ /** @hidden */
76
+ private readonly _subscription;
77
+ /** @hidden */
78
+ private _overflowPopoverContent;
79
+ /** @hidden */
80
+ private _fillTrigger$;
81
+ /** @hidden */
82
+ private _dir;
83
+ /** @hidden */
84
+ private _maxVisibleItems;
85
+ /** @hidden */
86
+ constructor(_cdr: ChangeDetectorRef, _zone: NgZone, _elRef: ElementRef, _rtlService: RtlService);
87
+ /**
88
+ * Triggers layout recalculation of the items.
89
+ */
90
+ triggerRecalculation(): void;
91
+ /** @hidden */
92
+ ngOnDestroy(): void;
93
+ /** @hidden */
94
+ private _keyUpHandler;
95
+ /**
96
+ * Sets current focused element.
97
+ * @param element Element that needs to be focused.
98
+ */
99
+ setFocusedElement(element: OverflowItem): void;
100
+ /**
101
+ * Registers popover content directive for main component.
102
+ * @param content {OverflowPopoverContent} directive
103
+ */
104
+ registerPopoverContent(content: OverflowPopoverContent): void;
105
+ /** @hidden */
106
+ _itemsTrackFn(_: number, item: OverflowItemRef): TemplateRef<any>;
107
+ /** @hidden */
108
+ _onPopoverStateChange(opened: boolean): void;
109
+ /** @hidden */
110
+ ngAfterViewInit(): void;
111
+ /** @hidden */
112
+ private _listenToChanges;
113
+ /** @hidden */
114
+ private _listenToSizeChanges;
115
+ /** @hidden */
116
+ private _fitVisibleItems;
117
+ /** @hidden */
118
+ private _setFocusKeyManager;
119
+ /** @hidden Rtl change subscription */
120
+ private _subscribeToRtl;
121
+ /** @hidden */
122
+ private _getForcedItemsIndexes;
123
+ /**
124
+ * @hidden
125
+ * Returns combined width of the element including margins.
126
+ * @param element Element to calculate width of.
127
+ */
128
+ private _getElementWidth;
129
+ static ɵfac: i0.ɵɵFactoryDeclaration<OverflowLayoutComponent, [null, null, null, { optional: true; }]>;
130
+ static ɵcmp: i0.ɵɵComponentDeclaration<OverflowLayoutComponent, "fd-overflow-layout", never, { "maxVisibleItems": "maxVisibleItems"; }, { "visibleItemsCount": "visibleItemsCount"; "hiddenItemsCount": "hiddenItemsCount"; }, ["_moreButton", "_items", "_overflowItems"], never>;
131
+ }
@@ -0,0 +1,16 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./overflow-layout.component";
3
+ import * as i2 from "./directives/overflow-item-ref.directive";
4
+ import * as i3 from "./directives/overflow-expand.directive";
5
+ import * as i4 from "./directives/overflow-layout-item.directive";
6
+ import * as i5 from "./directives/overflow-item-container-ref.directive";
7
+ import * as i6 from "./directives/overflow-layout-popover-content.directive";
8
+ import * as i7 from "./directives/overflow-layout-item-container.directive";
9
+ import * as i8 from "@angular/common";
10
+ import * as i9 from "@fundamental-ngx/core/popover";
11
+ import * as i10 from "@fundamental-ngx/core/button";
12
+ export declare class OverflowLayoutModule {
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<OverflowLayoutModule, never>;
14
+ static ɵmod: i0.ɵɵNgModuleDeclaration<OverflowLayoutModule, [typeof i1.OverflowLayoutComponent, typeof i2.OverflowItemRefDirective, typeof i3.OverflowExpandDirective, typeof i4.OverflowLayoutItemDirective, typeof i5.OverflowItemContainerRefDirective, typeof i6.OverflowLayoutPopoverContentDirective, typeof i7.OverflowLayoutItemContainerDirective], [typeof i8.CommonModule, typeof i9.PopoverModule, typeof i10.ButtonModule], [typeof i1.OverflowLayoutComponent, typeof i2.OverflowItemRefDirective, typeof i3.OverflowExpandDirective, typeof i4.OverflowLayoutItemDirective, typeof i5.OverflowItemContainerRefDirective, typeof i6.OverflowLayoutPopoverContentDirective]>;
15
+ static ɵinj: i0.ɵɵInjectorDeclaration<OverflowLayoutModule>;
16
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@fundamental-ngx/core/overflow-layout",
3
+ "version": "0.35.2-rc.2",
4
+ "peerDependencies": {
5
+ "@angular/common": "^13.0.0",
6
+ "@angular/core": "^13.0.0",
7
+ "@angular/cdk": "~13.2.4",
8
+ "@fundamental-ngx/core/utils": "0.35.2-rc.2",
9
+ "rxjs": "7.5.4",
10
+ "@fundamental-ngx/core/shared": "0.35.2-rc.2",
11
+ "core-js": "3.21.1",
12
+ "zone.js": "0.11.4",
13
+ "@angular/platform-browser-dynamic": "~13.2.4",
14
+ "@angular/forms": "~13.2.4",
15
+ "@angular/animations": "~13.2.4",
16
+ "@angular/router": "~13.2.4",
17
+ "@angular/platform-browser": "~13.2.4",
18
+ "lodash-es": "4.17.21",
19
+ "focus-trap": "6.7.3",
20
+ "@fundamental-ngx/core/popover": "0.35.2-rc.2",
21
+ "@fundamental-ngx/core/notification": "0.35.2-rc.2",
22
+ "@fundamental-ngx/core/button": "0.35.2-rc.2",
23
+ "@fundamental-ngx/core/icon": "0.35.2-rc.2",
24
+ "@fundamental-ngx/core/mobile-mode": "0.35.2-rc.2",
25
+ "@fundamental-ngx/core/dialog": "0.35.2-rc.2",
26
+ "@fundamental-ngx/core/bar": "0.35.2-rc.2",
27
+ "@fundamental-ngx/core/title": "0.35.2-rc.2",
28
+ "@fundamental-ngx/core/busy-indicator": "0.35.2-rc.2"
29
+ },
30
+ "dependencies": {
31
+ "tslib": "^2.0.0"
32
+ },
33
+ "module": "fesm2015/fundamental-ngx-core-overflow-layout.mjs",
34
+ "es2020": "fesm2020/fundamental-ngx-core-overflow-layout.mjs",
35
+ "esm2020": "esm2020/fundamental-ngx-core-overflow-layout.mjs",
36
+ "fesm2020": "fesm2020/fundamental-ngx-core-overflow-layout.mjs",
37
+ "fesm2015": "fesm2015/fundamental-ngx-core-overflow-layout.mjs",
38
+ "typings": "fundamental-ngx-core-overflow-layout.d.ts",
39
+ "exports": {
40
+ "./package.json": {
41
+ "default": "./package.json"
42
+ },
43
+ ".": {
44
+ "types": "./fundamental-ngx-core-overflow-layout.d.ts",
45
+ "esm2020": "./esm2020/fundamental-ngx-core-overflow-layout.mjs",
46
+ "es2020": "./fesm2020/fundamental-ngx-core-overflow-layout.mjs",
47
+ "es2015": "./fesm2015/fundamental-ngx-core-overflow-layout.mjs",
48
+ "node": "./fesm2015/fundamental-ngx-core-overflow-layout.mjs",
49
+ "default": "./fesm2020/fundamental-ngx-core-overflow-layout.mjs"
50
+ }
51
+ },
52
+ "sideEffects": false
53
+ }
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { OverflowContainer } from '../interfaces/overflow-container.interface';
3
+ export declare const FD_OVERFLOW_CONTAINER: InjectionToken<OverflowContainer>;
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { OverflowExpand } from '../interfaces/overflow-expand.interface';
3
+ export declare const FD_OVERFLOW_EXPAND: InjectionToken<OverflowExpand>;
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';
3
+ export declare const FD_OVERFLOW_ITEM_REF: InjectionToken<OverflowItemRef>;
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { OverflowItem } from '../interfaces/overflow-item.interface';
3
+ export declare const FD_OVERFLOW_ITEM: InjectionToken<OverflowItem>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "description": "Fundamental Library for Angular - core",
6
6
  "license": "Apache-2.0",
@@ -472,6 +472,14 @@
472
472
  "node": "./fesm2015/fundamental-ngx-core-object-status.mjs",
473
473
  "default": "./fesm2020/fundamental-ngx-core-object-status.mjs"
474
474
  },
475
+ "./overflow-layout": {
476
+ "types": "./overflow-layout/fundamental-ngx-core-overflow-layout.d.ts",
477
+ "esm2020": "./esm2020/overflow-layout/fundamental-ngx-core-overflow-layout.mjs",
478
+ "es2020": "./fesm2020/fundamental-ngx-core-overflow-layout.mjs",
479
+ "es2015": "./fesm2015/fundamental-ngx-core-overflow-layout.mjs",
480
+ "node": "./fesm2015/fundamental-ngx-core-overflow-layout.mjs",
481
+ "default": "./fesm2020/fundamental-ngx-core-overflow-layout.mjs"
482
+ },
475
483
  "./pagination": {
476
484
  "types": "./pagination/fundamental-ngx-core-pagination.d.ts",
477
485
  "esm2020": "./esm2020/pagination/fundamental-ngx-core-pagination.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/pagination",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/panel",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/popover",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/product-switch",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/progress-indicator",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
package/public_api.d.ts CHANGED
@@ -91,3 +91,4 @@ export * from '@fundamental-ngx/core/progress-indicator';
91
91
  export * from '@fundamental-ngx/core/scrollbar';
92
92
  export * from '@fundamental-ngx/core/theming';
93
93
  export * from '@fundamental-ngx/core/utils';
94
+ export * from '@fundamental-ngx/core/overflow-layout';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/quick-view",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/radio",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/rating-indicator",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/resizable-card-layout",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/scroll-spy",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/scrollbar",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/segmented-button",
3
- "version": "0.35.1",
3
+ "version": "0.35.2-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"