@ethlete/cdk 4.30.0 → 4.32.0
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 +14 -0
- package/esm2022/lib/components/overlay/components/overlay/types/overlay.types.mjs +1 -1
- package/esm2022/lib/components/overlay/components/overlay/utils/index.mjs +2 -1
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-handler.mjs +46 -0
- package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +6 -5
- package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
- package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +4 -2
- package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +4 -3
- package/fesm2022/ethlete-cdk.mjs +686 -641
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/overlay/components/overlay/types/overlay.types.d.ts +9 -0
- package/lib/components/overlay/components/overlay/utils/index.d.ts +1 -0
- package/lib/components/overlay/components/overlay/utils/overlay-handler.d.ts +27 -0
- package/lib/components/tabs/components/inline-tabs/inline-tabs.component.d.ts +3 -1
- package/lib/components/tabs/utils/paginated-tab-header.directive.d.ts +3 -2
- package/package.json +1 -1
- package/src/lib/styles/active-tab-underline.css +13 -0
|
@@ -2,6 +2,7 @@ import { Direction } from '@angular/cdk/bidi';
|
|
|
2
2
|
import { PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay';
|
|
3
3
|
import { Injector, StaticProvider, ViewContainerRef } from '@angular/core';
|
|
4
4
|
import { Breakpoint } from '@ethlete/core';
|
|
5
|
+
import { EmptyObject } from '@ethlete/query';
|
|
5
6
|
/** Options for where to set focus to automatically on overlay open */
|
|
6
7
|
export type OverlayAutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';
|
|
7
8
|
/** Valid ARIA roles for a overlay element. */
|
|
@@ -194,3 +195,11 @@ export interface OverlayConfig<D = unknown> {
|
|
|
194
195
|
*/
|
|
195
196
|
origin?: HTMLElement | MouseEvent | TouchEvent | KeyboardEvent | PointerEvent;
|
|
196
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Configuration utility type for overlays.
|
|
200
|
+
* To be used inside your overlay opener method as a param to be passed to the overlay.open method.
|
|
201
|
+
*/
|
|
202
|
+
export type OverlayConsumerConfig<D = void> = Omit<OverlayConfig<D>, 'positions' | 'data'> & MaybeOverlayConsumerConfigWithData<D>;
|
|
203
|
+
export type MaybeOverlayConsumerConfigWithData<D> = D extends void ? EmptyObject : {
|
|
204
|
+
data: D;
|
|
205
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ComponentType } from '@angular/cdk/overlay';
|
|
2
|
+
import { TemplateRef } from '@angular/core';
|
|
3
|
+
import { OverlayBreakpointConfigEntry, OverlayConfig, OverlayConsumerConfig } from '../types';
|
|
4
|
+
import { OverlayPositionBuilder } from './overlay-position-builder';
|
|
5
|
+
import { OverlayRef } from './overlay-ref';
|
|
6
|
+
export type CreateOverlayHandlerConfig<T, D = unknown, R = unknown> = Omit<OverlayConfig<D>, 'positions'> & {
|
|
7
|
+
/** The overlay component. Use either this or the `template` property */
|
|
8
|
+
component?: ComponentType<T>;
|
|
9
|
+
/** The overlay template. Use either this or the `component` property */
|
|
10
|
+
template?: TemplateRef<T>;
|
|
11
|
+
/** The overlay positions using the position builder provided via argument */
|
|
12
|
+
positions: (builder: OverlayPositionBuilder) => OverlayBreakpointConfigEntry[];
|
|
13
|
+
};
|
|
14
|
+
export type OverlayHandler<T, D = unknown, R = unknown> = {
|
|
15
|
+
/** Open the overlay using a combination of the given configs */
|
|
16
|
+
open: (config?: OverlayConsumerConfig<D>) => OverlayRef<T, R>;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the typed overlay ref.
|
|
19
|
+
* @throws Error if the overlay ref gets accessed outside of the overlay component or templateRef
|
|
20
|
+
*/
|
|
21
|
+
getOverlayRef: () => OverlayRef<T, R>;
|
|
22
|
+
};
|
|
23
|
+
export type CreateOverlayHandlerInnerConfig<R = unknown> = {
|
|
24
|
+
/** A callback function to be executed once the overlay has been closed */
|
|
25
|
+
afterClosed?: (result: R | null) => void;
|
|
26
|
+
};
|
|
27
|
+
export declare const createOverlayHandler: <T, D = unknown, R = unknown>(rootConfig: CreateOverlayHandlerConfig<T, D, R>) => (innerConfig?: CreateOverlayHandlerInnerConfig<R>) => OverlayHandler<T, D, R>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FocusOrigin } from '@angular/cdk/a11y';
|
|
2
2
|
import { AfterContentChecked, AfterContentInit, ElementRef, EventEmitter, OnDestroy, TrackByFunction } from '@angular/core';
|
|
3
3
|
import { NgClassType, TypedQueryList } from '@ethlete/core';
|
|
4
|
+
import { ScrollableDirection } from '../../../scrollable/components/scrollable';
|
|
4
5
|
import { InlineTabComponent } from '../../partials/inline-tabs/inline-tab';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export declare class InlineTabChangeEvent {
|
|
@@ -23,6 +24,7 @@ export declare class InlineTabsComponent implements AfterContentInit, AfterConte
|
|
|
23
24
|
renderMasks: boolean;
|
|
24
25
|
renderButtons: boolean;
|
|
25
26
|
renderScrollbars: boolean;
|
|
27
|
+
direction: import("@angular/core").InputSignal<ScrollableDirection>;
|
|
26
28
|
readonly selectedIndexChange: EventEmitter<number>;
|
|
27
29
|
readonly focusChange: EventEmitter<InlineTabChangeEvent>;
|
|
28
30
|
readonly selectedTabChange: EventEmitter<InlineTabChangeEvent>;
|
|
@@ -53,7 +55,7 @@ export declare class InlineTabsComponent implements AfterContentInit, AfterConte
|
|
|
53
55
|
private _subscribeToTabLabels;
|
|
54
56
|
private _createChangeEvent;
|
|
55
57
|
static ɵfac: i0.ɵɵFactoryDeclaration<InlineTabsComponent, never>;
|
|
56
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<InlineTabsComponent, "et-inline-tabs", never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; }; "contentTabIndex": { "alias": "contentTabIndex"; "required": false; }; "preserveContent": { "alias": "preserveContent"; "required": false; }; "tabHeaderClasses": { "alias": "tabHeaderClasses"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "scrollableClass": { "alias": "scrollableClass"; "required": false; }; "renderMasks": { "alias": "renderMasks"; "required": false; }; "renderButtons": { "alias": "renderButtons"; "required": false; }; "renderScrollbars": { "alias": "renderScrollbars"; "required": false; }; }, { "selectedIndexChange": "selectedIndexChange"; "focusChange": "focusChange"; "selectedTabChange": "selectedTabChange"; }, ["_allTabs"], never, true, never>;
|
|
58
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<InlineTabsComponent, "et-inline-tabs", never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; }; "contentTabIndex": { "alias": "contentTabIndex"; "required": false; }; "preserveContent": { "alias": "preserveContent"; "required": false; }; "tabHeaderClasses": { "alias": "tabHeaderClasses"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "scrollableClass": { "alias": "scrollableClass"; "required": false; }; "renderMasks": { "alias": "renderMasks"; "required": false; }; "renderButtons": { "alias": "renderButtons"; "required": false; }; "renderScrollbars": { "alias": "renderScrollbars"; "required": false; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; }, { "selectedIndexChange": "selectedIndexChange"; "focusChange": "focusChange"; "selectedTabChange": "selectedTabChange"; }, ["_allTabs"], never, true, never>;
|
|
57
59
|
static ngAcceptInputType_selectedIndex: unknown;
|
|
58
60
|
static ngAcceptInputType_contentTabIndex: unknown;
|
|
59
61
|
static ngAcceptInputType_preserveContent: unknown;
|
|
@@ -2,7 +2,7 @@ import { FocusableOption } from '@angular/cdk/a11y';
|
|
|
2
2
|
import { Direction } from '@angular/cdk/bidi';
|
|
3
3
|
import { AfterContentChecked, AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
|
|
4
4
|
import { NgClassType, TypedQueryList } from '@ethlete/core';
|
|
5
|
-
import { ScrollableComponent } from '../../scrollable/components/scrollable';
|
|
5
|
+
import { ScrollableComponent, ScrollableDirection } from '../../scrollable/components/scrollable';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export type TabPaginationScrollDirection = 'after' | 'before';
|
|
8
8
|
export type PaginatedTabHeaderItem = FocusableOption & {
|
|
@@ -36,6 +36,7 @@ export declare abstract class PaginatedTabHeaderDirective implements AfterConten
|
|
|
36
36
|
renderMasks: boolean;
|
|
37
37
|
renderButtons: boolean;
|
|
38
38
|
renderScrollbars: boolean;
|
|
39
|
+
direction: import("@angular/core").InputSignal<ScrollableDirection>;
|
|
39
40
|
readonly selectFocusedIndex: EventEmitter<number>;
|
|
40
41
|
readonly indexFocused: EventEmitter<number>;
|
|
41
42
|
constructor();
|
|
@@ -66,7 +67,7 @@ export declare abstract class PaginatedTabHeaderDirective implements AfterConten
|
|
|
66
67
|
_handlePaginatorPress(direction: TabPaginationScrollDirection, mouseEvent?: MouseEvent): void;
|
|
67
68
|
private _scrollTo;
|
|
68
69
|
static ɵfac: i0.ɵɵFactoryDeclaration<PaginatedTabHeaderDirective, never>;
|
|
69
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<PaginatedTabHeaderDirective, never, never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "scrollableClass": { "alias": "scrollableClass"; "required": false; }; "renderMasks": { "alias": "renderMasks"; "required": false; }; "renderButtons": { "alias": "renderButtons"; "required": false; }; "renderScrollbars": { "alias": "renderScrollbars"; "required": false; }; }, { "selectFocusedIndex": "selectFocusedIndex"; "indexFocused": "indexFocused"; }, never, never, false, never>;
|
|
70
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<PaginatedTabHeaderDirective, never, never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "scrollableClass": { "alias": "scrollableClass"; "required": false; }; "renderMasks": { "alias": "renderMasks"; "required": false; }; "renderButtons": { "alias": "renderButtons"; "required": false; }; "renderScrollbars": { "alias": "renderScrollbars"; "required": false; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; }, { "selectFocusedIndex": "selectFocusedIndex"; "indexFocused": "indexFocused"; }, never, never, false, never>;
|
|
70
71
|
static ngAcceptInputType_renderMasks: unknown;
|
|
71
72
|
static ngAcceptInputType_renderButtons: unknown;
|
|
72
73
|
static ngAcceptInputType_renderScrollbars: unknown;
|
package/package.json
CHANGED
|
@@ -48,3 +48,16 @@
|
|
|
48
48
|
.et-tab-content {
|
|
49
49
|
position: relative;
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
.et-scrollable[direction='vertical'] {
|
|
53
|
+
.et-active-tab-underline {
|
|
54
|
+
justify-content: flex-start;
|
|
55
|
+
|
|
56
|
+
.et-active-tab-underline__content--underline {
|
|
57
|
+
border-top: unset;
|
|
58
|
+
width: unset;
|
|
59
|
+
height: 100%;
|
|
60
|
+
border-right: var(--et-active-tab-underline-height) solid var(--et-active-tab-underline-color);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|