@fundamental-ngx/platform 0.46.0-rc.48 → 0.46.0-rc.49

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.
@@ -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/popovers/icon-tab-bar-popover-base.class.ts","../../../../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/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-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/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/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 { take, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { OverflowListDirective, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { cloneDeep } from 'lodash-es';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabConfig } from '../interfaces/tab-config.interface';\nimport { TabDestinyMode } from '../types';\nimport { ICON_TAB_HIDDEN_CLASS_NAME, UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\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 * @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\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 * 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 * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<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 await 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 * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected async _triggerRecalculationVisibleItems(): Promise<void> {\n await this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntil(this._onDestroy$)).toPromise();\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.markForCheck();\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 {\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 { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\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 /**\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 { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\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})\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 { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]'\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 { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]'\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 { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\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>\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>\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]=\"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 </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 { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent } from '../../directives/dnd/icon-bar-dnd-container.directive';\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})\nexport class IconTabBarTextTypeComponent extends IconTabBarBase {\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 drop tab.\n */\n @Output()\n reordered: EventEmitter<IconTabBarItem[]> = 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 async _selectExtraItem(selectedItem: IconTabBarItem | undefined): Promise<void> {\n // Check if selected item is subItem\n // Then to find root tab, and pass it to 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 await 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 /**\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 private _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 /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n private _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) {\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 /** @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 [class]=\"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 [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 >\n </fdp-text-type-popover>\n </ng-template>\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 >\n </fdp-text-type-popover>\n </li>\n </ul>\n</ng-container>\n","import { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\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})\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>\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]=\"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 </li>\n </ng-container>\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { Component, Input, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { IconTabBarBase } from '../icon-tab-bar-base.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})\nexport class IconTabBarIconTypeComponent extends IconTabBarBase {\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 [class]=\"item.cssClasses\"\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 </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 { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { cloneDeep } from 'lodash-es';\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})\nexport class IconTabBarProcessTypeComponent extends IconTabBarBase {\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 <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 { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\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})\nexport class IconTabBarFilterTypeComponent extends IconTabBarBase {\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 </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 {\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 { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\nimport { ContentDensityService, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconFont } from '@fundamental-ngx/core/icon';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\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})\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: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Emits when user drop tab.\n */\n @Output()\n iconTabReordered: EventEmitter<IconTabBarItem[]> = 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 * @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 /**\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","<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 ></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 ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { OverflowListModule } from '@fundamental-ngx/cdk/utils';\n\nimport { IconTabBarComponent } from './icon-tab-bar.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-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 { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-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 { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\n\n@NgModule({\n declarations: [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective\n ],\n imports: [CommonModule, IconModule, PopoverModule, OverflowListModule, DragDropModule],\n exports: [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective\n ]\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","i3.IconBarDndListDirective","i4.IconBarDndItemDirective","i2","i3.TextTypePopoverComponent","i4.IconBarDndListDirective","i5.IconBarDndItemDirective","i6.IconBarDndContainerDirective","i3","i4.IconTabBarPopoverComponent","i3.IconTabBarTextTypeComponent","i4.IconTabBarIconTypeComponent","i5.IconTabBarProcessTypeComponent","i6.IconTabBarFilterTypeComponent"],"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/popovers/icon-tab-bar-popover-base.class.ts","../../../../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/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-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/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/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 { take, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { OverflowListDirective, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { cloneDeep } from 'lodash-es';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabConfig } from '../interfaces/tab-config.interface';\nimport { TabDestinyMode } from '../types';\nimport { ICON_TAB_HIDDEN_CLASS_NAME, UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\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 * @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\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 * 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 * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<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 await 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 * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected async _triggerRecalculationVisibleItems(): Promise<void> {\n await this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntil(this._onDestroy$)).toPromise();\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.markForCheck();\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 {\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 { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\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 /**\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 { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\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})\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 { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]'\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 { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]'\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 { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\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>\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>\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]=\"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 </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 { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent } from '../../directives/dnd/icon-bar-dnd-container.directive';\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})\nexport class IconTabBarTextTypeComponent extends IconTabBarBase {\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 drop tab.\n */\n @Output()\n reordered: EventEmitter<IconTabBarItem[]> = 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 async _selectExtraItem(selectedItem: IconTabBarItem | undefined): Promise<void> {\n // Check if selected item is subItem\n // Then to find root tab, and pass it to 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 await 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 /**\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 private _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 /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n private _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) {\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 /** @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 [class]=\"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 [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 >\n </fdp-text-type-popover>\n </ng-template>\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 >\n </fdp-text-type-popover>\n </li>\n </ul>\n</ng-container>\n","import { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\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})\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>\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]=\"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 </li>\n </ng-container>\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { Component, Input, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { IconTabBarBase } from '../icon-tab-bar-base.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})\nexport class IconTabBarIconTypeComponent extends IconTabBarBase {\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 [class]=\"item.cssClasses\"\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 </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 { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { cloneDeep } from 'lodash-es';\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})\nexport class IconTabBarProcessTypeComponent extends IconTabBarBase {\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 <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 { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\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})\nexport class IconTabBarFilterTypeComponent extends IconTabBarBase {\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 </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 {\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 { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\nimport { ContentDensityService, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconFont } from '@fundamental-ngx/core/icon';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\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})\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: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Emits when user drop tab.\n */\n @Output()\n iconTabReordered: EventEmitter<IconTabBarItem[]> = 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 * @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 /**\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","<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 ></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 ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { OverflowListModule } from '@fundamental-ngx/cdk/utils';\n\nimport { IconTabBarComponent } from './icon-tab-bar.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-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 { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-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 { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\n\n@NgModule({\n declarations: [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective\n ],\n imports: [CommonModule, IconModule, PopoverModule, OverflowListModule, DragDropModule],\n exports: [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective\n ]\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","i3.IconBarDndListDirective","i4.IconBarDndItemDirective","i2","i3.TextTypePopoverComponent","i4.IconBarDndListDirective","i5.IconBarDndItemDirective","i6.IconBarDndContainerDirective","i3","i4.IconTabBarPopoverComponent","i3.IconTabBarTextTypeComponent","i4.IconTabBarIconTypeComponent","i5.IconTabBarProcessTypeComponent","i6.IconTabBarFilterTypeComponent"],"mappings":"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"}