@fundamental-ngx/platform 0.43.28 → 0.43.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/form/combobox/combobox/combobox.component.mjs +1 -1
- package/esm2020/form/input-message-group-with-template/input-message-group-with-template.component.mjs +1 -1
- package/esm2020/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +1 -1
- package/esm2020/form/multi-input/multi-input.component.mjs +1 -1
- package/esm2020/form/step-input/number/number-step-input.component.mjs +1 -1
- package/esm2020/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +1 -1
- package/esm2020/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +1 -1
- package/esm2020/message-popover/message-popover.component.mjs +1 -1
- package/esm2020/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +1 -1
- package/esm2020/table/components/table-p13-dialog/columns/columns.component.mjs +3 -3
- package/esm2020/table/components/table-row/table-row.component.mjs +6 -4
- package/esm2020/table-helpers/directives/index.mjs +1 -2
- package/esm2020/table-helpers/table-helpers.module.mjs +2 -5
- package/esm2020/upload-collection/upload-collection/upload-collection.component.mjs +1 -1
- package/esm2020/value-help-dialog/components/define-tab/define-tab.component.mjs +1 -1
- package/esm2020/variant-management/variant-management.component.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-form.mjs +5 -5
- package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-icon-tab-bar.mjs +2 -2
- package/fesm2015/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-message-popover.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +3 -38
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table.mjs +8 -6
- package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-upload-collection.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-form.mjs +5 -5
- package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-icon-tab-bar.mjs +2 -2
- package/fesm2020/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-message-popover.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +3 -38
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table.mjs +8 -6
- package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-upload-collection.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.43.29.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/table/components/table-row/table-row.component.d.ts +1 -1
- package/table-helpers/directives/index.d.ts +0 -1
- package/table-helpers/table-helpers.module.d.ts +11 -12
- package/esm2020/table-helpers/directives/table-cell-selectable.directive.mjs +0 -36
- package/fundamental-ngx-platform-v0.43.28.tgz +0 -0
- package/table-helpers/directives/table-cell-selectable.directive.d.ts +0 -9
|
@@ -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: DOMRect = 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: DOMRect = 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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"}
|