@libs-ui/components-tabs 0.2.36

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libs-ui-components-tabs.mjs","sources":["../../../../../libs-ui/components/tabs/src/item/item.component.ts","../../../../../libs-ui/components/tabs/src/item/item.component.html","../../../../../libs-ui/components/tabs/src/services/tab.service.ts","../../../../../libs-ui/components/tabs/src/utils/tabs.ts","../../../../../libs-ui/components/tabs/src/tabs.component.ts","../../../../../libs-ui/components/tabs/src/tabs.component.html","../../../../../libs-ui/components/tabs/src/libs-ui-components-tabs.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { LibsUiComponentsBadgeComponent } from '@libs-ui/components-badge';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { escapeHtml, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { ITabItem, ITabItemEvent, ITabs, TYPE_TAB_MODE } from '../interfaces/tab.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs-item',\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsBadgeComponent\n ]\n})\nexport class LibsUiComponentsTabsItemComponent implements OnInit, OnDestroy {\n\n protected labelComputed = computed(() => escapeHtml(this.translateService.instant(this.item()[this.fieldLabel()])));\n\n private mutationObserver = signal<MutationObserver | undefined>(undefined);\n private mutationObserverSubject = new Subject<void>();\n private onDestroy = new Subject<void>();\n\n // private dropdownFunctionControl: IDropdownFunctionControlEvent | undefined;\n\n readonly ignoreCalculatorTab = input.required<boolean>();\n readonly step = input.required<number>();\n readonly mode = input.required<TYPE_TAB_MODE>();\n readonly tabs = input.required<ITabs>();\n readonly item = model.required<ITabItem>();\n readonly keySelected = input.required<string>();\n readonly fieldLabel = input.required<string>();\n readonly fieldKey = input.required<string>();\n readonly cssDefault = input.required<string>();\n readonly size = input.required<'langer' | 'medium'>();\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly zIndex = input<number>();\n readonly changeViewTab = input.required<Subject<void>>();\n\n readonly outSelectAction = output<ITabItemEvent>();\n\n private element = inject(ElementRef);\n private translateService = inject(TranslateService);\n\n constructor() {\n effect(() => {\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n return;\n }\n untracked(() => {\n this.updateSpecificWidth();\n this.mutationObserver()?.disconnect();\n this.mutationObserverSubject.pipe(debounceTime(250)).subscribe(() => this.updateSpecificWidth());\n this.mutationObserver.set(new MutationObserver(() => this.mutationObserverSubject.next()));\n this.mutationObserver()?.observe(this.element.nativeElement, { attributes: true, childList: true, subtree: true });\n });\n });\n }\n\n ngOnInit() {\n if (!this.item().key) {\n this.item.update(item => ({ ...item, key: uuid() }));\n }\n }\n\n private updateSpecificWidth() {\n const preSpecificWidth = this.item().specificWidth;\n const width = this.element.nativeElement.offsetWidth;\n if (width && preSpecificWidth !== width) {\n this.item.update(item => ({ ...item, specificWidth: width }));\n this.changeViewTab().next();\n }\n }\n\n protected handlerImgError(event: Event) {\n event.stopPropagation();\n (event as IEvent).target.src = this.item().linkImageError\n }\n\n protected handlerSelectAction(event: { key: string, item: any }) {\n // if (this.tab?.modeSaveView) {\n // this.moSelectAction.emit({ item: this.item, action: event.key as string });\n // this.dropdownFunctionControl && this.dropdownFunctionControl.resetDropdown();\n // }\n }\n\n // protected handlerDropdownFunctionControl(event: IDropdownFunctionControlEvent) {\n // this.dropdownFunctionControl = event;\n // }\n\n protected handlerClickButton(event: Event, type: 'configButtonLeft' | 'configButtonRight') {\n event.stopPropagation();\n const action = this.item()[type]?.action;\n if (action) {\n action(this.item());\n }\n }\n\n ngOnDestroy(): void {\n this.mutationObserver()?.disconnect();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}\n"," @if (item(); as item) {\n <div #itemEl\n [attr.key]=\"item[fieldKey()]\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }}\"\n [class.libs-ui-tab-header-center-item-style-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.cursor-pointer]=\"!item.disable && !disable()\">\n @if (tabs().hasImage) {\n <img LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mo-lib-mr-8px {{ item.iconLeft }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().hasBackGroundTab) {\n <div class=\"libs-ui-tab-header-center-item-step border-none libs-ui-font-h6m\"\n [class.cursor-default]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [class.bg-[#f8f9fa]]=\"item.disable || disable()\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.text[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#f8ff9a]]=\"step() > (tabs().stepCompleted || 0) && tabs().ignoreSelectedBackgroundStep\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"item.disable || disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n class=\"libs-ui-tab-header-center-item-step\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (item.disable || disable()) ? ' libs-ui-disable' : '') \n + (tabs().hasBackGroundTab && (item.disable || disable()) ? ' text-[#cdd0d6] cursor-default' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] mo-lib-border-radius-50em\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n class=\"ml-[8px]\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon libs-ui-icon-tooltip-outline\">\n </i>\n }\n @if (item.iconRight) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.count) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"item.classCircle || 'libs-ui-font-h5r'\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n <!-- <mo-libs-shared-components-dropdown *ngIf=\"item.specificDisplay && tab.dropdownRightConfig as config\"\n [class.mo-lib-ml-8px]=\"!config.getView\"\n [class.mo-lib-tab-header-center-item-dropdown]=\"config.hiddenShowDropdown\"\n [attr.active]=\"item[fieldKey] === keySelected\"\n [attr.completed]=\"step <= (tab.stepCompleted || -1)\"\n [class.mo-lib-pointer-events-none]=\"item.disable || disable || item[fieldKey] !== keySelected\"\n [isNgContent]=\"true\"\n [customPopupConfig]=\"{\n widthByParent: false,\n ignoreArrow: true,\n paddingLeftItem:config.paddingLeftItem ?? true,\n classInclude:config.classIncludePopup || 'mo-lib-w-250px',\n position:{\n mode: 'start',\n distance: 0\n }\n }\"\n [tooltipElementRefCustom]=\"config.hiddenShowDropdown !== undefined ? undefined : itemEl\"\n [classWidthDropDown]=\"'d-flex'\"\n [listViewData]=\"config.getData ? (item[fieldKey] | MoLibsSharedPipesCallFunctionInTemplate:config.getData:item:lang) : undefined\"\n [listViewConfig]=\"config.listViewConfig\"\n [listViewBackgroundListCustom]=\"config.listViewBackgroundListCustom\"\n [listViewMaxItemShow]=\"config.listViewMaxItemShow || 5\"\n [ignoreStopPropagationEvent]=\"true\"\n (moSelectKey)=\"handlerSelectAction($event)\"\n (moFunctionsControl)=\"handlerDropdownFunctionControl($event)\">\n <div *ngIf=\"config.getView\"\n [innerHtml]=\"item[fieldKey] | MoLibsSharedPipesCallFunctionInTemplate:config.getView:item:lang \">\n </div>\n <i *ngIf=\"!config.getView\"\n [attr.active]=\"item[fieldKey] === keySelected\"\n [attr.completed]=\"step <= (tab.stepCompleted || -1)\"\n class=\" {{ config.hiddenShowDropdown ? 'mo-svg-font-more-horizontal mo-lib-color-6a7383 mo-lib-color-global-hover' : 'mo-svg-font-chevron-down mo-lib-tab-header-center-item-icon' }} \">\n </i>\n </mo-libs-shared-components-dropdown> -->\n\n </div>\n }\n","import { Injectable } from \"@angular/core\";\nimport { ITabItem } from \"../interfaces/tab.interface\";\nimport { of } from \"rxjs\";\n\n@Injectable()\nexport class LibsUiTabsService {\n\n listTabItemsMore(items: Array<ITabItem>) {\n return of(items)\n }\n\n}\n","import { IListViewConfigItem } from \"@libs-ui/components-list\";\nimport { escapeHtml, isNil } from \"@libs-ui/utils\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { ITabItem, ITabs } from \"../interfaces/tab.interface\";\nimport { LibsUiTabsService } from \"../services/tab.service\";\n\nexport const tabMoreListConfig = (tabsService: LibsUiTabsService, translate: TranslateService, fieldKey: string, fieldLabel: string, tabs: ITabs): IListViewConfigItem => {\n return {\n type: 'text',\n httpRequestData: {\n serviceOther: tabsService,\n functionName: 'listTabItemsMore',\n argumentsValue: [tabs.items().filter(item => !item().specificDisplay).map(item => item())],\n convertResponseData: (response) => {\n console.log(response);\n\n return response\n },\n },\n configTemplateText: {\n fieldKey: fieldKey || 'key',\n getClassItem: () => 'py-[4px]',\n classRows: 'w-full',\n rows: [{\n classCols: 'flex items-center py-[8px]',\n cols: [\n {\n getPopover: (item: ITabItem) => item.iconLeft ? { classInclude: 'flex', dataView: `<i class=\"${item.iconLeft} text-[16px] mr-[8px]\"></i>` } : undefined\n },\n {\n getValue: (item: ITabItem) => escapeHtml(translate.instant(item[fieldLabel] || ' '))\n },\n {\n getPopover: (item: ITabItem) => item.popover ? { config: item.popover } : undefined\n },\n {\n getPopover: (item: ITabItem) => item.iconRight ? { dataView: `<i class=\"${item.iconRight} text-[16px] mr-[8px]\"></i>` } : undefined\n },\n {\n getConfigBadge: (item: ITabItem) => {\n if (isNil(item.count)) {\n return undefined;\n }\n return {\n mode: item.modeCount || 'x+',\n count: item.count,\n maxCount: item.maxCount || 99,\n classCircle: item.classCircle || 'libs-ui-font-h5r'\n };\n }\n }\n ]\n }]\n }\n };\n}","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IDrop, LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective } from '@libs-ui/components-drag-drop';\nimport { IListDataEmitKey, IListViewConfigItem, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { IPopover, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { isNil, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ITabCssConfig, ITabFunctionControlEvent, ITabItem, ITabItemEvent, ITabs, TYPE_TAB_MODE } from './interfaces/tab.interface';\nimport { LibsUiComponentsTabsItemComponent } from './item/item.component';\nimport { LibsUiTabsService } from './services/tab.service';\nimport { tabMoreListConfig } from './utils/tabs';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsDragContainerDirective,\n LibsUiDragItemDirective,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsTabsItemComponent,\n LibsUiComponentsListComponent\n ],\n providers: [LibsUiTabsService]\n})\nexport class LibsUiComponentsTabsComponent implements OnInit, OnDestroy {\n\n protected itemsDisplayComputed = computed<Array<WritableSignal<ITabItem>>>(() => this.tabs().items().filter(item => item().specificDisplay));\n protected displayMoreItem = signal<boolean>(false);\n protected tabMoreListConfig = signal<IListViewConfigItem | undefined>(undefined);\n protected changeViewTab = new Subject<void>();\n protected groupName = signal<string>(uuid());\n protected stylesDragDropOverrideComputed = computed(() => this.updateStylesDragDropOverride());\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private onDestroy = new Subject<void>();\n\n readonly mode = input<TYPE_TAB_MODE>('left');\n readonly fieldKey = input<string>('key');\n readonly fieldLabel = input<string>('label');\n readonly keySelected = model.required<string>();\n readonly disable = input<boolean>();\n readonly tabs = input.required<ITabs>();\n readonly heightTabItem = input<number>(40);\n readonly ignoreCalculatorTab = input<boolean>(false);\n readonly size = input<'langer' | 'medium'>('medium');\n readonly disableLabel = input<boolean>();\n readonly hasAnimation = input<boolean>(true);\n readonly zIndex = input<number>();\n readonly configCss = model<ITabCssConfig>();\n readonly popoverShowMoreTabItem = input<IPopover>();\n readonly checkCanChangeTabSelected = input<() => boolean | Promise<boolean>>();\n\n readonly outKeySelected = output<string>();\n readonly outFunctionsControl = output<ITabFunctionControlEvent>();\n readonly outDragTabChange = output<void>();\n readonly outDisplayMoreItem = output<boolean>();\n\n private readonly headerEl = viewChild.required<ElementRef>('headerEl');\n private readonly headerLeftEl = viewChild.required<ElementRef>('headerLeftEl');\n private readonly headerRightEl = viewChild.required<ElementRef>('headerRightEl');\n\n private tabsService = inject(LibsUiTabsService);\n private translate = inject(TranslateService);\n\n ngOnInit() {\n this.updateTabsCssConfig();\n this.tabMoreListConfig.set(tabMoreListConfig(this.tabsService, this.translate, this.fieldKey(), this.fieldLabel(), this.tabs()));\n if (this.ignoreCalculatorTab()) {\n this.tabs().items().map(item => item.update(data => ({ ...data, specificDisplay: true })));\n }\n this.outFunctionsControl.emit({\n addTabItem: this.addTabItem.bind(this),\n calculatorTabItemsDisplay: this.calculatorTabsItemDisplay.bind(this),\n selectedTabItem: this.handlerSelectedTabItem.bind(this)\n });\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n return;\n }\n fromEvent(window, 'resize').pipe(debounceTime(250), takeUntil(this.onDestroy)).subscribe(() => {\n if (!this.tabs().items().length) {\n return;\n }\n this.displayMoreItem.set(false);\n this.calculatorTabsItemDisplay();\n });\n this.changeViewTab.pipe(takeUntil(this.onDestroy)).subscribe(() => this.calculatorTabsItemDisplay());\n }\n\n private updateTabsCssConfig() {\n if (this.configCss()) {\n return;\n }\n switch (this.mode()) {\n case 'left':\n this.configCss.set({\n first: 'ml-[20px] mr-[16px]',\n other: 'ml-[20px] mr-[16px]'\n });\n break;\n case 'center':\n this.configCss.set({\n first: 'px-[12px] ml-[18px] mr-[18px]',\n other: 'px-[12px] mx-[18px]',\n header: 'flex justify-center'\n });\n this.tabs().items().map(item => item.update(data => ({ ...data, specificDisplay: true })));\n break;\n case 'center-has-line':\n this.configCss.set({\n first: 'px-[16px]',\n other: 'px-[16px]',\n headerCenter: 'items-center'\n });\n this.tabs().items().map(item => item.update(data => ({ ...data, specificDisplay: true })));\n break;\n case 'space-between':\n this.configCss.set({\n first: 'mx-auto',\n other: 'mx-auto',\n headerCenter: 'w-full'\n });\n this.tabs().items().map(item => item.update(data => ({ ...data, specificDisplay: true })));\n break;\n }\n }\n\n private updateStylesDragDropOverride() {\n if (this.hasAnimation()) {\n return [\n {\n className: 'libs-ui-drag-drop-item-placeholder',\n styles: ''\n },\n {\n className: 'libs-ui-drag-drop-item',\n styles: 'cursor: move;'\n },\n {\n className: 'libs-ui-drag-drop-item-dragging',\n styles: 'cursor: move; background: #dddddd;'\n }\n ];\n }\n return [\n {\n className: 'libs-ui-drag-drop-item',\n styles: ''\n },\n {\n className: 'libs-ui-drag-drop-item-disable',\n styles: ''\n }\n ]\n }\n\n protected handlerDropContainer(event: IDrop) {\n const { itemDragInfo } = event;\n if (!itemDragInfo) {\n return;\n }\n const items = this.tabs().items;\n const { indexDrag, indexDrop } = itemDragInfo;\n if (isNil(indexDrag) || isNil(indexDrop) || indexDrop === indexDrag) {\n return;\n }\n const itemDrag = items()[indexDrag as number];\n items.update(items => {\n items.splice(indexDrag as number, 1);\n items.splice(indexDrop as number, 0, itemDrag);\n return [...items];\n });\n this.outDragTabChange.emit();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n private async handlerSelectedTabItem(key: string, resetDisable = true) {\n const itemSelected = this.tabs().items().find(item => item()[this.fieldKey()] === key);\n if (!itemSelected) {\n return;\n }\n if (resetDisable) {\n itemSelected.update(item => ({ ...item, disable: false }));\n }\n this.handlerClickItem({ stopPropagation: () => { return } } as Event, itemSelected);\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.handlerClickItem({ stopPropagation: () => { return } } as Event, event.item);\n this.outDragTabChange.emit();\n }\n\n protected async handlerClickItem(event: Event, item: WritableSignal<ITabItem>) {\n event.stopPropagation();\n if (item().disable || this.disable()) {\n return;\n }\n const checkCanChangeTabSelected = this.checkCanChangeTabSelected();\n if (checkCanChangeTabSelected) {\n const state = await checkCanChangeTabSelected();\n if (state) {\n this.changeItemSelected(item);\n }\n return;\n }\n this.changeItemSelected(item);\n }\n\n private changeItemSelected(item: WritableSignal<ITabItem>) {\n this.keySelected.set(item()[this.fieldKey()]);\n this.outKeySelected.emit(this.keySelected());\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n this.calculatorTabsItemDisplay();\n }\n\n protected async handlerSelectAction(event: ITabItemEvent) {\n // switch (event.action) {\n // case 'pin':\n // await this.handlerPin(event.item);\n // break;\n\n // case 'unpin':\n // await this.handlerUnpin(event.item);\n // break;\n\n // case 'edit':\n // this.handlerEditTabItem(event.item);\n // break;\n\n // case 'delete':\n // this.handlerRemoveTabItem(event.item);\n // break;\n // }\n }\n\n private async addTabItem(item: WritableSignal<ITabItem>, selected = true, addFirst?: boolean) {\n const items = this.tabs().items;\n items.update(items => {\n if (addFirst) {\n return [item, ...items];\n }\n return [...items, item];\n });\n if (selected) {\n this.handlerClickItem({ stopPropagation: () => { return } } as Event, item);\n }\n }\n\n protected async calculatorTabsItemDisplay() {\n let items = this.tabs().items();\n const indexItemSelected = items.findIndex(item => item()[this.fieldKey()] === this.keySelected());\n if (indexItemSelected < 0) {\n return;\n }\n this.displayMoreItem.set(false);\n let displayMoreItem = false;\n const headerWidth = this.headerEl().nativeElement.clientWidth || 0;\n const itemSelected = items[indexItemSelected];\n const itemSelectedWidth = itemSelected().specificWidth;\n let totalWidthItemsDisplay = (this.headerLeftEl().nativeElement.clientWidth || 0) + (this.headerRightEl().nativeElement.clientWidth || 0) + 32;\n items.forEach((item, index) => {\n if (!item().specificWidth) {\n return;\n }\n item.update(data => ({ ...data, specificDisplay: false }));\n const itemWidth = item().specificWidth || 0;\n const width = totalWidthItemsDisplay + itemWidth + (index < indexItemSelected ? itemSelectedWidth : 0);\n totalWidthItemsDisplay += itemWidth;\n if (width > headerWidth) {\n displayMoreItem = true;\n return;\n }\n item.update(data => ({ ...data, specificDisplay: true }));\n });\n itemSelected.update(data => ({ ...data, specificDisplay: true }));\n const display = items.filter(item => item().specificDisplay);\n const notDisplay = items.filter(item => !item().specificDisplay);\n items = display.concat(notDisplay);\n items.forEach((item, index) => item.update(data => ({ ...data, order: index })));\n this.displayMoreItem.set(displayMoreItem);\n this.outDisplayMoreItem.emit(this.displayMoreItem());\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","<div class=\"libs-ui-tab\">\n <div #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div #headerLeftEl\n class='libs-ui-tab-header-left'>\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [items]=\"itemsDisplayComputed()\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!hasAnimation()\"\n [acceptDragSameGroup]=\"hasAnimation()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplayComputed(); track item) {\n <div LibsUiDragItemDirective\n [disable]=\"disable() || !hasAnimation()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? (elementContainerEl.clientWidth/(itemsDisplayComputed().length || 1)) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (hasAnimation() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[12px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index+1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem($event, item)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277, \n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 }\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classInclude]=\"'p-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{config: {content: popoverShowMoreTabItem()?.config?.content}}\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index+1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\"\n (click)=\"handlerClickItem($event, item)\" />\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #menuEl>\n <libs_ui-components-list [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["debounceTime"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './tabs.component';
2
+ export * from './interfaces/tab.interface';
@@ -0,0 +1,68 @@
1
+ import { WritableSignal } from "@angular/core";
2
+ import { TYPE_BADGE_MODE } from "@libs-ui/components-badge";
3
+ import { IButton } from "@libs-ui/components-buttons-button";
4
+ import { IPopoverOverlay } from "@libs-ui/components-popover";
5
+ export interface ITabs {
6
+ hasImage?: boolean;
7
+ hasCount?: boolean;
8
+ hasStep?: boolean;
9
+ stepCompleted?: number;
10
+ hasBackGroundTab?: boolean;
11
+ ignoreSelectedBackgroundStep?: boolean;
12
+ ignoreShowLineBottomInTab?: boolean;
13
+ classIncludeHeader?: string;
14
+ classIncludeHeaderCenter?: string;
15
+ classIncludeHeaderRight?: string;
16
+ classIncludeItem?: string;
17
+ maxWidthTextLabelItem?: number;
18
+ viewMoreIgnoreMarginLeft?: boolean;
19
+ items: WritableSignal<Array<WritableSignal<ITabItem>>>;
20
+ }
21
+ export interface ITabItem {
22
+ key?: string;
23
+ classInclude?: string;
24
+ disable?: boolean;
25
+ created_by_system?: boolean;
26
+ created_by?: string;
27
+ is_default?: boolean;
28
+ is_pin?: boolean;
29
+ order?: number;
30
+ linkImage?: string;
31
+ linkImageError?: string;
32
+ classImageInclude?: string;
33
+ popoverImage?: IPopoverOverlay;
34
+ iconLeft?: string;
35
+ popoverIconLeft?: IPopoverOverlay;
36
+ label?: string;
37
+ classLabel?: string;
38
+ popover?: IPopoverOverlay;
39
+ iconRight?: string;
40
+ popoverIconRight?: IPopoverOverlay;
41
+ count?: number;
42
+ modeCount?: TYPE_BADGE_MODE;
43
+ maxCount?: number;
44
+ classCircle?: string;
45
+ specificWidth?: number;
46
+ specificDisplay?: boolean;
47
+ [param: string]: any;
48
+ classStep?: string;
49
+ configButtonRight?: IButton;
50
+ configButtonLeft?: IButton;
51
+ hasRedDot?: boolean;
52
+ }
53
+ export interface ITabCssConfig {
54
+ first: string;
55
+ other: string;
56
+ header?: string;
57
+ headerCenter?: string;
58
+ }
59
+ export type TYPE_TAB_MODE = 'left' | 'center' | 'space-between' | 'center-has-line';
60
+ export interface ITabFunctionControlEvent {
61
+ addTabItem: (item: WritableSignal<ITabItem>, selected?: boolean, addFirst?: boolean) => Promise<void>;
62
+ calculatorTabItemsDisplay: () => Promise<void>;
63
+ selectedTabItem: (key: string, resetDisable?: boolean) => Promise<void>;
64
+ }
65
+ export interface ITabItemEvent {
66
+ key: string;
67
+ item: ITabItem;
68
+ }
@@ -0,0 +1,39 @@
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { ITabItem, ITabItemEvent, ITabs, TYPE_TAB_MODE } from '../interfaces/tab.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class LibsUiComponentsTabsItemComponent implements OnInit, OnDestroy {
6
+ protected labelComputed: import("@angular/core").Signal<string>;
7
+ private mutationObserver;
8
+ private mutationObserverSubject;
9
+ private onDestroy;
10
+ readonly ignoreCalculatorTab: import("@angular/core").InputSignal<boolean>;
11
+ readonly step: import("@angular/core").InputSignal<number>;
12
+ readonly mode: import("@angular/core").InputSignal<TYPE_TAB_MODE>;
13
+ readonly tabs: import("@angular/core").InputSignal<ITabs>;
14
+ readonly item: import("@angular/core").ModelSignal<ITabItem>;
15
+ readonly keySelected: import("@angular/core").InputSignal<string>;
16
+ readonly fieldLabel: import("@angular/core").InputSignal<string>;
17
+ readonly fieldKey: import("@angular/core").InputSignal<string>;
18
+ readonly cssDefault: import("@angular/core").InputSignal<string>;
19
+ readonly size: import("@angular/core").InputSignal<"langer" | "medium">;
20
+ readonly disable: import("@angular/core").InputSignal<boolean | undefined>;
21
+ readonly disableLabel: import("@angular/core").InputSignal<boolean | undefined>;
22
+ readonly zIndex: import("@angular/core").InputSignal<number | undefined>;
23
+ readonly changeViewTab: import("@angular/core").InputSignal<Subject<void>>;
24
+ readonly outSelectAction: import("@angular/core").OutputEmitterRef<ITabItemEvent>;
25
+ private element;
26
+ private translateService;
27
+ constructor();
28
+ ngOnInit(): void;
29
+ private updateSpecificWidth;
30
+ protected handlerImgError(event: Event): void;
31
+ protected handlerSelectAction(event: {
32
+ key: string;
33
+ item: any;
34
+ }): void;
35
+ protected handlerClickButton(event: Event, type: 'configButtonLeft' | 'configButtonRight'): void;
36
+ ngOnDestroy(): void;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsTabsItemComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsTabsItemComponent, "libs_ui-components-tabs-item", never, { "ignoreCalculatorTab": { "alias": "ignoreCalculatorTab"; "required": true; "isSignal": true; }; "step": { "alias": "step"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": true; "isSignal": true; }; "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "item": { "alias": "item"; "required": true; "isSignal": true; }; "keySelected": { "alias": "keySelected"; "required": true; "isSignal": true; }; "fieldLabel": { "alias": "fieldLabel"; "required": true; "isSignal": true; }; "fieldKey": { "alias": "fieldKey"; "required": true; "isSignal": true; }; "cssDefault": { "alias": "cssDefault"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": true; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "disableLabel": { "alias": "disableLabel"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "changeViewTab": { "alias": "changeViewTab"; "required": true; "isSignal": true; }; }, { "item": "itemChange"; "outSelectAction": "outSelectAction"; }, never, never, true, never>;
39
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@libs-ui/components-tabs",
3
+ "version": "0.2.36",
4
+ "peerDependencies": {
5
+ "@angular/common": "^18.2.0",
6
+ "@angular/core": "^18.2.0"
7
+ },
8
+ "sideEffects": false,
9
+ "module": "fesm2022/libs-ui-components-tabs.mjs",
10
+ "typings": "index.d.ts",
11
+ "exports": {
12
+ "./package.json": {
13
+ "default": "./package.json"
14
+ },
15
+ ".": {
16
+ "types": "./index.d.ts",
17
+ "esm2022": "./esm2022/libs-ui-components-tabs.mjs",
18
+ "esm": "./esm2022/libs-ui-components-tabs.mjs",
19
+ "default": "./fesm2022/libs-ui-components-tabs.mjs"
20
+ }
21
+ },
22
+ "dependencies": {
23
+ "tslib": "^2.3.0"
24
+ }
25
+ }
@@ -0,0 +1,7 @@
1
+ import { ITabItem } from "../interfaces/tab.interface";
2
+ import * as i0 from "@angular/core";
3
+ export declare class LibsUiTabsService {
4
+ listTabItemsMore(items: Array<ITabItem>): import("rxjs").Observable<ITabItem[]>;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiTabsService, never>;
6
+ static ɵprov: i0.ɵɵInjectableDeclaration<LibsUiTabsService>;
7
+ }
@@ -0,0 +1,59 @@
1
+ import { OnDestroy, OnInit, WritableSignal } from '@angular/core';
2
+ import { IDrop } from '@libs-ui/components-drag-drop';
3
+ import { IListDataEmitKey, IListViewConfigItem } from '@libs-ui/components-list';
4
+ import { IPopover, IPopoverFunctionControlEvent } from '@libs-ui/components-popover';
5
+ import { Subject } from 'rxjs';
6
+ import { ITabCssConfig, ITabFunctionControlEvent, ITabItem, ITabItemEvent, ITabs, TYPE_TAB_MODE } from './interfaces/tab.interface';
7
+ import * as i0 from "@angular/core";
8
+ export declare class LibsUiComponentsTabsComponent implements OnInit, OnDestroy {
9
+ protected itemsDisplayComputed: import("@angular/core").Signal<WritableSignal<ITabItem>[]>;
10
+ protected displayMoreItem: WritableSignal<boolean>;
11
+ protected tabMoreListConfig: WritableSignal<IListViewConfigItem | undefined>;
12
+ protected changeViewTab: Subject<void>;
13
+ protected groupName: WritableSignal<string>;
14
+ protected stylesDragDropOverrideComputed: import("@angular/core").Signal<{
15
+ className: string;
16
+ styles: string;
17
+ }[]>;
18
+ private popoverFunctionControlEvent;
19
+ private onDestroy;
20
+ readonly mode: import("@angular/core").InputSignal<TYPE_TAB_MODE>;
21
+ readonly fieldKey: import("@angular/core").InputSignal<string>;
22
+ readonly fieldLabel: import("@angular/core").InputSignal<string>;
23
+ readonly keySelected: import("@angular/core").ModelSignal<string>;
24
+ readonly disable: import("@angular/core").InputSignal<boolean | undefined>;
25
+ readonly tabs: import("@angular/core").InputSignal<ITabs>;
26
+ readonly heightTabItem: import("@angular/core").InputSignal<number>;
27
+ readonly ignoreCalculatorTab: import("@angular/core").InputSignal<boolean>;
28
+ readonly size: import("@angular/core").InputSignal<"langer" | "medium">;
29
+ readonly disableLabel: import("@angular/core").InputSignal<boolean | undefined>;
30
+ readonly hasAnimation: import("@angular/core").InputSignal<boolean>;
31
+ readonly zIndex: import("@angular/core").InputSignal<number | undefined>;
32
+ readonly configCss: import("@angular/core").ModelSignal<ITabCssConfig | undefined>;
33
+ readonly popoverShowMoreTabItem: import("@angular/core").InputSignal<IPopover | undefined>;
34
+ readonly checkCanChangeTabSelected: import("@angular/core").InputSignal<(() => boolean | Promise<boolean>) | undefined>;
35
+ readonly outKeySelected: import("@angular/core").OutputEmitterRef<string>;
36
+ readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<ITabFunctionControlEvent>;
37
+ readonly outDragTabChange: import("@angular/core").OutputEmitterRef<void>;
38
+ readonly outDisplayMoreItem: import("@angular/core").OutputEmitterRef<boolean>;
39
+ private readonly headerEl;
40
+ private readonly headerLeftEl;
41
+ private readonly headerRightEl;
42
+ private tabsService;
43
+ private translate;
44
+ ngOnInit(): void;
45
+ private updateTabsCssConfig;
46
+ private updateStylesDragDropOverride;
47
+ protected handlerDropContainer(event: IDrop): void;
48
+ protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent): void;
49
+ private handlerSelectedTabItem;
50
+ protected handlerSelectedKey(event: IListDataEmitKey | undefined): void;
51
+ protected handlerClickItem(event: Event, item: WritableSignal<ITabItem>): Promise<void>;
52
+ private changeItemSelected;
53
+ protected handlerSelectAction(event: ITabItemEvent): Promise<void>;
54
+ private addTabItem;
55
+ protected calculatorTabsItemDisplay(): Promise<void>;
56
+ ngOnDestroy(): void;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsTabsComponent, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsTabsComponent, "libs_ui-components-tabs", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "fieldKey": { "alias": "fieldKey"; "required": false; "isSignal": true; }; "fieldLabel": { "alias": "fieldLabel"; "required": false; "isSignal": true; }; "keySelected": { "alias": "keySelected"; "required": true; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "heightTabItem": { "alias": "heightTabItem"; "required": false; "isSignal": true; }; "ignoreCalculatorTab": { "alias": "ignoreCalculatorTab"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disableLabel": { "alias": "disableLabel"; "required": false; "isSignal": true; }; "hasAnimation": { "alias": "hasAnimation"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "configCss": { "alias": "configCss"; "required": false; "isSignal": true; }; "popoverShowMoreTabItem": { "alias": "popoverShowMoreTabItem"; "required": false; "isSignal": true; }; "checkCanChangeTabSelected": { "alias": "checkCanChangeTabSelected"; "required": false; "isSignal": true; }; }, { "keySelected": "keySelectedChange"; "configCss": "configCssChange"; "outKeySelected": "outKeySelected"; "outFunctionsControl": "outFunctionsControl"; "outDragTabChange": "outDragTabChange"; "outDisplayMoreItem": "outDisplayMoreItem"; }, never, ["div.libs-ui-tab-header-left", "div.libs-ui-tab-header-right"], true, never>;
59
+ }
@@ -0,0 +1,5 @@
1
+ import { IListViewConfigItem } from "@libs-ui/components-list";
2
+ import { TranslateService } from "@ngx-translate/core";
3
+ import { ITabs } from "../interfaces/tab.interface";
4
+ import { LibsUiTabsService } from "../services/tab.service";
5
+ export declare const tabMoreListConfig: (tabsService: LibsUiTabsService, translate: TranslateService, fieldKey: string, fieldLabel: string, tabs: ITabs) => IListViewConfigItem;