@fundamental-ngx/platform 0.46.2-rc.2 → 0.46.2-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 (105) hide show
  1. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -2
  2. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +2 -2
  3. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +2 -2
  4. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +1 -1
  5. package/esm2022/approval-flow/approval-flow.component.mjs +3 -3
  6. package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
  7. package/esm2022/feed-input/feed-input.component.mjs +2 -2
  8. package/esm2022/form/combobox/combobox/combobox.component.mjs +3 -3
  9. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +3 -3
  10. package/esm2022/form/combobox/combobox.module.mjs +20 -4
  11. package/esm2022/form/combobox/commons/base-combobox.mjs +36 -28
  12. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +148 -0
  13. package/esm2022/form/combobox/index.mjs +4 -3
  14. package/esm2022/form/form-group/form-field/form-field.component.mjs +2 -2
  15. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +2 -2
  16. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +2 -2
  17. package/esm2022/form/form-group/form-group.component.mjs +3 -3
  18. package/esm2022/form/index.mjs +37 -36
  19. package/esm2022/form/input-group/input-group.component.mjs +2 -2
  20. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +4 -2
  21. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +7 -5
  22. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +3 -3
  23. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
  24. package/esm2022/form/multi-input/multi-input.component.mjs +6 -4
  25. package/esm2022/form/select/select/select.component.mjs +3 -3
  26. package/esm2022/form/step-input/number/number-step-input.component.mjs +2 -2
  27. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +2 -2
  28. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +2 -2
  29. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +2 -2
  30. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +1 -1
  31. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +2 -2
  32. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +1 -1
  33. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +2 -2
  34. package/esm2022/link/link.component.mjs +3 -3
  35. package/esm2022/list/list.component.mjs +2 -2
  36. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +2 -2
  37. package/esm2022/list/object-list-item/object-list-item.component.mjs +2 -2
  38. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +2 -2
  39. package/esm2022/menu/menu-item.component.mjs +2 -2
  40. package/esm2022/menu/menu.component.mjs +2 -2
  41. package/esm2022/message-popover/components/message-view/message-view.component.mjs +3 -3
  42. package/esm2022/message-popover/message-popover.component.mjs +2 -2
  43. package/esm2022/object-attribute/object-attribute.component.mjs +2 -2
  44. package/esm2022/page-footer/page-footer.component.mjs +2 -2
  45. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +3 -3
  46. package/esm2022/search-field/search-field.component.mjs +3 -3
  47. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +2 -2
  48. package/esm2022/shared/domain/data-source.mjs +3 -2
  49. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +2 -2
  50. package/esm2022/split-menu-button/split-menu-button.component.mjs +2 -2
  51. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +2 -2
  52. package/esm2022/table/table.component.mjs +13 -12
  53. package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +2 -2
  54. package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +2 -2
  55. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +2 -2
  56. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +3 -3
  57. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +2 -2
  58. package/esm2022/variant-management/variant-management.component.mjs +2 -2
  59. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +3 -3
  60. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +6 -6
  61. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  62. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -2
  63. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -2
  64. package/fesm2022/fundamental-ngx-platform-form.mjs +484 -311
  65. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +8 -8
  67. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-platform-link.mjs +2 -2
  69. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-platform-list.mjs +7 -7
  71. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-platform-menu.mjs +4 -4
  73. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +4 -4
  74. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-platform-object-attribute.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -2
  77. package/fesm2022/fundamental-ngx-platform-search-field.mjs +4 -4
  78. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +1 -1
  80. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-platform-shared.mjs +2 -1
  82. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
  84. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +2 -2
  86. package/fesm2022/fundamental-ngx-platform-table.mjs +12 -11
  87. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +2 -2
  89. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +3 -3
  91. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  92. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +3 -3
  93. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +2 -2
  95. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  96. package/form/combobox/combobox.module.d.ts +2 -1
  97. package/form/combobox/commons/base-combobox.d.ts +6 -4
  98. package/form/combobox/directives/combobox-item.directive.d.ts +86 -0
  99. package/form/combobox/index.d.ts +3 -2
  100. package/form/index.d.ts +36 -35
  101. package/fundamental-ngx-platform-v0.46.2-rc.21.tgz +0 -0
  102. package/package.json +4 -4
  103. package/schematics/ng-add/index.js +1 -1
  104. package/table/table.component.d.ts +4 -3
  105. package/fundamental-ngx-platform-v0.46.2-rc.2.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-icon-tab-bar.mjs","sources":["../../../../libs/platform/src/lib/icon-tab-bar/constants.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-base.class.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/closable-icon-tab-bar.class.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.ts","../../../../libs/platform/src/lib/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.ts","../../../../libs/platform/src/lib/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/icon-tab-bar.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/icon-tab-bar.component.html","../../../../libs/platform/src/lib/icon-tab-bar/icon-tab-bar.module.ts","../../../../libs/platform/src/lib/icon-tab-bar/fundamental-ngx-platform-icon-tab-bar.ts"],"sourcesContent":["export const UNIQUE_KEY_SEPARATOR = '.';\nexport const FLIPPER_SIZE = {\n width: 20,\n height: 44,\n verticalHeight: 20\n};\nexport const ICON_TAB_HIDDEN_CLASS_NAME = 'fd-icon-tab-bar__item--hidden';\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n isDevMode,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { KeyUtil, OverflowListDirective } from '@fundamental-ngx/cdk/utils';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME, UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\nimport { TabConfig } from '../interfaces/tab-config.interface';\nimport { TabDestinyMode } from '../types';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\n\n@Directive()\nexport abstract class IconTabBarBase implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * @hidden\n * List of tab elements, that can receive focus.\n * There's a separate mapping function to get actual html element: `_getTabUIElementFocusable`\n */\n abstract _tabUIElements: QueryList<unknown>;\n /** @hidden */\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n tabsConfig: TabConfig[] = [];\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description densityMode setter triggers tabs to re-calculation overflowed tabs\n */\n @Input()\n set densityMode(value: TabDestinyMode) {\n // Skip first value && value doesn't equal to previous one\n if (this._densityMode && value !== this._densityMode) {\n this._triggerRecalculationVisibleItems();\n }\n this._densityMode = value;\n }\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selected: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Reference to OverflowListDirective\n */\n @ViewChild(OverflowListDirective)\n overflowDirective: OverflowListDirective;\n\n /** @hidden */\n _selectedUid?: string;\n\n /** @hidden */\n _extraTabs: IconTabBarItem[] = [];\n\n /** @hidden */\n _lastVisibleTabIndex: number;\n\n /** @hidden */\n _tabs: IconTabBarItem[] = [];\n\n /** @hidden */\n private _densityMode: TabDestinyMode;\n\n /** @hidden */\n private _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n private _destroyed = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef, protected _ngZone: NgZone) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabsConfig && !changes.tabsConfig.firstChange) {\n this._initTabs();\n this._triggerRecalculationVisibleItems();\n return;\n }\n if (changes.isRtl && !changes.isRtl.firstChange) {\n this._triggerRecalculationVisibleItems();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initTabs();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._destroyed = true;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @param event\n */\n _selectItem(selectedItem: IconTabBarItem, event?: Event): void {\n event?.stopPropagation();\n this._selectedUid = selectedItem.uId;\n selectedItem.badge = false;\n this.selected.emit(selectedItem);\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem | undefined, currentIndex: number): void {\n if (tab && KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousItem(currentIndex) : this._focusNextItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextItem(currentIndex) : this._focusPreviousItem(currentIndex);\n }\n }\n\n /** @hidden focuses next tab */\n _focusNextItem(currentIndex: number): void {\n const nextIndex = currentIndex === this._tabs.length - 1 ? 0 : currentIndex + 1;\n this._focusItem(nextIndex);\n }\n\n /** @hidden focuses previous tab */\n _focusPreviousItem(currentIndex: number): void {\n if (currentIndex === 0) {\n // if current focused element is first, focus the last one. If tabs are overflowed, focus the last tab in the popover\n this._focusItem(this._tabs.length - 1, true);\n } else {\n this._focusItem(currentIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @param tabIndex index of the tab to apply focus\n * @param focusLast whether to focus first or last item in the popover\n */\n _focusItem(tabIndex: number, focusLast = false): void {\n if (tabIndex > this._lastVisibleTabIndex) {\n this._tabBarPopover._openPopover(focusLast);\n } else {\n this._getTabUIElementFocusable(this._tabUIElements.get(tabIndex))?.focus();\n }\n }\n\n /** @hidden */\n _trackByTab(index: number, tab: IconTabBarItem): string {\n return tab.uId;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n _selectExtraItem(selectedItem: IconTabBarItem): void {\n const deletedItem = this._tabs.splice(this._lastVisibleTabIndex, 1, selectedItem)[0] as IconTabBarItem;\n this._tabs.splice(selectedItem.index, 1, deletedItem);\n\n deletedItem.index = selectedItem.index;\n deletedItem.uId = `${deletedItem.index}`;\n const itemToPopover = cloneDeep(deletedItem);\n deletedItem.hidden = true;\n deletedItem.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n let indexInExtraItems;\n this._extraTabs.forEach((item, index) => {\n if (item.index === selectedItem.index) {\n indexInExtraItems = index;\n }\n });\n\n selectedItem.index = this._lastVisibleTabIndex;\n selectedItem.uId = `${selectedItem.index}`;\n selectedItem.hidden = false;\n if (selectedItem.color) {\n selectedItem.cssClasses = [`fd-icon-tab-bar__item--${selectedItem.color}`];\n }\n this._extraTabs.splice(indexInExtraItems, 1, itemToPopover);\n this._extraTabs = [...this._extraTabs];\n\n this._selectItem(selectedItem);\n this._triggerRecalculationVisibleItems();\n this._focusItem(this._lastVisibleTabIndex);\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n this._lastVisibleTabIndex = this._tabs.length - 1 - extraItems;\n this._tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n this._extraTabs = [];\n\n for (let i = this._lastVisibleTabIndex + 1; i < this._tabs.length; i++) {\n const tab = this._tabs[i];\n this._extraTabs.push(cloneDeep(tab));\n tab.hidden = true;\n tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n * Mapping function to resolve UI tab element to it's focusable part/descendant\n */\n protected _getTabUIElementFocusable(tabUIElement: unknown): HTMLElement | null {\n if (tabUIElement && typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n if ((<ElementRef>tabUIElement).nativeElement instanceof HTMLElement) {\n return (<ElementRef<HTMLElement>>tabUIElement).nativeElement;\n }\n }\n if (isDevMode()) {\n console.warn('Failed to get focusable tab element');\n }\n return null;\n }\n\n /**\n * @hidden\n * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected _triggerRecalculationVisibleItems(): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntil(this._onDestroy$)).subscribe(() => {\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n this._tabs = this._generateTabBarItems(this.tabsConfig);\n const selectedItem = this._tabs.find((item) => item.active);\n this._selectedUid = selectedItem?.uId;\n this._lastVisibleTabIndex = this._tabs.length - 1;\n }\n\n /**\n * @hidden\n * @description generate IconTabItems from TabConfig array\n */\n private _generateTabBarItems(config: TabConfig[]): IconTabBarItem[] {\n const flatIndexRef: FlatIndex = { value: 0 };\n return config.map((item, index) => {\n const result: IconTabBarItem = {\n ...item,\n index,\n cssClasses: [],\n uId: index.toString(),\n hidden: false,\n subItems: undefined,\n flatIndex: flatIndexRef.value++\n };\n if (item.color) {\n result.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n result.subItems = item.subItems?.length\n ? this._generateSubItems(item.subItems, result, flatIndexRef)\n : undefined;\n return result;\n });\n }\n\n /** @hidden */\n private _generateSubItems(\n subItems: TabConfig[],\n parent: IconTabBarItem,\n flatIndexRef: FlatIndex\n ): IconTabBarItem[] {\n return subItems?.map((item, index) => {\n const result: IconTabBarItem = {\n ...item,\n index,\n uId: `${parent.uId}${UNIQUE_KEY_SEPARATOR}${index}`,\n cssClasses: [],\n subItems: undefined,\n flatIndex: flatIndexRef.value++,\n parentUId: parent.uId\n };\n if (Array.isArray(item.subItems) && item.subItems.length) {\n result.subItems = this._generateSubItems(item.subItems, result, flatIndexRef);\n }\n return result;\n });\n }\n}\n\n/** @hidden helper object that is used in tab generation functions to calculate their indexes not depending on level of nesting */\ninterface FlatIndex {\n value: number;\n}\n","import { Directive, EventEmitter, Output } from '@angular/core';\nimport { UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarBase } from './icon-tab-bar-base.class';\n\n@Directive()\nexport abstract class ClosableIconTabBar extends IconTabBarBase {\n /**\n * Event emits when user clicks on x button in tab.\n */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _closeTab(itemIndex: string): void {\n const tab = this._getTabInfoFromMainList(itemIndex);\n\n if (!tab?.parent) {\n return;\n }\n\n tab.parent.splice(\n tab.parent.findIndex((item) => item.uId === itemIndex),\n 1\n );\n\n this._tabs = this._updateTabs(this._tabs);\n\n this._triggerRecalculationVisibleItems();\n this.closeTab.emit(tab.tab);\n }\n\n /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n protected _updateTabs(arr: IconTabBarItem[], parentUid?: string, flatIndexRef = { value: 0 }): IconTabBarItem[] {\n return arr.map((item, index) => {\n item.index = index;\n item.uId = parentUid ? `${parentUid}${UNIQUE_KEY_SEPARATOR}${index}` : `${index}`;\n item.flatIndex = flatIndexRef.value++;\n item.parentUId = parentUid;\n if (!parentUid && item.color) {\n item.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n item.subItems = this._updateTabs(item.subItems, item.uId, flatIndexRef);\n }\n return { ...item };\n });\n }\n\n /**\n * @hidden\n * @param uid\n * @param arr\n * @returns {parent, tab}\n * @description Get tab reference inside main tab array and reference to parent array.\n */\n protected _getTabInfoFromMainList(\n uid: string,\n arr: any[] = this._tabs\n ): { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined {\n let result: { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined;\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n if (item.uId === uid) {\n result = { parent: arr, tab: item };\n break;\n } else if (Array.isArray(item.subItems)) {\n result = this._getTabInfoFromMainList(uid, item.subItems);\n if (result) {\n break;\n }\n }\n }\n return result;\n }\n}\n","import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Directive()\nexport abstract class IconTabBarPopoverBase implements OnChanges {\n /** @hidden list of tab html elements, that can receive focus. Each item should have \"data-flatIndex\" attribute */\n abstract _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Reference to PopoverComponent\n */\n @ViewChild('popover')\n popover: PopoverComponent;\n\n /**\n * @description Sub items array\n */\n @Input()\n extraTabs: IconTabBarItem[];\n\n /**\n * @description Should we show separator between subItems\n */\n @Input()\n isSeparators = false;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selectedExtraItem: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** @description Emits when popover is closed and focus should be applied to first visible tab */\n @Output()\n focusFirstVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** @description Emits when popover is closed and focus should be applied to last visible tab */\n @Output()\n focusLastVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emits when user clicks on x button in tab. */\n @Output()\n closeTab = new EventEmitter<string>();\n\n /**\n * @hidden\n * @description state of popover\n */\n _isOpen = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.extraTabs) {\n this._setStyles(this.extraTabs);\n }\n }\n\n /**\n * @hidden\n * @description Generate styles for subItems\n */\n protected _setStyles(items: IconTabBarItem[]): void {\n items.forEach((item) => {\n if (item.color) {\n item.cssClasses = [`fd-icon-tab-bar__list-item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n this._setStyles(item.subItems);\n }\n });\n }\n\n /**\n * @hidden\n * @param focusLast whether to focus first or last item in the popover\n */\n _openPopover(focusLast = false): void {\n if (!this._isOpen) {\n this.popover.open();\n }\n if (focusLast) {\n this._tabExtraUIElements.get(this._tabExtraUIElements.length - 1)?.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _focusPreviousPopoverItem(currentIndex: number): void {\n if (currentIndex === 0) {\n this.popover.close();\n this.focusLastVisibleItem.emit();\n } else {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[currentIndex - 1].focus();\n }\n }\n\n /** @hidden */\n _focusNextPopoverItem(currentIndex: number): void {\n if (currentIndex === this._tabExtraUIElements.length - 1) {\n this.popover.close();\n this.focusFirstVisibleItem.emit();\n } else {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[currentIndex + 1].focus();\n }\n }\n\n /** @hidden */\n private _getOrderedTabExtraUIElements(): HTMLElement[] {\n return this._tabExtraUIElements\n .toArray()\n .map((e) => ({\n flatIndex: parseInt(e.nativeElement.getAttribute('data-flatIndex')!, 10),\n nativeElement: e.nativeElement\n }))\n .sort(({ flatIndex: aFlatIndex }, { flatIndex: bFlatIndex }) => aFlatIndex - bFlatIndex)\n .map(({ nativeElement }) => nativeElement);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.selectedExtraItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem, currentIndex: number): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousPopoverItem(currentIndex) : this._focusNextPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextPopoverItem(currentIndex) : this._focusPreviousPopoverItem(currentIndex);\n }\n }\n\n /** @hidden */\n _trackByTab(index: number, tab: IconTabBarItem): string {\n return tab.uId;\n }\n}\n","import { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-icon-tab-bar-popover',\n templateUrl: './icon-tab-bar-popover.component.html',\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n NgFor,\n NgIf,\n IconComponent,\n NgClass,\n ButtonComponent\n ]\n})\nexport class IconTabBarPopoverComponent extends IconTabBarPopoverBase {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing position inside container left/right\n */\n @Input()\n leftSide = false;\n\n /**\n * @description Label for button\n */\n @Input()\n label = 'more';\n\n /** Whether to display labels for tab items */\n @Input()\n showItemLabel: boolean;\n}\n","<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n <ng-container *ngFor=\"let item of extraTabs; let idx = index; trackBy: _trackByTab\">\n <li *ngIf=\"isSeparators\" tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n </span>\n <span\n *ngIf=\"showItemLabel && item.label\"\n class=\"fd-list__title fd-icon-tab-bar__list-item-title\"\n >{{ item.label }}</span\n >\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n <span *ngIf=\"item.counter\" class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ item.counter }})\n </span>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n </ng-container>\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { NgFor, NgIf, SlicePipe } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-filter-type',\n templateUrl: './icon-tab-bar-filter-type.component.html',\n standalone: true,\n imports: [\n OverflowListDirective,\n NgIf,\n OverflowListItemDirective,\n NgFor,\n IconComponent,\n IconTabBarPopoverComponent,\n SlicePipe,\n ButtonComponent\n ]\n})\nexport class IconTabBarFilterTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /**\n * @description Boolean flag indicating to show total tab\n */\n @Input()\n showTotalTab = true;\n\n /** @hidden */\n _totalTab?: IconTabBarItem;\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n super._initTabs();\n this._totalTab = this.showTotalTab ? this._tabs[0] : undefined;\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n <li *ngIf=\"showTotalTab\" class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === _selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n <span *ngIf=\"_totalTab?.counter\" class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label }}</span>\n </div>\n </a>\n </li>\n <li\n *ngFor=\"let item of _tabs | slice : 1; let idx = index; trackBy: _trackByTab\"\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n <span *ngIf=\"item.counter\" class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label }}</div>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <li *ngIf=\"_extraTabs.length\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n</ul>\n","import { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-icon-type',\n templateUrl: './icon-tab-bar-icon-type.component.html',\n standalone: true,\n imports: [\n OverflowListDirective,\n NgFor,\n OverflowListItemDirective,\n NgClass,\n IconComponent,\n NgIf,\n ButtonComponent,\n IconTabBarPopoverComponent\n ]\n})\nexport class IconTabBarIconTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** Whether to display labels for tab items */\n @Input()\n showLabel: boolean;\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n <li\n *ngFor=\"let item of _tabs; let idx = index; trackBy: _trackByTab\"\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n >\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n <span *ngIf=\"item.counter && (!item.label || !showLabel)\" class=\"fd-icon-tab-bar__counter\">{{\n item.counter\n }}</span>\n </div>\n <div *ngIf=\"showLabel && item.label\" class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <li *ngIf=\"_extraTabs.length\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [showItemLabel]=\"showLabel\"\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n</ul>\n","import { Component, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { NgFor, NgIf } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-process-type',\n templateUrl: './icon-tab-bar-process-type.component.html',\n standalone: true,\n imports: [\n OverflowListDirective,\n NgIf,\n IconTabBarPopoverComponent,\n NgFor,\n OverflowListItemDirective,\n IconComponent,\n ButtonComponent\n ]\n})\nexport class IconTabBarProcessTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** @hidden */\n _offsetOverflowDirective = 30;\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _nextSteps: IconTabBarItem[] = [];\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _prevSteps: IconTabBarItem[] = [];\n\n /** @hidden */\n _showLeftBtn = false;\n\n /** @hidden */\n _showRightBtn = false;\n\n /** @hidden */\n private _firstVisibleTabIndex = 0;\n\n /** @hidden */\n private _currentStepIndex = 0;\n\n /** @hidden */\n _anchorIndexForExtraBtnDirective: number;\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._currentStepIndex = selectedItem.index;\n super._selectItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<void> {\n this._currentStepIndex = selectedItem.index;\n let amountOfPreviousSteps;\n let amountOfNextSteps;\n // We have to cases (strategy) for overflow extra tabs.\n // 1) When user click on step inside previous steps popover\n // 2) When user click on step inside next steps popover\n let isPreviousStepsStrategy: boolean;\n if (this._currentStepIndex > this._lastVisibleTabIndex) {\n amountOfNextSteps = this._nextSteps.length - (this._currentStepIndex - this._lastVisibleTabIndex);\n this._showRightBtn = amountOfNextSteps > 0;\n this._showLeftBtn = true;\n isPreviousStepsStrategy = false;\n } else {\n amountOfPreviousSteps = this._prevSteps.length - (this._firstVisibleTabIndex - this._currentStepIndex);\n this._showRightBtn = true;\n isPreviousStepsStrategy = true;\n this._showLeftBtn = amountOfPreviousSteps > 0;\n }\n this._selectItem(selectedItem);\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n if (this.overflowDirective) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n isPreviousStepsStrategy\n ? this.recalculateItemsByPrevArr(extra, amountOfPreviousSteps)\n : this._recalculateItemsByNextArr(extra, amountOfNextSteps);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n const amountOfPrevSteps = this._currentStepIndex > extraItems ? extraItems : this._currentStepIndex;\n this.recalculateItemsByPrevArr(extraItems, amountOfPrevSteps);\n }\n\n /** @hidden */\n private _clearExtraList(): void {\n this._nextSteps = [];\n this._prevSteps = [];\n this._tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfNextSteps\n * @description We fill the array of the next steps to the selected tab,\n * based on this we generate the array of the previous steps if it is necessary\n */\n private _recalculateItemsByNextArr(extraItems: number, amountOfNextSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const visibleAmountOfItems = this._tabs.length - extraItems;\n for (let i = this._tabs.length - amountOfNextSteps; i < this._tabs.length; i++) {\n this._nextSteps.push(cloneDeep(this._tabs[i]));\n this._tabs[i].hidden = true;\n this._tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._showRightBtn = !!this._nextSteps.length;\n this._firstVisibleTabIndex = this._tabs.length - visibleAmountOfItems - this._nextSteps.length;\n this._lastVisibleTabIndex = this._tabs.length - amountOfNextSteps - 1;\n\n if (this._nextSteps.length === extraItems) {\n return;\n }\n\n let amountOfPrevSteps = extraItems - this._nextSteps.length;\n let nextIndex = this._firstVisibleTabIndex - 1;\n while (amountOfPrevSteps > 0) {\n this._prevSteps.push(cloneDeep(this._tabs[nextIndex]));\n this._tabs[nextIndex].hidden = true;\n this._tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n --nextIndex;\n --amountOfPrevSteps;\n }\n // Added +1 for left button\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showLeftBtn = !!this._prevSteps.length;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfPreviousSteps\n * @description We fill the array of the previous steps to the selected tab,\n * based on this we generate the array of the next steps if it is necessary\n */\n private recalculateItemsByPrevArr(extraItems: number, amountOfPreviousSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const visibleAmountOfItems = this._tabs.length - extraItems;\n for (let i = amountOfPreviousSteps - 1; i >= 0; i--) {\n this._prevSteps.push(cloneDeep(this._tabs[i]));\n this._tabs[i].hidden = true;\n this._tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._firstVisibleTabIndex = this._prevSteps.length;\n this._lastVisibleTabIndex = this._prevSteps.length + visibleAmountOfItems - 1;\n this._showLeftBtn = !!this._prevSteps.length;\n\n if (this._prevSteps.length === extraItems) {\n this._showRightBtn = false;\n return;\n }\n\n let amountOfNextSteps = extraItems - this._prevSteps.length;\n let nextIndex = this._prevSteps.length ? this._prevSteps.length + visibleAmountOfItems : visibleAmountOfItems;\n while (amountOfNextSteps > 0) {\n this._nextSteps.push(cloneDeep(this._tabs[nextIndex]));\n this._tabs[nextIndex].hidden = true;\n this._tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n ++nextIndex;\n --amountOfNextSteps;\n }\n // Add +1 for left btn\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showRightBtn = !!this._nextSteps.length;\n this._offsetOverflowDirective = this._nextSteps.length ? 70 : 0;\n this._cd.detectChanges();\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n [class.fd-icon-tab-bar__header--left-offset]=\"_showLeftBtn\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"_offsetOverflowDirective\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n <li\n *ngIf=\"_showLeftBtn\"\n role=\"presentation\"\n class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow fd-icon-tab-bar__item--overflow-left\"\n >\n <fdp-icon-tab-bar-popover\n [extraTabs]=\"_prevSteps\"\n [label]=\"_prevSteps.length.toString()\"\n [isSeparators]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n <li\n *ngFor=\"let item of _tabs; let idx = index; trackBy: _trackByTab\"\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n role=\"tab\"\n >\n <ng-container *ngIf=\"item.icon; else processTextOnly\">\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n </div>\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n </ng-container>\n <ng-template #processTextOnly>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label }}</span>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n </ng-template>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n <span *ngIf=\"_lastVisibleTabIndex !== idx\" class=\"fd-icon-tab-bar__separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </span>\n </li>\n <li *ngIf=\"_showRightBtn\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_nextSteps\"\n [isSeparators]=\"true\"\n [label]=\"_nextSteps.length.toString()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n >\n </fdp-icon-tab-bar-popover>\n </li>\n</ul>\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FLIPPER_SIZE } from '../../constants';\nimport {\n ElementChord,\n IconTabBarDndItem,\n IconTabBarDndList,\n IconTabBarItem\n} from '../../interfaces/icon-tab-bar-item.interface';\n\nexport interface FdDnDEvent {\n draggableItem: IconTabBarItem;\n targetItem: IconTabBarItem;\n action: 'replace' | 'insert';\n}\n\n@Directive({\n selector: '[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]',\n standalone: true\n})\nexport class IconBarDndContainerDirective implements OnDestroy {\n /**\n * @description Defines if drag and drop feature should be enabled for list items\n */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /**\n * @description Event that is thrown, when the item is dropped\n */\n @Output()\n dropped = new EventEmitter<FdDnDEvent>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private dndItemDirectives: IconTabBarDndItem[] = [];\n\n /** @hidden */\n private _dndListDirectives: Set<IconTabBarDndList> = new Set<IconTabBarDndList>();\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _virtualSeparatorsCoordinates: ElementChord[] = [];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestSeparatorIndex: number | null = null;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(public elementRef: ElementRef, private _dragDrop: DragDrop) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * @description Method called, when element is started to be dragged\n */\n dragStart(): void {\n /** Counting all of the elements's chords */\n this._elementsCoordinates = this.dndItemDirectives.map((item: IconTabBarDndItem) =>\n item.getElementCoordinates()\n );\n this._generateVirtualSeparators();\n }\n\n /**\n * @param mousePosition\n * @description Method called, when the item is being moved by 1 px\n */\n onMove(mousePosition: Point): void {\n let newClosestIndex: number | null = null;\n let newClosestSeparatorIndex: number | null = null;\n\n this._elementsCoordinates.find((element, index) => {\n /** Check if element can be replaced */\n if (newClosestIndex !== index) {\n const isMouseOnElement = this._isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n newClosestIndex = index;\n return true;\n }\n }\n });\n\n if (newClosestIndex !== null && newClosestIndex === this._closestItemIndex) {\n return;\n }\n\n if (this._closestItemIndex !== newClosestIndex) {\n this.dndItemDirectives[this._closestItemIndex]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex!]?.toggleSeparatorStyles();\n }\n\n this._closestItemIndex = newClosestIndex;\n\n if (newClosestIndex !== null) {\n this._closestSeparatorIndex = null;\n this.dndItemDirectives[newClosestIndex].toggleHoveredStyles(true);\n return;\n }\n\n // If we aren't on tab then check separator element.\n this._virtualSeparatorsCoordinates.find((element, index) => {\n const isMouseOnFlipper = this._isMouseOnFlipper(element, mousePosition);\n if (isMouseOnFlipper) {\n newClosestSeparatorIndex = index;\n return true;\n }\n });\n\n if (newClosestSeparatorIndex !== null && newClosestSeparatorIndex === this._closestSeparatorIndex) {\n return;\n }\n\n if (this._closestSeparatorIndex !== newClosestSeparatorIndex) {\n this.dndItemDirectives[this._closestItemIndex!]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex]?.toggleSeparatorStyles();\n }\n\n this._closestSeparatorIndex = newClosestSeparatorIndex;\n\n if (newClosestSeparatorIndex !== null) {\n this._closestItemIndex = null;\n this.dndItemDirectives[newClosestSeparatorIndex].toggleSeparatorStyles(true);\n return;\n }\n }\n\n /**\n * @param dragDir\n * @description Method called, when element is released\n */\n dragEnd(dragDir: IconTabBarDndItem): void {\n if (this._closestSeparatorIndex || this._closestSeparatorIndex === 0) {\n this.dndItemDirectives[this._closestSeparatorIndex].toggleSeparatorStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestSeparatorIndex].dndItemData,\n action: 'replace'\n });\n }\n if (this._closestItemIndex || this._closestItemIndex === 0) {\n this.dndItemDirectives[this._closestItemIndex].toggleHoveredStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestItemIndex].dndItemData,\n action: 'insert'\n });\n }\n /** Reset */\n this._elementsCoordinates = [];\n this._virtualSeparatorsCoordinates = [];\n this._closestItemIndex = null;\n this._closestSeparatorIndex = null;\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current container\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this.dndItemDirectives.push(dragItem);\n dragItem.moved.pipe(takeUntil(this._onDestroy$)).subscribe((position: Point) => this.onMove(position));\n dragItem.started.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.dragStart());\n dragItem.released.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.dragEnd(dragItem));\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current container\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this.dndItemDirectives = this.dndItemDirectives.filter((item) => item !== dragItem);\n }\n\n /**\n * @param listDir\n * @description Register IconTabBarDndList to current container\n */\n registerDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.add(listDir);\n listDir.changeDraggableState(this._draggable);\n }\n\n /**\n * @param listDir\n * @description Remove registered IconTabBarDndList to current container\n */\n removeDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.delete(listDir);\n }\n\n /**\n * @description Generate virtual elements as separator between tabs\n */\n private _generateVirtualSeparators(): void {\n this._elementsCoordinates.forEach((item, index) => {\n const isVertical = this.dndItemDirectives[index].isVertical;\n this._virtualSeparatorsCoordinates.push({\n x: isVertical ? item.x : item.x - FLIPPER_SIZE.width,\n y: isVertical ? item.y + FLIPPER_SIZE.verticalHeight : item.y,\n width: isVertical ? item.width : FLIPPER_SIZE.width,\n height: isVertical ? FLIPPER_SIZE.verticalHeight : FLIPPER_SIZE.height\n });\n });\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n for (const list of this._dndListDirectives) {\n list.changeDraggableState(draggable);\n }\n }\n\n /** @hidden */\n private _isMouseOnFlipper(element: ElementChord, mousePosition: Point): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n\n /** @hidden */\n private _isMouseOnElement(element: ElementChord, mousePosition: Point, isVertical: boolean = false): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = isVertical ? element.y - FLIPPER_SIZE.verticalHeight / 2 : element.y;\n const endY = element.y + element.height - FLIPPER_SIZE.verticalHeight / 2;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n}\n\n/** @hidden */\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\n\nimport { DragDrop, DragRef, DropListRef } from '@angular/cdk/drag-drop';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]',\n standalone: true\n})\nexport class IconBarDndListDirective implements IconTabBarDndList, AfterViewInit, OnDestroy {\n /**\n * @description Direction in which the list is oriented.\n */\n @Input()\n dndOrientation: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * @description Is disabled autoscroll inside draggable list\n */\n @Input()\n dndAutoScroll = true;\n\n /** @hidden */\n private _dropListRef: DropListRef;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private readonly _dndItems$ = new ReplaySubject<void>(1);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _dragDrop: DragDrop,\n private _dndContainer: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._dropListRef = this._dragDrop.createDropList(this.elementRef.nativeElement);\n this._dropListRef.sortingDisabled = true;\n this._dropListRef.autoScrollDisabled = this.dndAutoScroll;\n this._dropListRef.disabled = true;\n this._dropListRef.withOrientation(this.dndOrientation);\n\n this._dndContainer.registerDndList(this);\n\n this._dndItems$\n .pipe(debounceTime(100), takeUntil(this._onDestroy$))\n .subscribe(() => this._dropListRef.withItems(this._dragRefItems));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._dropListRef.dispose();\n this._dndContainer.removeDndList(this);\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current list\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current list\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param draggable\n */\n changeDraggableState(draggable: boolean): void {\n this._dropListRef.disabled = !draggable;\n }\n}\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]',\n standalone: true\n})\nexport class IconBarDndItemDirective implements IconTabBarDndItem, AfterViewInit, OnDestroy {\n /**\n * @description Tab info\n */\n @Input()\n dndItemData: IconTabBarItem;\n\n /**\n * @description Classes for draggable preview\n */\n @Input()\n previewClass: string[] = ['fd-icon-tab-bar__item--dnd-preview'];\n\n /**\n * @description Classes for hovered state\n */\n @Input()\n dndHoveredClass: string[] = ['fd-icon-tab-bar__item--dnd-hovered'];\n\n /**\n * @description Classes for separator, when draggable element between two tabs\n */\n @Input()\n dndSeparatorClass: string[] = [\n 'fd-icon-tab-bar__item--dnd-separator',\n 'fd-icon-tab-bar__item--dnd-separator-vertical'\n ];\n\n /**\n * @description Event thrown when the element is moved by 1px\n */\n readonly moved = new Subject<Point>();\n\n /**\n * @description Event thrown when the element is released\n */\n readonly released = new Subject<void>();\n\n /**\n * @description Event thrown when the element is started to be dragged\n */\n readonly started = new Subject<void>();\n\n /** @hidden */\n isVertical = false;\n\n /**\n * @hidden\n * @description Drag reference, object created from DND CDK Service\n */\n dragRef: DragRef;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n protected _dragDrop: DragDrop,\n private _dndListDir: IconBarDndListDirective,\n private _dndContainerDir: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.isVertical = this._dndListDir?.dndOrientation === 'vertical';\n this._setCDKDrag();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dndListDir.removeDragItem(this);\n this._dndContainerDir.removeDragItem(this);\n this.dragRef.dispose();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.started.next();\n }\n\n /** @hidden */\n onCdkMove(position: Point): void {\n this.moved.next(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n this.released.next();\n }\n\n /** @hidden */\n getElementCoordinates(): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n\n /**\n * @description Add/delete separator classes\n */\n toggleSeparatorStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndSeparatorClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndSeparatorClass);\n }\n\n /**\n * @description Add/delete hovered state classes\n */\n toggleHoveredStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndHoveredClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndHoveredClass);\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this.dragRef = this._dragDrop.createDrag(this.elementRef);\n this.dragRef.previewClass = this.previewClass;\n\n this._dndListDir?.registerDragItem(this);\n this._dndContainerDir?.registerDragItem(this);\n\n this.dragRef.moved\n .pipe(takeUntil(this._onDestroy$))\n .subscribe((event) => this.onCdkMove(event.pointerPosition));\n\n this.dragRef.released.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.onCdkDragReleased());\n\n this.dragRef.started.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.onCdkDragStart());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconBarDndItemDirective } from '../../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconBarDndListDirective,\n NgTemplateOutlet,\n NgFor,\n IconBarDndItemDirective,\n NgClass,\n ButtonComponent,\n IconComponent\n ]\n})\nexport class TextTypePopoverComponent extends IconTabBarPopoverBase implements OnChanges {\n /** @hidden reference for html element, that opens dropdown and can receive focus */\n @ViewChild('dropdownTrigger') _dropdownTrigger: ElementRef<HTMLElement>;\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Is extra items mode or subitems mode\n */\n @Input()\n isExtraItemsMode = false;\n\n /**\n * @description Parent tab need for subItems mode\n */\n @Input()\n parentTab: IconTabBarItem;\n\n /**\n * @description uId of selected subItem\n */\n @Input()\n selectedSubItemUid: Nullable<string>;\n\n /**\n * @description tabIndex of the particular item. Aplicable only for subitems mode\n */\n @Input()\n tabindex = 0;\n\n /**\n * @description Emits when some subTab is selected and isExtraItemsMode is disabled\n */\n @Output()\n selectedSubItem: EventEmitter<any> = new EventEmitter<any>();\n\n /** @hidden */\n _containsSelected = false;\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.isExtraItemsMode && changes.parentTab && this.parentTab.subItems) {\n this._setStyles(this.parentTab.subItems);\n }\n if (changes.selectedSubItemUid) {\n this._calculateIfContainsSelected();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.isExtraItemsMode ? this.selectedExtraItem.emit(selectedItem) : this.selectedSubItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _textPopoverKeyDownHandler(event: KeyboardEvent, tab: IconTabBarItem): void {\n // using relative index within popover (first popover tab should start from 0)\n const baseIndex = this.parentTab ? this.parentTab.flatIndex + 1 : this.extraTabs[0].flatIndex;\n const currentIndex = tab.flatIndex - baseIndex;\n super._keyDownHandler(event, tab, currentIndex);\n }\n\n /** @hidden */\n private _calculateIfContainsSelected(): void {\n this._containsSelected =\n !!this.parentTab.subItems &&\n this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid);\n }\n\n /** @hidden */\n private _getChildren(items: IconTabBarItem[]): IconTabBarItem[] {\n return items.reduce((acc: IconTabBarItem[], item: IconTabBarItem) => {\n acc = acc.concat(item);\n if (item.subItems) {\n acc = acc.concat(this._getChildren(item.subItems));\n }\n return acc;\n }, []);\n }\n}\n","<ng-container *ngIf=\"isExtraItemsMode\">\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n\n<ng-container *ngIf=\"!isExtraItemsMode && parentTab\">\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </span>\n <span *ngIf=\"parentTab.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: _trackByTab\">\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n <span *ngIf=\"item.counter\" class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ item.counter }})\n </span>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <ng-container *ngIf=\"item.subItems?.length\">\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent, IconBarDndContainerDirective } from '../../directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from '../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';\n\n/** @hidden */\ninterface DataForReordering {\n arr: IconTabBarItem[];\n item: IconTabBarItem;\n parentUid: string;\n}\n\n/** @hidden */\ntype TabItem = ElementRef<HTMLElement> | TextTypePopoverComponent;\n\n@Component({\n selector: 'fdp-icon-tab-bar-text-type',\n templateUrl: './icon-tab-bar-text-type.component.html',\n standalone: true,\n imports: [\n IconBarDndContainerDirective,\n OverflowListDirective,\n IconBarDndListDirective,\n NgFor,\n OverflowListItemDirective,\n IconBarDndItemDirective,\n NgClass,\n NgIf,\n TextTypePopoverComponent,\n ButtonComponent,\n IconComponent\n ]\n})\nexport class IconTabBarTextTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<TabItem>;\n\n /** @hidden */\n @ViewChild('extraItemsPopover') _tabBarPopover: TextTypePopoverComponent;\n\n /**\n * @description Disable or enable reordering(drag and drop) feature.\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Emits when user drops the tab.\n */\n @Output()\n reordered = new EventEmitter<IconTabBarItem[]>();\n\n /** @hidden */\n constructor(_cd: ChangeDetectorRef, _ngZone: NgZone) {\n super(_cd, _ngZone);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectExtraItem(selectedItem: IconTabBarItem | undefined): void {\n // Check if the selected item is subItem\n // Then to find root tab, and pass it to the parent method.\n if (selectedItem?.uId.includes(UNIQUE_KEY_SEPARATOR)) {\n const rootTabUid = selectedItem.uId.split(UNIQUE_KEY_SEPARATOR)[0];\n selectedItem = this._tabs.find((tab) => tab.uId === rootTabUid);\n }\n if (!selectedItem) {\n return;\n }\n super._selectExtraItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param draggableItem\n * @param targetItem\n * @param action\n */\n _onDropped(event: FdDnDEvent): void {\n if (!this._canDrop(event)) {\n return;\n }\n\n const replacedParsedUidArr = event.targetItem.uId.split(UNIQUE_KEY_SEPARATOR);\n replacedParsedUidArr.length = replacedParsedUidArr.length - 1;\n const draggableParsedUidArr = event.draggableItem.uId.split(UNIQUE_KEY_SEPARATOR);\n draggableParsedUidArr.length = draggableParsedUidArr.length - 1;\n\n const tabInfoForNewList = this._getTabInfoFromMainList(event.targetItem.uId);\n const tabInfoForPrevList = this._getTabInfoFromMainList(event.draggableItem.uId);\n\n if (!tabInfoForNewList || !tabInfoForPrevList) {\n return;\n }\n\n const dataForAction = {\n replacedItemInfo: {\n arr: tabInfoForNewList.parent,\n item: tabInfoForNewList.tab,\n parentUid: replacedParsedUidArr.length ? replacedParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n },\n draggableItemInfo: {\n arr: tabInfoForPrevList.parent,\n item: tabInfoForPrevList.tab,\n parentUid: draggableParsedUidArr.length ? draggableParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n }\n };\n\n event.action === 'replace' ? this._replaceAsSibling(dataForAction) : this._insertItemAsChild(dataForAction);\n\n this.reordered.emit(this._tabs);\n }\n\n /** @hidden */\n private _canDrop(event: FdDnDEvent): boolean {\n let parentUId: Nullable<string> =\n event.action === 'replace' ? event.targetItem.parentUId : event.targetItem.uId;\n while (parentUId) {\n if (parentUId === event.draggableItem.uId) {\n return false;\n }\n const nextSeparatorIdx = parentUId.lastIndexOf(UNIQUE_KEY_SEPARATOR);\n\n parentUId = nextSeparatorIdx > 0 ? parentUId.slice(0, nextSeparatorIdx) : null;\n }\n return true;\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab into another tab.\n */\n private _insertItemAsChild(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n // Remove draggable tab from previous list\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n if (!replacedItemInfo.item.subItems?.length) {\n replacedItemInfo.item.subItems = [];\n }\n // Add tab to subitem of the target tab\n replacedItemInfo.item.subItems.push(draggableItemInfo.item);\n this._tabs = this._updateTabs(this._tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab between tabs\n */\n private _replaceAsSibling(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n const newIndex = replacedItemInfo?.item?.index || 0;\n replacedItemInfo.arr.splice(newIndex, 0, draggableItemInfo.item);\n this._tabs = this._updateTabs(this._tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n protected _getTabUIElementFocusable(tabUIElement: TabItem): HTMLElement {\n if (typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n return tabUIElement.nativeElement;\n }\n return tabUIElement._dropdownTrigger.nativeElement;\n }\n}\n","<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n <li\n *ngFor=\"let item of _tabs; let idx = index; trackBy: _trackByTab\"\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n <a\n *ngIf=\"!item.subItems?.length; else withPopover\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n >\n <span *ngIf=\"layoutMode === 'row'; else columnsMode\" class=\"fd-icon-tab-bar__tag\">\n {{ item.label }}\n <ng-container *ngIf=\"item.counter\"> ({{ item.counter }})</ng-container>\n </span>\n <ng-template #columnsMode>\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label }}</span>\n </ng-template>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <ng-template #withPopover>\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"_selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </ng-template>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <li *ngIf=\"_extraTabs.length\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n </ul>\n</ng-container>\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { ContentDensityService, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconFont } from '@fundamental-ngx/core/icon';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\n\n@Component({\n selector: 'fdp-icon-tab-bar',\n templateUrl: './icon-tab-bar.component.html',\n styleUrls: ['./icon-tab-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarTextTypeComponent\n ]\n})\nexport class IconTabBarComponent implements OnInit, OnDestroy {\n /**\n * @description Type of tab bar view.\n */\n @Input()\n iconTabType: TabType = 'text';\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n tabsConfig: TabConfig[] = [];\n\n /**\n * @description Destiny mode.\n */\n @Input()\n densityMode: TabDestinyMode = 'inherit';\n\n /**\n * @description Icon font\n */\n @Input()\n iconTabFont: IconFont = 'SAP-icons';\n\n /**\n * @description Disable or enable reordering(drag and drop) feature. (supported by text type only)\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Boolean flag indicating to show total tab.(supported by filter type only)\n */\n @Input()\n showTotalTab = true;\n\n /**\n * @description Layout type for tab (supported by text type only)\n */\n @Input()\n layoutMode: 'row' | 'column' = 'row';\n\n /**\n * @description Icon tab bar background type.\n */\n @Input()\n iconTabBackground: IconTabBarBackground = 'solid';\n\n /**\n * @description Icon tab bar size.\n */\n @Input()\n iconTabSize: IconTabBarSize;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n iconTabSelected = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Emits when user drop tab.\n */\n @Output()\n iconTabReordered = new EventEmitter<IconTabBarItem[]>();\n\n /** Event emitted when user clicks on x icon in tab. */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _cssClassForContainer: string[];\n\n /** @hidden */\n _isRtl = false;\n\n /** @hidden */\n private _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._cssClassForContainer = this._generateContainerStyles();\n\n if (this.densityMode === 'inherit') {\n this._contentDensityService?._contentDensityListener\n .pipe(distinctUntilChanged(), takeUntil(this._onDestroy$))\n .subscribe((density) => {\n this.densityMode = density;\n if (density !== 'compact') {\n this._cssClassForContainer = this._cssClassForContainer.filter(\n (cssClass) => cssClass !== 'fd-icon-tab-bar--compact'\n );\n } else {\n this._cssClassForContainer.push('fd-icon-tab-bar--compact');\n }\n this._cd.detectChanges();\n });\n }\n\n this._rtlService?.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((isRtl: boolean) => {\n if (isRtl !== this._isRtl) {\n this._isRtl = isRtl;\n this._cd.detectChanges();\n }\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * @hidden\n * @param event reordered array of IconTabBarItem\n */\n _onReorder(event: IconTabBarItem[]): void {\n this.iconTabReordered.emit(event);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.iconTabSelected.emit(selectedItem);\n }\n\n /** @hidden */\n _closeTab(item: IconTabBarItem): void {\n this.closeTab.emit(item);\n }\n\n /**\n * @hidden\n * @returns array of css classes for icon-tab-bar container\n */\n private _generateContainerStyles(): string[] {\n const styles = [`fd-icon-tab-bar--${this.iconTabType}`];\n if (this.iconTabType === 'process' && this.tabsConfig[0].icon) {\n styles.push('fd-icon-tab-bar--icon');\n }\n if (this.iconTabBackground !== 'solid') {\n styles.push(`fd-icon-tab-bar--${this.iconTabBackground}`);\n }\n if (this.iconTabSize) {\n styles.push(`fd-icon-tab-bar--${this.iconTabSize}`);\n }\n if (this.densityMode === 'compact') {\n styles.push('fd-icon-tab-bar--compact');\n }\n if (this.layoutMode === 'column') {\n styles.push('fd-icon-tab-bar--counters');\n }\n return styles;\n }\n}\n","<div class=\"fd-icon-tab-bar\" [class]=\"_cssClassForContainer\">\n <ng-container *ngIf=\"iconTabType === 'text'\">\n <ng-container *ngTemplateOutlet=\"textType\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"iconTabType === 'icon' || iconTabType === 'icon-only'\">\n <ng-container *ngTemplateOutlet=\"iconType\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"iconTabType === 'filter'\">\n <ng-container *ngTemplateOutlet=\"filterType\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"iconTabType === 'process'\">\n <ng-container *ngTemplateOutlet=\"processType\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #processType>\n <fdp-icon-tab-bar-process-type\n [tabsConfig]=\"tabsConfig\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-process-type>\n</ng-template>\n\n<ng-template #filterType>\n <fdp-icon-tab-bar-filter-type\n [tabsConfig]=\"tabsConfig\"\n [showTotalTab]=\"showTotalTab\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-filter-type>\n</ng-template>\n\n<ng-template #iconType>\n <fdp-icon-tab-bar-icon-type\n [showLabel]=\"iconTabType === 'icon'\"\n [tabsConfig]=\"tabsConfig\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-icon-type>\n</ng-template>\n\n<ng-template #textType>\n <fdp-icon-tab-bar-text-type\n [tabsConfig]=\"tabsConfig\"\n [layoutMode]=\"layoutMode\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [enableTabReordering]=\"enableTabReordering\"\n [colorAssociations]=\"colorAssociations\"\n (reordered)=\"_onReorder($event)\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarPopoverComponent } from './components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\nimport { TextTypePopoverComponent } from './components/popovers/text-type-popover/text-type-popover.component';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarComponent } from './icon-tab-bar.component';\n\nconst components = [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective\n];\n\n/**\n * @deprecated\n * Import `IconTabBarComponent` directly instead.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformIconTabBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.IconBarDndContainerDirective","i2.IconBarDndListDirective","i3.IconBarDndContainerDirective","i1"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-platform-icon-tab-bar.mjs","sources":["../../../../libs/platform/src/lib/icon-tab-bar/constants.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-base.class.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/closable-icon-tab-bar.class.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.ts","../../../../libs/platform/src/lib/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.ts","../../../../libs/platform/src/lib/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.html","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.html","../../../../libs/platform/src/lib/icon-tab-bar/icon-tab-bar.component.ts","../../../../libs/platform/src/lib/icon-tab-bar/icon-tab-bar.component.html","../../../../libs/platform/src/lib/icon-tab-bar/icon-tab-bar.module.ts","../../../../libs/platform/src/lib/icon-tab-bar/fundamental-ngx-platform-icon-tab-bar.ts"],"sourcesContent":["export const UNIQUE_KEY_SEPARATOR = '.';\nexport const FLIPPER_SIZE = {\n width: 20,\n height: 44,\n verticalHeight: 20\n};\nexport const ICON_TAB_HIDDEN_CLASS_NAME = 'fd-icon-tab-bar__item--hidden';\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n isDevMode,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { KeyUtil, OverflowListDirective } from '@fundamental-ngx/cdk/utils';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME, UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\nimport { TabConfig } from '../interfaces/tab-config.interface';\nimport { TabDestinyMode } from '../types';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\n\n@Directive()\nexport abstract class IconTabBarBase implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * @hidden\n * List of tab elements, that can receive focus.\n * There's a separate mapping function to get actual html element: `_getTabUIElementFocusable`\n */\n abstract _tabUIElements: QueryList<unknown>;\n /** @hidden */\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n tabsConfig: TabConfig[] = [];\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description densityMode setter triggers tabs to re-calculation overflowed tabs\n */\n @Input()\n set densityMode(value: TabDestinyMode) {\n // Skip first value && value doesn't equal to previous one\n if (this._densityMode && value !== this._densityMode) {\n this._triggerRecalculationVisibleItems();\n }\n this._densityMode = value;\n }\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selected: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Reference to OverflowListDirective\n */\n @ViewChild(OverflowListDirective)\n overflowDirective: OverflowListDirective;\n\n /** @hidden */\n _selectedUid?: string;\n\n /** @hidden */\n _extraTabs: IconTabBarItem[] = [];\n\n /** @hidden */\n _lastVisibleTabIndex: number;\n\n /** @hidden */\n _tabs: IconTabBarItem[] = [];\n\n /** @hidden */\n private _densityMode: TabDestinyMode;\n\n /** @hidden */\n private _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n private _destroyed = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef, protected _ngZone: NgZone) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabsConfig && !changes.tabsConfig.firstChange) {\n this._initTabs();\n this._triggerRecalculationVisibleItems();\n return;\n }\n if (changes.isRtl && !changes.isRtl.firstChange) {\n this._triggerRecalculationVisibleItems();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initTabs();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._destroyed = true;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @param event\n */\n _selectItem(selectedItem: IconTabBarItem, event?: Event): void {\n event?.stopPropagation();\n this._selectedUid = selectedItem.uId;\n selectedItem.badge = false;\n this.selected.emit(selectedItem);\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem | undefined, currentIndex: number): void {\n if (tab && KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousItem(currentIndex) : this._focusNextItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextItem(currentIndex) : this._focusPreviousItem(currentIndex);\n }\n }\n\n /** @hidden focuses next tab */\n _focusNextItem(currentIndex: number): void {\n const nextIndex = currentIndex === this._tabs.length - 1 ? 0 : currentIndex + 1;\n this._focusItem(nextIndex);\n }\n\n /** @hidden focuses previous tab */\n _focusPreviousItem(currentIndex: number): void {\n if (currentIndex === 0) {\n // if current focused element is first, focus the last one. If tabs are overflowed, focus the last tab in the popover\n this._focusItem(this._tabs.length - 1, true);\n } else {\n this._focusItem(currentIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @param tabIndex index of the tab to apply focus\n * @param focusLast whether to focus first or last item in the popover\n */\n _focusItem(tabIndex: number, focusLast = false): void {\n if (tabIndex > this._lastVisibleTabIndex) {\n this._tabBarPopover._openPopover(focusLast);\n } else {\n this._getTabUIElementFocusable(this._tabUIElements.get(tabIndex))?.focus();\n }\n }\n\n /** @hidden */\n _trackByTab(index: number, tab: IconTabBarItem): string {\n return tab.uId;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n _selectExtraItem(selectedItem: IconTabBarItem): void {\n const deletedItem = this._tabs.splice(this._lastVisibleTabIndex, 1, selectedItem)[0] as IconTabBarItem;\n this._tabs.splice(selectedItem.index, 1, deletedItem);\n\n deletedItem.index = selectedItem.index;\n deletedItem.uId = `${deletedItem.index}`;\n const itemToPopover = cloneDeep(deletedItem);\n deletedItem.hidden = true;\n deletedItem.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n let indexInExtraItems;\n this._extraTabs.forEach((item, index) => {\n if (item.index === selectedItem.index) {\n indexInExtraItems = index;\n }\n });\n\n selectedItem.index = this._lastVisibleTabIndex;\n selectedItem.uId = `${selectedItem.index}`;\n selectedItem.hidden = false;\n if (selectedItem.color) {\n selectedItem.cssClasses = [`fd-icon-tab-bar__item--${selectedItem.color}`];\n }\n this._extraTabs.splice(indexInExtraItems, 1, itemToPopover);\n this._extraTabs = [...this._extraTabs];\n\n this._selectItem(selectedItem);\n this._triggerRecalculationVisibleItems();\n this._focusItem(this._lastVisibleTabIndex);\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n this._lastVisibleTabIndex = this._tabs.length - 1 - extraItems;\n this._tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n this._extraTabs = [];\n\n for (let i = this._lastVisibleTabIndex + 1; i < this._tabs.length; i++) {\n const tab = this._tabs[i];\n this._extraTabs.push(cloneDeep(tab));\n tab.hidden = true;\n tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n this._cd.markForCheck();\n }\n\n /**\n * @hidden\n * Mapping function to resolve UI tab element to it's focusable part/descendant\n */\n protected _getTabUIElementFocusable(tabUIElement: unknown): HTMLElement | null {\n if (tabUIElement && typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n if ((<ElementRef>tabUIElement).nativeElement instanceof HTMLElement) {\n return (<ElementRef<HTMLElement>>tabUIElement).nativeElement;\n }\n }\n if (isDevMode()) {\n console.warn('Failed to get focusable tab element');\n }\n return null;\n }\n\n /**\n * @hidden\n * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected _triggerRecalculationVisibleItems(): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntil(this._onDestroy$)).subscribe(() => {\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n this._tabs = this._generateTabBarItems(this.tabsConfig);\n const selectedItem = this._tabs.find((item) => item.active);\n this._selectedUid = selectedItem?.uId;\n this._lastVisibleTabIndex = this._tabs.length - 1;\n }\n\n /**\n * @hidden\n * @description generate IconTabItems from TabConfig array\n */\n private _generateTabBarItems(config: TabConfig[]): IconTabBarItem[] {\n const flatIndexRef: FlatIndex = { value: 0 };\n return config.map((item, index) => {\n const result: IconTabBarItem = {\n ...item,\n index,\n cssClasses: [],\n uId: index.toString(),\n hidden: false,\n subItems: undefined,\n flatIndex: flatIndexRef.value++\n };\n if (item.color) {\n result.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n result.subItems = item.subItems?.length\n ? this._generateSubItems(item.subItems, result, flatIndexRef)\n : undefined;\n return result;\n });\n }\n\n /** @hidden */\n private _generateSubItems(\n subItems: TabConfig[],\n parent: IconTabBarItem,\n flatIndexRef: FlatIndex\n ): IconTabBarItem[] {\n return subItems?.map((item, index) => {\n const result: IconTabBarItem = {\n ...item,\n index,\n uId: `${parent.uId}${UNIQUE_KEY_SEPARATOR}${index}`,\n cssClasses: [],\n subItems: undefined,\n flatIndex: flatIndexRef.value++,\n parentUId: parent.uId\n };\n if (Array.isArray(item.subItems) && item.subItems.length) {\n result.subItems = this._generateSubItems(item.subItems, result, flatIndexRef);\n }\n return result;\n });\n }\n}\n\n/** @hidden helper object that is used in tab generation functions to calculate their indexes not depending on level of nesting */\ninterface FlatIndex {\n value: number;\n}\n","import { Directive, EventEmitter, Output } from '@angular/core';\nimport { UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarBase } from './icon-tab-bar-base.class';\n\n@Directive()\nexport abstract class ClosableIconTabBar extends IconTabBarBase {\n /**\n * Event emits when user clicks on x button in tab.\n */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _closeTab(itemIndex: string): void {\n const tab = this._getTabInfoFromMainList(itemIndex);\n\n if (!tab?.parent) {\n return;\n }\n\n tab.parent.splice(\n tab.parent.findIndex((item) => item.uId === itemIndex),\n 1\n );\n\n this._tabs = this._updateTabs(this._tabs);\n\n this._triggerRecalculationVisibleItems();\n this.closeTab.emit(tab.tab);\n }\n\n /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n protected _updateTabs(arr: IconTabBarItem[], parentUid?: string, flatIndexRef = { value: 0 }): IconTabBarItem[] {\n return arr.map((item, index) => {\n item.index = index;\n item.uId = parentUid ? `${parentUid}${UNIQUE_KEY_SEPARATOR}${index}` : `${index}`;\n item.flatIndex = flatIndexRef.value++;\n item.parentUId = parentUid;\n if (!parentUid && item.color) {\n item.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n item.subItems = this._updateTabs(item.subItems, item.uId, flatIndexRef);\n }\n return { ...item };\n });\n }\n\n /**\n * @hidden\n * @param uid\n * @param arr\n * @returns {parent, tab}\n * @description Get tab reference inside main tab array and reference to parent array.\n */\n protected _getTabInfoFromMainList(\n uid: string,\n arr: any[] = this._tabs\n ): { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined {\n let result: { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined;\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n if (item.uId === uid) {\n result = { parent: arr, tab: item };\n break;\n } else if (Array.isArray(item.subItems)) {\n result = this._getTabInfoFromMainList(uid, item.subItems);\n if (result) {\n break;\n }\n }\n }\n return result;\n }\n}\n","import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Directive()\nexport abstract class IconTabBarPopoverBase implements OnChanges {\n /** @hidden list of tab html elements, that can receive focus. Each item should have \"data-flatIndex\" attribute */\n abstract _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Reference to PopoverComponent\n */\n @ViewChild('popover')\n popover: PopoverComponent;\n\n /**\n * @description Sub items array\n */\n @Input()\n extraTabs: IconTabBarItem[];\n\n /**\n * @description Should we show separator between subItems\n */\n @Input()\n isSeparators = false;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selectedExtraItem: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** @description Emits when popover is closed and focus should be applied to first visible tab */\n @Output()\n focusFirstVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** @description Emits when popover is closed and focus should be applied to last visible tab */\n @Output()\n focusLastVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emits when user clicks on x button in tab. */\n @Output()\n closeTab = new EventEmitter<string>();\n\n /**\n * @hidden\n * @description state of popover\n */\n _isOpen = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.extraTabs) {\n this._setStyles(this.extraTabs);\n }\n }\n\n /**\n * @hidden\n * @description Generate styles for subItems\n */\n protected _setStyles(items: IconTabBarItem[]): void {\n items.forEach((item) => {\n if (item.color) {\n item.cssClasses = [`fd-icon-tab-bar__list-item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n this._setStyles(item.subItems);\n }\n });\n }\n\n /**\n * @hidden\n * @param focusLast whether to focus first or last item in the popover\n */\n _openPopover(focusLast = false): void {\n if (!this._isOpen) {\n this.popover.open();\n }\n if (focusLast) {\n this._tabExtraUIElements.get(this._tabExtraUIElements.length - 1)?.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _focusPreviousPopoverItem(currentIndex: number): void {\n if (currentIndex === 0) {\n this.popover.close();\n this.focusLastVisibleItem.emit();\n } else {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[currentIndex - 1].focus();\n }\n }\n\n /** @hidden */\n _focusNextPopoverItem(currentIndex: number): void {\n if (currentIndex === this._tabExtraUIElements.length - 1) {\n this.popover.close();\n this.focusFirstVisibleItem.emit();\n } else {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[currentIndex + 1].focus();\n }\n }\n\n /** @hidden */\n private _getOrderedTabExtraUIElements(): HTMLElement[] {\n return this._tabExtraUIElements\n .toArray()\n .map((e) => ({\n flatIndex: parseInt(e.nativeElement.getAttribute('data-flatIndex')!, 10),\n nativeElement: e.nativeElement\n }))\n .sort(({ flatIndex: aFlatIndex }, { flatIndex: bFlatIndex }) => aFlatIndex - bFlatIndex)\n .map(({ nativeElement }) => nativeElement);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.selectedExtraItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem, currentIndex: number): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousPopoverItem(currentIndex) : this._focusNextPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextPopoverItem(currentIndex) : this._focusPreviousPopoverItem(currentIndex);\n }\n }\n\n /** @hidden */\n _trackByTab(index: number, tab: IconTabBarItem): string {\n return tab.uId;\n }\n}\n","import { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-icon-tab-bar-popover',\n templateUrl: './icon-tab-bar-popover.component.html',\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n NgFor,\n NgIf,\n IconComponent,\n NgClass,\n ButtonComponent\n ]\n})\nexport class IconTabBarPopoverComponent extends IconTabBarPopoverBase {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing position inside container left/right\n */\n @Input()\n leftSide = false;\n\n /**\n * @description Label for button\n */\n @Input()\n label = 'more';\n\n /** Whether to display labels for tab items */\n @Input()\n showItemLabel: boolean;\n}\n","<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n <ng-container *ngFor=\"let item of extraTabs; let idx = index; trackBy: _trackByTab\">\n <li *ngIf=\"isSeparators\" tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n </span>\n <span\n *ngIf=\"showItemLabel && item.label\"\n class=\"fd-list__title fd-icon-tab-bar__list-item-title\"\n >{{ item.label }}</span\n >\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n <span *ngIf=\"item.counter\" class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ item.counter }})\n </span>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n </ng-container>\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { NgFor, NgIf, SlicePipe } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-filter-type',\n templateUrl: './icon-tab-bar-filter-type.component.html',\n standalone: true,\n imports: [\n OverflowListDirective,\n NgIf,\n OverflowListItemDirective,\n NgFor,\n IconComponent,\n IconTabBarPopoverComponent,\n SlicePipe,\n ButtonComponent\n ]\n})\nexport class IconTabBarFilterTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /**\n * @description Boolean flag indicating to show total tab\n */\n @Input()\n showTotalTab = true;\n\n /** @hidden */\n _totalTab?: IconTabBarItem;\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n super._initTabs();\n this._totalTab = this.showTotalTab ? this._tabs[0] : undefined;\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n <li *ngIf=\"showTotalTab\" class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === _selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n <span *ngIf=\"_totalTab?.counter\" class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label }}</span>\n </div>\n </a>\n </li>\n <li\n *ngFor=\"let item of _tabs | slice : 1; let idx = index; trackBy: _trackByTab\"\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n <span *ngIf=\"item.counter\" class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label }}</div>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <li *ngIf=\"_extraTabs.length\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n</ul>\n","import { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-icon-type',\n templateUrl: './icon-tab-bar-icon-type.component.html',\n standalone: true,\n imports: [\n OverflowListDirective,\n NgFor,\n OverflowListItemDirective,\n NgClass,\n IconComponent,\n NgIf,\n ButtonComponent,\n IconTabBarPopoverComponent\n ]\n})\nexport class IconTabBarIconTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** Whether to display labels for tab items */\n @Input()\n showLabel: boolean;\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n <li\n *ngFor=\"let item of _tabs; let idx = index; trackBy: _trackByTab\"\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n >\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n <span *ngIf=\"item.counter && (!item.label || !showLabel)\" class=\"fd-icon-tab-bar__counter\">{{\n item.counter\n }}</span>\n </div>\n <div *ngIf=\"showLabel && item.label\" class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <li *ngIf=\"_extraTabs.length\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [showItemLabel]=\"showLabel\"\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n</ul>\n","import { Component, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { NgFor, NgIf } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-process-type',\n templateUrl: './icon-tab-bar-process-type.component.html',\n standalone: true,\n imports: [\n OverflowListDirective,\n NgIf,\n IconTabBarPopoverComponent,\n NgFor,\n OverflowListItemDirective,\n IconComponent,\n ButtonComponent\n ]\n})\nexport class IconTabBarProcessTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** @hidden */\n _offsetOverflowDirective = 30;\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _nextSteps: IconTabBarItem[] = [];\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _prevSteps: IconTabBarItem[] = [];\n\n /** @hidden */\n _showLeftBtn = false;\n\n /** @hidden */\n _showRightBtn = false;\n\n /** @hidden */\n private _firstVisibleTabIndex = 0;\n\n /** @hidden */\n private _currentStepIndex = 0;\n\n /** @hidden */\n _anchorIndexForExtraBtnDirective: number;\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._currentStepIndex = selectedItem.index;\n super._selectItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<void> {\n this._currentStepIndex = selectedItem.index;\n let amountOfPreviousSteps;\n let amountOfNextSteps;\n // We have to cases (strategy) for overflow extra tabs.\n // 1) When user click on step inside previous steps popover\n // 2) When user click on step inside next steps popover\n let isPreviousStepsStrategy: boolean;\n if (this._currentStepIndex > this._lastVisibleTabIndex) {\n amountOfNextSteps = this._nextSteps.length - (this._currentStepIndex - this._lastVisibleTabIndex);\n this._showRightBtn = amountOfNextSteps > 0;\n this._showLeftBtn = true;\n isPreviousStepsStrategy = false;\n } else {\n amountOfPreviousSteps = this._prevSteps.length - (this._firstVisibleTabIndex - this._currentStepIndex);\n this._showRightBtn = true;\n isPreviousStepsStrategy = true;\n this._showLeftBtn = amountOfPreviousSteps > 0;\n }\n this._selectItem(selectedItem);\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n if (this.overflowDirective) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n isPreviousStepsStrategy\n ? this.recalculateItemsByPrevArr(extra, amountOfPreviousSteps)\n : this._recalculateItemsByNextArr(extra, amountOfNextSteps);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n const amountOfPrevSteps = this._currentStepIndex > extraItems ? extraItems : this._currentStepIndex;\n this.recalculateItemsByPrevArr(extraItems, amountOfPrevSteps);\n }\n\n /** @hidden */\n private _clearExtraList(): void {\n this._nextSteps = [];\n this._prevSteps = [];\n this._tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfNextSteps\n * @description We fill the array of the next steps to the selected tab,\n * based on this we generate the array of the previous steps if it is necessary\n */\n private _recalculateItemsByNextArr(extraItems: number, amountOfNextSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const visibleAmountOfItems = this._tabs.length - extraItems;\n for (let i = this._tabs.length - amountOfNextSteps; i < this._tabs.length; i++) {\n this._nextSteps.push(cloneDeep(this._tabs[i]));\n this._tabs[i].hidden = true;\n this._tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._showRightBtn = !!this._nextSteps.length;\n this._firstVisibleTabIndex = this._tabs.length - visibleAmountOfItems - this._nextSteps.length;\n this._lastVisibleTabIndex = this._tabs.length - amountOfNextSteps - 1;\n\n if (this._nextSteps.length === extraItems) {\n return;\n }\n\n let amountOfPrevSteps = extraItems - this._nextSteps.length;\n let nextIndex = this._firstVisibleTabIndex - 1;\n while (amountOfPrevSteps > 0) {\n this._prevSteps.push(cloneDeep(this._tabs[nextIndex]));\n this._tabs[nextIndex].hidden = true;\n this._tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n --nextIndex;\n --amountOfPrevSteps;\n }\n // Added +1 for left button\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showLeftBtn = !!this._prevSteps.length;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfPreviousSteps\n * @description We fill the array of the previous steps to the selected tab,\n * based on this we generate the array of the next steps if it is necessary\n */\n private recalculateItemsByPrevArr(extraItems: number, amountOfPreviousSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const visibleAmountOfItems = this._tabs.length - extraItems;\n for (let i = amountOfPreviousSteps - 1; i >= 0; i--) {\n this._prevSteps.push(cloneDeep(this._tabs[i]));\n this._tabs[i].hidden = true;\n this._tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._firstVisibleTabIndex = this._prevSteps.length;\n this._lastVisibleTabIndex = this._prevSteps.length + visibleAmountOfItems - 1;\n this._showLeftBtn = !!this._prevSteps.length;\n\n if (this._prevSteps.length === extraItems) {\n this._showRightBtn = false;\n return;\n }\n\n let amountOfNextSteps = extraItems - this._prevSteps.length;\n let nextIndex = this._prevSteps.length ? this._prevSteps.length + visibleAmountOfItems : visibleAmountOfItems;\n while (amountOfNextSteps > 0) {\n this._nextSteps.push(cloneDeep(this._tabs[nextIndex]));\n this._tabs[nextIndex].hidden = true;\n this._tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n ++nextIndex;\n --amountOfNextSteps;\n }\n // Add +1 for left btn\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showRightBtn = !!this._nextSteps.length;\n this._offsetOverflowDirective = this._nextSteps.length ? 70 : 0;\n this._cd.detectChanges();\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n [class.fd-icon-tab-bar__header--left-offset]=\"_showLeftBtn\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"_offsetOverflowDirective\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n <li\n *ngIf=\"_showLeftBtn\"\n role=\"presentation\"\n class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow fd-icon-tab-bar__item--overflow-left\"\n >\n <fdp-icon-tab-bar-popover\n [extraTabs]=\"_prevSteps\"\n [label]=\"_prevSteps.length.toString()\"\n [isSeparators]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n <li\n *ngFor=\"let item of _tabs; let idx = index; trackBy: _trackByTab\"\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n role=\"tab\"\n >\n <ng-container *ngIf=\"item.icon; else processTextOnly\">\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n </div>\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n </ng-container>\n <ng-template #processTextOnly>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label }}</span>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n </ng-template>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n <span *ngIf=\"_lastVisibleTabIndex !== idx\" class=\"fd-icon-tab-bar__separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </span>\n </li>\n <li *ngIf=\"_showRightBtn\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_nextSteps\"\n [isSeparators]=\"true\"\n [label]=\"_nextSteps.length.toString()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n >\n </fdp-icon-tab-bar-popover>\n </li>\n</ul>\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FLIPPER_SIZE } from '../../constants';\nimport {\n ElementChord,\n IconTabBarDndItem,\n IconTabBarDndList,\n IconTabBarItem\n} from '../../interfaces/icon-tab-bar-item.interface';\n\nexport interface FdDnDEvent {\n draggableItem: IconTabBarItem;\n targetItem: IconTabBarItem;\n action: 'replace' | 'insert';\n}\n\n@Directive({\n selector: '[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]',\n standalone: true\n})\nexport class IconBarDndContainerDirective implements OnDestroy {\n /**\n * @description Defines if drag and drop feature should be enabled for list items\n */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /**\n * @description Event that is thrown, when the item is dropped\n */\n @Output()\n dropped = new EventEmitter<FdDnDEvent>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private dndItemDirectives: IconTabBarDndItem[] = [];\n\n /** @hidden */\n private _dndListDirectives: Set<IconTabBarDndList> = new Set<IconTabBarDndList>();\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _virtualSeparatorsCoordinates: ElementChord[] = [];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestSeparatorIndex: number | null = null;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(public elementRef: ElementRef, private _dragDrop: DragDrop) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * @description Method called, when element is started to be dragged\n */\n dragStart(): void {\n /** Counting all of the elements's chords */\n this._elementsCoordinates = this.dndItemDirectives.map((item: IconTabBarDndItem) =>\n item.getElementCoordinates()\n );\n this._generateVirtualSeparators();\n }\n\n /**\n * @param mousePosition\n * @description Method called, when the item is being moved by 1 px\n */\n onMove(mousePosition: Point): void {\n let newClosestIndex: number | null = null;\n let newClosestSeparatorIndex: number | null = null;\n\n this._elementsCoordinates.find((element, index) => {\n /** Check if element can be replaced */\n if (newClosestIndex !== index) {\n const isMouseOnElement = this._isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n newClosestIndex = index;\n return true;\n }\n }\n });\n\n if (newClosestIndex !== null && newClosestIndex === this._closestItemIndex) {\n return;\n }\n\n if (this._closestItemIndex !== newClosestIndex) {\n this.dndItemDirectives[this._closestItemIndex]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex!]?.toggleSeparatorStyles();\n }\n\n this._closestItemIndex = newClosestIndex;\n\n if (newClosestIndex !== null) {\n this._closestSeparatorIndex = null;\n this.dndItemDirectives[newClosestIndex].toggleHoveredStyles(true);\n return;\n }\n\n // If we aren't on tab then check separator element.\n this._virtualSeparatorsCoordinates.find((element, index) => {\n const isMouseOnFlipper = this._isMouseOnFlipper(element, mousePosition);\n if (isMouseOnFlipper) {\n newClosestSeparatorIndex = index;\n return true;\n }\n });\n\n if (newClosestSeparatorIndex !== null && newClosestSeparatorIndex === this._closestSeparatorIndex) {\n return;\n }\n\n if (this._closestSeparatorIndex !== newClosestSeparatorIndex) {\n this.dndItemDirectives[this._closestItemIndex!]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex]?.toggleSeparatorStyles();\n }\n\n this._closestSeparatorIndex = newClosestSeparatorIndex;\n\n if (newClosestSeparatorIndex !== null) {\n this._closestItemIndex = null;\n this.dndItemDirectives[newClosestSeparatorIndex].toggleSeparatorStyles(true);\n return;\n }\n }\n\n /**\n * @param dragDir\n * @description Method called, when element is released\n */\n dragEnd(dragDir: IconTabBarDndItem): void {\n if (this._closestSeparatorIndex || this._closestSeparatorIndex === 0) {\n this.dndItemDirectives[this._closestSeparatorIndex].toggleSeparatorStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestSeparatorIndex].dndItemData,\n action: 'replace'\n });\n }\n if (this._closestItemIndex || this._closestItemIndex === 0) {\n this.dndItemDirectives[this._closestItemIndex].toggleHoveredStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestItemIndex].dndItemData,\n action: 'insert'\n });\n }\n /** Reset */\n this._elementsCoordinates = [];\n this._virtualSeparatorsCoordinates = [];\n this._closestItemIndex = null;\n this._closestSeparatorIndex = null;\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current container\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this.dndItemDirectives.push(dragItem);\n dragItem.moved.pipe(takeUntil(this._onDestroy$)).subscribe((position: Point) => this.onMove(position));\n dragItem.started.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.dragStart());\n dragItem.released.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.dragEnd(dragItem));\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current container\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this.dndItemDirectives = this.dndItemDirectives.filter((item) => item !== dragItem);\n }\n\n /**\n * @param listDir\n * @description Register IconTabBarDndList to current container\n */\n registerDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.add(listDir);\n listDir.changeDraggableState(this._draggable);\n }\n\n /**\n * @param listDir\n * @description Remove registered IconTabBarDndList to current container\n */\n removeDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.delete(listDir);\n }\n\n /**\n * @description Generate virtual elements as separator between tabs\n */\n private _generateVirtualSeparators(): void {\n this._elementsCoordinates.forEach((item, index) => {\n const isVertical = this.dndItemDirectives[index].isVertical;\n this._virtualSeparatorsCoordinates.push({\n x: isVertical ? item.x : item.x - FLIPPER_SIZE.width,\n y: isVertical ? item.y + FLIPPER_SIZE.verticalHeight : item.y,\n width: isVertical ? item.width : FLIPPER_SIZE.width,\n height: isVertical ? FLIPPER_SIZE.verticalHeight : FLIPPER_SIZE.height\n });\n });\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n for (const list of this._dndListDirectives) {\n list.changeDraggableState(draggable);\n }\n }\n\n /** @hidden */\n private _isMouseOnFlipper(element: ElementChord, mousePosition: Point): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n\n /** @hidden */\n private _isMouseOnElement(element: ElementChord, mousePosition: Point, isVertical: boolean = false): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = isVertical ? element.y - FLIPPER_SIZE.verticalHeight / 2 : element.y;\n const endY = element.y + element.height - FLIPPER_SIZE.verticalHeight / 2;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n}\n\n/** @hidden */\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\n\nimport { DragDrop, DragRef, DropListRef } from '@angular/cdk/drag-drop';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]',\n standalone: true\n})\nexport class IconBarDndListDirective implements IconTabBarDndList, AfterViewInit, OnDestroy {\n /**\n * @description Direction in which the list is oriented.\n */\n @Input()\n dndOrientation: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * @description Is disabled autoscroll inside draggable list\n */\n @Input()\n dndAutoScroll = true;\n\n /** @hidden */\n private _dropListRef: DropListRef;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private readonly _dndItems$ = new ReplaySubject<void>(1);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _dragDrop: DragDrop,\n private _dndContainer: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._dropListRef = this._dragDrop.createDropList(this.elementRef.nativeElement);\n this._dropListRef.sortingDisabled = true;\n this._dropListRef.autoScrollDisabled = this.dndAutoScroll;\n this._dropListRef.disabled = true;\n this._dropListRef.withOrientation(this.dndOrientation);\n\n this._dndContainer.registerDndList(this);\n\n this._dndItems$\n .pipe(debounceTime(100), takeUntil(this._onDestroy$))\n .subscribe(() => this._dropListRef.withItems(this._dragRefItems));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._dropListRef.dispose();\n this._dndContainer.removeDndList(this);\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current list\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current list\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param draggable\n */\n changeDraggableState(draggable: boolean): void {\n this._dropListRef.disabled = !draggable;\n }\n}\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]',\n standalone: true\n})\nexport class IconBarDndItemDirective implements IconTabBarDndItem, AfterViewInit, OnDestroy {\n /**\n * @description Tab info\n */\n @Input()\n dndItemData: IconTabBarItem;\n\n /**\n * @description Classes for draggable preview\n */\n @Input()\n previewClass: string[] = ['fd-icon-tab-bar__item--dnd-preview'];\n\n /**\n * @description Classes for hovered state\n */\n @Input()\n dndHoveredClass: string[] = ['fd-icon-tab-bar__item--dnd-hovered'];\n\n /**\n * @description Classes for separator, when draggable element between two tabs\n */\n @Input()\n dndSeparatorClass: string[] = [\n 'fd-icon-tab-bar__item--dnd-separator',\n 'fd-icon-tab-bar__item--dnd-separator-vertical'\n ];\n\n /**\n * @description Event thrown when the element is moved by 1px\n */\n readonly moved = new Subject<Point>();\n\n /**\n * @description Event thrown when the element is released\n */\n readonly released = new Subject<void>();\n\n /**\n * @description Event thrown when the element is started to be dragged\n */\n readonly started = new Subject<void>();\n\n /** @hidden */\n isVertical = false;\n\n /**\n * @hidden\n * @description Drag reference, object created from DND CDK Service\n */\n dragRef: DragRef;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n protected _dragDrop: DragDrop,\n private _dndListDir: IconBarDndListDirective,\n private _dndContainerDir: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.isVertical = this._dndListDir?.dndOrientation === 'vertical';\n this._setCDKDrag();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dndListDir.removeDragItem(this);\n this._dndContainerDir.removeDragItem(this);\n this.dragRef.dispose();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.started.next();\n }\n\n /** @hidden */\n onCdkMove(position: Point): void {\n this.moved.next(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n this.released.next();\n }\n\n /** @hidden */\n getElementCoordinates(): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n\n /**\n * @description Add/delete separator classes\n */\n toggleSeparatorStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndSeparatorClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndSeparatorClass);\n }\n\n /**\n * @description Add/delete hovered state classes\n */\n toggleHoveredStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndHoveredClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndHoveredClass);\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this.dragRef = this._dragDrop.createDrag(this.elementRef);\n this.dragRef.previewClass = this.previewClass;\n\n this._dndListDir?.registerDragItem(this);\n this._dndContainerDir?.registerDragItem(this);\n\n this.dragRef.moved\n .pipe(takeUntil(this._onDestroy$))\n .subscribe((event) => this.onCdkMove(event.pointerPosition));\n\n this.dragRef.released.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.onCdkDragReleased());\n\n this.dragRef.started.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.onCdkDragStart());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconBarDndItemDirective } from '../../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconBarDndListDirective,\n NgTemplateOutlet,\n NgFor,\n IconBarDndItemDirective,\n NgClass,\n ButtonComponent,\n IconComponent\n ]\n})\nexport class TextTypePopoverComponent extends IconTabBarPopoverBase implements OnChanges {\n /** @hidden reference for html element, that opens dropdown and can receive focus */\n @ViewChild('dropdownTrigger') _dropdownTrigger: ElementRef<HTMLElement>;\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Is extra items mode or subitems mode\n */\n @Input()\n isExtraItemsMode = false;\n\n /**\n * @description Parent tab need for subItems mode\n */\n @Input()\n parentTab: IconTabBarItem;\n\n /**\n * @description uId of selected subItem\n */\n @Input()\n selectedSubItemUid: Nullable<string>;\n\n /**\n * @description tabIndex of the particular item. Aplicable only for subitems mode\n */\n @Input()\n tabindex = 0;\n\n /**\n * @description Emits when some subTab is selected and isExtraItemsMode is disabled\n */\n @Output()\n selectedSubItem: EventEmitter<any> = new EventEmitter<any>();\n\n /** @hidden */\n _containsSelected = false;\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.isExtraItemsMode && changes.parentTab && this.parentTab.subItems) {\n this._setStyles(this.parentTab.subItems);\n }\n if (changes.selectedSubItemUid) {\n this._calculateIfContainsSelected();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.isExtraItemsMode ? this.selectedExtraItem.emit(selectedItem) : this.selectedSubItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _textPopoverKeyDownHandler(event: KeyboardEvent, tab: IconTabBarItem): void {\n // using relative index within popover (first popover tab should start from 0)\n const baseIndex = this.parentTab ? this.parentTab.flatIndex + 1 : this.extraTabs[0].flatIndex;\n const currentIndex = tab.flatIndex - baseIndex;\n super._keyDownHandler(event, tab, currentIndex);\n }\n\n /** @hidden */\n private _calculateIfContainsSelected(): void {\n this._containsSelected =\n !!this.parentTab.subItems &&\n this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid);\n }\n\n /** @hidden */\n private _getChildren(items: IconTabBarItem[]): IconTabBarItem[] {\n return items.reduce((acc: IconTabBarItem[], item: IconTabBarItem) => {\n acc = acc.concat(item);\n if (item.subItems) {\n acc = acc.concat(this._getChildren(item.subItems));\n }\n return acc;\n }, []);\n }\n}\n","<ng-container *ngIf=\"isExtraItemsMode\">\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n\n<ng-container *ngIf=\"!isExtraItemsMode && parentTab\">\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </span>\n <span *ngIf=\"parentTab.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: _trackByTab\">\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n <span *ngIf=\"item.counter\" class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ item.counter }})\n </span>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <ng-container *ngIf=\"item.subItems?.length\">\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent, IconBarDndContainerDirective } from '../../directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from '../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';\n\n/** @hidden */\ninterface DataForReordering {\n arr: IconTabBarItem[];\n item: IconTabBarItem;\n parentUid: string;\n}\n\n/** @hidden */\ntype TabItem = ElementRef<HTMLElement> | TextTypePopoverComponent;\n\n@Component({\n selector: 'fdp-icon-tab-bar-text-type',\n templateUrl: './icon-tab-bar-text-type.component.html',\n standalone: true,\n imports: [\n IconBarDndContainerDirective,\n OverflowListDirective,\n IconBarDndListDirective,\n NgFor,\n OverflowListItemDirective,\n IconBarDndItemDirective,\n NgClass,\n NgIf,\n TextTypePopoverComponent,\n ButtonComponent,\n IconComponent\n ]\n})\nexport class IconTabBarTextTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<TabItem>;\n\n /** @hidden */\n @ViewChild('extraItemsPopover') _tabBarPopover: TextTypePopoverComponent;\n\n /**\n * @description Disable or enable reordering(drag and drop) feature.\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Emits when user drops the tab.\n */\n @Output()\n reordered = new EventEmitter<IconTabBarItem[]>();\n\n /** @hidden */\n constructor(_cd: ChangeDetectorRef, _ngZone: NgZone) {\n super(_cd, _ngZone);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectExtraItem(selectedItem: IconTabBarItem | undefined): void {\n // Check if the selected item is subItem\n // Then to find root tab, and pass it to the parent method.\n if (selectedItem?.uId.includes(UNIQUE_KEY_SEPARATOR)) {\n const rootTabUid = selectedItem.uId.split(UNIQUE_KEY_SEPARATOR)[0];\n selectedItem = this._tabs.find((tab) => tab.uId === rootTabUid);\n }\n if (!selectedItem) {\n return;\n }\n super._selectExtraItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param draggableItem\n * @param targetItem\n * @param action\n */\n _onDropped(event: FdDnDEvent): void {\n if (!this._canDrop(event)) {\n return;\n }\n\n const replacedParsedUidArr = event.targetItem.uId.split(UNIQUE_KEY_SEPARATOR);\n replacedParsedUidArr.length = replacedParsedUidArr.length - 1;\n const draggableParsedUidArr = event.draggableItem.uId.split(UNIQUE_KEY_SEPARATOR);\n draggableParsedUidArr.length = draggableParsedUidArr.length - 1;\n\n const tabInfoForNewList = this._getTabInfoFromMainList(event.targetItem.uId);\n const tabInfoForPrevList = this._getTabInfoFromMainList(event.draggableItem.uId);\n\n if (!tabInfoForNewList || !tabInfoForPrevList) {\n return;\n }\n\n const dataForAction = {\n replacedItemInfo: {\n arr: tabInfoForNewList.parent,\n item: tabInfoForNewList.tab,\n parentUid: replacedParsedUidArr.length ? replacedParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n },\n draggableItemInfo: {\n arr: tabInfoForPrevList.parent,\n item: tabInfoForPrevList.tab,\n parentUid: draggableParsedUidArr.length ? draggableParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n }\n };\n\n event.action === 'replace' ? this._replaceAsSibling(dataForAction) : this._insertItemAsChild(dataForAction);\n\n this.reordered.emit(this._tabs);\n }\n\n /** @hidden */\n private _canDrop(event: FdDnDEvent): boolean {\n let parentUId: Nullable<string> =\n event.action === 'replace' ? event.targetItem.parentUId : event.targetItem.uId;\n while (parentUId) {\n if (parentUId === event.draggableItem.uId) {\n return false;\n }\n const nextSeparatorIdx = parentUId.lastIndexOf(UNIQUE_KEY_SEPARATOR);\n\n parentUId = nextSeparatorIdx > 0 ? parentUId.slice(0, nextSeparatorIdx) : null;\n }\n return true;\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab into another tab.\n */\n private _insertItemAsChild(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n // Remove draggable tab from previous list\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n if (!replacedItemInfo.item.subItems?.length) {\n replacedItemInfo.item.subItems = [];\n }\n // Add tab to subitem of the target tab\n replacedItemInfo.item.subItems.push(draggableItemInfo.item);\n this._tabs = this._updateTabs(this._tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab between tabs\n */\n private _replaceAsSibling(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n const newIndex = replacedItemInfo?.item?.index || 0;\n replacedItemInfo.arr.splice(newIndex, 0, draggableItemInfo.item);\n this._tabs = this._updateTabs(this._tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n protected _getTabUIElementFocusable(tabUIElement: TabItem): HTMLElement {\n if (typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n return tabUIElement.nativeElement;\n }\n return tabUIElement._dropdownTrigger.nativeElement;\n }\n}\n","<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n <li\n *ngFor=\"let item of _tabs; let idx = index; trackBy: _trackByTab\"\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n <a\n *ngIf=\"!item.subItems?.length; else withPopover\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n >\n <span *ngIf=\"layoutMode === 'row'; else columnsMode\" class=\"fd-icon-tab-bar__tag\">\n {{ item.label }}\n <ng-container *ngIf=\"item.counter\"> ({{ item.counter }})</ng-container>\n </span>\n <ng-template #columnsMode>\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label }}</span>\n </ng-template>\n <span *ngIf=\"item.badge\" class=\"fd-icon-tab-bar__badge\"></span>\n <div class=\"screenreader-only\" *ngIf=\"item.color\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n </a>\n <ng-template #withPopover>\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"_selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </ng-template>\n <div class=\"fd-icon-tab-bar__button-container\" *ngIf=\"item.closable\">\n <button fd-button class=\"fd-icon-tab-bar__button\" fdType=\"transparent\" (click)=\"_closeTab(item.uId)\">\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n </li>\n <li *ngIf=\"_extraTabs.length\" role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n </ul>\n</ng-container>\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { ContentDensityService, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconFont } from '@fundamental-ngx/core/icon';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\n\n@Component({\n selector: 'fdp-icon-tab-bar',\n templateUrl: './icon-tab-bar.component.html',\n styleUrls: ['./icon-tab-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarTextTypeComponent\n ]\n})\nexport class IconTabBarComponent implements OnInit, OnDestroy {\n /**\n * @description Type of tab bar view.\n */\n @Input()\n iconTabType: TabType = 'text';\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n tabsConfig: TabConfig[] = [];\n\n /**\n * @description Destiny mode.\n */\n @Input()\n densityMode: TabDestinyMode = 'inherit';\n\n /**\n * @description Icon font\n */\n @Input()\n iconTabFont: IconFont = 'SAP-icons';\n\n /**\n * @description Disable or enable reordering(drag and drop) feature. (supported by text type only)\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Boolean flag indicating to show total tab.(supported by filter type only)\n */\n @Input()\n showTotalTab = true;\n\n /**\n * @description Layout type for tab (supported by text type only)\n */\n @Input()\n layoutMode: 'row' | 'column' = 'row';\n\n /**\n * @description Icon tab bar background type.\n */\n @Input()\n iconTabBackground: IconTabBarBackground = 'solid';\n\n /**\n * @description Icon tab bar size.\n */\n @Input()\n iconTabSize: IconTabBarSize;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n iconTabSelected = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Emits when user drop tab.\n */\n @Output()\n iconTabReordered = new EventEmitter<IconTabBarItem[]>();\n\n /** Event emitted when user clicks on x icon in tab. */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _cssClassForContainer: string[];\n\n /** @hidden */\n _isRtl = false;\n\n /** @hidden */\n private _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._cssClassForContainer = this._generateContainerStyles();\n\n if (this.densityMode === 'inherit') {\n this._contentDensityService?._contentDensityListener\n .pipe(distinctUntilChanged(), takeUntil(this._onDestroy$))\n .subscribe((density) => {\n this.densityMode = density;\n if (density !== 'compact') {\n this._cssClassForContainer = this._cssClassForContainer.filter(\n (cssClass) => cssClass !== 'fd-icon-tab-bar--compact'\n );\n } else {\n this._cssClassForContainer.push('fd-icon-tab-bar--compact');\n }\n this._cd.detectChanges();\n });\n }\n\n this._rtlService?.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((isRtl: boolean) => {\n if (isRtl !== this._isRtl) {\n this._isRtl = isRtl;\n this._cd.detectChanges();\n }\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * @hidden\n * @param event reordered array of IconTabBarItem\n */\n _onReorder(event: IconTabBarItem[]): void {\n this.iconTabReordered.emit(event);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.iconTabSelected.emit(selectedItem);\n }\n\n /** @hidden */\n _closeTab(item: IconTabBarItem): void {\n this.closeTab.emit(item);\n }\n\n /**\n * @hidden\n * @returns array of css classes for icon-tab-bar container\n */\n private _generateContainerStyles(): string[] {\n const styles = [`fd-icon-tab-bar--${this.iconTabType}`];\n if (this.iconTabType === 'process' && this.tabsConfig[0].icon) {\n styles.push('fd-icon-tab-bar--icon');\n }\n if (this.iconTabBackground !== 'solid') {\n styles.push(`fd-icon-tab-bar--${this.iconTabBackground}`);\n }\n if (this.iconTabSize) {\n styles.push(`fd-icon-tab-bar--${this.iconTabSize}`);\n }\n if (this.densityMode === 'compact') {\n styles.push('fd-icon-tab-bar--compact');\n }\n if (this.layoutMode === 'column') {\n styles.push('fd-icon-tab-bar--counters');\n }\n return styles;\n }\n}\n","<div class=\"fd-icon-tab-bar\" [class]=\"_cssClassForContainer\">\n <ng-container *ngIf=\"iconTabType === 'text'\">\n <ng-container *ngTemplateOutlet=\"textType\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"iconTabType === 'icon' || iconTabType === 'icon-only'\">\n <ng-container *ngTemplateOutlet=\"iconType\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"iconTabType === 'filter'\">\n <ng-container *ngTemplateOutlet=\"filterType\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"iconTabType === 'process'\">\n <ng-container *ngTemplateOutlet=\"processType\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #processType>\n <fdp-icon-tab-bar-process-type\n [tabsConfig]=\"tabsConfig\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-process-type>\n</ng-template>\n\n<ng-template #filterType>\n <fdp-icon-tab-bar-filter-type\n [tabsConfig]=\"tabsConfig\"\n [showTotalTab]=\"showTotalTab\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-filter-type>\n</ng-template>\n\n<ng-template #iconType>\n <fdp-icon-tab-bar-icon-type\n [showLabel]=\"iconTabType === 'icon'\"\n [tabsConfig]=\"tabsConfig\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-icon-type>\n</ng-template>\n\n<ng-template #textType>\n <fdp-icon-tab-bar-text-type\n [tabsConfig]=\"tabsConfig\"\n [layoutMode]=\"layoutMode\"\n [isRtl]=\"_isRtl\"\n [densityMode]=\"densityMode\"\n [enableTabReordering]=\"enableTabReordering\"\n [colorAssociations]=\"colorAssociations\"\n (reordered)=\"_onReorder($event)\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarPopoverComponent } from './components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\nimport { TextTypePopoverComponent } from './components/popovers/text-type-popover/text-type-popover.component';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarComponent } from './icon-tab-bar.component';\n\nconst components = [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective\n];\n\n/**\n * @deprecated\n * Import `IconTabBarComponent` directly instead.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformIconTabBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.IconBarDndContainerDirective","i2.IconBarDndListDirective","i3.IconBarDndContainerDirective","i1"],"mappings":"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"}