@cute-widgets/base 20.0.3 → 20.0.5
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/CHANGELOG.md +31 -4
- package/abstract/index.d.ts +13 -4
- package/button/index.d.ts +47 -24
- package/button-toggle/index.d.ts +8 -4
- package/card/index.d.ts +9 -6
- package/collapse/index.d.ts +49 -48
- package/core/directives/index.d.ts +1 -31
- package/core/index.d.ts +41 -28
- package/core/interfaces/index.d.ts +1 -1
- package/core/layout/index.d.ts +40 -27
- package/core/nav/index.d.ts +1 -2
- package/dialog/index.d.ts +81 -57
- package/expansion/index.d.ts +5 -18
- package/fesm2022/cute-widgets-base-abstract.mjs +13 -8
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-button-toggle.mjs +36 -29
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-button.mjs +169 -104
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-card.mjs +46 -29
- package/fesm2022/cute-widgets-base-card.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-chips.mjs +6 -18
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-collapse.mjs +114 -126
- package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-directives.mjs +4 -72
- package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-layout.mjs +76 -40
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-nav.mjs +1 -2
- package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-theming.mjs +1 -1
- package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core.mjs +77 -41
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-dialog.mjs +152 -117
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-expansion.mjs +19 -13
- package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-list.mjs +2 -2
- package/fesm2022/cute-widgets-base-list.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-menu.mjs +5 -27
- package/fesm2022/cute-widgets-base-menu.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-navbar.mjs +88 -42
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-paginator.mjs +13 -11
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-radio.mjs +1 -2
- package/fesm2022/cute-widgets-base-radio.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-select.mjs +2 -2
- package/fesm2022/cute-widgets-base-select.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-sidenav.mjs +31 -30
- package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-snack-bar.mjs +2 -2
- package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-sort.mjs +60 -257
- package/fesm2022/cute-widgets-base-sort.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-table.mjs +6 -3
- package/fesm2022/cute-widgets-base-table.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-tabs.mjs +86 -61
- package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -1
- package/fesm2022/cute-widgets-base.mjs +3 -1
- package/fesm2022/cute-widgets-base.mjs.map +1 -1
- package/navbar/index.d.ts +30 -9
- package/package.json +6 -5
- package/paginator/index.d.ts +6 -17
- package/radio/index.d.ts +0 -1
- package/sidenav/index.d.ts +1 -2
- package/sort/index.d.ts +22 -135
- package/table/index.d.ts +8 -8
- package/tabs/index.d.ts +35 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cute-widgets-base-tabs.mjs","sources":["../../../../projects/cute-widgets/base/tabs/src/tab-label.directive.ts","../../../../projects/cute-widgets/base/tabs/src/tab-content.directive.ts","../../../../projects/cute-widgets/base/tabs/src/tab-group.component.ts","../../../../projects/cute-widgets/base/tabs/src/tab-group.component.html","../../../../projects/cute-widgets/base/tabs/src/tab.component.ts","../../../../projects/cute-widgets/base/tabs/src/tab.component.html","../../../../projects/cute-widgets/base/tabs/src/tabs.module.ts","../../../../projects/cute-widgets/base/tabs/cute-widgets-base-tabs.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, InjectionToken, inject} from '@angular/core';\r\nimport {CUTE_TAB} from \"./tab.component\";\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteTabLabel`. It serves as\r\n * alternative token to the actual `CuteTabLabel` class which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_TAB_LABEL = new InjectionToken<CuteTabLabel>('CuteTabLabel');\r\n\r\n/** Used to flag tab labels for use with the portal directive */\r\n@Directive({\r\n selector: 'ng-template[cute-tab-label], ng-template[cuteTabLabel]',\r\n exportAs: 'cuteTabLabel',\r\n providers: [{provide: CUTE_TAB_LABEL, useExisting: CuteTabLabel}],\r\n})\r\nexport class CuteTabLabel {\r\n _closestTab = inject(CUTE_TAB, {optional: true});\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, InjectionToken, TemplateRef, inject} from '@angular/core';\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteTabContent`. It serves as\r\n * alternative token to the actual `CuteTabContent` class which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_TAB_CONTENT = new InjectionToken<CuteTabContent>('CuteTabContent');\r\n\r\n/** Decorates the `ng-template` tags and reads out the template from it. */\r\n@Directive({\r\n selector: 'ng-template[cute-tab-content], ng-template[cuteTabContent]',\r\n providers: [{provide: CUTE_TAB_CONTENT, useExisting: CuteTabContent}],\r\n})\r\nexport class CuteTabContent {\r\n template = inject<TemplateRef<any>>(TemplateRef);\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n ContentChildren,\r\n QueryList,\r\n ViewChildren,\r\n EventEmitter,\r\n TemplateRef,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n InjectionToken,\r\n forwardRef,\r\n numberAttribute,\r\n booleanAttribute, ViewContainerRef, ViewChild, ComponentRef, ElementRef, inject, DestroyRef\r\n} from '@angular/core';\r\nimport {CuteTab} from './tab.component';\r\nimport {CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport {animate, animation, state, style} from '@angular/animations';\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {\r\n CuteNavChangeEvent,\r\n CuteNavChangingEvent,\r\n CuteNavLink,\r\n CuteNavModule,\r\n CuteNavStretch\r\n} from \"@cute-widgets/base/core/nav\";\r\nimport {FocusOrigin} from \"@angular/cdk/a11y\";\r\nimport {ContentAlignment, ViewportEdge} from \"@cute-widgets/base/core\";\r\nimport {CuteButton} from \"@cute-widgets/base/button\";\r\nimport {debounceTime, fromEvent} from \"rxjs\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CuteObserveVisibility} from \"@cute-widgets/base/core/observers\";\r\n\r\nexport const transitionAnimation = animation([\r\n state('void', style({ transform: 'translateX({{offset}})', opacity: 0 })),\r\n animate('300ms ease-out', style({ transform: 'translateX(0)', opacity: 1 })),\r\n], { params: { offset: '30px' }});\r\n\r\nlet nextId: number = 0;\r\n\r\n/**\r\n * Used to provide a tab group to a tab without causing a circular dependency.\r\n */\r\nexport const CUTE_TAB_GROUP = new InjectionToken<CuteTabGroup>('CUTE_TAB_GROUP');\r\n\r\n/** Cancelable event emitted when the `cute-tab` selection is about to change. */\r\nexport class CuteTabChangingEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected tab. */\r\n readonly index : number,\r\n /** Reference to the currently-selected tab. */\r\n readonly tab: CuteTab,\r\n /** Index of the previously-selected tab. */\r\n readonly fromIndex: number | null,\r\n /** Reference to the previously-selected tab. */\r\n readonly fromTab: CuteTab | null,\r\n /** How the tab was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"tabChanging\", {cancelable: true});\r\n }\r\n}\r\n\r\n/** A simple change event emitted on focus or selection changes. */\r\nexport class CuteTabChangeEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected tab. */\r\n readonly index : number,\r\n /** Reference to the currently-selected tab. */\r\n readonly tab: CuteTab,\r\n /** Index of the previously-selected tab. */\r\n readonly fromIndex: number | null,\r\n /** Reference to the previously-selected tab. */\r\n readonly fromTab: CuteTab | null,\r\n /** How the tab was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"tabChange\");\r\n }\r\n}\r\n\r\n/**\r\n * A flexible, feature-rich tab component for Angular applications with Bootstrap integration.\r\n */\r\n@Component({\r\n selector: 'cute-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrls: ['./tab-group.component.scss'],\r\n exportAs: \"cuteTabGroup\",\r\n host: {\r\n \"class\": \"cute-tab-group\",\r\n \"[class.tabs-top]\": \"headerPosition === 'top'\",\r\n \"[class.tabs-bottom]\": \"headerPosition === 'bottom'\",\r\n \"[class.tabs-left]\": \"headerPosition === 'left'\",\r\n \"[class.tabs-right]\": \"headerPosition === 'right'\",\r\n \"[class.tabs-end]\": \"headerPosition === 'end'\",\r\n \"[class.tabs-start]\": \"headerPosition === 'start'\",\r\n },\r\n imports: [\r\n CdkDropList,\r\n CdkDrag,\r\n NgTemplateOutlet,\r\n CuteNavModule,\r\n CuteButton,\r\n CuteObserveVisibility,\r\n ],\r\n providers: [\r\n {provide: CUTE_TAB_GROUP, useExisting: forwardRef(()=> CuteTabGroup)},\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CuteTabGroup extends CuteLayoutControl {\r\n private _indexToChange: number | null = null;\r\n private _scrollDebounce: number | undefined;\r\n private _resizeObserver: ResizeObserver | undefined;\r\n\r\n protected showScrollButtons = false;\r\n protected canScrollLeft = false;\r\n protected canScrollRight = false;\r\n /** Number of pixels to scroll left or right */\r\n protected scrollAmount: number = 200;\r\n protected dynamicTabs: ComponentRef<CuteTab>[] = [];\r\n\r\n protected destroyRef = inject(DestroyRef);\r\n\r\n @ContentChildren(CuteTab)\r\n protected tabs: QueryList<CuteTab> | undefined;\r\n\r\n @ViewChildren('tabLink', {read: CuteNavLink})\r\n protected tabLinks: QueryList<CuteNavLink> | undefined;\r\n\r\n @ViewChild('dynamicTabs', {read: ViewContainerRef, static: true})\r\n protected dynamicTabsContainer: ViewContainerRef | undefined;\r\n\r\n @ViewChild('headerContainer', {static: true})\r\n headerContainer!: ElementRef<HTMLElement>;\r\n\r\n @ViewChild('headerScroll', {static: true})\r\n headerScroll!: ElementRef<HTMLElement>;\r\n\r\n /** The index of the active tab. */\r\n @Input({transform: numberAttribute})\r\n get selectedIndex(): number|undefined {return this._selectedIndex;}\r\n set selectedIndex(value: number) {\r\n if (value !== this._selectedIndex) {\r\n this._indexToChange = value;\r\n Promise.resolve().then(()=> this.selectTab(value));\r\n }\r\n }\r\n private _selectedIndex: number | undefined;\r\n\r\n /**\r\n * Alignment for tabs.\r\n * @default start\r\n */\r\n @Input({ alias: 'cute-align-tabs' })\r\n alignTabs: ContentAlignment = \"start\";\r\n\r\n /**\r\n * The style a `cute-tab`’s content extends the full available width, proportionately (**fill**) or equal-width (**justified**).\r\n * The width is determined by the longest `cute-tab-label`'s content. By default, stretching of items is not used (**none**).\r\n */\r\n @Input({alias: 'cute-stretch-tabs'})\r\n get stretchTabs(): CuteNavStretch { return this._stretchTabs; }\r\n set stretchTabs(value: CuteNavStretch|boolean|\"false\"|\"true\"|undefined) {\r\n if (value) {\r\n if (typeof value===\"boolean\" || value===\"true\" || value===\"false\") {\r\n this._stretchTabs = Boolean(value) ? \"justified\" : \"none\";\r\n } else {\r\n this._stretchTabs = value;\r\n }\r\n } else {\r\n this._stretchTabs = \"none\";\r\n }\r\n }\r\n private _stretchTabs: CuteNavStretch = \"none\";\r\n\r\n /**\r\n * By default, tabs remove their lazy content from the DOM while it's off-screen. Setting this to _true_ will keep it in the DOM,\r\n * which will prevent elements like `iframe` and `video` from reloading next time it comes back into the view.\r\n */\r\n @Input({ transform: booleanAttribute })\r\n preserveContent: boolean | undefined;\r\n\r\n /** Whether the tab group will change its height to the height of the currently active tab. */\r\n @Input({transform: booleanAttribute})\r\n dynamicHeight: boolean = false;\r\n\r\n /**\r\n * Possible positions for the tab header.\r\n * @default top\r\n */\r\n @Input() headerPosition: ViewportEdge = 'top';\r\n\r\n /** Use `underline` style for horizontal tabs. */\r\n @Input({transform: booleanAttribute})\r\n underlineTabs: boolean = false;\r\n\r\n /**\r\n * Whether tabs can be draggable.\r\n * @default false\r\n */\r\n @Input({transform: booleanAttribute})\r\n dragEnabled = false;\r\n\r\n /**\r\n * Defines the horizontal alignment when scrolling the tabs.\r\n * @default center\r\n */\r\n @Input()\r\n tabScrollingAlignment: ScrollLogicalPosition = \"center\";\r\n\r\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n /** Event emitted when the active tab selection is about to change. */\r\n @Output() selectedTabChanging = new EventEmitter<CuteTabChangingEvent>();\r\n\r\n /** Event emitted when the tab selection has changed. */\r\n @Output() selectedTabChange = new EventEmitter<CuteTabChangeEvent>();\r\n\r\n /** Event emitted when focus has changed within a tab group. */\r\n @Output() focusChange = new EventEmitter<CuteTabChangeEvent>();\r\n\r\n /** Event emitted after the new tab was added. */\r\n @Output() tabAdded = new EventEmitter<void>();\r\n\r\n /** Event emitted after the closable tab was removed. */\r\n @Output() tabRemoved = new EventEmitter<number>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n /** Whether the tab group currently has a horizontal layout */\r\n get isHorizontal(): boolean {\r\n return this.headerPosition === 'top' || this.headerPosition === 'bottom';\r\n }\r\n\r\n /** The active tab. */\r\n get selectedTab(): CuteTab | undefined {\r\n return this.tabs?.get(this.selectedIndex ?? NaN);\r\n }\r\n\r\n /** The number of tabs in the tab group. */\r\n get tabCount(): number {\r\n return this.tabs?.length || 0;\r\n }\r\n\r\n /**\r\n * Returns the first element in the array of tabs that satisfies the provided testing function.\r\n * Otherwise, _undefined_ is returned.\r\n * @param predicate Testing function\r\n * @returns `CuteTab` object or _undefined_ if there are no tabs with the specified condition.\r\n */\r\n findTab(predicate: (tab: CuteTab, index: number) => boolean): CuteTab | undefined {\r\n return this.tabs?.find(predicate);\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-tab-group-${nextId++}`;\r\n }\r\n\r\n private checkScrollButtons() {\r\n const el = this.headerScroll.nativeElement;\r\n this.showScrollButtons = el.scrollWidth > el.clientWidth;\r\n this.canScrollLeft = el.scrollLeft > 0;\r\n this.canScrollRight = el.scrollLeft < el.scrollWidth - el.clientWidth - 1;\r\n //this._changeDetectorRef.detectChanges();\r\n this.markForCheck();\r\n }\r\n\r\n private setupScrollListener() {\r\n fromEvent(this.headerScroll.nativeElement, 'scroll')\r\n .pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.checkScrollButtons());\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n this.checkScrollButtons();\r\n //setTimeout(()=>this.scrollToTab( this.selectedIndex ));\r\n });\r\n this._resizeObserver.observe(this.headerContainer.nativeElement);\r\n }\r\n\r\n protected scrollHeader(direction: number) {\r\n const el = this.headerScroll.nativeElement;\r\n\r\n clearTimeout(this._scrollDebounce);\r\n el.scrollBy({\r\n left: direction * this.scrollAmount,\r\n behavior: 'smooth'\r\n });\r\n\r\n this._scrollDebounce = setTimeout(() => {\r\n this.checkScrollButtons();\r\n }, 300);\r\n }\r\n\r\n /**\r\n * Activates tab with specified index.\r\n * @param index Tab index\r\n * @param origin (optional) Focus origin\r\n */\r\n selectTab(index: number, origin: FocusOrigin=\"program\") {\r\n if (!this.tabs) return;\r\n if (index < 0 || index >= this.tabs.length) return;\r\n if (index === this.selectedIndex) return;\r\n const tabsArray = this.tabs.toArray();\r\n if (tabsArray[index].disabled) return;\r\n\r\n this._indexToChange = null;\r\n this._selectedIndex = index;\r\n\r\n this.tabs.forEach((tab, i) => {\r\n tab.active = (i === index);\r\n });\r\n\r\n setTimeout(() => {\r\n if (tabsArray[index].scrollNeeded) {\r\n this.scrollToTab(index);\r\n }\r\n }, 100);\r\n\r\n this.selectedIndexChange.emit(index);\r\n\r\n this.markForCheck();\r\n }\r\n\r\n private _createChangeEvent(event: CuteNavChangeEvent): CuteTabChangeEvent {\r\n const tabsArray = this.tabs?.toArray() ?? [];\r\n return new CuteTabChangeEvent(event.index,\r\n tabsArray[event.index],\r\n event.fromIndex,\r\n event.fromIndex ? tabsArray[event.fromIndex] : null,\r\n event.origin\r\n );\r\n }\r\n\r\n private _createChangingEvent(event: CuteNavChangingEvent): CuteTabChangingEvent {\r\n const tabsArray = this.tabs?.toArray() ?? [];\r\n return new CuteTabChangeEvent(event.index,\r\n tabsArray[event.index],\r\n event.fromIndex,\r\n event.fromIndex ? tabsArray[event.fromIndex] : null,\r\n event.origin\r\n );\r\n }\r\n\r\n protected onNavFocusChange(event: CuteNavChangeEvent) {\r\n this.focusChange.emit( this._createChangeEvent(event) );\r\n }\r\n\r\n protected onNavLinkChange(event: CuteNavChangeEvent) {\r\n this.selectedTabChange.emit( this._createChangeEvent(event) );\r\n }\r\n\r\n protected onNavLinkChanging(event: CuteNavChangingEvent) {\r\n const ev = this._createChangingEvent(event);\r\n this.selectedTabChanging.emit( ev );\r\n if (ev.defaultPrevented) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n protected getLabelContext(tab: CuteTab, index: number) {\r\n return {...tab.getContentContext(), index};\r\n }\r\n\r\n /** Gets the current index of the specified tab object. */\r\n getTabIndex(tab: CuteTab): number | undefined {\r\n return this.tabs?.toArray().indexOf(tab);\r\n }\r\n\r\n private scrollToTab(index: number|undefined) {\r\n if (index != null) {\r\n const tabElement = this.tabLinks?.toArray()[index]?.element.nativeElement;\r\n if (tabElement) {\r\n tabElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'nearest',\r\n inline: this.tabScrollingAlignment\r\n });\r\n }\r\n }\r\n }\r\n\r\n /** Drop event */\r\n protected onDrop(event: CdkDragDrop<CuteTab[]>): void {\r\n if (event.previousIndex === event.currentIndex) return;\r\n if (!this.tabs) return;\r\n\r\n const tabsArray = this.tabs.toArray();\r\n moveItemInArray(tabsArray, event.previousIndex, event.currentIndex);\r\n\r\n // Refresh QueryList\r\n this.tabs.reset(tabsArray);\r\n\r\n this._adjustActiveIndex(event.previousIndex, event.currentIndex);\r\n\r\n this.tabs.notifyOnChanges();\r\n }\r\n\r\n /** Sets a new active index after the dragging tabs */\r\n private _adjustActiveIndex(prevIndex: number, newIndex: number) {\r\n if (this.selectedIndex === prevIndex) {\r\n this.selectedIndex = newIndex;\r\n } else if (this.selectedIndex !== undefined) {\r\n const min = Math.min(prevIndex, newIndex);\r\n const max = Math.max(prevIndex, newIndex);\r\n if (this.selectedIndex >= min && this.selectedIndex <= max) {\r\n this.selectedIndex += (prevIndex < newIndex ? -1 : 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Adds a new tab to the end of `tab-group` dynamically.\r\n *\r\n * @param label Tab label\r\n * @param content Tab template reference\r\n * @param context (optional) Template context object\r\n * @param closable (optional) Whether the tab is closable. Default is _true_.\r\n * @returns `ComponentRef` object of the new Tab.\r\n */\r\n async addTab(label: string, content: TemplateRef<any>, context?: any, closable?: boolean): Promise<ComponentRef<CuteTab>> {\r\n const componentRef = this.dynamicTabsContainer!.createComponent(CuteTab);\r\n const newTab = componentRef.instance;\r\n newTab.textLabel = label || `Tab ${(this.tabs?.length??0) + 1}`;\r\n newTab.contentTemplate = content;\r\n newTab.contentContext = context;\r\n newTab.active = true; // !this.tabs || this.tabs.length === 0;\r\n newTab.isDynamic = true;\r\n //componentRef.setInput(\"closable\", true);\r\n newTab.closable = closable ?? true;\r\n componentRef.changeDetectorRef.detectChanges();\r\n this.dynamicTabs.push(componentRef);\r\n\r\n const tabsArray = this.tabs?.toArray() || [];\r\n tabsArray.push(newTab);\r\n this.tabs?.reset( tabsArray );\r\n\r\n this.tabAdded.emit();\r\n\r\n if (newTab.active) {\r\n this.selectTab(tabsArray.length - 1);\r\n }\r\n\r\n return componentRef;\r\n }\r\n\r\n /**\r\n * Removes the tab with specified index.\r\n * @param index Tab index\r\n */\r\n async removeTab(index: number) {\r\n if (!this.tabs) return;\r\n if (index < 0 || index >= this.tabs.length) return;\r\n\r\n const tab = this.tabs.get(index)!;\r\n const wasActive = tab.active;\r\n\r\n const dynIndex = this.dynamicTabs.findIndex(cref => cref.instance == tab);\r\n if (dynIndex >= 0) {\r\n this.dynamicTabsContainer?.remove(dynIndex);\r\n this.dynamicTabs.splice(dynIndex, 1);\r\n }\r\n\r\n const tabsArray = this.tabs.filter((_, i) => i !== index);\r\n this.tabs.reset( tabsArray );\r\n this.tabs.notifyOnChanges();\r\n\r\n this.tabRemoved.emit(index);\r\n\r\n if (wasActive && this.tabs.length > 0) {\r\n const newIndex = Math.min(index, this.tabs.length - 1);\r\n if (newIndex == index) {\r\n // To bypass verification\r\n this._selectedIndex = undefined;\r\n }\r\n this.selectedIndex = newIndex;\r\n this.tabs.get(newIndex)?.link?.focus();\r\n }\r\n\r\n //this.markForCheck();\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n this.checkScrollButtons();\r\n this.setupScrollListener();\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n if (this.tabs) {\r\n const tabsArray = this.tabs.toArray();\r\n if (this._indexToChange == null) {\r\n this.selectedIndex = Math.max( tabsArray.findIndex(t => !t.disabled), 0);\r\n }\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n}\r\n","<div class=\"tab-header-wrapper\" #headerContainer>\r\n <div class=\"tab-header-scroll\" #headerScroll\r\n cdkDropList\r\n [cdkDropListOrientation]=\"isHorizontal ? 'horizontal' : 'vertical'\"\r\n (cdkDropListDropped)=\"onDrop($event)\">\r\n <nav [cuteNav]=\"isHorizontal ? (underlineTabs ? 'underline' : 'tabs') : 'pills'\"\r\n [selectedIndex]=\"selectedIndex\"\r\n [alignment]=\"alignTabs\"\r\n [stretchItems]=\"stretchTabs\"\r\n [preserveTabContent]=\"preserveContent\"\r\n [color]=\"color\"\r\n [class.flex-column]=\"!isHorizontal\"\r\n (selectedIndexChange)=\"selectTab($event)\"\r\n (selectedLinkChanging)=\"onNavLinkChanging($event)\"\r\n (selectedLinkChange)=\"onNavLinkChange($event)\"\r\n (focusChange)=\"onNavFocusChange($event)\">\r\n @for (tab of tabs; track tab.id; let i = $index) {\r\n <li cute-nav-item\r\n cdkDrag\r\n [cdkDragDisabled]=\"!dragEnabled || tabCount <= 1\"\r\n [cdkDragData]=\"tab\">\r\n <a href=\"#\" cute-nav-link\r\n [cuteObserveVisibility]=\"1\"\r\n [cuteObserveVisibilityRoot]=\"headerScroll\"\r\n (cuteObserveVisibility)=\"tab._visibilityChanged($event)\"\r\n [active]=\"tab.active\"\r\n [disabled]=\"tab.disabled\"\r\n [id]=\"tab.ariaLabelledby || undefined\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.aria-controls]=\"tab.id\"\r\n [attr.tabindex]=\"tab.active && !tab.disabled ? 0 : -1\"\r\n role=\"tab\"\r\n #tabLink>\r\n\r\n @if (tab._templateLabel) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tab._templateLabel; context: getLabelContext(tab, i)\">\r\n </ng-container>\r\n } @else {\r\n <!-- <ng-container>-->\r\n <!-- @if (dragEnabled && tabCount > 1) {-->\r\n <!-- <span cdkDragHandle>☰</span>-->\r\n <!-- }-->\r\n {{ tab.textLabel || 'Tab '+i }}\r\n <!-- </ng-container>-->\r\n }\r\n\r\n @if (tab.closable && tab.isDynamic) {\r\n <button cuteButton=\"close-button\"\r\n magnitude=\"smallest\"\r\n tabIndex=\"-1\"\r\n (click)=\"removeTab(i); $event.preventDefault();\"\r\n aria-label=\"Close tab\">\r\n </button>\r\n }\r\n\r\n </a>\r\n </li>\r\n }\r\n </nav>\r\n\r\n </div>\r\n\r\n @if (showScrollButtons) {\r\n <button cuteButton class=\"scroll-button left\"\r\n tabindex=\"-1\"\r\n magnitude=\"smallest\"\r\n visuallyHiddenLabel=\"Prev\"\r\n aria-hidden=\"true\"\r\n (click)=\"scrollHeader(-1)\"\r\n [disabled]=\"!canScrollLeft\">\r\n <!--\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" class=\"bi bi-chevron-left\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0\"/>\r\n </svg>\r\n -->\r\n </button>\r\n <button cuteButton class=\"scroll-button right\"\r\n tabindex=\"-1\"\r\n magnitude=\"smallest\"\r\n visuallyHiddenLabel=\"Next\"\r\n aria-hidden=\"true\"\r\n (click)=\"scrollHeader(1)\"\r\n [disabled]=\"!canScrollRight\">\r\n <!--\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" class=\"bi bi-chevron-right\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708\"/>\r\n </svg>\r\n -->\r\n </button>\r\n <!--\r\n <div class=\"scroll-indicator\"\r\n [class.active]=\"showScrollButtons\"\r\n [class.left-visible]=\"canScrollLeft\"\r\n [class.right-visible]=\"canScrollRight\">\r\n </div>\r\n -->\r\n }\r\n\r\n</div>\r\n\r\n<div class=\"tab-content-wrapper\">\r\n<!-- <div class=\"tab-content\">-->\r\n <ng-content></ng-content>\r\n <ng-container #dynamicTabs></ng-container>\r\n<!-- </div>-->\r\n</div>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Component,\r\n Input,\r\n TemplateRef,\r\n SimpleChanges,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n InjectionToken,\r\n signal,\r\n ContentChild,\r\n booleanAttribute,\r\n inject,\r\n} from '@angular/core';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\nimport {CuteTabLabel} from \"./tab-label.directive\";\r\nimport {CuteTabContent} from \"./tab-content.directive\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CUTE_TAB_GROUP} from \"./tab-group.component\";\r\nimport {CuteNavLink} from \"@cute-widgets/base/core/nav\";\r\n\r\n/**\r\n * Used to provide a tab label to a tab without causing a circular dependency.\r\n * @docs-private\r\n */\r\nexport const CUTE_TAB = new InjectionToken<CuteTab>('CUTE_TAB');\r\n\r\nlet nextId: number = 0;\r\n\r\n@Component({\r\n selector: 'cute-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss'],\r\n animations: [\r\n trigger('contentFade', [\r\n state('in', style({ opacity: 1, height: '*'})),\r\n state('out', style({ opacity: 0, height: '0px'})),\r\n transition('in <=> out', animate('150ms linear'))\r\n ])\r\n ],\r\n host: {\r\n \"class\": \"cute-tab tab-pane\",\r\n \"[class.show]\": \"active\",\r\n \"[class.active]\": \"active\",\r\n// \"[class.d-none]\": \"!active\",\r\n '[attr.tabindex]': 'active && !disabled ? 0 : -1',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.id]': 'id || null',\r\n \"role\": \"tabpanel\",\r\n \"[@contentFade]\": \"active ? 'in' : 'out'\"\r\n },\r\n imports: [\r\n NgTemplateOutlet,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CuteTab extends CuteFocusableControl {\r\n\r\n protected _tabGroup = inject(CUTE_TAB_GROUP, {optional: true});\r\n private _intersectionRatio: number = NaN;\r\n\r\n /** Plain text label for the tab, used when there is no template label. */\r\n @Input(\"label\") textLabel: string = \"\";\r\n\r\n //@Input() titleTemplate: TemplateRef<any> | undefined;\r\n\r\n /** Explicit reference to the external content template. */\r\n @Input() contentTemplate: TemplateRef<any> | undefined;\r\n\r\n /** Lazy loading label's outlet context */\r\n @Input() labelContext: any = {};\r\n\r\n /** Lazy loading content's outlet context */\r\n @Input() contentContext: any = {};\r\n\r\n /** Whether the tab is closable. */\r\n @Input({transform: booleanAttribute}) closable = false;\r\n\r\n /** Whether the tab preserves lazing content */\r\n @Input({ transform: booleanAttribute })\r\n preserveContent: boolean | undefined;\r\n\r\n /** Content for the tab label given by `<ng-template cute-tab-label>`. */\r\n @ContentChild(CuteTabLabel, {read: TemplateRef, static: true})\r\n public readonly _templateLabel: TemplateRef<any>|undefined;\r\n\r\n /**\r\n * Template provided in the tab content by <ng-template cute-tab-content>, used to enable lazy-loading\r\n */\r\n @ContentChild(CuteTabContent, {read: TemplateRef, static: true})\r\n private _explicitContent: TemplateRef<any> | undefined;\r\n\r\n /** Reference to `<cute-nav-link>` element. */\r\n @ContentChild(CuteNavLink, {descendants: true})\r\n readonly link: CuteNavLink | undefined;\r\n\r\n /** Whether the tab is currently active. */\r\n get active(): boolean {return this._active;}\r\n set active(value: boolean) {\r\n if (value !== this._active) {\r\n this._active = value;\r\n this._stateChanges.next();\r\n }\r\n }\r\n private _active: boolean = false;\r\n\r\n /** Whether the tab is intersected the containing box and needs to scroll to display its full size */\r\n get scrollNeeded(): boolean {\r\n return this._intersectionRatio < 1;\r\n }\r\n\r\n /** Whether the tab was added dynamically */\r\n public isDynamic: boolean = false;\r\n\r\n protected isPreserveContent(): boolean {\r\n return this.preserveContent ?? this._tabGroup?.preserveContent ?? false;\r\n }\r\n\r\n /** Tab content defined by <ng-template cute-tab-content> or directly referenced where the latter has more priority. */\r\n protected get explicitContent(): TemplateRef<any> | undefined {\r\n return this.contentTemplate || this._explicitContent;\r\n }\r\n\r\n /** Emits whenever the internal state of the tab changes. */\r\n readonly _stateChanges = new Subject<void>();\r\n\r\n /** Whether the tab content was loaded */\r\n loaded = signal<boolean>(false);\r\n\r\n /** Template inside the CuteTab view that contains an `<ng-content>`. */\r\n // @ViewChild(TemplateRef, {static: true}) _implicitContent: TemplateRef<any> | undefined;\r\n\r\n constructor() {\r\n super();\r\n this._stateChanges.pipe(takeUntilDestroyed()).subscribe(()=> {\r\n this.markForCheck();\r\n });\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-tab-${nextId++}`;\r\n }\r\n\r\n /** Gets the content template's context object */\r\n getContentContext(): any {\r\n return {...this.contentContext,\r\n $implicit: this,\r\n index: this._tabGroup?.getTabIndex(this),\r\n active: this.active,\r\n tab: this\r\n };\r\n }\r\n\r\n /**\r\n * Removes this tab from the tab group.\r\n */\r\n async remove() {\r\n if (this._tabGroup) {\r\n const index = this._tabGroup.getTabIndex(this);\r\n if (index != null) {\r\n return this._tabGroup.removeTab( index );\r\n }\r\n }\r\n return;\r\n }\r\n\r\n _visibilityChanged(entries: IntersectionObserverEntry[]) {\r\n if (entries.length) {\r\n this._intersectionRatio = entries[0].intersectionRatio;\r\n }\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.ariaLabelledby = this.id+\"-link\";\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes['textLabel'] || changes['disabled'] || changes['closable']) {\r\n this._stateChanges.next();\r\n }\r\n if (changes[\"active\"] && changes[\"active\"].currentValue) {\r\n this.loaded.set(true);\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._stateChanges.complete();\r\n }\r\n}\r\n","@if (active || isPreserveContent()) {\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (explicitContent) {\r\n <ng-container [ngTemplateOutlet]=\"explicitContent\"\r\n [ngTemplateOutletContext]=\"getContentContext()\">\r\n </ng-container>\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteTab} from \"./tab.component\";\r\nimport {CuteTabGroup} from \"./tab-group.component\";\r\nimport {CuteTabLabel} from \"./tab-label.directive\";\r\nimport {CuteTabContent} from \"./tab-content.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteTab,\r\n CuteTabGroup,\r\n CuteTabLabel,\r\n CuteTabContent,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteTabsModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cute-widgets-base-tabs.mjs","sources":["../../../../projects/cute-widgets/base/tabs/src/tab-label.directive.ts","../../../../projects/cute-widgets/base/tabs/src/tab-content.directive.ts","../../../../projects/cute-widgets/base/tabs/src/tab-group.component.ts","../../../../projects/cute-widgets/base/tabs/src/tab-group.component.html","../../../../projects/cute-widgets/base/tabs/src/tab.component.ts","../../../../projects/cute-widgets/base/tabs/src/tab.component.html","../../../../projects/cute-widgets/base/tabs/src/tabs.module.ts","../../../../projects/cute-widgets/base/tabs/cute-widgets-base-tabs.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, InjectionToken, inject} from '@angular/core';\r\nimport {CUTE_TAB} from \"./tab.component\";\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteTabLabel`. It serves as\r\n * alternative token to the actual `CuteTabLabel` class which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_TAB_LABEL = new InjectionToken<CuteTabLabel>('CuteTabLabel');\r\n\r\n/** Used to flag tab labels for use with the portal directive */\r\n@Directive({\r\n selector: 'ng-template[cute-tab-label], ng-template[cuteTabLabel]',\r\n exportAs: 'cuteTabLabel',\r\n providers: [{provide: CUTE_TAB_LABEL, useExisting: CuteTabLabel}],\r\n})\r\nexport class CuteTabLabel {\r\n _closestTab = inject(CUTE_TAB, {optional: true});\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, InjectionToken, TemplateRef, inject} from '@angular/core';\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteTabContent`. It serves as\r\n * alternative token to the actual `CuteTabContent` class which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_TAB_CONTENT = new InjectionToken<CuteTabContent>('CuteTabContent');\r\n\r\n/** Decorates the `ng-template` tags and reads out the template from it. */\r\n@Directive({\r\n selector: 'ng-template[cute-tab-content], ng-template[cuteTabContent]',\r\n providers: [{provide: CUTE_TAB_CONTENT, useExisting: CuteTabContent}],\r\n})\r\nexport class CuteTabContent {\r\n template = inject<TemplateRef<any>>(TemplateRef);\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n ContentChildren,\r\n QueryList,\r\n ViewChildren,\r\n EventEmitter,\r\n TemplateRef,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n InjectionToken,\r\n numberAttribute,\r\n booleanAttribute, ViewContainerRef, ViewChild, ComponentRef, ElementRef, inject, DestroyRef\r\n} from '@angular/core';\r\nimport {CuteTab} from './tab.component';\r\nimport {CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {\r\n CuteNavChangeEvent,\r\n CuteNavChangingEvent,\r\n CuteNavLink,\r\n CuteNavModule,\r\n CuteNavStretch\r\n} from \"@cute-widgets/base/core/nav\";\r\nimport {FocusOrigin} from \"@angular/cdk/a11y\";\r\nimport {ContentAlignment, Scheduler, ViewportEdge} from \"@cute-widgets/base/core\";\r\nimport {CuteButtonModule} from \"@cute-widgets/base/button\";\r\nimport {debounceTime, fromEvent} from \"rxjs\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CuteObserveVisibility} from \"@cute-widgets/base/core/observers\";\r\n\r\nlet nextId: number = 0;\r\n\r\n/**\r\n * Used to provide a tab group to a tab without causing a circular dependency.\r\n */\r\nexport const CUTE_TAB_GROUP = new InjectionToken<CuteTabGroup>('CUTE_TAB_GROUP');\r\n\r\n/** Cancelable event emitted when the `cute-tab` selection is about to change. */\r\nexport class CuteTabChangingEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected tab. */\r\n readonly index : number,\r\n /** Reference to the currently-selected tab. */\r\n readonly tab: CuteTab,\r\n /** Index of the previously-selected tab. */\r\n readonly fromIndex: number | null,\r\n /** Reference to the previously-selected tab. */\r\n readonly fromTab: CuteTab | null,\r\n /** How the tab was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"tabChanging\", {cancelable: true});\r\n }\r\n}\r\n\r\n/** A simple change event emitted on focus or selection changes. */\r\nexport class CuteTabChangeEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected tab. */\r\n readonly index : number,\r\n /** Reference to the currently-selected tab. */\r\n readonly tab: CuteTab,\r\n /** Index of the previously-selected tab. */\r\n readonly fromIndex: number | null,\r\n /** Reference to the previously-selected tab. */\r\n readonly fromTab: CuteTab | null,\r\n /** How the tab was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"tabChange\");\r\n }\r\n}\r\n\r\n/**\r\n * A flexible, feature-rich tab component for Angular applications with Bootstrap integration.\r\n */\r\n@Component({\r\n selector: 'cute-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrls: ['./tab-group.component.scss'],\r\n exportAs: \"cuteTabGroup\",\r\n host: {\r\n \"class\": \"cute-tab-group\",\r\n \"[class.tabs-top]\": \"headerPosition === 'top'\",\r\n \"[class.tabs-bottom]\": \"headerPosition === 'bottom'\",\r\n \"[class.tabs-left]\": \"headerPosition === 'left'\",\r\n \"[class.tabs-right]\": \"headerPosition === 'right'\",\r\n \"[class.tabs-end]\": \"headerPosition === 'end'\",\r\n \"[class.tabs-start]\": \"headerPosition === 'start'\",\r\n \"[attr.cute-align-tabs]\": \"alignTabs\",\r\n \"[style.--cute-tab-animation-duration]\": \"animationDuration\",\r\n },\r\n imports: [\r\n CdkDropList,\r\n CdkDrag,\r\n NgTemplateOutlet,\r\n CuteNavModule,\r\n CuteButtonModule,\r\n CuteObserveVisibility,\r\n ],\r\n providers: [\r\n {provide: CUTE_TAB_GROUP, useExisting: CuteTabGroup},\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CuteTabGroup extends CuteLayoutControl {\r\n private _indexToChange: number | null = null;\r\n private _scrollDebounce: number | undefined;\r\n private _resizeObserver: ResizeObserver | undefined;\r\n\r\n protected showScrollButtons = false;\r\n protected canScrollLeft = false;\r\n protected canScrollRight = false;\r\n /** Number of pixels to scroll left or right */\r\n protected scrollAmount: number = 200;\r\n protected dynamicTabs: ComponentRef<CuteTab>[] = [];\r\n\r\n protected destroyRef = inject(DestroyRef);\r\n\r\n @ContentChildren(CuteTab)\r\n protected tabs: QueryList<CuteTab> | undefined;\r\n\r\n @ViewChildren('tabLink', {read: CuteNavLink})\r\n protected tabLinks: QueryList<CuteNavLink> | undefined;\r\n\r\n @ViewChild('dynamicTabs', {read: ViewContainerRef, static: true})\r\n protected dynamicTabsContainer: ViewContainerRef | undefined;\r\n\r\n @ViewChild('headerContainer', {static: true})\r\n headerContainer!: ElementRef<HTMLElement>;\r\n\r\n @ViewChild('headerScroll', {static: true})\r\n headerScroll!: ElementRef<HTMLElement>;\r\n\r\n /** The index of the active tab. */\r\n @Input({transform: numberAttribute})\r\n get selectedIndex(): number|undefined {return this._selectedIndex;}\r\n set selectedIndex(value: number) {\r\n if (value !== this._selectedIndex) {\r\n this._indexToChange = value;\r\n Promise.resolve().then(()=> this.selectTab(value));\r\n }\r\n }\r\n private _selectedIndex: number | undefined;\r\n\r\n /**\r\n * Alignment for tabs.\r\n * @default start\r\n */\r\n @Input({ alias: 'cute-align-tabs' })\r\n alignTabs: ContentAlignment = \"start\";\r\n\r\n /**\r\n * The style a `cute-tab`’s content extends the full available width, proportionately (**fill**) or equal-width (**justified**).\r\n * The width is determined by the longest `cute-tab-label`'s content. By default, stretching of items is not used (**none**).\r\n */\r\n @Input({alias: 'cute-stretch-tabs'})\r\n get stretchTabs(): CuteNavStretch { return this._stretchTabs; }\r\n set stretchTabs(value: CuteNavStretch|boolean|\"false\"|\"true\"|undefined) {\r\n if (value) {\r\n if (typeof value===\"boolean\" || value===\"true\" || value===\"false\") {\r\n this._stretchTabs = Boolean(value) ? \"justified\" : \"none\";\r\n } else {\r\n this._stretchTabs = value;\r\n }\r\n } else {\r\n this._stretchTabs = \"none\";\r\n }\r\n }\r\n private _stretchTabs: CuteNavStretch = \"none\";\r\n\r\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\r\n @Input()\r\n get animationDuration(): string { return this._animationDuration; }\r\n set animationDuration(value: string | number) {\r\n const stringValue = value + '';\r\n this._animationDuration = /^\\d+$/.test(stringValue) ? value + 'ms' : stringValue;\r\n }\r\n private _animationDuration: string = \"\";\r\n\r\n /**\r\n * By default, tabs remove their lazy content from the DOM while it's off-screen. Setting this to _true_ will keep it in the DOM,\r\n * which will prevent elements like `iframe` and `video` from reloading next time it comes back into the view.\r\n */\r\n @Input({ transform: booleanAttribute })\r\n preserveContent: boolean | undefined;\r\n\r\n /** Whether the tab group will change its height to the height of the currently active tab. */\r\n @Input({transform: booleanAttribute})\r\n dynamicHeight: boolean = false;\r\n\r\n /**\r\n * Possible position for the tab header.\r\n * @default top\r\n */\r\n @Input()\r\n get headerPosition(): ViewportEdge {return this._headerPosition;}\r\n set headerPosition(newPosition: ViewportEdge) {\r\n if (newPosition !== this._headerPosition) {\r\n this._headerPosition = newPosition;\r\n Promise.resolve().then(() => this.scrollToTab());\r\n this.headerPositionChange.emit(newPosition);\r\n }\r\n }\r\n private _headerPosition: ViewportEdge = 'top';\r\n\r\n /** Use `underline` style for horizontal tabs. */\r\n @Input({transform: booleanAttribute})\r\n underlineTabs: boolean = false;\r\n\r\n /**\r\n * Whether tabs can be draggable.\r\n * @default false\r\n */\r\n @Input({transform: booleanAttribute})\r\n dragEnabled = false;\r\n\r\n /**\r\n * Defines the horizontal alignment when scrolling the tabs.\r\n * @default center\r\n */\r\n @Input()\r\n tabScrollingAlignment: ScrollLogicalPosition = \"center\";\r\n\r\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n /** Event emitted when the active tab selection is about to change. */\r\n @Output() selectedTabChanging = new EventEmitter<CuteTabChangingEvent>();\r\n\r\n /** Event emitted when the tab selection has been changed. */\r\n @Output() selectedTabChange = new EventEmitter<CuteTabChangeEvent>();\r\n\r\n /** Event emitted when focus has changed within a tab group. */\r\n @Output() focusChange = new EventEmitter<CuteTabChangeEvent>();\r\n\r\n /** Event emitted when the position of tabs header has been changed. */\r\n @Output() headerPositionChange = new EventEmitter<ViewportEdge>();\r\n\r\n /** Event emitted after the new tab was added. */\r\n @Output() tabAdded = new EventEmitter<void>();\r\n\r\n /** Event emitted after the closable tab was removed. */\r\n @Output() tabRemoved = new EventEmitter<number>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n /** Whether the tab group currently has a horizontal layout */\r\n get isHorizontal(): boolean {\r\n return this.headerPosition === 'top' || this.headerPosition === 'bottom';\r\n }\r\n\r\n /** The active tab. */\r\n get selectedTab(): CuteTab | undefined {\r\n return this.tabs?.get(this.selectedIndex ?? NaN);\r\n }\r\n\r\n /** The number of tabs in the tab group. */\r\n get tabCount(): number {\r\n return this.tabs?.length || 0;\r\n }\r\n\r\n /**\r\n * Returns the first element in the array of tabs that satisfies the provided testing function.\r\n * Otherwise, _undefined_ is returned.\r\n * @param predicate Testing function\r\n * @returns `CuteTab` object or _undefined_ if there are no tabs with the specified condition.\r\n */\r\n findTab(predicate: (tab: CuteTab, index: number) => boolean): CuteTab | undefined {\r\n return this.tabs?.find(predicate);\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-tab-group-${nextId++}`;\r\n }\r\n\r\n private checkScrollButtons() {\r\n const el = this.headerScroll.nativeElement;\r\n this.showScrollButtons = el.scrollWidth > el.clientWidth;\r\n this.canScrollLeft = el.scrollLeft > 0;\r\n this.canScrollRight = el.scrollLeft < el.scrollWidth - el.clientWidth - 1;\r\n //this._changeDetectorRef.detectChanges();\r\n this.markForCheck();\r\n }\r\n\r\n private setupScrollListener() {\r\n fromEvent(this.headerScroll.nativeElement, 'scroll')\r\n .pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.checkScrollButtons());\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n this.checkScrollButtons();\r\n //setTimeout(()=>this.scrollToTab( this.selectedIndex ));\r\n });\r\n this._resizeObserver.observe(this.headerContainer.nativeElement);\r\n }\r\n\r\n protected scrollHeader(direction: number) {\r\n const el = this.headerScroll.nativeElement;\r\n\r\n clearTimeout(this._scrollDebounce);\r\n el.scrollBy({\r\n left: direction * this.scrollAmount,\r\n behavior: 'smooth'\r\n });\r\n\r\n this._scrollDebounce = setTimeout(() => {\r\n this.checkScrollButtons();\r\n }, 300);\r\n }\r\n\r\n /**\r\n * Activates tab with the specified index.\r\n * @param index Tab index\r\n * @param origin (optional) Focus origin\r\n * @returns A promise of a \"logical\" result, where _true_ means a successful change of the active tab, and _false_ otherwise.\r\n * @async\r\n */\r\n async selectTab(index: number, origin: FocusOrigin=\"program\"): Promise<boolean> {\r\n if (!this.tabs) return false;\r\n if (index < 0 || index >= this.tabs.length) return false;\r\n if (index === this.selectedIndex) return true;\r\n const tabsArray = this.tabs.toArray();\r\n if (tabsArray[index].disabled) return false;\r\n\r\n this._indexToChange = null;\r\n this._selectedIndex = index;\r\n\r\n this.tabs.forEach((tab, i) => {\r\n //tab.active = (i === index);\r\n tab.active = false;\r\n });\r\n\r\n tabsArray[index].active = true;\r\n\r\n await Scheduler.postTask(() => {\r\n if (tabsArray[index].scrollNeeded) {\r\n this.scrollToTab(index);\r\n }\r\n }, {delay: 100});\r\n\r\n this.selectedIndexChange.emit(index);\r\n\r\n this.markForCheck();\r\n\r\n return true;\r\n }\r\n\r\n private _createChangeEvent(event: CuteNavChangeEvent): CuteTabChangeEvent {\r\n const tabsArray = this.tabs?.toArray() ?? [];\r\n return new CuteTabChangeEvent(event.index,\r\n tabsArray[event.index],\r\n event.fromIndex,\r\n event.fromIndex ? tabsArray[event.fromIndex] : null,\r\n event.origin\r\n );\r\n }\r\n\r\n private _createChangingEvent(event: CuteNavChangingEvent): CuteTabChangingEvent {\r\n const tabsArray = this.tabs?.toArray() ?? [];\r\n return new CuteTabChangeEvent(event.index,\r\n tabsArray[event.index],\r\n event.fromIndex,\r\n event.fromIndex ? tabsArray[event.fromIndex] : null,\r\n event.origin\r\n );\r\n }\r\n\r\n protected onNavFocusChange(event: CuteNavChangeEvent) {\r\n this.focusChange.emit( this._createChangeEvent(event) );\r\n }\r\n\r\n protected onNavLinkChange(event: CuteNavChangeEvent) {\r\n this.selectedTabChange.emit( this._createChangeEvent(event) );\r\n }\r\n\r\n protected onNavLinkChanging(event: CuteNavChangingEvent) {\r\n const ev = this._createChangingEvent(event);\r\n this.selectedTabChanging.emit( ev );\r\n if (ev.defaultPrevented) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n protected getLabelContext(tab: CuteTab, index: number) {\r\n return {...tab.getContentContext(), index};\r\n }\r\n\r\n /** Gets the current index of the specified tab object. */\r\n getTabIndex(tab: CuteTab): number | undefined {\r\n return this.tabs?.toArray().indexOf(tab);\r\n }\r\n\r\n private scrollToTab(index?: number) {\r\n index = index ?? this.selectedIndex;\r\n if (index != null) {\r\n const tabElement = this.tabLinks?.toArray()[index]?.element.nativeElement;\r\n if (tabElement) {\r\n tabElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'nearest',\r\n inline: this.tabScrollingAlignment\r\n });\r\n }\r\n }\r\n }\r\n\r\n /** Drop event */\r\n protected onDrop(event: CdkDragDrop<CuteTab[]>): void {\r\n if (event.previousIndex === event.currentIndex) return;\r\n if (!this.tabs) return;\r\n\r\n const tabsArray = this.tabs.toArray();\r\n moveItemInArray(tabsArray, event.previousIndex, event.currentIndex);\r\n\r\n // Refresh QueryList\r\n this.tabs.reset(tabsArray);\r\n\r\n this._adjustActiveIndex(event.previousIndex, event.currentIndex);\r\n\r\n this.tabs.notifyOnChanges();\r\n }\r\n\r\n /** Sets a new active index after the dragging tabs */\r\n private _adjustActiveIndex(prevIndex: number, newIndex: number) {\r\n if (this.selectedIndex === prevIndex) {\r\n this.selectedIndex = newIndex;\r\n } else if (this.selectedIndex !== undefined) {\r\n const min = Math.min(prevIndex, newIndex);\r\n const max = Math.max(prevIndex, newIndex);\r\n if (this.selectedIndex >= min && this.selectedIndex <= max) {\r\n this.selectedIndex += (prevIndex < newIndex ? -1 : 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Adds a new tab to the end of `tab-group` dynamically.\r\n *\r\n * @param label Tab label\r\n * @param content Tab template reference\r\n * @param context (optional) Template context object\r\n * @param closable (optional) Whether the tab is closable. Default is _true_.\r\n * @returns `ComponentRef` object of the new Tab.\r\n */\r\n async addTab(label: string, content: TemplateRef<any>, context?: any, closable?: boolean): Promise<ComponentRef<CuteTab>> {\r\n const componentRef = this.dynamicTabsContainer!.createComponent(CuteTab);\r\n const newTab = componentRef.instance;\r\n newTab.textLabel = label || `Tab ${(this.tabs?.length??0) + 1}`;\r\n newTab.contentTemplate = content;\r\n newTab.contentContext = context;\r\n newTab.active = true; // !this.tabs || this.tabs.length === 0;\r\n newTab._isDynamic = true;\r\n //componentRef.setInput(\"closable\", true);\r\n newTab.closable = closable ?? true;\r\n componentRef.changeDetectorRef.detectChanges();\r\n this.dynamicTabs.push(componentRef);\r\n\r\n const tabsArray = this.tabs?.toArray() || [];\r\n tabsArray.push(newTab);\r\n this.tabs?.reset( tabsArray );\r\n\r\n if (newTab.active) {\r\n const newIndex = tabsArray.length - 1;\r\n if (await this.selectTab(newIndex)) {\r\n this.scrollToTab(newIndex);\r\n }\r\n }\r\n\r\n this.tabAdded.emit();\r\n\r\n return componentRef;\r\n }\r\n\r\n /**\r\n * Removes the tab with specified index.\r\n * @param index Tab index\r\n */\r\n async removeTab(index: number) {\r\n if (!this.tabs) return;\r\n if (index < 0 || index >= this.tabs.length) return;\r\n\r\n const tab = this.tabs.get(index)!;\r\n const wasActive = tab.active;\r\n\r\n const dynIndex = this.dynamicTabs.findIndex(cref => cref.instance == tab);\r\n if (dynIndex >= 0) {\r\n this.dynamicTabsContainer?.remove(dynIndex);\r\n this.dynamicTabs.splice(dynIndex, 1);\r\n }\r\n\r\n const tabsArray = this.tabs.filter((_, i) => i !== index);\r\n this.tabs.reset( tabsArray );\r\n this.tabs.notifyOnChanges();\r\n\r\n this.tabRemoved.emit(index);\r\n\r\n if (wasActive && this.tabs.length > 0) {\r\n const newIndex = Math.min(index, this.tabs.length - 1);\r\n if (newIndex == index) {\r\n // To bypass verification\r\n this._selectedIndex = undefined;\r\n }\r\n this.selectedIndex = newIndex;\r\n this.tabs.get(newIndex)?.link?.focus();\r\n }\r\n\r\n this.checkScrollButtons();\r\n\r\n //this.markForCheck();\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n this.checkScrollButtons();\r\n this.setupScrollListener();\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n if (this.tabs) {\r\n const tabsArray = this.tabs.toArray();\r\n if (this._indexToChange == null) {\r\n this.selectedIndex = Math.max( tabsArray.findIndex(t => !t.disabled), 0);\r\n }\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n}\r\n","<div class=\"tab-header-wrapper\" #headerContainer>\r\n <div class=\"tab-header-scroll\" #headerScroll\r\n cdkDropList\r\n [cdkDropListOrientation]=\"isHorizontal ? 'horizontal' : 'vertical'\"\r\n (cdkDropListDropped)=\"onDrop($event)\">\r\n <nav [cuteNav]=\"isHorizontal ? (underlineTabs ? 'underline' : 'tabs') : 'pills'\"\r\n [selectedIndex]=\"selectedIndex\"\r\n [alignment]=\"alignTabs\"\r\n [stretchItems]=\"stretchTabs\"\r\n [preserveTabContent]=\"preserveContent\"\r\n [color]=\"color\"\r\n [class.flex-column]=\"!isHorizontal\"\r\n (selectedIndexChange)=\"selectTab($event)\"\r\n (selectedLinkChanging)=\"onNavLinkChanging($event)\"\r\n (selectedLinkChange)=\"onNavLinkChange($event)\"\r\n (focusChange)=\"onNavFocusChange($event)\">\r\n @for (tab of tabs; track tab.id; let i = $index) {\r\n <li cute-nav-item\r\n cdkDrag\r\n [cdkDragDisabled]=\"!dragEnabled || tabCount <= 1\"\r\n [cdkDragData]=\"tab\">\r\n <a href=\"#\" cute-nav-link\r\n [cuteObserveVisibility]=\"1\"\r\n [cuteObserveVisibilityRoot]=\"headerScroll\"\r\n (cuteObserveVisibility)=\"tab._visibilityChanged($event)\"\r\n [active]=\"tab.active\"\r\n [disabled]=\"tab.disabled\"\r\n [id]=\"tab.ariaLabelledby || undefined\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.aria-controls]=\"tab.id\"\r\n [attr.tabindex]=\"tab.active && !tab.disabled ? 0 : -1\"\r\n role=\"tab\"\r\n #tabLink>\r\n\r\n @if (tab._templateLabel) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tab._templateLabel; context: getLabelContext(tab, i)\">\r\n </ng-container>\r\n } @else {\r\n <!-- <ng-container>-->\r\n <!-- @if (dragEnabled && tabCount > 1) {-->\r\n <!-- <span cdkDragHandle>☰</span>-->\r\n <!-- }-->\r\n {{ tab.textLabel || 'Tab '+i }}\r\n <!-- </ng-container>-->\r\n }\r\n\r\n @if (tab.closable && tab._isDynamic) {\r\n <button cuteButton=\"close-button\"\r\n magnitude=\"smallest\"\r\n tabIndex=\"-1\"\r\n (click)=\"removeTab(i); $event.preventDefault();\"\r\n aria-label=\"Close tab\">\r\n </button>\r\n }\r\n\r\n </a>\r\n </li>\r\n }\r\n </nav>\r\n\r\n </div>\r\n\r\n @if (showScrollButtons) {\r\n <button cuteButton class=\"scroll-button left\"\r\n tabindex=\"-1\"\r\n magnitude=\"smallest\"\r\n visuallyHiddenLabel=\"Prev\"\r\n aria-hidden=\"true\"\r\n (click)=\"scrollHeader(-1)\"\r\n [disabled]=\"!canScrollLeft\">\r\n <!--\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" class=\"bi bi-chevron-left\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0\"/>\r\n </svg>\r\n -->\r\n </button>\r\n <button cuteButton class=\"scroll-button right\"\r\n tabindex=\"-1\"\r\n magnitude=\"smallest\"\r\n visuallyHiddenLabel=\"Next\"\r\n aria-hidden=\"true\"\r\n (click)=\"scrollHeader(1)\"\r\n [disabled]=\"!canScrollRight\">\r\n <!--\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" class=\"bi bi-chevron-right\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708\"/>\r\n </svg>\r\n -->\r\n </button>\r\n <!--\r\n <div class=\"scroll-indicator\"\r\n [class.active]=\"showScrollButtons\"\r\n [class.left-visible]=\"canScrollLeft\"\r\n [class.right-visible]=\"canScrollRight\">\r\n </div>\r\n -->\r\n }\r\n\r\n</div>\r\n\r\n<div class=\"tab-content-wrapper\">\r\n<!-- <div class=\"tab-content\">-->\r\n <ng-content></ng-content>\r\n <ng-container #dynamicTabs></ng-container>\r\n<!-- </div>-->\r\n</div>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Component,\r\n Input,\r\n TemplateRef,\r\n SimpleChanges,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n InjectionToken,\r\n signal,\r\n ContentChild,\r\n booleanAttribute,\r\n inject,\r\n} from '@angular/core';\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\nimport {CuteTabLabel} from \"./tab-label.directive\";\r\nimport {CuteTabContent} from \"./tab-content.directive\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CUTE_TAB_GROUP} from \"./tab-group.component\";\r\nimport {CuteNavLink} from \"@cute-widgets/base/core/nav\";\r\nimport {_animationsDisabled} from '@cute-widgets/base/core';\r\n\r\n/**\r\n * Used to provide a tab label to a tab without causing a circular dependency.\r\n * @docs-private\r\n */\r\nexport const CUTE_TAB = new InjectionToken<CuteTab>('CUTE_TAB');\r\n\r\nlet nextId: number = 0;\r\n\r\n@Component({\r\n selector: 'cute-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss'],\r\n host: {\r\n \"class\": \"cute-tab tab-pane\",\r\n \"[class.fade]\": \"_animationEnabled\",\r\n // \"[class.show]\": \"active\",\r\n \"[class.active]\": \"active\",\r\n '[attr.tabindex]': 'active && !disabled ? 0 : -1',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.id]': 'id || null',\r\n \"role\": \"tabpanel\",\r\n },\r\n providers: [{provide: CUTE_TAB, useExisting: CuteTab}],\r\n imports: [\r\n NgTemplateOutlet,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CuteTab extends CuteFocusableControl {\r\n private _intersectionRatio: number = NaN;\r\n protected _closestTabGroup = inject(CUTE_TAB_GROUP, {optional: true});\r\n protected _animationEnabled = !_animationsDisabled();\r\n\r\n /** Plain text label for the tab, used when there is no template label. */\r\n @Input(\"label\") textLabel: string = \"\";\r\n\r\n //@Input() titleTemplate: TemplateRef<any> | undefined;\r\n\r\n /** Explicit reference to the external content template. */\r\n @Input() contentTemplate: TemplateRef<any> | undefined;\r\n\r\n /** Lazy loading label's outlet context. */\r\n @Input() labelContext: any = {};\r\n\r\n /** Lazy loading content's outlet context. */\r\n @Input() contentContext: any = {};\r\n\r\n /** Whether the tab is closable. */\r\n @Input({transform: booleanAttribute}) closable = false;\r\n\r\n /** Whether the tab preserves lazing content. */\r\n @Input({ transform: booleanAttribute })\r\n preserveContent: boolean | undefined;\r\n\r\n /** Content for the tab label given by `<ng-template cute-tab-label>`. */\r\n @ContentChild(CuteTabLabel, {read: TemplateRef, static: true})\r\n public readonly _templateLabel: TemplateRef<any>|undefined;\r\n\r\n /**\r\n * Template provided in the tab content by <ng-template cute-tab-content>, used to enable lazy-loading\r\n */\r\n @ContentChild(CuteTabContent, {read: TemplateRef, static: true})\r\n private _explicitContent: TemplateRef<any> | undefined;\r\n\r\n /** Reference to `<cute-nav-link>` element. */\r\n @ContentChild(CuteNavLink, {descendants: true})\r\n readonly link: CuteNavLink | undefined;\r\n\r\n /** Whether the tab is currently active. */\r\n get active(): boolean {return this._active;}\r\n set active(value: boolean) {\r\n if (value !== this._active) {\r\n this._active = value;\r\n\r\n if (this._animationEnabled) {\r\n setTimeout(() => this.toggleClass(\"show\", value), 150);\r\n } else {\r\n this.toggleClass(\"show\", value);\r\n }\r\n\r\n this._stateChanges.next();\r\n }\r\n }\r\n private _active: boolean = false;\r\n\r\n /** Whether the tab is intersected the containing box and needs to scroll to display its full size */\r\n get scrollNeeded(): boolean {\r\n return this._intersectionRatio < 1;\r\n }\r\n\r\n /** Whether the tab was added dynamically */\r\n public _isDynamic: boolean = false;\r\n\r\n protected isPreserveContent(): boolean {\r\n return this.preserveContent ?? this._closestTabGroup?.preserveContent ?? false;\r\n }\r\n\r\n /** Tab content defined by <ng-template cute-tab-content> or directly referenced where the latter has more priority. */\r\n protected get explicitContent(): TemplateRef<any> | undefined {\r\n return this.contentTemplate || this._explicitContent;\r\n }\r\n\r\n /** Emits whenever the internal state of the tab changes. */\r\n readonly _stateChanges = new Subject<void>();\r\n\r\n /** Whether the tab content was loaded */\r\n loaded = signal<boolean>(false);\r\n\r\n /** Template inside the CuteTab view that contains an `<ng-content>`. */\r\n // @ViewChild(TemplateRef, {static: true}) _implicitContent: TemplateRef<any> | undefined;\r\n\r\n constructor() {\r\n super();\r\n this._stateChanges.pipe(takeUntilDestroyed()).subscribe(()=> {\r\n this.markForCheck();\r\n });\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-tab-${nextId++}`;\r\n }\r\n\r\n /** Gets the content template's context object */\r\n getContentContext(): any {\r\n return {...this.contentContext,\r\n $implicit: this,\r\n index: this._closestTabGroup?.getTabIndex(this),\r\n active: this.active,\r\n tab: this\r\n };\r\n }\r\n\r\n /**\r\n * Removes this tab from the tab group.\r\n */\r\n async remove() {\r\n if (this._closestTabGroup) {\r\n const index = this._closestTabGroup.getTabIndex(this);\r\n if (index != null) {\r\n return this._closestTabGroup.removeTab( index );\r\n }\r\n }\r\n return;\r\n }\r\n\r\n _visibilityChanged(entries: IntersectionObserverEntry[]) {\r\n if (entries.length) {\r\n //this._intersectionRatio = entries[0].intersectionRatio;\r\n this._intersectionRatio = entries.at(-1)!.intersectionRatio;\r\n }\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.ariaLabelledby = this.id+\"-link\";\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes['textLabel'] || changes['disabled'] || changes['closable']) {\r\n this._stateChanges.next();\r\n }\r\n if (changes[\"active\"] && changes[\"active\"].currentValue) {\r\n this.loaded.set(true);\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._stateChanges.complete();\r\n }\r\n}\r\n","@if (active || isPreserveContent()) {\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (explicitContent) {\r\n <ng-container [ngTemplateOutlet]=\"explicitContent\"\r\n [ngTemplateOutletContext]=\"getContentContext()\">\r\n </ng-container>\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteTab} from \"./tab.component\";\r\nimport {CuteTabGroup} from \"./tab-group.component\";\r\nimport {CuteTabLabel} from \"./tab-label.directive\";\r\nimport {CuteTabContent} from \"./tab-content.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteTab,\r\n CuteTabGroup,\r\n CuteTabLabel,\r\n CuteTabContent,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteTabsModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@cute-widgets/base";
|
|
2
|
-
var version = "20.0.
|
|
2
|
+
var version = "20.0.5";
|
|
3
3
|
var license = "Apache-2.0";
|
|
4
4
|
var repository = {
|
|
5
5
|
type: "git",
|
|
@@ -8,6 +8,7 @@ var repository = {
|
|
|
8
8
|
var bugs = {
|
|
9
9
|
url: "https://github.com/cute-widgets/base/issues"
|
|
10
10
|
};
|
|
11
|
+
var homepage = "https://cutewidgets.com";
|
|
11
12
|
var description = "Angular Material components styled with Bootstrap";
|
|
12
13
|
var author = "ALEXANDER STRELKOV <alv.strelkov@gmail.com>";
|
|
13
14
|
var keywords = [
|
|
@@ -37,6 +38,7 @@ var _package = {
|
|
|
37
38
|
license: license,
|
|
38
39
|
repository: repository,
|
|
39
40
|
bugs: bugs,
|
|
41
|
+
homepage: homepage,
|
|
40
42
|
description: description,
|
|
41
43
|
author: author,
|
|
42
44
|
keywords: keywords,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cute-widgets-base.mjs","sources":["../../../../projects/cute-widgets/base/index.ts","../../../../projects/cute-widgets/base/cute-widgets-base.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * @description\r\n * Public API Surface of the base `CuteWidgets`.\r\n */\r\nimport {version} from \"./package.json\";\r\n\r\nexport const CUTE_WIDGETS_VERSION = String(version);\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cute-widgets-base.mjs","sources":["../../../../projects/cute-widgets/base/index.ts","../../../../projects/cute-widgets/base/cute-widgets-base.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * @description\r\n * Public API Surface of the base `CuteWidgets`.\r\n */\r\nimport {version} from \"./package.json\";\r\n\r\nexport const CUTE_WIDGETS_VERSION = String(version);\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;AAUG;MAGU,oBAAoB,GAAG,MAAM,CAAC,OAAO;;ACblD;;AAEG;;;;"}
|
package/navbar/index.d.ts
CHANGED
|
@@ -1,21 +1,36 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, QueryList, EventEmitter } from '@angular/core';
|
|
3
|
-
import { CuteLayoutControl } from '@cute-widgets/base/abstract';
|
|
2
|
+
import { AfterViewChecked, InjectionToken, QueryList, EventEmitter } from '@angular/core';
|
|
3
|
+
import { CuteLayoutControl, Expandable } from '@cute-widgets/base/abstract';
|
|
4
4
|
import * as _cute_widgets_base_navbar from '@cute-widgets/base/navbar';
|
|
5
|
+
import { MediaMatcher } from '@angular/cdk/layout';
|
|
5
6
|
import * as i1 from '@cute-widgets/base/collapse';
|
|
6
|
-
import {
|
|
7
|
+
import { CuteCollapseBase } from '@cute-widgets/base/collapse';
|
|
7
8
|
import { CuteNav } from '@cute-widgets/base/core/nav';
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
declare class CuteNavbarCollapse extends CuteCollapseBase {
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CuteNavbarCollapse, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CuteNavbarCollapse, "cute-navbar-collapse", ["cuteNavbarCollapse"], {}, {}, never, ["*"], true, never>;
|
|
13
|
+
}
|
|
9
14
|
|
|
10
15
|
/**
|
|
11
16
|
* Collapsible navbar content.
|
|
12
17
|
*/
|
|
13
|
-
declare class CuteNavbarContent extends
|
|
14
|
-
private
|
|
18
|
+
declare class CuteNavbarContent extends CuteLayoutControl implements Expandable, AfterViewChecked {
|
|
19
|
+
private _selfSubscriptions;
|
|
15
20
|
protected _navbar: _cute_widgets_base_navbar.CuteNavbar;
|
|
21
|
+
protected mediaMatcher: MediaMatcher;
|
|
16
22
|
protected _breakpointMatches: i0.WritableSignal<boolean>;
|
|
23
|
+
protected _collapse: i0.Signal<CuteNavbarCollapse>;
|
|
24
|
+
private readonly _navbarMediaQueries;
|
|
17
25
|
constructor();
|
|
18
|
-
|
|
26
|
+
get expanded(): boolean;
|
|
27
|
+
private get mediaMatches();
|
|
28
|
+
protected generateId(): string;
|
|
29
|
+
open(): void;
|
|
30
|
+
close(): void;
|
|
31
|
+
toggle(): void;
|
|
32
|
+
ngOnInit(): void;
|
|
33
|
+
ngAfterViewChecked(): void;
|
|
19
34
|
ngOnDestroy(): void;
|
|
20
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuteNavbarContent, never>;
|
|
21
36
|
static ɵcmp: i0.ɵɵComponentDeclaration<CuteNavbarContent, "cute-navbar-content", ["cuteNavbarContent"], {}, {}, never, ["*"], true, never>;
|
|
@@ -29,13 +44,13 @@ declare const CUTE_NAVBAR: InjectionToken<CuteNavbar>;
|
|
|
29
44
|
* Includes support for branding, navigation, and more.
|
|
30
45
|
*/
|
|
31
46
|
declare class CuteNavbar extends CuteLayoutControl {
|
|
47
|
+
private _expanded;
|
|
32
48
|
navContent: QueryList<CuteNavbarContent> | undefined;
|
|
33
49
|
/** Placement `navbar` in non-static position, if the `position` differs from the default. */
|
|
34
50
|
position: NavbarPosition | undefined;
|
|
35
51
|
/** Event emitted when the navbar's content expansion status changed. */
|
|
36
52
|
expansionChange: EventEmitter<boolean>;
|
|
37
53
|
readonly contentExpanded: i0.Signal<boolean>;
|
|
38
|
-
private _expanded;
|
|
39
54
|
get classBinding(): string;
|
|
40
55
|
constructor();
|
|
41
56
|
protected generateId(): string;
|
|
@@ -52,6 +67,9 @@ declare class CuteNavbarBrand {
|
|
|
52
67
|
static ɵdir: i0.ɵɵDirectiveDeclaration<CuteNavbarBrand, "[cuteNavbarBrand], [cute-navbar-brand]", ["cuteNavbarBrand"], {}, {}, never, never, true, never>;
|
|
53
68
|
}
|
|
54
69
|
|
|
70
|
+
/**
|
|
71
|
+
* A full-height and lightweight navigation container for including other navigation components.
|
|
72
|
+
*/
|
|
55
73
|
declare class CuteNavbarNav extends CuteNav {
|
|
56
74
|
/**
|
|
57
75
|
* Enable/disable vertical scrolling within the toggleable contents of a collapsed `navbar`.
|
|
@@ -76,6 +94,9 @@ declare class CuteNavbarText {
|
|
|
76
94
|
static ɵdir: i0.ɵɵDirectiveDeclaration<CuteNavbarText, "cute-navbar-text, [cuteNavbarText], [cute-navbar-text]", ["cuteNavbarText"], {}, {}, never, never, true, never>;
|
|
77
95
|
}
|
|
78
96
|
|
|
97
|
+
/**
|
|
98
|
+
* A trigger element for expand/collapse the `cute-navbar-content`.
|
|
99
|
+
*/
|
|
79
100
|
declare class CuteNavbarToggler {
|
|
80
101
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuteNavbarToggler, never>;
|
|
81
102
|
static ɵdir: i0.ɵɵDirectiveDeclaration<CuteNavbarToggler, "[cuteNavbarToggler], [cute-navbar-toggler]", ["cuteNavbarToggler"], {}, {}, never, never, true, [{ directive: typeof i1.CuteCollapseTrigger; inputs: { "cuteCollapseTriggerFor": "cuteNavbarTogglerFor"; }; outputs: {}; }]>;
|
|
@@ -83,7 +104,7 @@ declare class CuteNavbarToggler {
|
|
|
83
104
|
|
|
84
105
|
declare class CuteNavbarModule {
|
|
85
106
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuteNavbarModule, never>;
|
|
86
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<CuteNavbarModule, never, [typeof i1
|
|
107
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CuteNavbarModule, never, [typeof i1.CuteCollapseModule, typeof CuteNavbar, typeof CuteNavbarBrand, typeof CuteNavbarContent, typeof CuteNavbarNav, typeof CuteNavbarText, typeof CuteNavbarToggler], [typeof CuteNavbar, typeof CuteNavbarBrand, typeof CuteNavbarContent, typeof CuteNavbarNav, typeof CuteNavbarText, typeof CuteNavbarToggler]>;
|
|
87
108
|
static ɵinj: i0.ɵɵInjectorDeclaration<CuteNavbarModule>;
|
|
88
109
|
}
|
|
89
110
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cute-widgets/base",
|
|
3
|
-
"version": "20.0.
|
|
3
|
+
"version": "20.0.5",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"bugs": {
|
|
10
10
|
"url": "https://github.com/cute-widgets/base/issues"
|
|
11
11
|
},
|
|
12
|
+
"homepage": "https://cutewidgets.com",
|
|
12
13
|
"description": "Angular Material components styled with Bootstrap",
|
|
13
14
|
"author": "ALEXANDER STRELKOV <alv.strelkov@gmail.com>",
|
|
14
15
|
"keywords": [
|
|
@@ -226,14 +227,14 @@
|
|
|
226
227
|
"types": "./core/layout/index.d.ts",
|
|
227
228
|
"default": "./fesm2022/cute-widgets-base-core-layout.mjs"
|
|
228
229
|
},
|
|
229
|
-
"./core/nav": {
|
|
230
|
-
"types": "./core/nav/index.d.ts",
|
|
231
|
-
"default": "./fesm2022/cute-widgets-base-core-nav.mjs"
|
|
232
|
-
},
|
|
233
230
|
"./core/line": {
|
|
234
231
|
"types": "./core/line/index.d.ts",
|
|
235
232
|
"default": "./fesm2022/cute-widgets-base-core-line.mjs"
|
|
236
233
|
},
|
|
234
|
+
"./core/nav": {
|
|
235
|
+
"types": "./core/nav/index.d.ts",
|
|
236
|
+
"default": "./fesm2022/cute-widgets-base-core-nav.mjs"
|
|
237
|
+
},
|
|
237
238
|
"./core/observers": {
|
|
238
239
|
"types": "./core/observers/index.d.ts",
|
|
239
240
|
"default": "./fesm2022/cute-widgets-base-core-observers.mjs"
|
package/paginator/index.d.ts
CHANGED
|
@@ -39,18 +39,6 @@ declare class CutePaginatorIntl {
|
|
|
39
39
|
static ɵprov: i0.ɵɵInjectableDeclaration<CutePaginatorIntl>;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
/**
|
|
43
|
-
* @license Apache-2.0
|
|
44
|
-
*
|
|
45
|
-
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
46
|
-
*
|
|
47
|
-
* You may not use this file except in compliance with the License
|
|
48
|
-
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
49
|
-
*
|
|
50
|
-
* This code is a modification of the `@angular/material` original
|
|
51
|
-
* code licensed under MIT-style License (https://angular.dev/license).
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
42
|
/** Object that can used to configure the underlying `CuteSelect` inside a `CutePaginator`. */
|
|
55
43
|
interface CutePaginatorSelectConfig {
|
|
56
44
|
/** Whether to center the active option over the trigger. */
|
|
@@ -102,7 +90,7 @@ declare class CutePaginator extends CuteFocusableControl implements AfterViewChe
|
|
|
102
90
|
/** If set, styles the "page size" form field with the designated style. */
|
|
103
91
|
/** ID for the DOM node containing the pagination's items per-page label. */
|
|
104
92
|
protected readonly _pageSizeLabelId: string;
|
|
105
|
-
protected hideActive: boolean
|
|
93
|
+
protected hideActive: i0.WritableSignal<boolean>;
|
|
106
94
|
/** The zero-based page index of the displayed list of items. Defaulted to 0. */
|
|
107
95
|
get pageIndex(): number;
|
|
108
96
|
set pageIndex(value: number);
|
|
@@ -129,9 +117,9 @@ declare class CutePaginator extends CuteFocusableControl implements AfterViewChe
|
|
|
129
117
|
hideBorders: boolean;
|
|
130
118
|
/** Style of the pagination's middle section. Note that previous/next buttons are always shown. */
|
|
131
119
|
middleSectionStyle: 'pages' | '5-pages' | 'range' | 'none';
|
|
132
|
-
/** Changes the alignment of the pagination sections in the parent container */
|
|
133
|
-
alignment: 'start' | 'end' | 'center' | 'between';
|
|
134
|
-
/** Changes the pagination's size to smaller or larger */
|
|
120
|
+
/** Changes the alignment of the pagination sections in the parent container. */
|
|
121
|
+
alignment: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly' | undefined;
|
|
122
|
+
/** Changes the pagination's size to smaller or larger. */
|
|
135
123
|
magnitude: RelativeSize | undefined;
|
|
136
124
|
/** Used to configure the underlying `CuteSelect` inside the paginator. */
|
|
137
125
|
selectConfig: CutePaginatorSelectConfig;
|
|
@@ -145,7 +133,8 @@ declare class CutePaginator extends CuteFocusableControl implements AfterViewChe
|
|
|
145
133
|
ngOnChanges(changes: SimpleChanges): void;
|
|
146
134
|
ngAfterViewChecked(): void;
|
|
147
135
|
ngOnDestroy(): void;
|
|
148
|
-
protected
|
|
136
|
+
protected onPointerDown(event: MouseEvent): void;
|
|
137
|
+
protected onPointerUp(event: MouseEvent): void;
|
|
149
138
|
/** Whether the specified index is the `active` page of the paginator */
|
|
150
139
|
protected isActivePage(index: number): boolean;
|
|
151
140
|
private _updateFirstLastVisibleIndexes;
|
package/radio/index.d.ts
CHANGED
|
@@ -39,7 +39,6 @@ declare const CUTE_RADIO_DEFAULT_OPTIONS: InjectionToken<CuteRadioDefaultOptions
|
|
|
39
39
|
declare class CuteRadioButton extends CuteInputControl implements DoCheck {
|
|
40
40
|
private _ngZone;
|
|
41
41
|
private _injector;
|
|
42
|
-
private _destroyRef;
|
|
43
42
|
private readonly _radioDispatcher;
|
|
44
43
|
private _defaultOptions;
|
|
45
44
|
private _cleanupClick;
|
package/sidenav/index.d.ts
CHANGED
|
@@ -37,13 +37,12 @@ declare const CUTE_DRAWER_DEFAULT_AUTOSIZE: InjectionToken<boolean>;
|
|
|
37
37
|
*/
|
|
38
38
|
declare const CUTE_DRAWER_CONTAINER: InjectionToken<unknown>;
|
|
39
39
|
/**
|
|
40
|
-
* The main content of the 'cute-drawer' component
|
|
40
|
+
* The main content of the 'cute-drawer' component.
|
|
41
41
|
*/
|
|
42
42
|
declare class CuteDrawerContent extends CdkScrollable implements AfterContentInit {
|
|
43
43
|
private _platform;
|
|
44
44
|
private _changeDetectorRef;
|
|
45
45
|
_container: CuteDrawerContainer;
|
|
46
|
-
protected generateId(): string;
|
|
47
46
|
constructor(...args: unknown[]);
|
|
48
47
|
ngAfterContentInit(): void;
|
|
49
48
|
/** Determines whether the content element should be hidden from the user. */
|