@sd-angular/core 19.0.0-beta.39 → 19.0.0-beta.40
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/components/badge/src/badge.component.d.ts +77 -19
- package/components/button/src/button.component.d.ts +2 -3
- package/components/table/src/models/table-column.model.d.ts +26 -26
- package/components/table/src/models/table-command.model.d.ts +3 -3
- package/components/table/src/models/table-item.model.d.ts +5 -4
- package/components/table/src/table.component.d.ts +33 -35
- package/fesm2022/sd-angular-core-components-badge.mjs +102 -91
- package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-button.mjs +3 -2
- package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-history.mjs +1 -1
- package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-import-excel.mjs +1 -1
- package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-tab-router.mjs +1 -1
- package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs +285 -459
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs +3 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
- package/package.json +47 -47
- package/sd-angular-core-19.0.0-beta.40.tgz +0 -0
- package/utilities/models/index.d.ts +1 -0
- package/utilities/models/src/filter.model.d.ts +7 -3
- package/utilities/models/src/icon.model.d.ts +2 -0
- package/sd-angular-core-19.0.0-beta.39.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-components-tab-router.mjs","sources":["../../../projects/sd-angular/components/tab-router/src/events/tab-router.event.ts","../../../projects/sd-angular/components/tab-router/src/services/tab-router.service.ts","../../../projects/sd-angular/components/tab-router/src/pipes/tab-info.pipe.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-item/tab-router-item.component.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-item/tab-router-item.component.html","../../../projects/sd-angular/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.html","../../../projects/sd-angular/components/tab-router/src/services/tab-decorator.service.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.html","../../../projects/sd-angular/components/tab-router/src/decorators/tab.decorator.ts","../../../projects/sd-angular/components/tab-router/sd-angular-core-components-tab-router.ts"],"sourcesContent":["import { SdTab } from '../models/tab-router.model';\n\nexport class SdTabBase {\n #tab: SdTab | undefined;\n\n constructor(tab: SdTab | undefined) {\n this.#tab = tab;\n }\n\n get tab(): SdTab | undefined {\n return this.#tab;\n }\n}\n\nexport class SdTabActivated extends SdTabBase {}\n\nexport class SdTabDeactivated extends SdTabBase {}\n\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\nimport { SdTabBase, SdTabEvent } from '../events/tab-router.event';\r\nimport { SdTab } from '../models/tab-router.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(undefined));\r\n actions = new BehaviorSubject<SdTabAction | undefined>(undefined);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n currentTabChanges = new BehaviorSubject<SdTab | undefined>(undefined);\r\n newTabs = new BehaviorSubject<SdTab | undefined>(undefined);\r\n updateTabs = new BehaviorSubject<SdTab | undefined>(undefined);\r\n #currentTab: SdTab | undefined = undefined;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor() {}\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n };\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get currentKey() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n this.currentTabChanges.next(tab);\r\n };\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n };\r\n\r\n setOptions = () => {};\r\n\r\n close = (tab?: SdTab) => {\r\n tab = tab || this.#currentTab;\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n }\r\n };\r\n\r\n // Gọi hàm này để thực hiện update tab\r\n updateTab = (tab: SdTab) => {};\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\nimport { SdTabRouterService } from '../services/tab-router.service';\n@Pipe({\n name: 'sdTabInfo',\n standalone: true,\n})\nexport class SdTabInfoPipe implements PipeTransform {\n constructor(private tabRouterService: SdTabRouterService) {}\n transform(tabInfo: SdTabInfo | undefined | null, tab: SdTab): SdTabInfo {\n if (tabInfo) {\n return tabInfo;\n }\n const builders = this.tabRouterService.builders.getValue();\n const builder = builders.find(e => e.component === tab.component);\n if (builder) {\n const { url, params, queryParams, data } = tab;\n return {\n name: typeof builder.name === 'function' ? builder.name({ url, params, queryParams, data }) : builder.name,\n icon: typeof builder.icon === 'function' ? builder.icon({ url, params, queryParams }) : builder.icon,\n tooltip: typeof builder.tooltip === 'function' ? builder.tooltip({ url, params, queryParams }) : builder.tooltip,\n color: typeof builder.color === 'function' ? builder.color({ url, params, queryParams }) : builder.color,\n };\n }\n return {\n name: tab.url,\n icon: undefined,\n };\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { SdBadge } from '@sd-angular/core/components/badge';\nimport { SdTab, SdTabInfo } from '../../models';\nimport { SdTabRouterService } from '../../services/tab-router.service';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { SdTabInfoPipe } from '../../pipes/tab-info.pipe';\n\n@Component({\n selector: 'sd-tab-router-item',\n templateUrl: './tab-router-item.component.html',\n styleUrls: ['./tab-router-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, RouterModule, MatIconModule, SdBadge, SdTabInfoPipe],\n})\nexport class SdTabRouterItemComponent implements OnInit, OnDestroy {\n @Input({ required: true }) tab!: SdTab;\n\n #subsctiption: Subscription = new Subscription();\n tabInfo?: SdTabInfo;\n constructor(\n private cdRef: ChangeDetectorRef,\n private tabRouterService: SdTabRouterService\n ) {}\n\n ngOnInit(): void {\n this.#subsctiption.add(\n this.tabRouterService.events.pipe(debounceTime(100)).subscribe(() => {\n this.cdRef.markForCheck();\n })\n );\n\n this.#subsctiption.add(\n this.tab.tabInfoChanges.pipe(startWith(null)).subscribe(tabInfo => {\n if (tabInfo) {\n this.tabInfo = tabInfo;\n this.cdRef.markForCheck();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.#subsctiption.unsubscribe();\n }\n\n close = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.#closeTab();\n };\n\n onMousedown = (event: MouseEvent) => {\n if (event.button === 1) {\n event.preventDefault();\n }\n };\n\n onMouseup = (event: MouseEvent) => {\n if (event.button === 1) {\n event.preventDefault();\n event.stopPropagation();\n this.#closeTab();\n }\n };\n\n #closeTab = async () => {\n if (this.tab?.beforeClose) {\n //\n if (this.tab?.beforeClose()) {\n const result = this.tab?.beforeClose();\n if (typeof result === 'boolean') {\n if (result) {\n this.tabRouterService.close(this.tab);\n }\n } else {\n if (await result) {\n this.tabRouterService.close(this.tab);\n }\n }\n }\n } else {\n this.tabRouterService.close(this.tab);\n }\n };\n}\n","<a\n [routerLink]=\"[tab.url]\"\n [queryParams]=\"tab.queryParams\"\n [state]=\"{ switchTab: true }\"\n class=\"tab-router__item d-flex align-items-center\"\n style=\"gap: 8px\"\n [class.tab-router__item--active]=\"tab.isActive\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\">\n @let info = tabInfo | sdTabInfo: tab;\n @if (info) {\n <sd-badge\n style=\"overflow: hidden;white-space: nowrap;\"\n [icon]=\"info.icon\"\n [title]=\"info.icon\"\n [tooltip]=\"info.tooltip || info.name\"\n [title]=\"info.name\"\n [color]=\"info.color\"></sd-badge>\n <button\n aria-hidden=\"true\"\n class=\"tab-router__close d-flex align-items-center justify-content-center ml-auto p-0\"\n (click)=\"close($event)\"\n (mousedown)=\"$event.stopPropagation()\">\n <mat-icon aria-hidden=\"true\" fontIcon=\"close\"></mat-icon>\n </button>\n }\n</a>\n","import { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, ViewChild } from '@angular/core';\n\nimport { SdTab } from '../../models/tab-router.model';\nimport { SdTabRouterItemComponent } from '../tab-router-item/tab-router-item.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sd-tab-router-nav',\n templateUrl: './tab-router-nav.component.html',\n styleUrls: ['./tab-router-nav.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, DragDropModule, SdTabRouterItemComponent],\n})\nexport class SdTabRouterNavComponent {\n @ViewChild('tabRouterNav') tabRouterNav?: ElementRef;\n\n @Input() tabs: SdTab[] = [];\n mode: 'default' | 'compact' = 'default';\n\n constructor(\n private cdRef: ChangeDetectorRef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public elementRef: ElementRef<any>\n ) {}\n\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.checkUI();\n }\n\n checkUI = () => {\n const width = this.tabRouterNav?.nativeElement.clientWidth;\n const nameWidth = (width - this.tabs!.length * 68) / this.tabs!.length;\n if (nameWidth <= 20) {\n this.mode = 'compact';\n } else {\n this.mode = 'default';\n }\n this.cdRef.markForCheck();\n };\n\n onDrop = (event: CdkDragDrop<SdTab[]>) => {\n moveItemInArray(this.tabs!, event.previousIndex, event.currentIndex);\n };\n}\n","<div\n #tabRouterNav\n cdkDropList\n cdkDropListLockAxis=\"x\"\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop($event)\"\n class=\"tab-router__nav tab-router__nav--{{ mode }} d-flex align-items-center flex-nowrap\"\n [class.d-none]=\"tabs.length > 1\">\n <ng-container *ngFor=\"let tab of tabs\">\n <sd-tab-router-item [tab]=\"tab\" cdkDrag [cdkDragBoundary]=\"elementRef?.nativeElement\"></sd-tab-router-item>\n </ng-container>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { SdTabRouterService } from './tab-router.service';\n@Injectable({\n providedIn: 'root',\n})\nexport class SdTabDecoratorService {\n static tabRouterService = new BehaviorSubject<SdTabRouterService | undefined>(undefined);\n constructor(tabRouterService: SdTabRouterService) {\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectorRef, Component, createNgModule, Injector, NgModuleRef, OnDestroy, Type, ViewChild } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router, RouterEvent, RoutesRecognized } from '@angular/router';\nimport { SdTabActivated, SdTabDeactivated } from '../../events/tab-router.event';\n\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdNotifyService } from '@sd-angular/core/services/notify';\n// import hash from 'object-hash';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { SdTabAction } from '../../actions/tab-router.action';\nimport { SdTab } from '../../models';\nimport { SdTabDecoratorService } from '../../services/tab-decorator.service';\nimport { SdTabRouterService } from '../../services/tab-router.service';\nimport { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';\nimport { SdUtilities } from '@sd-angular/core/utilities';\n\n@Component({\n selector: 'sd-tab-router-outlet',\n templateUrl: './tab-router-outlet.component.html',\n styleUrls: ['./tab-router-outlet.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, SdTabRouterNavComponent],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SdTabRouterOutletComponent implements OnDestroy {\n @ViewChild('tabRouterNav') tabRouterNav?: SdTabRouterNavComponent;\n tabs: SdTab[] = [];\n\n #rootRoute?: ActivatedRoute;\n #subscription = new Subscription();\n #firstLoad = true;\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private injector: Injector,\n private tabDecoratorService: SdTabDecoratorService, // KHÔNG XÓA\n private tabRouterService: SdTabRouterService,\n private sdNotifyService: SdNotifyService\n ) {\n this.#subscription.add(\n router.events\n .pipe(\n map((event: any) => (event instanceof RouterEvent ? event : event.routerEvent)),\n filter(event => {\n return event instanceof RoutesRecognized || event instanceof NavigationEnd;\n })\n )\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\n if (this.#firstLoad && event instanceof NavigationEnd) {\n this.#firstLoad = false;\n const route = this.#getActivatedRouteSnapshot(this.activatedRoute.snapshot);\n this.#rootRoute = this.router.routerState.root;\n await this.#activeRoute(event.urlAfterRedirects || event.url, route);\n return;\n }\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\n const route = this.#getActivatedRouteSnapshot(event.state.root);\n this.#rootRoute = this.router.routerState.root;\n await this.#activeRoute(event.urlAfterRedirects || event.url, route);\n }\n })\n );\n\n this.#subscription.add(\n tabRouterService.actions.subscribe((event: SdTabAction | undefined) => {\n if (event && event.type === 'close') {\n this.#closeTab(event.tab);\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.#subscription.unsubscribe();\n }\n\n tabTrackBy = (index: number, tab: SdTab) => {\n return tab.key;\n };\n\n #closeTab = (tab: SdTab) => {\n const { isActive, key: activeKey } = tab;\n if (isActive) {\n const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);\n const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];\n if (nextTab) {\n const { url: nextUrl } = nextTab;\n const nextQueryParams = {\n ...(nextTab.queryParams || {}),\n };\n\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\n this.router.navigate([nextUrl], {\n queryParams: nextQueryParams,\n state: {\n switchTab: true,\n },\n });\n } else {\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\n this.router.navigateByUrl('/', {\n state: {\n switchTab: true,\n },\n });\n }\n } else {\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\n this.tabRouterNav?.checkUI();\n this.cd.markForCheck();\n }\n };\n\n #activeRoute = async (fullUrl: string, route: ActivatedRouteSnapshot | null) => {\n if (!route?.component) {\n return;\n }\n const component = route.component as Type<any>;\n const queryParams = {\n ...(route.queryParams || {}),\n };\n const params = {\n ...(route.params || {}),\n };\n const data = {\n ...(route.data || {}),\n };\n\n const [url] = fullUrl.split('?');\n const key = SdUtilities.hash({ url, queryParams });\n let existedIndex = -1;\n let activatedIndex = -1;\n this.tabs.forEach((tab: SdTab, index: number) => {\n if (tab.key === key) {\n tab.isActive = true;\n existedIndex = index;\n } else {\n if (tab.isActive) {\n activatedIndex = index;\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\n }\n tab.isActive = false;\n }\n });\n\n const currentNavigation = this.router.getCurrentNavigation();\n // Switch tab sẽ ko re-render lại trang\n const switchTab = currentNavigation?.extras?.state?.['switchTab'];\n // Replace tab sẽ close trang hiện tại\n const replaceTab = currentNavigation?.extras?.state?.['replaceTab'];\n if (existedIndex >= 0) {\n const existedTab = this.tabs[existedIndex];\n if (replaceTab && activatedIndex >= 0) {\n if (activatedIndex >= 0) {\n this.tabs.splice(activatedIndex, 1);\n }\n }\n if (switchTab) {\n this.tabRouterService.setCurrentTab(existedTab);\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\n } else {\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\n const module = (await route.parent.routeConfig.loadChildren()) as Type<any>;\n const moduleRef = createNgModule(module, this.injector);\n const activatedRoute = this.#getActivatedRoute(this.#rootRoute!, component);\n const tab: SdTab = {\n key,\n component,\n injector: new SdOutletInjector(activatedRoute, moduleRef),\n isActive: true,\n url,\n params,\n queryParams,\n data,\n tabInfoChanges: new Subject(),\n };\n this.tabs[this.tabs.indexOf(existedTab)] = tab;\n }\n }\n } else {\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\n const module = (await route.parent.routeConfig.loadChildren()) as Type<any>;\n const moduleRef = createNgModule(module, this.injector);\n const activatedRoute = this.#getActivatedRoute(this.#rootRoute!, component);\n\n const tab: SdTab = {\n key,\n component,\n injector: new SdOutletInjector(activatedRoute, moduleRef),\n isActive: true,\n url,\n params,\n queryParams,\n data,\n tabInfoChanges: new Subject(),\n };\n\n this.tabRouterService.setCurrentTab(tab);\n if (activatedIndex >= 0 && replaceTab) {\n this.tabs.splice(activatedIndex, 1);\n }\n this.tabs.push(tab);\n // if (existedIndex >= 0 && !switchTab) {\n // this.tabs[existedIndex] = tab;\n // } else {\n // this.tabs.push(tab);\n // }\n }\n\n this.tabRouterNav?.checkUI();\n if (this.tabs.length > 10) {\n this.sdNotifyService.warning('Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.');\n }\n // if (this.tabs.length > 15) {\n // this.tabs.splice(0, this.tabs.length - 10);\n // }\n }\n // if (existedIndex >= 0 && switchTab) {\n // const existedTab = this.tabs[existedIndex];\n // this.tabRouterService.setCurrentTab(existedTab);\n // this.tabRouterService.pushEvent(existedTab, SdTabActivated);\n // } else {\n // if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\n // const module = await route.parent.routeConfig.loadChildren();\n // const factory = await this.compiler.compileModuleAsync(module);\n // const injector = factory.create(this.injector);\n // const activatedRoute = this.#getActivatedRoute(\n // this.#rootRoute,\n // component\n // );\n\n // const tab = {\n // key,\n // component,\n // injector: new SdOutletInjector(activatedRoute, injector),\n // isActive: true,\n // name: url,\n // url,\n // params,\n // queryParams,\n // data\n // };\n\n // this.tabRouterService.setCurrentTab(tab);\n // if (activatedIndex >= 0 && replaceTab) {\n // this.tabs.splice(activatedIndex, 1);\n // }\n // if (existedIndex >= 0 && !switchTab) {\n // this.tabs[existedIndex] = tab;\n // } else {\n // this.tabs.push(tab);\n // }\n // }\n\n // this.tabRouterNav?.checkUI();\n // if (this.tabs.length > 10) {\n // this.sdNotifyService.notify.warning(\n // 'Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.'\n // );\n // }\n // if (this.tabs.length > 15) {\n // this.tabs.splice(0, this.tabs.length - 10);\n // }\n // }\n this.cd.markForCheck();\n };\n\n #getActivatedRouteSnapshot = (activatedRouteSnapshot: ActivatedRouteSnapshot): ActivatedRouteSnapshot | null => {\n if (!activatedRouteSnapshot) {\n return null;\n }\n while (activatedRouteSnapshot.firstChild) {\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\n }\n return activatedRouteSnapshot;\n };\n\n #getActivatedRoute = (activatedRoute: ActivatedRoute, component: any): ActivatedRoute | null => {\n if (!activatedRoute) {\n return null;\n }\n\n if (activatedRoute.component && activatedRoute.component === component) {\n return activatedRoute;\n }\n while (activatedRoute.firstChild) {\n activatedRoute = activatedRoute.firstChild;\n if (activatedRoute.component && activatedRoute.component === component) {\n return activatedRoute;\n }\n }\n return null;\n };\n}\n\nclass SdOutletInjector implements Injector {\n constructor(\n private route: ActivatedRoute | null,\n // private childContexts: ChildrenOutletContexts,\n private parent: NgModuleRef<Injector>\n ) {}\n\n get(token: any, notFoundValue?: any): any {\n if (token === ActivatedRoute && this.route) {\n return this.route;\n }\n\n // if (token === ChildrenOutletContexts) {\n // return this.childContexts;\n // }\n\n return this.parent.injector.get(token, notFoundValue);\n }\n}\n","<sd-tab-router-nav [tabs]=\"tabs\" #tabRouterNav></sd-tab-router-nav>\n\n<div class=\"tab-router__list\">\n <ng-container *ngFor=\"let tab of tabs; trackBy: tabTrackBy\">\n <div class=\"tab-router__pane\" [class.active]=\"tab.isActive\" [id]=\"tab.key\">\n <div class=\"tab-router__content\">\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Type } from '@angular/core';\r\nimport { SdColor } from '@sd-angular/core/utilities/models';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport interface SdTabComponentArgs {\r\n url?: string;\r\n params?: any;\r\n queryParams?: any;\r\n data?: Record<string, any>;\r\n}\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: SdTabComponentArgs) => string);\r\n icon?: string | ((args: SdTabComponentArgs) => string);\r\n tooltip?: string | ((args: SdTabComponentArgs) => string);\r\n color?: SdColor | ((args: SdTabComponentArgs) => SdColor);\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService\r\n .pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)\r\n )\r\n .subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SdTabRouterService","i2","i1","i2.SdTabDecoratorService","i3.SdTabRouterService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-components-tab-router.mjs","sources":["../../../projects/sd-angular/components/tab-router/src/events/tab-router.event.ts","../../../projects/sd-angular/components/tab-router/src/services/tab-router.service.ts","../../../projects/sd-angular/components/tab-router/src/pipes/tab-info.pipe.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-item/tab-router-item.component.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-item/tab-router-item.component.html","../../../projects/sd-angular/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.html","../../../projects/sd-angular/components/tab-router/src/services/tab-decorator.service.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.ts","../../../projects/sd-angular/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.html","../../../projects/sd-angular/components/tab-router/src/decorators/tab.decorator.ts","../../../projects/sd-angular/components/tab-router/sd-angular-core-components-tab-router.ts"],"sourcesContent":["import { SdTab } from '../models/tab-router.model';\n\nexport class SdTabBase {\n #tab: SdTab | undefined;\n\n constructor(tab: SdTab | undefined) {\n this.#tab = tab;\n }\n\n get tab(): SdTab | undefined {\n return this.#tab;\n }\n}\n\nexport class SdTabActivated extends SdTabBase {}\n\nexport class SdTabDeactivated extends SdTabBase {}\n\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\nimport { SdTabBase, SdTabEvent } from '../events/tab-router.event';\r\nimport { SdTab } from '../models/tab-router.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(undefined));\r\n actions = new BehaviorSubject<SdTabAction | undefined>(undefined);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n currentTabChanges = new BehaviorSubject<SdTab | undefined>(undefined);\r\n newTabs = new BehaviorSubject<SdTab | undefined>(undefined);\r\n updateTabs = new BehaviorSubject<SdTab | undefined>(undefined);\r\n #currentTab: SdTab | undefined = undefined;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor() {}\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n };\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get currentKey() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n this.currentTabChanges.next(tab);\r\n };\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n };\r\n\r\n setOptions = () => {};\r\n\r\n close = (tab?: SdTab) => {\r\n tab = tab || this.#currentTab;\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n }\r\n };\r\n\r\n // Gọi hàm này để thực hiện update tab\r\n updateTab = (tab: SdTab) => {};\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\nimport { SdTabRouterService } from '../services/tab-router.service';\n@Pipe({\n name: 'sdTabInfo',\n standalone: true,\n})\nexport class SdTabInfoPipe implements PipeTransform {\n constructor(private tabRouterService: SdTabRouterService) {}\n transform(tabInfo: SdTabInfo | undefined | null, tab: SdTab): SdTabInfo {\n if (tabInfo) {\n return tabInfo;\n }\n const builders = this.tabRouterService.builders.getValue();\n const builder = builders.find(e => e.component === tab.component);\n if (builder) {\n const { url, params, queryParams, data } = tab;\n return {\n name: typeof builder.name === 'function' ? builder.name({ url, params, queryParams, data }) : builder.name,\n icon: typeof builder.icon === 'function' ? builder.icon({ url, params, queryParams }) : builder.icon,\n tooltip: typeof builder.tooltip === 'function' ? builder.tooltip({ url, params, queryParams }) : builder.tooltip,\n color: typeof builder.color === 'function' ? builder.color({ url, params, queryParams }) : builder.color,\n };\n }\n return {\n name: tab.url,\n icon: undefined,\n };\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { SdBadge } from '@sd-angular/core/components/badge';\nimport { SdTab, SdTabInfo } from '../../models';\nimport { SdTabRouterService } from '../../services/tab-router.service';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { SdTabInfoPipe } from '../../pipes/tab-info.pipe';\n\n@Component({\n selector: 'sd-tab-router-item',\n templateUrl: './tab-router-item.component.html',\n styleUrls: ['./tab-router-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, RouterModule, MatIconModule, SdBadge, SdTabInfoPipe],\n})\nexport class SdTabRouterItemComponent implements OnInit, OnDestroy {\n @Input({ required: true }) tab!: SdTab;\n\n #subsctiption: Subscription = new Subscription();\n tabInfo?: SdTabInfo;\n constructor(\n private cdRef: ChangeDetectorRef,\n private tabRouterService: SdTabRouterService\n ) {}\n\n ngOnInit(): void {\n this.#subsctiption.add(\n this.tabRouterService.events.pipe(debounceTime(100)).subscribe(() => {\n this.cdRef.markForCheck();\n })\n );\n\n this.#subsctiption.add(\n this.tab.tabInfoChanges.pipe(startWith(null)).subscribe(tabInfo => {\n if (tabInfo) {\n this.tabInfo = tabInfo;\n this.cdRef.markForCheck();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.#subsctiption.unsubscribe();\n }\n\n close = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.#closeTab();\n };\n\n onMousedown = (event: MouseEvent) => {\n if (event.button === 1) {\n event.preventDefault();\n }\n };\n\n onMouseup = (event: MouseEvent) => {\n if (event.button === 1) {\n event.preventDefault();\n event.stopPropagation();\n this.#closeTab();\n }\n };\n\n #closeTab = async () => {\n if (this.tab?.beforeClose) {\n //\n if (this.tab?.beforeClose()) {\n const result = this.tab?.beforeClose();\n if (typeof result === 'boolean') {\n if (result) {\n this.tabRouterService.close(this.tab);\n }\n } else {\n if (await result) {\n this.tabRouterService.close(this.tab);\n }\n }\n }\n } else {\n this.tabRouterService.close(this.tab);\n }\n };\n}\n","<a\n [routerLink]=\"[tab.url]\"\n [queryParams]=\"tab.queryParams\"\n [state]=\"{ switchTab: true }\"\n class=\"tab-router__item d-flex align-items-center\"\n style=\"gap: 8px\"\n [class.tab-router__item--active]=\"tab.isActive\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\">\n @let info = tabInfo | sdTabInfo: tab;\n @if (info) {\n <sd-badge\n style=\"overflow: hidden;white-space: nowrap;\"\n [icon]=\"info.icon\"\n [title]=\"info.icon\"\n [tooltip]=\"info.tooltip || info.name\"\n [title]=\"info.name\"\n [color]=\"info.color\"></sd-badge>\n <button\n aria-hidden=\"true\"\n class=\"tab-router__close d-flex align-items-center justify-content-center ml-auto p-0\"\n (click)=\"close($event)\"\n (mousedown)=\"$event.stopPropagation()\">\n <mat-icon aria-hidden=\"true\" fontIcon=\"close\"></mat-icon>\n </button>\n }\n</a>\n","import { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, ViewChild } from '@angular/core';\n\nimport { SdTab } from '../../models/tab-router.model';\nimport { SdTabRouterItemComponent } from '../tab-router-item/tab-router-item.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sd-tab-router-nav',\n templateUrl: './tab-router-nav.component.html',\n styleUrls: ['./tab-router-nav.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, DragDropModule, SdTabRouterItemComponent],\n})\nexport class SdTabRouterNavComponent {\n @ViewChild('tabRouterNav') tabRouterNav?: ElementRef;\n\n @Input() tabs: SdTab[] = [];\n mode: 'default' | 'compact' = 'default';\n\n constructor(\n private cdRef: ChangeDetectorRef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public elementRef: ElementRef<any>\n ) {}\n\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.checkUI();\n }\n\n checkUI = () => {\n const width = this.tabRouterNav?.nativeElement.clientWidth;\n const nameWidth = (width - this.tabs!.length * 68) / this.tabs!.length;\n if (nameWidth <= 20) {\n this.mode = 'compact';\n } else {\n this.mode = 'default';\n }\n this.cdRef.markForCheck();\n };\n\n onDrop = (event: CdkDragDrop<SdTab[]>) => {\n moveItemInArray(this.tabs!, event.previousIndex, event.currentIndex);\n };\n}\n","<div\n #tabRouterNav\n cdkDropList\n cdkDropListLockAxis=\"x\"\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop($event)\"\n class=\"tab-router__nav tab-router__nav--{{ mode }} d-flex align-items-center flex-nowrap\"\n [class.d-none]=\"tabs.length > 1\">\n <ng-container *ngFor=\"let tab of tabs\">\n <sd-tab-router-item [tab]=\"tab\" cdkDrag [cdkDragBoundary]=\"elementRef?.nativeElement\"></sd-tab-router-item>\n </ng-container>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { SdTabRouterService } from './tab-router.service';\n@Injectable({\n providedIn: 'root',\n})\nexport class SdTabDecoratorService {\n static tabRouterService = new BehaviorSubject<SdTabRouterService | undefined>(undefined);\n constructor(tabRouterService: SdTabRouterService) {\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectorRef, Component, createNgModule, Injector, NgModuleRef, OnDestroy, Type, ViewChild } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router, RouterEvent, RoutesRecognized } from '@angular/router';\nimport { SdTabActivated, SdTabDeactivated } from '../../events/tab-router.event';\n\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdNotifyService } from '@sd-angular/core/services/notify';\n// import hash from 'object-hash';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { SdTabAction } from '../../actions/tab-router.action';\nimport { SdTab } from '../../models';\nimport { SdTabDecoratorService } from '../../services/tab-decorator.service';\nimport { SdTabRouterService } from '../../services/tab-router.service';\nimport { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';\nimport { SdUtilities } from '@sd-angular/core/utilities';\n\n@Component({\n selector: 'sd-tab-router-outlet',\n templateUrl: './tab-router-outlet.component.html',\n styleUrls: ['./tab-router-outlet.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, SdTabRouterNavComponent],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SdTabRouterOutletComponent implements OnDestroy {\n @ViewChild('tabRouterNav') tabRouterNav?: SdTabRouterNavComponent;\n tabs: SdTab[] = [];\n\n #rootRoute?: ActivatedRoute;\n #subscription = new Subscription();\n #firstLoad = true;\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private injector: Injector,\n private tabDecoratorService: SdTabDecoratorService, // KHÔNG XÓA\n private tabRouterService: SdTabRouterService,\n private sdNotifyService: SdNotifyService\n ) {\n this.#subscription.add(\n router.events\n .pipe(\n map((event: any) => (event instanceof RouterEvent ? event : event.routerEvent)),\n filter(event => {\n return event instanceof RoutesRecognized || event instanceof NavigationEnd;\n })\n )\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\n if (this.#firstLoad && event instanceof NavigationEnd) {\n this.#firstLoad = false;\n const route = this.#getActivatedRouteSnapshot(this.activatedRoute.snapshot);\n this.#rootRoute = this.router.routerState.root;\n await this.#activeRoute(event.urlAfterRedirects || event.url, route);\n return;\n }\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\n const route = this.#getActivatedRouteSnapshot(event.state.root);\n this.#rootRoute = this.router.routerState.root;\n await this.#activeRoute(event.urlAfterRedirects || event.url, route);\n }\n })\n );\n\n this.#subscription.add(\n tabRouterService.actions.subscribe((event: SdTabAction | undefined) => {\n if (event && event.type === 'close') {\n this.#closeTab(event.tab);\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.#subscription.unsubscribe();\n }\n\n tabTrackBy = (index: number, tab: SdTab) => {\n return tab.key;\n };\n\n #closeTab = (tab: SdTab) => {\n const { isActive, key: activeKey } = tab;\n if (isActive) {\n const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);\n const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];\n if (nextTab) {\n const { url: nextUrl } = nextTab;\n const nextQueryParams = {\n ...(nextTab.queryParams || {}),\n };\n\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\n this.router.navigate([nextUrl], {\n queryParams: nextQueryParams,\n state: {\n switchTab: true,\n },\n });\n } else {\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\n this.router.navigateByUrl('/', {\n state: {\n switchTab: true,\n },\n });\n }\n } else {\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\n this.tabRouterNav?.checkUI();\n this.cd.markForCheck();\n }\n };\n\n #activeRoute = async (fullUrl: string, route: ActivatedRouteSnapshot | null) => {\n if (!route?.component) {\n return;\n }\n const component = route.component as Type<any>;\n const queryParams = {\n ...(route.queryParams || {}),\n };\n const params = {\n ...(route.params || {}),\n };\n const data = {\n ...(route.data || {}),\n };\n\n const [url] = fullUrl.split('?');\n const key = SdUtilities.hash({ url, queryParams });\n let existedIndex = -1;\n let activatedIndex = -1;\n this.tabs.forEach((tab: SdTab, index: number) => {\n if (tab.key === key) {\n tab.isActive = true;\n existedIndex = index;\n } else {\n if (tab.isActive) {\n activatedIndex = index;\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\n }\n tab.isActive = false;\n }\n });\n\n const currentNavigation = this.router.getCurrentNavigation();\n // Switch tab sẽ ko re-render lại trang\n const switchTab = currentNavigation?.extras?.state?.['switchTab'];\n // Replace tab sẽ close trang hiện tại\n const replaceTab = currentNavigation?.extras?.state?.['replaceTab'];\n if (existedIndex >= 0) {\n const existedTab = this.tabs[existedIndex];\n if (replaceTab && activatedIndex >= 0) {\n if (activatedIndex >= 0) {\n this.tabs.splice(activatedIndex, 1);\n }\n }\n if (switchTab) {\n this.tabRouterService.setCurrentTab(existedTab);\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\n } else {\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\n const module = (await route.parent.routeConfig.loadChildren()) as Type<any>;\n const moduleRef = createNgModule(module, this.injector);\n const activatedRoute = this.#getActivatedRoute(this.#rootRoute!, component);\n const tab: SdTab = {\n key,\n component,\n injector: new SdOutletInjector(activatedRoute, moduleRef),\n isActive: true,\n url,\n params,\n queryParams,\n data,\n tabInfoChanges: new Subject(),\n };\n this.tabs[this.tabs.indexOf(existedTab)] = tab;\n }\n }\n } else {\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\n const module = (await route.parent.routeConfig.loadChildren()) as Type<any>;\n const moduleRef = createNgModule(module, this.injector);\n const activatedRoute = this.#getActivatedRoute(this.#rootRoute!, component);\n\n const tab: SdTab = {\n key,\n component,\n injector: new SdOutletInjector(activatedRoute, moduleRef),\n isActive: true,\n url,\n params,\n queryParams,\n data,\n tabInfoChanges: new Subject(),\n };\n\n this.tabRouterService.setCurrentTab(tab);\n if (activatedIndex >= 0 && replaceTab) {\n this.tabs.splice(activatedIndex, 1);\n }\n this.tabs.push(tab);\n // if (existedIndex >= 0 && !switchTab) {\n // this.tabs[existedIndex] = tab;\n // } else {\n // this.tabs.push(tab);\n // }\n }\n\n this.tabRouterNav?.checkUI();\n if (this.tabs.length > 10) {\n this.sdNotifyService.warning('Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.');\n }\n // if (this.tabs.length > 15) {\n // this.tabs.splice(0, this.tabs.length - 10);\n // }\n }\n // if (existedIndex >= 0 && switchTab) {\n // const existedTab = this.tabs[existedIndex];\n // this.tabRouterService.setCurrentTab(existedTab);\n // this.tabRouterService.pushEvent(existedTab, SdTabActivated);\n // } else {\n // if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\n // const module = await route.parent.routeConfig.loadChildren();\n // const factory = await this.compiler.compileModuleAsync(module);\n // const injector = factory.create(this.injector);\n // const activatedRoute = this.#getActivatedRoute(\n // this.#rootRoute,\n // component\n // );\n\n // const tab = {\n // key,\n // component,\n // injector: new SdOutletInjector(activatedRoute, injector),\n // isActive: true,\n // name: url,\n // url,\n // params,\n // queryParams,\n // data\n // };\n\n // this.tabRouterService.setCurrentTab(tab);\n // if (activatedIndex >= 0 && replaceTab) {\n // this.tabs.splice(activatedIndex, 1);\n // }\n // if (existedIndex >= 0 && !switchTab) {\n // this.tabs[existedIndex] = tab;\n // } else {\n // this.tabs.push(tab);\n // }\n // }\n\n // this.tabRouterNav?.checkUI();\n // if (this.tabs.length > 10) {\n // this.sdNotifyService.notify.warning(\n // 'Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.'\n // );\n // }\n // if (this.tabs.length > 15) {\n // this.tabs.splice(0, this.tabs.length - 10);\n // }\n // }\n this.cd.markForCheck();\n };\n\n #getActivatedRouteSnapshot = (activatedRouteSnapshot: ActivatedRouteSnapshot): ActivatedRouteSnapshot | null => {\n if (!activatedRouteSnapshot) {\n return null;\n }\n while (activatedRouteSnapshot.firstChild) {\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\n }\n return activatedRouteSnapshot;\n };\n\n #getActivatedRoute = (activatedRoute: ActivatedRoute, component: any): ActivatedRoute | null => {\n if (!activatedRoute) {\n return null;\n }\n\n if (activatedRoute.component && activatedRoute.component === component) {\n return activatedRoute;\n }\n while (activatedRoute.firstChild) {\n activatedRoute = activatedRoute.firstChild;\n if (activatedRoute.component && activatedRoute.component === component) {\n return activatedRoute;\n }\n }\n return null;\n };\n}\n\nclass SdOutletInjector implements Injector {\n constructor(\n private route: ActivatedRoute | null,\n // private childContexts: ChildrenOutletContexts,\n private parent: NgModuleRef<Injector>\n ) {}\n\n get(token: any, notFoundValue?: any): any {\n if (token === ActivatedRoute && this.route) {\n return this.route;\n }\n\n // if (token === ChildrenOutletContexts) {\n // return this.childContexts;\n // }\n\n return this.parent.injector.get(token, notFoundValue);\n }\n}\n","<sd-tab-router-nav [tabs]=\"tabs\" #tabRouterNav></sd-tab-router-nav>\n\n<div class=\"tab-router__list\">\n <ng-container *ngFor=\"let tab of tabs; trackBy: tabTrackBy\">\n <div class=\"tab-router__pane\" [class.active]=\"tab.isActive\" [id]=\"tab.key\">\n <div class=\"tab-router__content\">\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Type } from '@angular/core';\r\nimport { SdColor } from '@sd-angular/core/utilities/models';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport interface SdTabComponentArgs {\r\n url?: string;\r\n params?: any;\r\n queryParams?: any;\r\n data?: Record<string, any>;\r\n}\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: SdTabComponentArgs) => string);\r\n icon?: string | ((args: SdTabComponentArgs) => string);\r\n tooltip?: string | ((args: SdTabComponentArgs) => string);\r\n color?: SdColor | ((args: SdTabComponentArgs) => SdColor);\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService\r\n .pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)\r\n )\r\n .subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SdTabRouterService","i2","i1","i2.SdTabDecoratorService","i3.SdTabRouterService"],"mappings":"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"}
|