@ethlete/cdk 2.8.1 → 2.9.1
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 +18 -0
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -7
- package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/context-menu-trigger.mjs +163 -0
- package/esm2022/lib/components/overlay/components/menu/menu-aim.mjs +140 -0
- package/esm2022/lib/components/overlay/components/menu/menu-bar.mjs +113 -0
- package/esm2022/lib/components/overlay/components/menu/menu-base.mjs +154 -0
- package/esm2022/lib/components/overlay/components/menu/menu-errors.mjs +7 -0
- package/esm2022/lib/components/overlay/components/menu/menu-group.mjs +26 -0
- package/esm2022/lib/components/overlay/components/menu/menu-interface.mjs +3 -0
- package/esm2022/lib/components/overlay/components/menu/menu-item-checkbox.mjs +39 -0
- package/esm2022/lib/components/overlay/components/menu/menu-item-radio.mjs +56 -0
- package/esm2022/lib/components/overlay/components/menu/menu-item-selectable.mjs +32 -0
- package/esm2022/lib/components/overlay/components/menu/menu-item.mjs +210 -0
- package/esm2022/lib/components/overlay/components/menu/menu-module.mjs +52 -0
- package/esm2022/lib/components/overlay/components/menu/menu-stack.mjs +101 -0
- package/esm2022/lib/components/overlay/components/menu/menu-trigger-base.mjs +77 -0
- package/esm2022/lib/components/overlay/components/menu/menu-trigger.mjs +240 -0
- package/esm2022/lib/components/overlay/components/menu/menu.mjs +116 -0
- package/esm2022/lib/components/overlay/components/menu/pointer-focus-tracker.mjs +26 -0
- package/esm2022/lib/components/overlay/components/menu/public-api.mjs +17 -0
- package/esm2022/lib/components/overlay/components/public-api.mjs +2 -1
- package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +5 -5
- package/fesm2022/ethlete-cdk.mjs +1580 -180
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/input-field/input-field.component.d.ts +1 -1
- package/lib/components/forms/components/radio/components/radio-group/radio-group.component.d.ts +1 -1
- package/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.d.ts +1 -1
- package/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.d.ts +1 -1
- package/lib/components/overlay/components/menu/context-menu-trigger.d.ts +33 -0
- package/lib/components/overlay/components/menu/menu-aim.d.ts +34 -0
- package/lib/components/overlay/components/menu/menu-bar.d.ts +13 -0
- package/lib/components/overlay/components/menu/menu-base.d.ts +41 -0
- package/lib/components/overlay/components/menu/menu-errors.d.ts +2 -0
- package/lib/components/overlay/components/menu/menu-group.d.ts +5 -0
- package/lib/components/overlay/components/menu/menu-interface.d.ts +11 -0
- package/lib/components/overlay/components/menu/menu-item-checkbox.d.ts +9 -0
- package/lib/components/overlay/components/menu/menu-item-radio.d.ts +16 -0
- package/lib/components/overlay/components/menu/menu-item-selectable.d.ts +11 -0
- package/lib/components/overlay/components/menu/menu-item.d.ts +52 -0
- package/lib/components/overlay/components/menu/menu-module.d.ts +16 -0
- package/lib/components/overlay/components/menu/menu-stack.d.ts +54 -0
- package/lib/components/overlay/components/menu/menu-trigger-base.d.ts +33 -0
- package/lib/components/overlay/components/menu/menu-trigger.d.ts +34 -0
- package/lib/components/overlay/components/menu/menu.d.ts +17 -0
- package/lib/components/overlay/components/menu/pointer-focus-tracker.d.ts +17 -0
- package/lib/components/overlay/components/menu/public-api.d.ts +16 -0
- package/lib/components/overlay/components/public-api.d.ts +1 -0
- package/package.json +2 -2
package/fesm2022/ethlete-cdk.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as i1 from '@angular/cdk/portal';
|
|
2
|
-
import { CdkPortal, PortalModule, ComponentPortal,
|
|
2
|
+
import { CdkPortal, PortalModule, ComponentPortal, TemplatePortal, CdkPortalOutlet } from '@angular/cdk/portal';
|
|
3
3
|
import { AsyncPipe, NgIf, NgClass, NgTemplateOutlet, NgForOf, JsonPipe, NgFor, DOCUMENT } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, InjectionToken, booleanAttribute, Input, ContentChild, ContentChildren, inject, ElementRef, Injector, HostBinding, isDevMode, Injectable, TemplateRef, ViewContainerRef, forwardRef, ViewChild, numberAttribute, EventEmitter, Output, Optional, Inject, SkipSelf, HostListener, ChangeDetectorRef, Renderer2, Attribute
|
|
5
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, InjectionToken, booleanAttribute, Input, ContentChild, ContentChildren, inject, ElementRef, Injector, HostBinding, isDevMode, Injectable, TemplateRef, ViewContainerRef, forwardRef, ViewChild, numberAttribute, EventEmitter, Output, Optional, Inject, SkipSelf, HostListener, NgZone, NgModule, ChangeDetectorRef, Renderer2, Attribute } from '@angular/core';
|
|
6
6
|
import * as i1$1 from '@ethlete/core';
|
|
7
7
|
import { LetDirective, createDestroy, ScrollObserverFirstElementDirective, ScrollObserverLastElementDirective, Memo, createReactiveBindings, IS_EMAIL, MUST_MATCH, IS_ARRAY_NOT_EMPTY, equal, ResizeObserverService, createFlipAnimation, ClickOutsideDirective, ANIMATED_LIFECYCLE_TOKEN, AnimatedLifecycleDirective, RuntimeError, AnimatedOverlayDirective, SelectionModel, ActiveSelectionModel, ObserveContentDirective, clamp, nextFrame, DELAYABLE_TOKEN, ObserveResizeDirective, SmartBlockScrollStrategy, RouterStateService, ClickObserverService, FocusVisibleService, ViewportService, scrollToElement, getElementVisibleStates, IS_ACTIVE_ELEMENT, IS_ELEMENT, CursorDragScrollDirective, ObserveScrollStateDirective, IsElementDirective, IsActiveElementDirective, ScrollObserverIgnoreTargetDirective, TypedQueryList } from '@ethlete/core';
|
|
8
|
-
import { BehaviorSubject, startWith, map, switchMap, combineLatest, pairwise, tap, takeUntil, skip, of, Subject, debounceTime, filter, distinctUntilChanged, withLatestFrom, skipWhile, catchError, throwError, firstValueFrom, fromEvent, merge, take, timer, skipUntil, defer, Subscription, Observable } from 'rxjs';
|
|
8
|
+
import { BehaviorSubject, startWith, map, switchMap, combineLatest, pairwise, tap, takeUntil, skip, of, Subject, debounceTime, filter, distinctUntilChanged, withLatestFrom, skipWhile, catchError, throwError, firstValueFrom, fromEvent, merge, take, timer, skipUntil, defer, partition, Subscription, Observable } from 'rxjs';
|
|
9
9
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
10
10
|
import { __decorate, __metadata } from 'tslib';
|
|
11
11
|
import { extractQuery, isQueryStateLoading, isQueryStateSuccess, isQueryStateFailure, QueryDirective } from '@ethlete/query';
|
|
12
12
|
import * as i1$2 from '@angular/cdk/a11y';
|
|
13
|
-
import { FocusMonitor, LiveAnnouncer,
|
|
13
|
+
import { FocusMonitor, LiveAnnouncer, InputModalityDetector, FocusKeyManager, AriaDescriber, A11yModule } from '@angular/cdk/a11y';
|
|
14
14
|
import { AutofillMonitor } from '@angular/cdk/text-field';
|
|
15
15
|
import { FormControl, NgControl, Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
16
16
|
import { ENTER, ESCAPE, TAB as TAB$1, A, DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, SPACE, hasModifierKey, PAGE_DOWN, PAGE_UP, END, HOME } from '@angular/cdk/keycodes';
|
|
@@ -18,17 +18,18 @@ import * as i1$4 from '@angular/cdk/bidi';
|
|
|
18
18
|
import { Directionality } from '@angular/cdk/bidi';
|
|
19
19
|
import { CdkDialogContainer, Dialog, DialogConfig, DIALOG_SCROLL_STRATEGY_PROVIDER as DIALOG_SCROLL_STRATEGY_PROVIDER$1 } from '@angular/cdk/dialog';
|
|
20
20
|
import * as i2 from '@angular/cdk/overlay';
|
|
21
|
-
import { ViewportRuler } from '@angular/cdk/overlay';
|
|
21
|
+
import { ViewportRuler, STANDARD_DROPDOWN_BELOW_POSITIONS, Overlay, OverlayConfig, STANDARD_DROPDOWN_ADJACENT_POSITIONS, OverlayModule } from '@angular/cdk/overlay';
|
|
22
|
+
import { coerceBooleanProperty, _isNumberValue } from '@angular/cdk/coercion';
|
|
23
|
+
import * as i2$1 from '@angular/cdk/platform';
|
|
24
|
+
import { _getEventTarget } from '@angular/cdk/platform';
|
|
25
|
+
import { startWith as startWith$1, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, skip as skip$1, filter as filter$1, mergeMap, mapTo, mergeAll, switchMap as switchMap$1, take as take$1 } from 'rxjs/operators';
|
|
26
|
+
import { UniqueSelectionDispatcher, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy, DataSource } from '@angular/cdk/collections';
|
|
22
27
|
import { Meta, Title } from '@angular/platform-browser';
|
|
23
28
|
import { Router, NavigationEnd, RouterLink, RouterLinkActive } from '@angular/router';
|
|
24
|
-
import { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy, DataSource } from '@angular/cdk/collections';
|
|
25
|
-
import * as i2$1 from '@angular/cdk/platform';
|
|
26
29
|
import * as i3 from '@angular/cdk/scrolling';
|
|
27
30
|
import { CdkScrollableModule, ViewportRuler as ViewportRuler$1 } from '@angular/cdk/scrolling';
|
|
28
31
|
import * as i1$3 from '@angular/cdk/table';
|
|
29
32
|
import { CdkCell, CdkCellDef, CdkColumnDef, CDK_TABLE, CdkFooterCell, CdkFooterCellDef, CdkHeaderCell, CdkHeaderCellDef, CdkTextColumn, TEXT_COLUMN_OPTIONS, CdkFooterRow, CdkTableModule, CDK_ROW_TEMPLATE, CdkFooterRowDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRow, CdkRowDef, CdkTable, _COALESCED_STYLE_SCHEDULER, STICKY_POSITIONING_LISTENER, _CoalescedStyleScheduler } from '@angular/cdk/table';
|
|
30
|
-
import { _isNumberValue } from '@angular/cdk/coercion';
|
|
31
|
-
import { takeUntil as takeUntil$1, take as take$1 } from 'rxjs/operators';
|
|
32
33
|
|
|
33
34
|
class ChevronIconComponent {
|
|
34
35
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ChevronIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -2308,11 +2309,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
2308
2309
|
|
|
2309
2310
|
class CheckboxGroupComponent {
|
|
2310
2311
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CheckboxGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2311
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: CheckboxGroupComponent, isStandalone: true, selector: "et-checkbox-group", host: { classAttribute: "et-form-group et-checkbox-group" }, hostDirectives: [{ directive: CheckboxGroupDirective }, { directive: StaticFormGroupDirective }], ngImport: i0, template: ` <ng-content
|
|
2312
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: CheckboxGroupComponent, isStandalone: true, selector: "et-checkbox-group", host: { classAttribute: "et-form-group et-checkbox-group" }, hostDirectives: [{ directive: CheckboxGroupDirective }, { directive: StaticFormGroupDirective }], ngImport: i0, template: ` <ng-content /> `, isInline: true, styles: [":where(.et-checkbox-group){display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2312
2313
|
}
|
|
2313
2314
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CheckboxGroupComponent, decorators: [{
|
|
2314
2315
|
type: Component,
|
|
2315
|
-
args: [{ selector: 'et-checkbox-group', template: ` <ng-content
|
|
2316
|
+
args: [{ selector: 'et-checkbox-group', template: ` <ng-content /> `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
2316
2317
|
class: 'et-form-group et-checkbox-group',
|
|
2317
2318
|
}, hostDirectives: [CheckboxGroupDirective, StaticFormGroupDirective], styles: [":where(.et-checkbox-group){display:block}\n"] }]
|
|
2318
2319
|
}] });
|
|
@@ -2761,9 +2762,7 @@ class InputFieldComponent extends DecoratedFormFieldBase {
|
|
|
2761
2762
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: InputFieldComponent, isStandalone: true, selector: "et-input-field", host: { classAttribute: "et-form-field et-input-field" }, usesInheritance: true, hostDirectives: [{ directive: StaticFormFieldDirective }, { directive: WriteableInputDirective }, { directive: i0.forwardRef(function () { return DynamicFormFieldDirective; }), inputs: ["hideErrorMessage", "hideErrorMessage"] }], ngImport: i0, template: `
|
|
2762
2763
|
<ng-content select="et-label" />
|
|
2763
2764
|
<div class="et-input-field-input">
|
|
2764
|
-
<ng-content
|
|
2765
|
-
select="et-number-input, et-text-input, et-email-input, et-password-input, et-search-input, et-textarea-input"
|
|
2766
|
-
/>
|
|
2765
|
+
<ng-content />
|
|
2767
2766
|
</div>
|
|
2768
2767
|
<et-error [errors]="inputState.errors$ | async" />
|
|
2769
2768
|
`, isInline: true, dependencies: [{ kind: "component", type: ErrorComponent, selector: "et-error", inputs: ["errors"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -2775,9 +2774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
2775
2774
|
template: `
|
|
2776
2775
|
<ng-content select="et-label" />
|
|
2777
2776
|
<div class="et-input-field-input">
|
|
2778
|
-
<ng-content
|
|
2779
|
-
select="et-number-input, et-text-input, et-email-input, et-password-input, et-search-input, et-textarea-input"
|
|
2780
|
-
/>
|
|
2777
|
+
<ng-content />
|
|
2781
2778
|
</div>
|
|
2782
2779
|
<et-error [errors]="inputState.errors$ | async" />
|
|
2783
2780
|
`,
|
|
@@ -3091,7 +3088,7 @@ class RadioGroupComponent {
|
|
|
3091
3088
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: RadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3092
3089
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: RadioGroupComponent, isStandalone: true, selector: "et-radio-group", host: { classAttribute: "et-form-group et-radio-group" }, hostDirectives: [{ directive: StaticFormGroupDirective }, { directive: WriteableInputDirective }, { directive: i0.forwardRef(function () { return DynamicFormGroupDirective; }), inputs: ["hideErrorMessage", "hideErrorMessage"] }, { directive: RadioGroupDirective }], ngImport: i0, template: `
|
|
3093
3090
|
<div class="et-radio-group-container">
|
|
3094
|
-
<ng-content
|
|
3091
|
+
<ng-content />
|
|
3095
3092
|
</div>
|
|
3096
3093
|
<et-error [errors]="inputState.errors$ | async" />
|
|
3097
3094
|
`, isInline: true, styles: [":where(.et-radio-group){display:block}\n"], dependencies: [{ kind: "component", type: ErrorComponent, selector: "et-error", inputs: ["errors"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -3100,7 +3097,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
3100
3097
|
type: Component,
|
|
3101
3098
|
args: [{ selector: 'et-radio-group', template: `
|
|
3102
3099
|
<div class="et-radio-group-container">
|
|
3103
|
-
<ng-content
|
|
3100
|
+
<ng-content />
|
|
3104
3101
|
</div>
|
|
3105
3102
|
<et-error [errors]="inputState.errors$ | async" />
|
|
3106
3103
|
`, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
@@ -3332,7 +3329,7 @@ class SegmentedButtonFieldComponent {
|
|
|
3332
3329
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: SegmentedButtonFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3333
3330
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: SegmentedButtonFieldComponent, isStandalone: true, selector: "et-segmented-button-field", host: { classAttribute: "et-form-field et-segmented-button-field" }, hostDirectives: [{ directive: StaticFormFieldDirective }, { directive: SegmentedButtonFieldDirective }], ngImport: i0, template: `
|
|
3334
3331
|
<div class="et-segmented-button-field-container">
|
|
3335
|
-
<ng-content
|
|
3332
|
+
<ng-content />
|
|
3336
3333
|
</div>
|
|
3337
3334
|
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3338
3335
|
}
|
|
@@ -3340,7 +3337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
3340
3337
|
type: Component,
|
|
3341
3338
|
args: [{ selector: 'et-segmented-button-field', template: `
|
|
3342
3339
|
<div class="et-segmented-button-field-container">
|
|
3343
|
-
<ng-content
|
|
3340
|
+
<ng-content />
|
|
3344
3341
|
</div>
|
|
3345
3342
|
`, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
3346
3343
|
class: 'et-form-field et-segmented-button-field',
|
|
@@ -3354,7 +3351,7 @@ class SegmentedButtonGroupComponent {
|
|
|
3354
3351
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: SegmentedButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3355
3352
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: SegmentedButtonGroupComponent, isStandalone: true, selector: "et-segmented-button-group", host: { classAttribute: "et-form-group et-segmented-button-group" }, hostDirectives: [{ directive: StaticFormGroupDirective }, { directive: WriteableInputDirective }, { directive: i0.forwardRef(function () { return DynamicFormGroupDirective; }), inputs: ["hideErrorMessage", "hideErrorMessage"] }, { directive: SegmentedButtonGroupDirective }], ngImport: i0, template: `
|
|
3356
3353
|
<div class="et-segmented-button-group-container">
|
|
3357
|
-
<ng-content
|
|
3354
|
+
<ng-content />
|
|
3358
3355
|
</div>
|
|
3359
3356
|
<et-error [errors]="inputState.errors$ | async" />
|
|
3360
3357
|
`, isInline: true, styles: [":where(.et-segmented-button-group){--et-segmented-button-group-gap: 1rem}.et-segmented-button-group-container{display:flex;gap:var(--et-segmented-button-group-gap)}\n"], dependencies: [{ kind: "component", type: ErrorComponent, selector: "et-error", inputs: ["errors"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -3363,7 +3360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
3363
3360
|
type: Component,
|
|
3364
3361
|
args: [{ selector: 'et-segmented-button-group', template: `
|
|
3365
3362
|
<div class="et-segmented-button-group-container">
|
|
3366
|
-
<ng-content
|
|
3363
|
+
<ng-content />
|
|
3367
3364
|
</div>
|
|
3368
3365
|
<et-error [errors]="inputState.errors$ | async" />
|
|
3369
3366
|
`, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
@@ -6718,193 +6715,1596 @@ const provideDialog = () => {
|
|
|
6718
6715
|
return [DialogService, DIALOG_SCROLL_STRATEGY_PROVIDER, Dialog, DIALOG_SCROLL_STRATEGY_PROVIDER$1];
|
|
6719
6716
|
};
|
|
6720
6717
|
|
|
6721
|
-
|
|
6722
|
-
const
|
|
6723
|
-
const
|
|
6724
|
-
|
|
6725
|
-
|
|
6726
|
-
|
|
6727
|
-
arrowPadding: 4,
|
|
6728
|
-
customAnimated: false,
|
|
6718
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
6719
|
+
const MENU_STACK = new InjectionToken('cdk-menu-stack');
|
|
6720
|
+
const PARENT_OR_NEW_MENU_STACK_PROVIDER = {
|
|
6721
|
+
provide: MENU_STACK,
|
|
6722
|
+
deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
|
|
6723
|
+
useFactory: (parentMenuStack) => parentMenuStack || new MenuStack(),
|
|
6729
6724
|
};
|
|
6730
|
-
|
|
6731
|
-
|
|
6732
|
-
|
|
6733
|
-
|
|
6725
|
+
const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER = (orientation) => ({
|
|
6726
|
+
provide: MENU_STACK,
|
|
6727
|
+
deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
|
|
6728
|
+
useFactory: (parentMenuStack) => parentMenuStack || MenuStack.inline(orientation),
|
|
6734
6729
|
});
|
|
6730
|
+
let nextId$3 = 0;
|
|
6731
|
+
class MenuStack {
|
|
6732
|
+
constructor() {
|
|
6733
|
+
this.id = `${nextId$3++}`;
|
|
6734
|
+
this._elements = [];
|
|
6735
|
+
this._close = new Subject();
|
|
6736
|
+
this._empty = new Subject();
|
|
6737
|
+
this._hasFocus = new Subject();
|
|
6738
|
+
this.closed = this._close;
|
|
6739
|
+
this.hasFocus = this._hasFocus.pipe(startWith$1(false), debounceTime$1(0), distinctUntilChanged$1());
|
|
6740
|
+
this.emptied = this._empty;
|
|
6741
|
+
this._inlineMenuOrientation = null;
|
|
6742
|
+
}
|
|
6743
|
+
static inline(orientation) {
|
|
6744
|
+
const stack = new MenuStack();
|
|
6745
|
+
stack._inlineMenuOrientation = orientation;
|
|
6746
|
+
return stack;
|
|
6747
|
+
}
|
|
6748
|
+
push(menu) {
|
|
6749
|
+
this._elements.push(menu);
|
|
6750
|
+
}
|
|
6751
|
+
close(lastItem, options) {
|
|
6752
|
+
const { focusNextOnEmpty, focusParentTrigger } = { ...options };
|
|
6753
|
+
if (this._elements.indexOf(lastItem) >= 0) {
|
|
6754
|
+
let poppedElement;
|
|
6755
|
+
do {
|
|
6756
|
+
poppedElement = this._elements.pop();
|
|
6757
|
+
this._close.next({ item: poppedElement, focusParentTrigger });
|
|
6758
|
+
} while (poppedElement !== lastItem);
|
|
6759
|
+
if (this.isEmpty()) {
|
|
6760
|
+
this._empty.next(focusNextOnEmpty);
|
|
6761
|
+
}
|
|
6762
|
+
}
|
|
6763
|
+
}
|
|
6764
|
+
closeSubMenuOf(lastItem) {
|
|
6765
|
+
let removed = false;
|
|
6766
|
+
if (this._elements.indexOf(lastItem) >= 0) {
|
|
6767
|
+
removed = this.peek() !== lastItem;
|
|
6768
|
+
while (this.peek() !== lastItem) {
|
|
6769
|
+
this._close.next({ item: this._elements.pop() });
|
|
6770
|
+
}
|
|
6771
|
+
}
|
|
6772
|
+
return removed;
|
|
6773
|
+
}
|
|
6774
|
+
closeAll(options) {
|
|
6775
|
+
const { focusNextOnEmpty, focusParentTrigger } = { ...options };
|
|
6776
|
+
if (!this.isEmpty()) {
|
|
6777
|
+
while (!this.isEmpty()) {
|
|
6778
|
+
const menuStackItem = this._elements.pop();
|
|
6779
|
+
if (menuStackItem) {
|
|
6780
|
+
this._close.next({ item: menuStackItem, focusParentTrigger });
|
|
6781
|
+
}
|
|
6782
|
+
}
|
|
6783
|
+
this._empty.next(focusNextOnEmpty);
|
|
6784
|
+
}
|
|
6785
|
+
}
|
|
6786
|
+
isEmpty() {
|
|
6787
|
+
return !this._elements.length;
|
|
6788
|
+
}
|
|
6789
|
+
length() {
|
|
6790
|
+
return this._elements.length;
|
|
6791
|
+
}
|
|
6792
|
+
peek() {
|
|
6793
|
+
return this._elements[this._elements.length - 1];
|
|
6794
|
+
}
|
|
6795
|
+
hasInlineMenu() {
|
|
6796
|
+
return this._inlineMenuOrientation != null;
|
|
6797
|
+
}
|
|
6798
|
+
inlineMenuOrientation() {
|
|
6799
|
+
return this._inlineMenuOrientation;
|
|
6800
|
+
}
|
|
6801
|
+
setHasFocus(hasFocus) {
|
|
6802
|
+
this._hasFocus.next(hasFocus);
|
|
6803
|
+
}
|
|
6804
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MenuStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6805
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MenuStack }); }
|
|
6806
|
+
}
|
|
6807
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MenuStack, decorators: [{
|
|
6808
|
+
type: Injectable
|
|
6809
|
+
}] });
|
|
6735
6810
|
|
|
6736
|
-
const
|
|
6737
|
-
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
|
|
6741
|
-
|
|
6742
|
-
|
|
6743
|
-
|
|
6811
|
+
const MENU_TRIGGER = new InjectionToken('cdk-menu-trigger');
|
|
6812
|
+
class CdkMenuTriggerBase {
|
|
6813
|
+
constructor() {
|
|
6814
|
+
this.injector = inject(Injector);
|
|
6815
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
6816
|
+
this.menuStack = inject(MENU_STACK);
|
|
6817
|
+
this.menuPosition = null;
|
|
6818
|
+
this.opened = new EventEmitter();
|
|
6819
|
+
this.closed = new EventEmitter();
|
|
6820
|
+
this.menuTemplateRef = null;
|
|
6821
|
+
this.overlayRef = null;
|
|
6822
|
+
this.destroyed = new Subject();
|
|
6823
|
+
this.stopOutsideClicksListener = merge(this.closed, this.destroyed);
|
|
6824
|
+
this._menuPortal = null;
|
|
6744
6825
|
}
|
|
6745
|
-
|
|
6746
|
-
this.
|
|
6826
|
+
ngOnDestroy() {
|
|
6827
|
+
this._destroyOverlay();
|
|
6828
|
+
this.destroyed.next();
|
|
6829
|
+
this.destroyed.complete();
|
|
6747
6830
|
}
|
|
6748
|
-
|
|
6749
|
-
return this.
|
|
6831
|
+
isOpen() {
|
|
6832
|
+
return !!this.overlayRef?.hasAttached();
|
|
6750
6833
|
}
|
|
6751
|
-
|
|
6752
|
-
this.
|
|
6753
|
-
|
|
6754
|
-
|
|
6755
|
-
|
|
6756
|
-
|
|
6757
|
-
|
|
6834
|
+
registerChildMenu(child) {
|
|
6835
|
+
this.childMenu = child;
|
|
6836
|
+
}
|
|
6837
|
+
getMenuContentPortal() {
|
|
6838
|
+
const hasMenuContentChanged = this.menuTemplateRef !== this._menuPortal?.templateRef;
|
|
6839
|
+
if (this.menuTemplateRef && (!this._menuPortal || hasMenuContentChanged)) {
|
|
6840
|
+
this._menuPortal = new TemplatePortal(this.menuTemplateRef, this.viewContainerRef, this.menuData, this._getChildMenuInjector());
|
|
6758
6841
|
}
|
|
6759
|
-
|
|
6760
|
-
|
|
6761
|
-
|
|
6842
|
+
return this._menuPortal;
|
|
6843
|
+
}
|
|
6844
|
+
isElementInsideMenuStack(element) {
|
|
6845
|
+
for (let el = element; el; el = el?.parentElement ?? null) {
|
|
6846
|
+
if (el.getAttribute('data-cdk-menu-stack-id') === this.menuStack.id) {
|
|
6847
|
+
return true;
|
|
6848
|
+
}
|
|
6849
|
+
}
|
|
6850
|
+
return false;
|
|
6851
|
+
}
|
|
6852
|
+
_destroyOverlay() {
|
|
6853
|
+
if (this.overlayRef) {
|
|
6854
|
+
this.overlayRef.dispose();
|
|
6855
|
+
this.overlayRef = null;
|
|
6856
|
+
}
|
|
6857
|
+
}
|
|
6858
|
+
_getChildMenuInjector() {
|
|
6859
|
+
this._childMenuInjector =
|
|
6860
|
+
this._childMenuInjector ||
|
|
6861
|
+
Injector.create({
|
|
6862
|
+
providers: [
|
|
6863
|
+
{ provide: MENU_TRIGGER, useValue: this },
|
|
6864
|
+
{ provide: MENU_STACK, useValue: this.menuStack },
|
|
6865
|
+
],
|
|
6866
|
+
parent: this.injector,
|
|
6867
|
+
});
|
|
6868
|
+
return this._childMenuInjector;
|
|
6869
|
+
}
|
|
6870
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuTriggerBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6871
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuTriggerBase, host: { properties: { "attr.aria-controls": "childMenu?.id", "attr.data-cdk-menu-stack-id": "menuStack.id" } }, ngImport: i0 }); }
|
|
6872
|
+
}
|
|
6873
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuTriggerBase, decorators: [{
|
|
6874
|
+
type: Directive,
|
|
6875
|
+
args: [{
|
|
6876
|
+
host: {
|
|
6877
|
+
'[attr.aria-controls]': 'childMenu?.id',
|
|
6878
|
+
'[attr.data-cdk-menu-stack-id]': 'menuStack.id',
|
|
6879
|
+
},
|
|
6880
|
+
}]
|
|
6881
|
+
}] });
|
|
6882
|
+
|
|
6883
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
6884
|
+
const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map((position) => {
|
|
6885
|
+
const offsetX = position.overlayX === 'start' ? 2 : -2;
|
|
6886
|
+
const offsetY = position.overlayY === 'top' ? 2 : -2;
|
|
6887
|
+
return { ...position, offsetX, offsetY };
|
|
6888
|
+
});
|
|
6889
|
+
class ContextMenuTracker {
|
|
6890
|
+
update(trigger) {
|
|
6891
|
+
if (ContextMenuTracker._openContextMenuTrigger !== trigger) {
|
|
6892
|
+
ContextMenuTracker._openContextMenuTrigger?.close();
|
|
6893
|
+
ContextMenuTracker._openContextMenuTrigger = trigger;
|
|
6762
6894
|
}
|
|
6763
6895
|
}
|
|
6896
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ContextMenuTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6897
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ContextMenuTracker, providedIn: 'root' }); }
|
|
6898
|
+
}
|
|
6899
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ContextMenuTracker, decorators: [{
|
|
6900
|
+
type: Injectable,
|
|
6901
|
+
args: [{ providedIn: 'root' }]
|
|
6902
|
+
}] });
|
|
6903
|
+
class CdkContextMenuTrigger extends CdkMenuTriggerBase {
|
|
6904
|
+
get disabled() {
|
|
6905
|
+
return this._disabled;
|
|
6906
|
+
}
|
|
6907
|
+
set disabled(value) {
|
|
6908
|
+
this._disabled = coerceBooleanProperty(value);
|
|
6909
|
+
}
|
|
6764
6910
|
constructor() {
|
|
6765
|
-
|
|
6766
|
-
this.
|
|
6767
|
-
this.
|
|
6768
|
-
this.
|
|
6769
|
-
this.
|
|
6770
|
-
this.
|
|
6771
|
-
this._clickObserverService = inject(ClickObserverService);
|
|
6772
|
-
this._listenerSubscriptions = [];
|
|
6773
|
-
this._animatedOverlay.placement = this._defaultConfig.placement;
|
|
6774
|
-
this._animatedOverlay.offset = this._defaultConfig.offset;
|
|
6775
|
-
this._animatedOverlay.arrowPadding = this._defaultConfig.arrowPadding;
|
|
6911
|
+
super();
|
|
6912
|
+
this._overlay = inject(Overlay);
|
|
6913
|
+
this._directionality = inject(Directionality, { optional: true });
|
|
6914
|
+
this._contextMenuTracker = inject(ContextMenuTracker);
|
|
6915
|
+
this._disabled = false;
|
|
6916
|
+
this._setMenuStackCloseListener();
|
|
6776
6917
|
}
|
|
6777
|
-
|
|
6778
|
-
this.
|
|
6779
|
-
.afterClosed()
|
|
6780
|
-
.pipe(tap(() => {
|
|
6781
|
-
this._removeListeners();
|
|
6782
|
-
this.toggletipClose.emit();
|
|
6783
|
-
}), takeUntil(this._destroy$))
|
|
6784
|
-
.subscribe();
|
|
6918
|
+
open(coordinates) {
|
|
6919
|
+
this._open(coordinates, false);
|
|
6785
6920
|
}
|
|
6786
|
-
|
|
6787
|
-
this.
|
|
6788
|
-
this._removeListeners();
|
|
6921
|
+
close() {
|
|
6922
|
+
this.menuStack.closeAll();
|
|
6789
6923
|
}
|
|
6790
|
-
|
|
6791
|
-
|
|
6792
|
-
.
|
|
6793
|
-
.
|
|
6794
|
-
|
|
6795
|
-
.
|
|
6796
|
-
.
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
if (
|
|
6800
|
-
this.
|
|
6924
|
+
_openOnContextMenu(event) {
|
|
6925
|
+
if (!this.disabled) {
|
|
6926
|
+
event.preventDefault();
|
|
6927
|
+
event.stopPropagation();
|
|
6928
|
+
this._contextMenuTracker.update(this);
|
|
6929
|
+
this._open({ x: event.clientX, y: event.clientY }, true);
|
|
6930
|
+
if (event.button === 2) {
|
|
6931
|
+
this.childMenu?.focusFirstItem('mouse');
|
|
6932
|
+
}
|
|
6933
|
+
else if (event.button === 0) {
|
|
6934
|
+
this.childMenu?.focusFirstItem('keyboard');
|
|
6935
|
+
}
|
|
6936
|
+
else {
|
|
6937
|
+
this.childMenu?.focusFirstItem('program');
|
|
6801
6938
|
}
|
|
6939
|
+
}
|
|
6940
|
+
}
|
|
6941
|
+
_getOverlayConfig(coordinates) {
|
|
6942
|
+
return new OverlayConfig({
|
|
6943
|
+
positionStrategy: this._getOverlayPositionStrategy(coordinates),
|
|
6944
|
+
scrollStrategy: this._overlay.scrollStrategies.reposition(),
|
|
6945
|
+
direction: this._directionality || undefined,
|
|
6802
6946
|
});
|
|
6803
|
-
this._listenerSubscriptions.push(keyupEscSub, clickOutsideSub);
|
|
6804
6947
|
}
|
|
6805
|
-
|
|
6806
|
-
this.
|
|
6807
|
-
|
|
6948
|
+
_getOverlayPositionStrategy(coordinates) {
|
|
6949
|
+
return this._overlay
|
|
6950
|
+
.position()
|
|
6951
|
+
.flexibleConnectedTo(coordinates)
|
|
6952
|
+
.withLockedPosition()
|
|
6953
|
+
.withGrowAfterOpen()
|
|
6954
|
+
.withPositions(this.menuPosition ?? CONTEXT_MENU_POSITIONS);
|
|
6808
6955
|
}
|
|
6809
|
-
|
|
6810
|
-
this.
|
|
6811
|
-
|
|
6812
|
-
|
|
6813
|
-
|
|
6814
|
-
|
|
6815
|
-
useValue: this._defaultConfig,
|
|
6816
|
-
},
|
|
6817
|
-
...[
|
|
6818
|
-
typeof this.toggletip === 'string'
|
|
6819
|
-
? {
|
|
6820
|
-
provide: TOGGLETIP_TEXT,
|
|
6821
|
-
useValue: this.toggletip,
|
|
6822
|
-
}
|
|
6823
|
-
: {
|
|
6824
|
-
provide: TOGGLETIP_TEMPLATE,
|
|
6825
|
-
useValue: this.toggletip,
|
|
6826
|
-
},
|
|
6827
|
-
],
|
|
6828
|
-
],
|
|
6956
|
+
_setMenuStackCloseListener() {
|
|
6957
|
+
this.menuStack.closed.pipe(takeUntil$1(this.destroyed)).subscribe(({ item }) => {
|
|
6958
|
+
if (item === this.childMenu && this.isOpen()) {
|
|
6959
|
+
this.closed.next();
|
|
6960
|
+
this.overlayRef.detach();
|
|
6961
|
+
}
|
|
6829
6962
|
});
|
|
6830
6963
|
}
|
|
6831
|
-
|
|
6832
|
-
|
|
6833
|
-
|
|
6834
|
-
|
|
6835
|
-
|
|
6836
|
-
|
|
6837
|
-
|
|
6964
|
+
_subscribeToOutsideClicks(ignoreFirstAuxClick) {
|
|
6965
|
+
if (this.overlayRef) {
|
|
6966
|
+
let outsideClicks = this.overlayRef.outsidePointerEvents();
|
|
6967
|
+
if (ignoreFirstAuxClick) {
|
|
6968
|
+
const [auxClicks, nonAuxClicks] = partition(outsideClicks, ({ type }) => type === 'auxclick');
|
|
6969
|
+
outsideClicks = merge(nonAuxClicks, auxClicks.pipe(skip$1(1)));
|
|
6970
|
+
}
|
|
6971
|
+
outsideClicks.pipe(takeUntil$1(this.stopOutsideClicksListener)).subscribe((event) => {
|
|
6972
|
+
if (!this.isElementInsideMenuStack(_getEventTarget(event))) {
|
|
6973
|
+
this.menuStack.closeAll();
|
|
6974
|
+
}
|
|
6975
|
+
});
|
|
6976
|
+
}
|
|
6977
|
+
}
|
|
6978
|
+
_open(coordinates, ignoreFirstOutsideAuxClick) {
|
|
6979
|
+
if (this.disabled) {
|
|
6980
|
+
return;
|
|
6981
|
+
}
|
|
6982
|
+
if (this.isOpen()) {
|
|
6983
|
+
this.menuStack.closeSubMenuOf(this.childMenu);
|
|
6984
|
+
this.overlayRef.getConfig().positionStrategy.setOrigin(coordinates);
|
|
6985
|
+
this.overlayRef.updatePosition();
|
|
6986
|
+
}
|
|
6987
|
+
else {
|
|
6988
|
+
this.opened.next();
|
|
6989
|
+
if (this.overlayRef) {
|
|
6990
|
+
this.overlayRef.getConfig().positionStrategy.setOrigin(coordinates);
|
|
6991
|
+
this.overlayRef.updatePosition();
|
|
6992
|
+
}
|
|
6993
|
+
else {
|
|
6994
|
+
this.overlayRef = this._overlay.create(this._getOverlayConfig(coordinates));
|
|
6995
|
+
}
|
|
6996
|
+
this.overlayRef.attach(this.getMenuContentPortal());
|
|
6997
|
+
this._subscribeToOutsideClicks(ignoreFirstOutsideAuxClick);
|
|
6998
|
+
}
|
|
6999
|
+
}
|
|
7000
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkContextMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7001
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkContextMenuTrigger, isStandalone: true, selector: "[cdkContextMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkContextMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkContextMenuPosition", "menuPosition"], menuData: ["cdkContextMenuTriggerData", "menuData"], disabled: ["cdkContextMenuDisabled", "disabled"] }, outputs: { opened: "cdkContextMenuOpened", closed: "cdkContextMenuClosed" }, host: { listeners: { "contextmenu": "_openOnContextMenu($event)" }, properties: { "attr.data-cdk-menu-stack-id": "null" } }, providers: [
|
|
7002
|
+
{ provide: MENU_TRIGGER, useExisting: CdkContextMenuTrigger },
|
|
7003
|
+
{ provide: MENU_STACK, useClass: MenuStack },
|
|
7004
|
+
], exportAs: ["cdkContextMenuTriggerFor"], usesInheritance: true, ngImport: i0 }); }
|
|
6838
7005
|
}
|
|
6839
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type:
|
|
7006
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkContextMenuTrigger, decorators: [{
|
|
6840
7007
|
type: Directive,
|
|
6841
7008
|
args: [{
|
|
6842
|
-
selector: '[
|
|
7009
|
+
selector: '[cdkContextMenuTriggerFor]',
|
|
7010
|
+
exportAs: 'cdkContextMenuTriggerFor',
|
|
6843
7011
|
standalone: true,
|
|
7012
|
+
host: {
|
|
7013
|
+
'[attr.data-cdk-menu-stack-id]': 'null',
|
|
7014
|
+
'(contextmenu)': '_openOnContextMenu($event)',
|
|
7015
|
+
},
|
|
7016
|
+
inputs: [
|
|
7017
|
+
'menuTemplateRef: cdkContextMenuTriggerFor',
|
|
7018
|
+
'menuPosition: cdkContextMenuPosition',
|
|
7019
|
+
'menuData: cdkContextMenuTriggerData',
|
|
7020
|
+
],
|
|
7021
|
+
outputs: ['opened: cdkContextMenuOpened', 'closed: cdkContextMenuClosed'],
|
|
6844
7022
|
providers: [
|
|
6845
|
-
{
|
|
6846
|
-
|
|
6847
|
-
useExisting: ToggletipDirective,
|
|
6848
|
-
},
|
|
7023
|
+
{ provide: MENU_TRIGGER, useExisting: CdkContextMenuTrigger },
|
|
7024
|
+
{ provide: MENU_STACK, useClass: MenuStack },
|
|
6849
7025
|
],
|
|
6850
|
-
hostDirectives: [{ directive: AnimatedOverlayDirective, inputs: ['placement'] }],
|
|
6851
7026
|
}]
|
|
6852
|
-
}], ctorParameters: function () { return []; }, propDecorators: {
|
|
7027
|
+
}], ctorParameters: function () { return []; }, propDecorators: { disabled: [{
|
|
6853
7028
|
type: Input,
|
|
6854
|
-
args: ['
|
|
6855
|
-
}], showToggletip: [{
|
|
6856
|
-
type: Input
|
|
6857
|
-
}], toggletipClose: [{
|
|
6858
|
-
type: Output
|
|
7029
|
+
args: ['cdkContextMenuDisabled']
|
|
6859
7030
|
}] } });
|
|
6860
7031
|
|
|
6861
|
-
|
|
6862
|
-
|
|
6863
|
-
|
|
6864
|
-
|
|
7032
|
+
function throwMissingPointerFocusTracker() {
|
|
7033
|
+
throw Error('expected an instance of PointerFocusTracker to be provided');
|
|
7034
|
+
}
|
|
7035
|
+
function throwMissingMenuReference() {
|
|
7036
|
+
throw Error('expected a reference to the parent menu');
|
|
7037
|
+
}
|
|
7038
|
+
|
|
7039
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
7040
|
+
const MENU_AIM = new InjectionToken('cdk-menu-aim');
|
|
7041
|
+
const MOUSE_MOVE_SAMPLE_FREQUENCY = 3;
|
|
7042
|
+
const NUM_POINTS = 5;
|
|
7043
|
+
const CLOSE_DELAY = 300;
|
|
7044
|
+
function getSlope(a, b) {
|
|
7045
|
+
return (b.y - a.y) / (b.x - a.x);
|
|
7046
|
+
}
|
|
7047
|
+
function getYIntercept(point, slope) {
|
|
7048
|
+
return point.y - slope * point.x;
|
|
7049
|
+
}
|
|
7050
|
+
function isWithinSubmenu(submenuPoints, m, b) {
|
|
7051
|
+
const { left, right, top, bottom } = submenuPoints;
|
|
7052
|
+
return ((m * left + b >= top && m * left + b <= bottom) ||
|
|
7053
|
+
(m * right + b >= top && m * right + b <= bottom) ||
|
|
7054
|
+
((top - b) / m >= left && (top - b) / m <= right) ||
|
|
7055
|
+
((bottom - b) / m >= left && (bottom - b) / m <= right));
|
|
7056
|
+
}
|
|
7057
|
+
class TargetMenuAim {
|
|
6865
7058
|
constructor() {
|
|
6866
|
-
this.
|
|
6867
|
-
this.
|
|
6868
|
-
this.
|
|
6869
|
-
this.
|
|
6870
|
-
this.
|
|
6871
|
-
this.
|
|
7059
|
+
this._ngZone = inject(NgZone);
|
|
7060
|
+
this._points = [];
|
|
7061
|
+
this._menu = null;
|
|
7062
|
+
this._pointerTracker = null;
|
|
7063
|
+
this._timeoutId = null;
|
|
7064
|
+
this._destroyed = new Subject();
|
|
6872
7065
|
}
|
|
6873
|
-
|
|
6874
|
-
|
|
7066
|
+
ngOnDestroy() {
|
|
7067
|
+
this._destroyed.next();
|
|
7068
|
+
this._destroyed.complete();
|
|
6875
7069
|
}
|
|
6876
|
-
|
|
6877
|
-
|
|
7070
|
+
initialize(menu, pointerTracker) {
|
|
7071
|
+
this._menu = menu;
|
|
7072
|
+
this._pointerTracker = pointerTracker;
|
|
7073
|
+
this._subscribeToMouseMoves();
|
|
6878
7074
|
}
|
|
6879
|
-
|
|
6880
|
-
|
|
7075
|
+
toggle(doToggle) {
|
|
7076
|
+
if (!this._menu)
|
|
7077
|
+
return;
|
|
7078
|
+
if (this._menu.orientation === 'horizontal') {
|
|
7079
|
+
doToggle();
|
|
7080
|
+
}
|
|
7081
|
+
this._checkConfigured();
|
|
7082
|
+
const siblingItemIsWaiting = !!this._timeoutId;
|
|
7083
|
+
const hasPoints = this._points.length > 1;
|
|
7084
|
+
if (hasPoints && !siblingItemIsWaiting) {
|
|
7085
|
+
if (this._isMovingToSubmenu()) {
|
|
7086
|
+
this._startTimeout(doToggle);
|
|
7087
|
+
}
|
|
7088
|
+
else {
|
|
7089
|
+
doToggle();
|
|
7090
|
+
}
|
|
7091
|
+
}
|
|
7092
|
+
else if (!siblingItemIsWaiting) {
|
|
7093
|
+
doToggle();
|
|
7094
|
+
}
|
|
6881
7095
|
}
|
|
6882
|
-
|
|
6883
|
-
|
|
7096
|
+
_startTimeout(doToggle) {
|
|
7097
|
+
const timeoutId = window.setTimeout(() => {
|
|
7098
|
+
if (!this._pointerTracker)
|
|
7099
|
+
return;
|
|
7100
|
+
if (this._pointerTracker.activeElement && timeoutId === this._timeoutId) {
|
|
7101
|
+
doToggle();
|
|
7102
|
+
}
|
|
7103
|
+
this._timeoutId = null;
|
|
7104
|
+
}, CLOSE_DELAY);
|
|
7105
|
+
this._timeoutId = timeoutId;
|
|
6884
7106
|
}
|
|
6885
|
-
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
|
|
6897
|
-
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
|
|
6906
|
-
|
|
6907
|
-
|
|
7107
|
+
_isMovingToSubmenu() {
|
|
7108
|
+
const submenuPoints = this._getSubmenuBounds();
|
|
7109
|
+
if (!submenuPoints) {
|
|
7110
|
+
return false;
|
|
7111
|
+
}
|
|
7112
|
+
let numMoving = 0;
|
|
7113
|
+
const currPoint = this._points[this._points.length - 1];
|
|
7114
|
+
for (let i = this._points.length - 2; i >= 0; i--) {
|
|
7115
|
+
const previous = this._points[i];
|
|
7116
|
+
const slope = getSlope(currPoint, previous);
|
|
7117
|
+
if (isWithinSubmenu(submenuPoints, slope, getYIntercept(currPoint, slope))) {
|
|
7118
|
+
numMoving++;
|
|
7119
|
+
}
|
|
7120
|
+
}
|
|
7121
|
+
return numMoving >= Math.floor(NUM_POINTS / 2);
|
|
7122
|
+
}
|
|
7123
|
+
_getSubmenuBounds() {
|
|
7124
|
+
return this._pointerTracker?.previousElement?.getMenu()?.nativeElement.getBoundingClientRect();
|
|
7125
|
+
}
|
|
7126
|
+
_checkConfigured() {
|
|
7127
|
+
if (isDevMode()) {
|
|
7128
|
+
if (!this._pointerTracker) {
|
|
7129
|
+
throwMissingPointerFocusTracker();
|
|
7130
|
+
}
|
|
7131
|
+
if (!this._menu) {
|
|
7132
|
+
throwMissingMenuReference();
|
|
7133
|
+
}
|
|
7134
|
+
}
|
|
7135
|
+
}
|
|
7136
|
+
_subscribeToMouseMoves() {
|
|
7137
|
+
this._ngZone.runOutsideAngular(() => {
|
|
7138
|
+
if (!this._menu)
|
|
7139
|
+
return;
|
|
7140
|
+
fromEvent(this._menu.nativeElement, 'mousemove')
|
|
7141
|
+
.pipe(filter$1((_, index) => index % MOUSE_MOVE_SAMPLE_FREQUENCY === 0), takeUntil$1(this._destroyed))
|
|
7142
|
+
.subscribe((event) => {
|
|
7143
|
+
this._points.push({ x: event.clientX, y: event.clientY });
|
|
7144
|
+
if (this._points.length > NUM_POINTS) {
|
|
7145
|
+
this._points.shift();
|
|
7146
|
+
}
|
|
7147
|
+
});
|
|
7148
|
+
});
|
|
7149
|
+
}
|
|
7150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: TargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7151
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: TargetMenuAim }); }
|
|
7152
|
+
}
|
|
7153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: TargetMenuAim, decorators: [{
|
|
7154
|
+
type: Injectable
|
|
7155
|
+
}] });
|
|
7156
|
+
class CdkTargetMenuAim {
|
|
7157
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkTargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7158
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkTargetMenuAim, isStandalone: true, selector: "[cdkTargetMenuAim]", providers: [{ provide: MENU_AIM, useClass: TargetMenuAim }], exportAs: ["cdkTargetMenuAim"], ngImport: i0 }); }
|
|
7159
|
+
}
|
|
7160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkTargetMenuAim, decorators: [{
|
|
7161
|
+
type: Directive,
|
|
7162
|
+
args: [{
|
|
7163
|
+
selector: '[cdkTargetMenuAim]',
|
|
7164
|
+
exportAs: 'cdkTargetMenuAim',
|
|
7165
|
+
standalone: true,
|
|
7166
|
+
providers: [{ provide: MENU_AIM, useClass: TargetMenuAim }],
|
|
7167
|
+
}]
|
|
7168
|
+
}] });
|
|
7169
|
+
|
|
7170
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
7171
|
+
class CdkMenuGroup {
|
|
7172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7173
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuGroup, isStandalone: true, selector: "[cdkMenuGroup]", host: { attributes: { "role": "group" }, classAttribute: "cdk-menu-group" }, providers: [{ provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher }], exportAs: ["cdkMenuGroup"], ngImport: i0 }); }
|
|
7174
|
+
}
|
|
7175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuGroup, decorators: [{
|
|
7176
|
+
type: Directive,
|
|
7177
|
+
args: [{
|
|
7178
|
+
selector: '[cdkMenuGroup]',
|
|
7179
|
+
exportAs: 'cdkMenuGroup',
|
|
7180
|
+
standalone: true,
|
|
7181
|
+
host: {
|
|
7182
|
+
role: 'group',
|
|
7183
|
+
class: 'cdk-menu-group',
|
|
7184
|
+
},
|
|
7185
|
+
providers: [{ provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher }],
|
|
7186
|
+
}]
|
|
7187
|
+
}] });
|
|
7188
|
+
|
|
7189
|
+
const CDK_MENU = new InjectionToken('cdk-menu');
|
|
7190
|
+
|
|
7191
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
7192
|
+
class CdkMenuTrigger extends CdkMenuTriggerBase {
|
|
7193
|
+
constructor() {
|
|
7194
|
+
super();
|
|
7195
|
+
this._elementRef = inject(ElementRef);
|
|
7196
|
+
this._overlay = inject(Overlay);
|
|
7197
|
+
this._ngZone = inject(NgZone);
|
|
7198
|
+
this._directionality = inject(Directionality, { optional: true });
|
|
7199
|
+
this._inputModalityDetector = inject(InputModalityDetector);
|
|
7200
|
+
this._parentMenu = inject(CDK_MENU, { optional: true });
|
|
7201
|
+
this._menuAim = inject(MENU_AIM, { optional: true });
|
|
7202
|
+
this._setRole();
|
|
7203
|
+
this._registerCloseHandler();
|
|
7204
|
+
this._subscribeToMenuStackClosed();
|
|
7205
|
+
this._subscribeToMouseEnter();
|
|
7206
|
+
this._subscribeToMenuStackHasFocus();
|
|
7207
|
+
this._setType();
|
|
7208
|
+
}
|
|
7209
|
+
toggle() {
|
|
7210
|
+
this.isOpen() ? this.close() : this.open();
|
|
7211
|
+
}
|
|
7212
|
+
open() {
|
|
7213
|
+
if (!this.isOpen() && this.menuTemplateRef != null) {
|
|
7214
|
+
this.opened.next();
|
|
7215
|
+
this.overlayRef = this.overlayRef || this._overlay.create(this._getOverlayConfig());
|
|
7216
|
+
this.overlayRef.attach(this.getMenuContentPortal());
|
|
7217
|
+
this._subscribeToOutsideClicks();
|
|
7218
|
+
}
|
|
7219
|
+
}
|
|
7220
|
+
close() {
|
|
7221
|
+
if (this.isOpen()) {
|
|
7222
|
+
this.closed.next();
|
|
7223
|
+
this.overlayRef.detach();
|
|
7224
|
+
}
|
|
7225
|
+
this._closeSiblingTriggers();
|
|
7226
|
+
}
|
|
7227
|
+
getMenu() {
|
|
7228
|
+
return this.childMenu;
|
|
7229
|
+
}
|
|
7230
|
+
_toggleOnKeydown(event) {
|
|
7231
|
+
const isParentVertical = this._parentMenu?.orientation === 'vertical';
|
|
7232
|
+
switch (event.keyCode) {
|
|
7233
|
+
case SPACE:
|
|
7234
|
+
case ENTER:
|
|
7235
|
+
if (!hasModifierKey(event)) {
|
|
7236
|
+
this.toggle();
|
|
7237
|
+
this.childMenu?.focusFirstItem('keyboard');
|
|
7238
|
+
}
|
|
7239
|
+
break;
|
|
7240
|
+
case RIGHT_ARROW:
|
|
7241
|
+
if (!hasModifierKey(event)) {
|
|
7242
|
+
if (this._parentMenu && isParentVertical && this._directionality?.value !== 'rtl') {
|
|
7243
|
+
event.preventDefault();
|
|
7244
|
+
this.open();
|
|
7245
|
+
this.childMenu?.focusFirstItem('keyboard');
|
|
7246
|
+
}
|
|
7247
|
+
}
|
|
7248
|
+
break;
|
|
7249
|
+
case LEFT_ARROW:
|
|
7250
|
+
if (!hasModifierKey(event)) {
|
|
7251
|
+
if (this._parentMenu && isParentVertical && this._directionality?.value === 'rtl') {
|
|
7252
|
+
event.preventDefault();
|
|
7253
|
+
this.open();
|
|
7254
|
+
this.childMenu?.focusFirstItem('keyboard');
|
|
7255
|
+
}
|
|
7256
|
+
}
|
|
7257
|
+
break;
|
|
7258
|
+
case DOWN_ARROW:
|
|
7259
|
+
case UP_ARROW:
|
|
7260
|
+
if (!hasModifierKey(event)) {
|
|
7261
|
+
if (!isParentVertical) {
|
|
7262
|
+
event.preventDefault();
|
|
7263
|
+
this.open();
|
|
7264
|
+
event.keyCode === DOWN_ARROW
|
|
7265
|
+
? this.childMenu?.focusFirstItem('keyboard')
|
|
7266
|
+
: this.childMenu?.focusLastItem('keyboard');
|
|
7267
|
+
}
|
|
7268
|
+
}
|
|
7269
|
+
break;
|
|
7270
|
+
}
|
|
7271
|
+
}
|
|
7272
|
+
_handleClick() {
|
|
7273
|
+
if (this._inputModalityDetector.mostRecentModality !== 'keyboard') {
|
|
7274
|
+
this.toggle();
|
|
7275
|
+
this.childMenu?.focusFirstItem('mouse');
|
|
7276
|
+
}
|
|
7277
|
+
}
|
|
7278
|
+
_setHasFocus(hasFocus) {
|
|
7279
|
+
if (!this._parentMenu) {
|
|
7280
|
+
this.menuStack.setHasFocus(hasFocus);
|
|
7281
|
+
}
|
|
7282
|
+
}
|
|
7283
|
+
_subscribeToMouseEnter() {
|
|
7284
|
+
this._ngZone.runOutsideAngular(() => {
|
|
7285
|
+
fromEvent(this._elementRef.nativeElement, 'mouseenter')
|
|
7286
|
+
.pipe(filter$1(() => !this.menuStack.isEmpty() && !this.isOpen()), takeUntil$1(this.destroyed))
|
|
7287
|
+
.subscribe(() => {
|
|
7288
|
+
const toggleMenus = () => this._ngZone.run(() => {
|
|
7289
|
+
this._closeSiblingTriggers();
|
|
7290
|
+
this.open();
|
|
7291
|
+
});
|
|
7292
|
+
if (this._menuAim) {
|
|
7293
|
+
this._menuAim.toggle(toggleMenus);
|
|
7294
|
+
}
|
|
7295
|
+
else {
|
|
7296
|
+
toggleMenus();
|
|
7297
|
+
}
|
|
7298
|
+
});
|
|
7299
|
+
});
|
|
7300
|
+
}
|
|
7301
|
+
_closeSiblingTriggers() {
|
|
7302
|
+
if (this._parentMenu) {
|
|
7303
|
+
const isParentMenuBar = !this.menuStack.closeSubMenuOf(this._parentMenu) && this.menuStack.peek() !== this._parentMenu;
|
|
7304
|
+
if (isParentMenuBar) {
|
|
7305
|
+
this.menuStack.closeAll();
|
|
7306
|
+
}
|
|
7307
|
+
}
|
|
7308
|
+
else {
|
|
7309
|
+
this.menuStack.closeAll();
|
|
7310
|
+
}
|
|
7311
|
+
}
|
|
7312
|
+
_getOverlayConfig() {
|
|
7313
|
+
return new OverlayConfig({
|
|
7314
|
+
positionStrategy: this._getOverlayPositionStrategy(),
|
|
7315
|
+
scrollStrategy: this._overlay.scrollStrategies.reposition(),
|
|
7316
|
+
direction: this._directionality || undefined,
|
|
7317
|
+
});
|
|
7318
|
+
}
|
|
7319
|
+
_getOverlayPositionStrategy() {
|
|
7320
|
+
return this._overlay
|
|
7321
|
+
.position()
|
|
7322
|
+
.flexibleConnectedTo(this._elementRef)
|
|
7323
|
+
.withLockedPosition()
|
|
7324
|
+
.withGrowAfterOpen()
|
|
7325
|
+
.withPositions(this._getOverlayPositions());
|
|
7326
|
+
}
|
|
7327
|
+
_getOverlayPositions() {
|
|
7328
|
+
return (this.menuPosition ??
|
|
7329
|
+
(!this._parentMenu || this._parentMenu.orientation === 'horizontal'
|
|
7330
|
+
? STANDARD_DROPDOWN_BELOW_POSITIONS
|
|
7331
|
+
: STANDARD_DROPDOWN_ADJACENT_POSITIONS));
|
|
7332
|
+
}
|
|
7333
|
+
_registerCloseHandler() {
|
|
7334
|
+
if (!this._parentMenu) {
|
|
7335
|
+
this.menuStack.closed.pipe(takeUntil$1(this.destroyed)).subscribe(({ item }) => {
|
|
7336
|
+
if (item === this.childMenu) {
|
|
7337
|
+
this.close();
|
|
7338
|
+
}
|
|
7339
|
+
});
|
|
7340
|
+
}
|
|
7341
|
+
}
|
|
7342
|
+
_subscribeToOutsideClicks() {
|
|
7343
|
+
if (this.overlayRef) {
|
|
7344
|
+
this.overlayRef
|
|
7345
|
+
.outsidePointerEvents()
|
|
7346
|
+
.pipe(takeUntil$1(this.stopOutsideClicksListener))
|
|
7347
|
+
.subscribe((event) => {
|
|
7348
|
+
const target = _getEventTarget(event);
|
|
7349
|
+
const element = this._elementRef.nativeElement;
|
|
7350
|
+
if (target !== element && !element.contains(target)) {
|
|
7351
|
+
if (!this.isElementInsideMenuStack(target)) {
|
|
7352
|
+
this.menuStack.closeAll();
|
|
7353
|
+
}
|
|
7354
|
+
else {
|
|
7355
|
+
this._closeSiblingTriggers();
|
|
7356
|
+
}
|
|
7357
|
+
}
|
|
7358
|
+
});
|
|
7359
|
+
}
|
|
7360
|
+
}
|
|
7361
|
+
_subscribeToMenuStackHasFocus() {
|
|
7362
|
+
if (!this._parentMenu) {
|
|
7363
|
+
this.menuStack.hasFocus.pipe(takeUntil$1(this.destroyed)).subscribe((hasFocus) => {
|
|
7364
|
+
if (!hasFocus) {
|
|
7365
|
+
this.menuStack.closeAll();
|
|
7366
|
+
}
|
|
7367
|
+
});
|
|
7368
|
+
}
|
|
7369
|
+
}
|
|
7370
|
+
_subscribeToMenuStackClosed() {
|
|
7371
|
+
if (!this._parentMenu) {
|
|
7372
|
+
this.menuStack.closed.subscribe(({ focusParentTrigger }) => {
|
|
7373
|
+
if (focusParentTrigger && !this.menuStack.length()) {
|
|
7374
|
+
this._elementRef.nativeElement.focus();
|
|
7375
|
+
}
|
|
7376
|
+
});
|
|
7377
|
+
}
|
|
7378
|
+
}
|
|
7379
|
+
_setRole() {
|
|
7380
|
+
if (!this._parentMenu) {
|
|
7381
|
+
this._elementRef.nativeElement.setAttribute('role', 'button');
|
|
7382
|
+
}
|
|
7383
|
+
}
|
|
7384
|
+
_setType() {
|
|
7385
|
+
const element = this._elementRef.nativeElement;
|
|
7386
|
+
if (element.nodeName === 'BUTTON' && !element.getAttribute('type')) {
|
|
7387
|
+
element.setAttribute('type', 'button');
|
|
7388
|
+
}
|
|
7389
|
+
}
|
|
7390
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7391
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuTrigger, isStandalone: true, selector: "[cdkMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkMenuPosition", "menuPosition"], menuData: ["cdkMenuTriggerData", "menuData"] }, outputs: { opened: "cdkMenuOpened", closed: "cdkMenuClosed" }, host: { listeners: { "focusin": "_setHasFocus(true)", "focusout": "_setHasFocus(false)", "keydown": "_toggleOnKeydown($event)", "click": "_handleClick()" }, properties: { "attr.aria-haspopup": "menuTemplateRef ? \"menu\" : null", "attr.aria-expanded": "menuTemplateRef == null ? null : isOpen()" }, classAttribute: "cdk-menu-trigger" }, providers: [{ provide: MENU_TRIGGER, useExisting: CdkMenuTrigger }, PARENT_OR_NEW_MENU_STACK_PROVIDER], exportAs: ["cdkMenuTriggerFor"], usesInheritance: true, ngImport: i0 }); }
|
|
7392
|
+
}
|
|
7393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuTrigger, decorators: [{
|
|
7394
|
+
type: Directive,
|
|
7395
|
+
args: [{
|
|
7396
|
+
selector: '[cdkMenuTriggerFor]',
|
|
7397
|
+
exportAs: 'cdkMenuTriggerFor',
|
|
7398
|
+
standalone: true,
|
|
7399
|
+
host: {
|
|
7400
|
+
class: 'cdk-menu-trigger',
|
|
7401
|
+
'[attr.aria-haspopup]': 'menuTemplateRef ? "menu" : null',
|
|
7402
|
+
'[attr.aria-expanded]': 'menuTemplateRef == null ? null : isOpen()',
|
|
7403
|
+
'(focusin)': '_setHasFocus(true)',
|
|
7404
|
+
'(focusout)': '_setHasFocus(false)',
|
|
7405
|
+
'(keydown)': '_toggleOnKeydown($event)',
|
|
7406
|
+
'(click)': '_handleClick()',
|
|
7407
|
+
},
|
|
7408
|
+
inputs: ['menuTemplateRef: cdkMenuTriggerFor', 'menuPosition: cdkMenuPosition', 'menuData: cdkMenuTriggerData'],
|
|
7409
|
+
outputs: ['opened: cdkMenuOpened', 'closed: cdkMenuClosed'],
|
|
7410
|
+
providers: [{ provide: MENU_TRIGGER, useExisting: CdkMenuTrigger }, PARENT_OR_NEW_MENU_STACK_PROVIDER],
|
|
7411
|
+
}]
|
|
7412
|
+
}], ctorParameters: function () { return []; } });
|
|
7413
|
+
|
|
7414
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
7415
|
+
class CdkMenuItem {
|
|
7416
|
+
get disabled() {
|
|
7417
|
+
return this._disabled;
|
|
7418
|
+
}
|
|
7419
|
+
set disabled(value) {
|
|
7420
|
+
this._disabled = coerceBooleanProperty(value);
|
|
7421
|
+
}
|
|
7422
|
+
get hasMenu() {
|
|
7423
|
+
return this._menuTrigger?.menuTemplateRef != null;
|
|
7424
|
+
}
|
|
7425
|
+
constructor() {
|
|
7426
|
+
this._dir = inject(Directionality, { optional: true });
|
|
7427
|
+
this._inputModalityDetector = inject(InputModalityDetector);
|
|
7428
|
+
this._elementRef = inject(ElementRef);
|
|
7429
|
+
this._ngZone = inject(NgZone);
|
|
7430
|
+
this._menuAim = inject(MENU_AIM, { optional: true });
|
|
7431
|
+
this._menuStack = inject(MENU_STACK);
|
|
7432
|
+
this._parentMenu = inject(CDK_MENU, { optional: true });
|
|
7433
|
+
this._menuTrigger = inject(CdkMenuTrigger, { optional: true, self: true });
|
|
7434
|
+
this._disabled = false;
|
|
7435
|
+
this.typeaheadLabel = null;
|
|
7436
|
+
this.triggered = new EventEmitter();
|
|
7437
|
+
this._tabindex = -1;
|
|
7438
|
+
this.closeOnSpacebarTrigger = true;
|
|
7439
|
+
this.destroyed = new Subject();
|
|
7440
|
+
this._setupMouseEnter();
|
|
7441
|
+
this._setType();
|
|
7442
|
+
if (this._isStandaloneItem()) {
|
|
7443
|
+
this._tabindex = 0;
|
|
7444
|
+
}
|
|
7445
|
+
}
|
|
7446
|
+
ngOnDestroy() {
|
|
7447
|
+
this.destroyed.next();
|
|
7448
|
+
this.destroyed.complete();
|
|
7449
|
+
}
|
|
7450
|
+
focus() {
|
|
7451
|
+
this._elementRef.nativeElement.focus();
|
|
7452
|
+
}
|
|
7453
|
+
trigger(options) {
|
|
7454
|
+
const { keepOpen } = { ...options };
|
|
7455
|
+
if (!this.disabled && !this.hasMenu) {
|
|
7456
|
+
this.triggered.next();
|
|
7457
|
+
if (!keepOpen) {
|
|
7458
|
+
this._menuStack.closeAll({ focusParentTrigger: true });
|
|
7459
|
+
}
|
|
7460
|
+
}
|
|
7461
|
+
}
|
|
7462
|
+
isMenuOpen() {
|
|
7463
|
+
return !!this._menuTrigger?.isOpen();
|
|
7464
|
+
}
|
|
7465
|
+
getMenu() {
|
|
7466
|
+
return this._menuTrigger?.getMenu();
|
|
7467
|
+
}
|
|
7468
|
+
getMenuTrigger() {
|
|
7469
|
+
return this._menuTrigger;
|
|
7470
|
+
}
|
|
7471
|
+
getLabel() {
|
|
7472
|
+
return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';
|
|
7473
|
+
}
|
|
7474
|
+
_resetTabIndex() {
|
|
7475
|
+
if (!this._isStandaloneItem()) {
|
|
7476
|
+
this._tabindex = -1;
|
|
7477
|
+
}
|
|
7478
|
+
}
|
|
7479
|
+
_setTabIndex(event) {
|
|
7480
|
+
if (this.disabled) {
|
|
7481
|
+
return;
|
|
7482
|
+
}
|
|
7483
|
+
if (!event || !this._menuStack.isEmpty()) {
|
|
7484
|
+
this._tabindex = 0;
|
|
7485
|
+
}
|
|
7486
|
+
}
|
|
7487
|
+
_onKeydown(event) {
|
|
7488
|
+
switch (event.keyCode) {
|
|
7489
|
+
case SPACE:
|
|
7490
|
+
case ENTER:
|
|
7491
|
+
if (!hasModifierKey(event)) {
|
|
7492
|
+
this.trigger({ keepOpen: event.keyCode === SPACE && !this.closeOnSpacebarTrigger });
|
|
7493
|
+
}
|
|
7494
|
+
break;
|
|
7495
|
+
case RIGHT_ARROW:
|
|
7496
|
+
if (!hasModifierKey(event)) {
|
|
7497
|
+
if (this._parentMenu && this._isParentVertical()) {
|
|
7498
|
+
if (this._dir?.value !== 'rtl') {
|
|
7499
|
+
this._forwardArrowPressed(event);
|
|
7500
|
+
}
|
|
7501
|
+
else {
|
|
7502
|
+
this._backArrowPressed(event);
|
|
7503
|
+
}
|
|
7504
|
+
}
|
|
7505
|
+
}
|
|
7506
|
+
break;
|
|
7507
|
+
case LEFT_ARROW:
|
|
7508
|
+
if (!hasModifierKey(event)) {
|
|
7509
|
+
if (this._parentMenu && this._isParentVertical()) {
|
|
7510
|
+
if (this._dir?.value !== 'rtl') {
|
|
7511
|
+
this._backArrowPressed(event);
|
|
7512
|
+
}
|
|
7513
|
+
else {
|
|
7514
|
+
this._forwardArrowPressed(event);
|
|
7515
|
+
}
|
|
7516
|
+
}
|
|
7517
|
+
}
|
|
7518
|
+
break;
|
|
7519
|
+
}
|
|
7520
|
+
}
|
|
7521
|
+
_handleClick() {
|
|
7522
|
+
if (this._inputModalityDetector.mostRecentModality !== 'keyboard') {
|
|
7523
|
+
this.trigger();
|
|
7524
|
+
}
|
|
7525
|
+
}
|
|
7526
|
+
_handleMousedown(event) {
|
|
7527
|
+
event.preventDefault();
|
|
7528
|
+
event.stopPropagation();
|
|
7529
|
+
}
|
|
7530
|
+
_isStandaloneItem() {
|
|
7531
|
+
return !this._parentMenu;
|
|
7532
|
+
}
|
|
7533
|
+
_backArrowPressed(event) {
|
|
7534
|
+
const parentMenu = this._parentMenu;
|
|
7535
|
+
if (this._menuStack.hasInlineMenu() || this._menuStack.length() > 1) {
|
|
7536
|
+
event.preventDefault();
|
|
7537
|
+
this._menuStack.close(parentMenu, {
|
|
7538
|
+
focusNextOnEmpty: this._menuStack.inlineMenuOrientation() === 'horizontal' ? 1 /* FocusNext.previousItem */ : 2 /* FocusNext.currentItem */,
|
|
7539
|
+
focusParentTrigger: true,
|
|
7540
|
+
});
|
|
7541
|
+
}
|
|
7542
|
+
}
|
|
7543
|
+
_forwardArrowPressed(event) {
|
|
7544
|
+
if (!this.hasMenu && this._menuStack.inlineMenuOrientation() === 'horizontal') {
|
|
7545
|
+
event.preventDefault();
|
|
7546
|
+
this._menuStack.closeAll({
|
|
7547
|
+
focusNextOnEmpty: 0 /* FocusNext.nextItem */,
|
|
7548
|
+
focusParentTrigger: true,
|
|
7549
|
+
});
|
|
7550
|
+
}
|
|
7551
|
+
}
|
|
7552
|
+
_setupMouseEnter() {
|
|
7553
|
+
if (!this._isStandaloneItem()) {
|
|
7554
|
+
const closeOpenSiblings = () => this._ngZone.run(() => this._menuStack.closeSubMenuOf(this._parentMenu));
|
|
7555
|
+
this._ngZone.runOutsideAngular(() => fromEvent(this._elementRef.nativeElement, 'mouseenter')
|
|
7556
|
+
.pipe(filter$1(() => !this._menuStack.isEmpty() && !this.hasMenu), takeUntil$1(this.destroyed))
|
|
7557
|
+
.subscribe(() => {
|
|
7558
|
+
if (this._menuAim) {
|
|
7559
|
+
this._menuAim.toggle(closeOpenSiblings);
|
|
7560
|
+
}
|
|
7561
|
+
else {
|
|
7562
|
+
closeOpenSiblings();
|
|
7563
|
+
}
|
|
7564
|
+
}));
|
|
7565
|
+
}
|
|
7566
|
+
}
|
|
7567
|
+
_isParentVertical() {
|
|
7568
|
+
return this._parentMenu?.orientation === 'vertical';
|
|
7569
|
+
}
|
|
7570
|
+
_setType() {
|
|
7571
|
+
const element = this._elementRef.nativeElement;
|
|
7572
|
+
if (element.nodeName === 'BUTTON' && !element.getAttribute('type')) {
|
|
7573
|
+
element.setAttribute('type', 'button');
|
|
7574
|
+
}
|
|
7575
|
+
}
|
|
7576
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7577
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuItem, isStandalone: true, selector: "[cdkMenuItem]", inputs: { disabled: ["cdkMenuItemDisabled", "disabled"], typeaheadLabel: ["cdkMenuitemTypeaheadLabel", "typeaheadLabel"] }, outputs: { triggered: "cdkMenuItemTriggered" }, host: { attributes: { "role": "menuitem" }, listeners: { "blur": "_resetTabIndex()", "focus": "_setTabIndex()", "click": "_handleClick()", "mousedown": "_handleMousedown($event)", "keydown": "_onKeydown($event)" }, properties: { "tabindex": "_tabindex", "attr.aria-disabled": "disabled || null" }, classAttribute: "cdk-menu-item" }, exportAs: ["cdkMenuItem"], ngImport: i0 }); }
|
|
7578
|
+
}
|
|
7579
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItem, decorators: [{
|
|
7580
|
+
type: Directive,
|
|
7581
|
+
args: [{
|
|
7582
|
+
selector: '[cdkMenuItem]',
|
|
7583
|
+
exportAs: 'cdkMenuItem',
|
|
7584
|
+
standalone: true,
|
|
7585
|
+
host: {
|
|
7586
|
+
role: 'menuitem',
|
|
7587
|
+
class: 'cdk-menu-item',
|
|
7588
|
+
'[tabindex]': '_tabindex',
|
|
7589
|
+
'[attr.aria-disabled]': 'disabled || null',
|
|
7590
|
+
'(blur)': '_resetTabIndex()',
|
|
7591
|
+
'(focus)': '_setTabIndex()',
|
|
7592
|
+
'(click)': '_handleClick()',
|
|
7593
|
+
'(mousedown)': '_handleMousedown($event)',
|
|
7594
|
+
'(keydown)': '_onKeydown($event)',
|
|
7595
|
+
},
|
|
7596
|
+
}]
|
|
7597
|
+
}], ctorParameters: function () { return []; }, propDecorators: { disabled: [{
|
|
7598
|
+
type: Input,
|
|
7599
|
+
args: ['cdkMenuItemDisabled']
|
|
7600
|
+
}], typeaheadLabel: [{
|
|
7601
|
+
type: Input,
|
|
7602
|
+
args: ['cdkMenuitemTypeaheadLabel']
|
|
7603
|
+
}], triggered: [{
|
|
7604
|
+
type: Output,
|
|
7605
|
+
args: ['cdkMenuItemTriggered']
|
|
7606
|
+
}] } });
|
|
7607
|
+
|
|
7608
|
+
class PointerFocusTracker {
|
|
7609
|
+
constructor(_items) {
|
|
7610
|
+
this._items = _items;
|
|
7611
|
+
this.entered = this._getItemPointerEntries();
|
|
7612
|
+
this.exited = this._getItemPointerExits();
|
|
7613
|
+
this._destroyed = new Subject();
|
|
7614
|
+
this.entered.subscribe((element) => (this.activeElement = element));
|
|
7615
|
+
this.exited.subscribe(() => {
|
|
7616
|
+
this.previousElement = this.activeElement;
|
|
7617
|
+
this.activeElement = undefined;
|
|
7618
|
+
});
|
|
7619
|
+
}
|
|
7620
|
+
destroy() {
|
|
7621
|
+
this._destroyed.next();
|
|
7622
|
+
this._destroyed.complete();
|
|
7623
|
+
}
|
|
7624
|
+
_getItemPointerEntries() {
|
|
7625
|
+
return defer(() => this._items.changes.pipe(startWith$1(this._items), mergeMap((list) => list.map((element) => fromEvent(element._elementRef.nativeElement, 'mouseenter').pipe(mapTo(element), takeUntil$1(this._items.changes)))), mergeAll()));
|
|
7626
|
+
}
|
|
7627
|
+
_getItemPointerExits() {
|
|
7628
|
+
return defer(() => this._items.changes.pipe(startWith$1(this._items), mergeMap((list) => list.map((element) => fromEvent(element._elementRef.nativeElement, 'mouseout').pipe(mapTo(element), takeUntil$1(this._items.changes)))), mergeAll()));
|
|
7629
|
+
}
|
|
7630
|
+
}
|
|
7631
|
+
|
|
7632
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
7633
|
+
let nextId$2 = 0;
|
|
7634
|
+
class CdkMenuBase extends CdkMenuGroup {
|
|
7635
|
+
constructor() {
|
|
7636
|
+
super(...arguments);
|
|
7637
|
+
this.nativeElement = inject(ElementRef).nativeElement;
|
|
7638
|
+
this.ngZone = inject(NgZone);
|
|
7639
|
+
this.menuStack = inject(MENU_STACK);
|
|
7640
|
+
this.menuAim = inject(MENU_AIM, { optional: true, self: true });
|
|
7641
|
+
this.dir = inject(Directionality, { optional: true });
|
|
7642
|
+
this.id = `cdk-menu-${nextId$2++}`;
|
|
7643
|
+
this.items = null;
|
|
7644
|
+
this.orientation = 'vertical';
|
|
7645
|
+
this.isInline = false;
|
|
7646
|
+
this.keyManager = null;
|
|
7647
|
+
this.destroyed = new Subject();
|
|
7648
|
+
this._menuStackHasFocus = false;
|
|
7649
|
+
}
|
|
7650
|
+
ngAfterContentInit() {
|
|
7651
|
+
if (!this.isInline) {
|
|
7652
|
+
this.menuStack.push(this);
|
|
7653
|
+
}
|
|
7654
|
+
this._setKeyManager();
|
|
7655
|
+
this._subscribeToMenuStackHasFocus();
|
|
7656
|
+
this._subscribeToMenuOpen();
|
|
7657
|
+
this._subscribeToMenuStackClosed();
|
|
7658
|
+
this._setUpPointerTracker();
|
|
7659
|
+
}
|
|
7660
|
+
ngOnDestroy() {
|
|
7661
|
+
this.keyManager?.destroy();
|
|
7662
|
+
this.destroyed.next();
|
|
7663
|
+
this.destroyed.complete();
|
|
7664
|
+
this.pointerTracker?.destroy();
|
|
7665
|
+
}
|
|
7666
|
+
focusFirstItem(focusOrigin = 'program') {
|
|
7667
|
+
if (!this.keyManager)
|
|
7668
|
+
return;
|
|
7669
|
+
this.keyManager.setFocusOrigin(focusOrigin);
|
|
7670
|
+
this.keyManager.setFirstItemActive();
|
|
7671
|
+
}
|
|
7672
|
+
focusLastItem(focusOrigin = 'program') {
|
|
7673
|
+
if (!this.keyManager)
|
|
7674
|
+
return;
|
|
7675
|
+
this.keyManager.setFocusOrigin(focusOrigin);
|
|
7676
|
+
this.keyManager.setLastItemActive();
|
|
7677
|
+
}
|
|
7678
|
+
_getTabIndex() {
|
|
7679
|
+
const tabindexIfInline = this._menuStackHasFocus ? -1 : 0;
|
|
7680
|
+
return this.isInline ? tabindexIfInline : null;
|
|
7681
|
+
}
|
|
7682
|
+
closeOpenMenu(menu, options) {
|
|
7683
|
+
const { focusParentTrigger } = { ...options };
|
|
7684
|
+
const keyManager = this.keyManager;
|
|
7685
|
+
const trigger = this.triggerItem;
|
|
7686
|
+
if (menu === trigger?.getMenuTrigger()?.getMenu()) {
|
|
7687
|
+
trigger?.getMenuTrigger()?.close();
|
|
7688
|
+
if (focusParentTrigger) {
|
|
7689
|
+
if (!keyManager)
|
|
7690
|
+
return;
|
|
7691
|
+
if (trigger) {
|
|
7692
|
+
keyManager.setActiveItem(trigger);
|
|
7693
|
+
}
|
|
7694
|
+
else {
|
|
7695
|
+
keyManager.setFirstItemActive();
|
|
7696
|
+
}
|
|
7697
|
+
}
|
|
7698
|
+
}
|
|
7699
|
+
}
|
|
7700
|
+
_setKeyManager() {
|
|
7701
|
+
if (!this.items)
|
|
7702
|
+
return;
|
|
7703
|
+
this.keyManager = new FocusKeyManager(this.items).withWrap().withTypeAhead().withHomeAndEnd();
|
|
7704
|
+
if (this.orientation === 'horizontal') {
|
|
7705
|
+
this.keyManager.withHorizontalOrientation(this.dir?.value || 'ltr');
|
|
7706
|
+
}
|
|
7707
|
+
else {
|
|
7708
|
+
this.keyManager.withVerticalOrientation();
|
|
7709
|
+
}
|
|
7710
|
+
}
|
|
7711
|
+
_subscribeToMenuOpen() {
|
|
7712
|
+
if (!this.items)
|
|
7713
|
+
return;
|
|
7714
|
+
const exitCondition = merge(this.items.changes, this.destroyed);
|
|
7715
|
+
this.items.changes
|
|
7716
|
+
.pipe(startWith$1(this.items), mergeMap((list) => list
|
|
7717
|
+
.filter((item) => item.hasMenu)
|
|
7718
|
+
.map((item) => item.getMenuTrigger().opened.pipe(mapTo(item), takeUntil$1(exitCondition)))), mergeAll(), switchMap$1((item) => {
|
|
7719
|
+
this.triggerItem = item;
|
|
7720
|
+
return item.getMenuTrigger().closed;
|
|
7721
|
+
}), takeUntil$1(this.destroyed))
|
|
7722
|
+
.subscribe(() => (this.triggerItem = undefined));
|
|
7723
|
+
}
|
|
7724
|
+
_subscribeToMenuStackClosed() {
|
|
7725
|
+
this.menuStack.closed
|
|
7726
|
+
.pipe(takeUntil$1(this.destroyed))
|
|
7727
|
+
.subscribe(({ item, focusParentTrigger }) => this.closeOpenMenu(item, { focusParentTrigger }));
|
|
7728
|
+
}
|
|
7729
|
+
_subscribeToMenuStackHasFocus() {
|
|
7730
|
+
if (this.isInline) {
|
|
7731
|
+
this.menuStack.hasFocus.pipe(takeUntil$1(this.destroyed)).subscribe((hasFocus) => {
|
|
7732
|
+
this._menuStackHasFocus = hasFocus;
|
|
7733
|
+
});
|
|
7734
|
+
}
|
|
7735
|
+
}
|
|
7736
|
+
_setUpPointerTracker() {
|
|
7737
|
+
if (this.menuAim) {
|
|
7738
|
+
this.ngZone.runOutsideAngular(() => {
|
|
7739
|
+
if (!this.items)
|
|
7740
|
+
return;
|
|
7741
|
+
this.pointerTracker = new PointerFocusTracker(this.items);
|
|
7742
|
+
});
|
|
7743
|
+
this.menuAim.initialize(this, this.pointerTracker);
|
|
7744
|
+
}
|
|
7745
|
+
}
|
|
7746
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7747
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuBase, inputs: { id: "id" }, host: { attributes: { "role": "menu" }, listeners: { "focus": "focusFirstItem()", "focusin": "menuStack.setHasFocus(true)", "focusout": "menuStack.setHasFocus(false)" }, properties: { "tabindex": "_getTabIndex()", "id": "id", "attr.aria-orientation": "orientation", "attr.data-cdk-menu-stack-id": "menuStack.id" } }, queries: [{ propertyName: "items", predicate: CdkMenuItem, descendants: true }], usesInheritance: true, ngImport: i0 }); }
|
|
7748
|
+
}
|
|
7749
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuBase, decorators: [{
|
|
7750
|
+
type: Directive,
|
|
7751
|
+
args: [{
|
|
7752
|
+
host: {
|
|
7753
|
+
role: 'menu',
|
|
7754
|
+
class: '',
|
|
7755
|
+
'[tabindex]': '_getTabIndex()',
|
|
7756
|
+
'[id]': 'id',
|
|
7757
|
+
'[attr.aria-orientation]': 'orientation',
|
|
7758
|
+
'[attr.data-cdk-menu-stack-id]': 'menuStack.id',
|
|
7759
|
+
'(focus)': 'focusFirstItem()',
|
|
7760
|
+
'(focusin)': 'menuStack.setHasFocus(true)',
|
|
7761
|
+
'(focusout)': 'menuStack.setHasFocus(false)',
|
|
7762
|
+
},
|
|
7763
|
+
}]
|
|
7764
|
+
}], propDecorators: { id: [{
|
|
7765
|
+
type: Input
|
|
7766
|
+
}], items: [{
|
|
7767
|
+
type: ContentChildren,
|
|
7768
|
+
args: [CdkMenuItem, { descendants: true }]
|
|
7769
|
+
}] } });
|
|
7770
|
+
|
|
7771
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
7772
|
+
class CdkMenu extends CdkMenuBase {
|
|
7773
|
+
constructor() {
|
|
7774
|
+
super();
|
|
7775
|
+
this._parentTrigger = inject(MENU_TRIGGER, { optional: true });
|
|
7776
|
+
this.closed = new EventEmitter();
|
|
7777
|
+
this.orientation = 'vertical';
|
|
7778
|
+
this.isInline = !this._parentTrigger;
|
|
7779
|
+
this.destroyed.subscribe(this.closed);
|
|
7780
|
+
this._parentTrigger?.registerChildMenu(this);
|
|
7781
|
+
}
|
|
7782
|
+
ngAfterContentInit() {
|
|
7783
|
+
super.ngAfterContentInit();
|
|
7784
|
+
this._subscribeToMenuStackEmptied();
|
|
7785
|
+
}
|
|
7786
|
+
ngOnDestroy() {
|
|
7787
|
+
super.ngOnDestroy();
|
|
7788
|
+
this.closed.complete();
|
|
7789
|
+
}
|
|
7790
|
+
_handleKeyEvent(event) {
|
|
7791
|
+
const keyManager = this.keyManager;
|
|
7792
|
+
if (!keyManager)
|
|
7793
|
+
return;
|
|
7794
|
+
switch (event.keyCode) {
|
|
7795
|
+
case LEFT_ARROW:
|
|
7796
|
+
case RIGHT_ARROW:
|
|
7797
|
+
if (!hasModifierKey(event)) {
|
|
7798
|
+
event.preventDefault();
|
|
7799
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7800
|
+
keyManager.onKeydown(event);
|
|
7801
|
+
}
|
|
7802
|
+
break;
|
|
7803
|
+
case ESCAPE:
|
|
7804
|
+
if (!hasModifierKey(event)) {
|
|
7805
|
+
event.preventDefault();
|
|
7806
|
+
this.menuStack.close(this, {
|
|
7807
|
+
focusNextOnEmpty: 2 /* FocusNext.currentItem */,
|
|
7808
|
+
focusParentTrigger: true,
|
|
7809
|
+
});
|
|
7810
|
+
}
|
|
7811
|
+
break;
|
|
7812
|
+
case TAB$1:
|
|
7813
|
+
if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {
|
|
7814
|
+
this.menuStack.closeAll({ focusParentTrigger: true });
|
|
7815
|
+
}
|
|
7816
|
+
break;
|
|
7817
|
+
default:
|
|
7818
|
+
keyManager.onKeydown(event);
|
|
7819
|
+
}
|
|
7820
|
+
}
|
|
7821
|
+
_toggleMenuFocus(focusNext) {
|
|
7822
|
+
const keyManager = this.keyManager;
|
|
7823
|
+
if (!keyManager)
|
|
7824
|
+
return;
|
|
7825
|
+
switch (focusNext) {
|
|
7826
|
+
case 0 /* FocusNext.nextItem */:
|
|
7827
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7828
|
+
keyManager.setNextItemActive();
|
|
7829
|
+
break;
|
|
7830
|
+
case 1 /* FocusNext.previousItem */:
|
|
7831
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7832
|
+
keyManager.setPreviousItemActive();
|
|
7833
|
+
break;
|
|
7834
|
+
case 2 /* FocusNext.currentItem */:
|
|
7835
|
+
if (keyManager.activeItem) {
|
|
7836
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7837
|
+
keyManager.setActiveItem(keyManager.activeItem);
|
|
7838
|
+
}
|
|
7839
|
+
break;
|
|
7840
|
+
}
|
|
7841
|
+
}
|
|
7842
|
+
_subscribeToMenuStackEmptied() {
|
|
7843
|
+
this.menuStack.emptied.pipe(takeUntil$1(this.destroyed)).subscribe((event) => this._toggleMenuFocus(event));
|
|
7844
|
+
}
|
|
7845
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7846
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenu, isStandalone: true, selector: "[cdkMenu]", outputs: { closed: "closed" }, host: { attributes: { "role": "menu" }, listeners: { "keydown": "_handleKeyEvent($event)" }, properties: { "class.cdk-menu-inline": "isInline" }, classAttribute: "cdk-menu" }, providers: [
|
|
7847
|
+
{ provide: CdkMenuGroup, useExisting: CdkMenu },
|
|
7848
|
+
{ provide: CDK_MENU, useExisting: CdkMenu },
|
|
7849
|
+
PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER('vertical'),
|
|
7850
|
+
], exportAs: ["cdkMenu"], usesInheritance: true, ngImport: i0 }); }
|
|
7851
|
+
}
|
|
7852
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenu, decorators: [{
|
|
7853
|
+
type: Directive,
|
|
7854
|
+
args: [{
|
|
7855
|
+
selector: '[cdkMenu]',
|
|
7856
|
+
exportAs: 'cdkMenu',
|
|
7857
|
+
standalone: true,
|
|
7858
|
+
host: {
|
|
7859
|
+
role: 'menu',
|
|
7860
|
+
class: 'cdk-menu',
|
|
7861
|
+
'[class.cdk-menu-inline]': 'isInline',
|
|
7862
|
+
'(keydown)': '_handleKeyEvent($event)',
|
|
7863
|
+
},
|
|
7864
|
+
providers: [
|
|
7865
|
+
{ provide: CdkMenuGroup, useExisting: CdkMenu },
|
|
7866
|
+
{ provide: CDK_MENU, useExisting: CdkMenu },
|
|
7867
|
+
PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER('vertical'),
|
|
7868
|
+
],
|
|
7869
|
+
}]
|
|
7870
|
+
}], ctorParameters: function () { return []; }, propDecorators: { closed: [{
|
|
7871
|
+
type: Output
|
|
7872
|
+
}] } });
|
|
7873
|
+
|
|
7874
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
7875
|
+
class CdkMenuBar extends CdkMenuBase {
|
|
7876
|
+
constructor() {
|
|
7877
|
+
super(...arguments);
|
|
7878
|
+
this.orientation = 'horizontal';
|
|
7879
|
+
this.isInline = true;
|
|
7880
|
+
}
|
|
7881
|
+
ngAfterContentInit() {
|
|
7882
|
+
super.ngAfterContentInit();
|
|
7883
|
+
this._subscribeToMenuStackEmptied();
|
|
7884
|
+
}
|
|
7885
|
+
_handleKeyEvent(event) {
|
|
7886
|
+
const keyManager = this.keyManager;
|
|
7887
|
+
if (!keyManager)
|
|
7888
|
+
return;
|
|
7889
|
+
switch (event.keyCode) {
|
|
7890
|
+
case UP_ARROW:
|
|
7891
|
+
case DOWN_ARROW:
|
|
7892
|
+
case LEFT_ARROW:
|
|
7893
|
+
case RIGHT_ARROW:
|
|
7894
|
+
if (!hasModifierKey(event)) {
|
|
7895
|
+
const horizontalArrows = event.keyCode === LEFT_ARROW || event.keyCode === RIGHT_ARROW;
|
|
7896
|
+
if (horizontalArrows) {
|
|
7897
|
+
event.preventDefault();
|
|
7898
|
+
const prevIsOpen = keyManager.activeItem?.isMenuOpen();
|
|
7899
|
+
keyManager.activeItem?.getMenuTrigger()?.close();
|
|
7900
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7901
|
+
keyManager.onKeydown(event);
|
|
7902
|
+
if (prevIsOpen) {
|
|
7903
|
+
keyManager.activeItem?.getMenuTrigger()?.open();
|
|
7904
|
+
}
|
|
7905
|
+
}
|
|
7906
|
+
}
|
|
7907
|
+
break;
|
|
7908
|
+
case ESCAPE:
|
|
7909
|
+
if (!hasModifierKey(event)) {
|
|
7910
|
+
event.preventDefault();
|
|
7911
|
+
keyManager.activeItem?.getMenuTrigger()?.close();
|
|
7912
|
+
}
|
|
7913
|
+
break;
|
|
7914
|
+
case TAB$1:
|
|
7915
|
+
if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {
|
|
7916
|
+
keyManager.activeItem?.getMenuTrigger()?.close();
|
|
7917
|
+
}
|
|
7918
|
+
break;
|
|
7919
|
+
default:
|
|
7920
|
+
keyManager.onKeydown(event);
|
|
7921
|
+
}
|
|
7922
|
+
}
|
|
7923
|
+
_toggleOpenMenu(focusNext) {
|
|
7924
|
+
const keyManager = this.keyManager;
|
|
7925
|
+
if (!keyManager)
|
|
7926
|
+
return;
|
|
7927
|
+
switch (focusNext) {
|
|
7928
|
+
case 0 /* FocusNext.nextItem */:
|
|
7929
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7930
|
+
keyManager.setNextItemActive();
|
|
7931
|
+
keyManager.activeItem?.getMenuTrigger()?.open();
|
|
7932
|
+
break;
|
|
7933
|
+
case 1 /* FocusNext.previousItem */:
|
|
7934
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7935
|
+
keyManager.setPreviousItemActive();
|
|
7936
|
+
keyManager.activeItem?.getMenuTrigger()?.open();
|
|
7937
|
+
break;
|
|
7938
|
+
case 2 /* FocusNext.currentItem */:
|
|
7939
|
+
if (keyManager.activeItem) {
|
|
7940
|
+
keyManager.setFocusOrigin('keyboard');
|
|
7941
|
+
keyManager.setActiveItem(keyManager.activeItem);
|
|
7942
|
+
}
|
|
7943
|
+
break;
|
|
7944
|
+
}
|
|
7945
|
+
}
|
|
7946
|
+
_subscribeToMenuStackEmptied() {
|
|
7947
|
+
this.menuStack?.emptied.pipe(takeUntil$1(this.destroyed)).subscribe((event) => this._toggleOpenMenu(event));
|
|
7948
|
+
}
|
|
7949
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuBar, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7950
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuBar, isStandalone: true, selector: "[cdkMenuBar]", host: { attributes: { "role": "menubar" }, listeners: { "keydown": "_handleKeyEvent($event)" }, classAttribute: "cdk-menu-bar" }, providers: [
|
|
7951
|
+
{ provide: CdkMenuGroup, useExisting: CdkMenuBar },
|
|
7952
|
+
{ provide: CDK_MENU, useExisting: CdkMenuBar },
|
|
7953
|
+
{ provide: MENU_STACK, useFactory: () => MenuStack.inline('horizontal') },
|
|
7954
|
+
], exportAs: ["cdkMenuBar"], usesInheritance: true, ngImport: i0 }); }
|
|
7955
|
+
}
|
|
7956
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuBar, decorators: [{
|
|
7957
|
+
type: Directive,
|
|
7958
|
+
args: [{
|
|
7959
|
+
selector: '[cdkMenuBar]',
|
|
7960
|
+
exportAs: 'cdkMenuBar',
|
|
7961
|
+
standalone: true,
|
|
7962
|
+
host: {
|
|
7963
|
+
role: 'menubar',
|
|
7964
|
+
class: 'cdk-menu-bar',
|
|
7965
|
+
'(keydown)': '_handleKeyEvent($event)',
|
|
7966
|
+
},
|
|
7967
|
+
providers: [
|
|
7968
|
+
{ provide: CdkMenuGroup, useExisting: CdkMenuBar },
|
|
7969
|
+
{ provide: CDK_MENU, useExisting: CdkMenuBar },
|
|
7970
|
+
{ provide: MENU_STACK, useFactory: () => MenuStack.inline('horizontal') },
|
|
7971
|
+
],
|
|
7972
|
+
}]
|
|
7973
|
+
}] });
|
|
7974
|
+
|
|
7975
|
+
class CdkMenuItemSelectable extends CdkMenuItem {
|
|
7976
|
+
constructor() {
|
|
7977
|
+
super(...arguments);
|
|
7978
|
+
this._checked = false;
|
|
7979
|
+
this.closeOnSpacebarTrigger = false;
|
|
7980
|
+
}
|
|
7981
|
+
get checked() {
|
|
7982
|
+
return this._checked;
|
|
7983
|
+
}
|
|
7984
|
+
set checked(value) {
|
|
7985
|
+
this._checked = coerceBooleanProperty(value);
|
|
7986
|
+
}
|
|
7987
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItemSelectable, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7988
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuItemSelectable, inputs: { checked: ["cdkMenuItemChecked", "checked"] }, host: { properties: { "attr.aria-checked": "!!checked", "attr.aria-disabled": "disabled || null" } }, usesInheritance: true, ngImport: i0 }); }
|
|
7989
|
+
}
|
|
7990
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItemSelectable, decorators: [{
|
|
7991
|
+
type: Directive,
|
|
7992
|
+
args: [{
|
|
7993
|
+
host: {
|
|
7994
|
+
'[attr.aria-checked]': '!!checked',
|
|
7995
|
+
'[attr.aria-disabled]': 'disabled || null',
|
|
7996
|
+
},
|
|
7997
|
+
}]
|
|
7998
|
+
}], propDecorators: { checked: [{
|
|
7999
|
+
type: Input,
|
|
8000
|
+
args: ['cdkMenuItemChecked']
|
|
8001
|
+
}] } });
|
|
8002
|
+
|
|
8003
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
8004
|
+
class CdkMenuItemCheckbox extends CdkMenuItemSelectable {
|
|
8005
|
+
trigger(options) {
|
|
8006
|
+
super.trigger(options);
|
|
8007
|
+
if (!this.disabled) {
|
|
8008
|
+
this.checked = !this.checked;
|
|
8009
|
+
}
|
|
8010
|
+
}
|
|
8011
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItemCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8012
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuItemCheckbox, isStandalone: true, selector: "[cdkMenuItemCheckbox]", host: { attributes: { "role": "menuitemcheckbox" }, properties: { "class.cdk-menu-item-checkbox": "true" } }, providers: [
|
|
8013
|
+
{ provide: CdkMenuItemSelectable, useExisting: CdkMenuItemCheckbox },
|
|
8014
|
+
{ provide: CdkMenuItem, useExisting: CdkMenuItemSelectable },
|
|
8015
|
+
], exportAs: ["cdkMenuItemCheckbox"], usesInheritance: true, ngImport: i0 }); }
|
|
8016
|
+
}
|
|
8017
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItemCheckbox, decorators: [{
|
|
8018
|
+
type: Directive,
|
|
8019
|
+
args: [{
|
|
8020
|
+
selector: '[cdkMenuItemCheckbox]',
|
|
8021
|
+
exportAs: 'cdkMenuItemCheckbox',
|
|
8022
|
+
standalone: true,
|
|
8023
|
+
host: {
|
|
8024
|
+
role: 'menuitemcheckbox',
|
|
8025
|
+
'[class.cdk-menu-item-checkbox]': 'true',
|
|
8026
|
+
},
|
|
8027
|
+
providers: [
|
|
8028
|
+
{ provide: CdkMenuItemSelectable, useExisting: CdkMenuItemCheckbox },
|
|
8029
|
+
{ provide: CdkMenuItem, useExisting: CdkMenuItemSelectable },
|
|
8030
|
+
],
|
|
8031
|
+
}]
|
|
8032
|
+
}] });
|
|
8033
|
+
|
|
8034
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
8035
|
+
let nextId$1 = 0;
|
|
8036
|
+
class CdkMenuItemRadio extends CdkMenuItemSelectable {
|
|
8037
|
+
constructor() {
|
|
8038
|
+
super();
|
|
8039
|
+
this._selectionDispatcher = inject(UniqueSelectionDispatcher);
|
|
8040
|
+
this._id = `${nextId$1++}`;
|
|
8041
|
+
this._registerDispatcherListener();
|
|
8042
|
+
}
|
|
8043
|
+
ngOnDestroy() {
|
|
8044
|
+
super.ngOnDestroy();
|
|
8045
|
+
this._removeDispatcherListener?.();
|
|
8046
|
+
}
|
|
8047
|
+
trigger(options) {
|
|
8048
|
+
super.trigger(options);
|
|
8049
|
+
if (!this.disabled) {
|
|
8050
|
+
this._selectionDispatcher.notify(this._id, '');
|
|
8051
|
+
}
|
|
8052
|
+
}
|
|
8053
|
+
_registerDispatcherListener() {
|
|
8054
|
+
this._removeDispatcherListener = this._selectionDispatcher.listen((id) => {
|
|
8055
|
+
this.checked = this._id === id;
|
|
8056
|
+
});
|
|
8057
|
+
}
|
|
8058
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItemRadio, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8059
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: CdkMenuItemRadio, isStandalone: true, selector: "[cdkMenuItemRadio]", host: { attributes: { "role": "menuitemradio" }, properties: { "class.cdk-menu-item-radio": "true" } }, providers: [
|
|
8060
|
+
{ provide: CdkMenuItemSelectable, useExisting: CdkMenuItemRadio },
|
|
8061
|
+
{ provide: CdkMenuItem, useExisting: CdkMenuItemSelectable },
|
|
8062
|
+
], exportAs: ["cdkMenuItemRadio"], usesInheritance: true, ngImport: i0 }); }
|
|
8063
|
+
}
|
|
8064
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuItemRadio, decorators: [{
|
|
8065
|
+
type: Directive,
|
|
8066
|
+
args: [{
|
|
8067
|
+
selector: '[cdkMenuItemRadio]',
|
|
8068
|
+
exportAs: 'cdkMenuItemRadio',
|
|
8069
|
+
standalone: true,
|
|
8070
|
+
host: {
|
|
8071
|
+
role: 'menuitemradio',
|
|
8072
|
+
'[class.cdk-menu-item-radio]': 'true',
|
|
8073
|
+
},
|
|
8074
|
+
providers: [
|
|
8075
|
+
{ provide: CdkMenuItemSelectable, useExisting: CdkMenuItemRadio },
|
|
8076
|
+
{ provide: CdkMenuItem, useExisting: CdkMenuItemSelectable },
|
|
8077
|
+
],
|
|
8078
|
+
}]
|
|
8079
|
+
}], ctorParameters: function () { return []; } });
|
|
8080
|
+
|
|
8081
|
+
const MENU_DIRECTIVES = [
|
|
8082
|
+
CdkMenuBar,
|
|
8083
|
+
CdkMenu,
|
|
8084
|
+
CdkMenuItem,
|
|
8085
|
+
CdkMenuItemRadio,
|
|
8086
|
+
CdkMenuItemCheckbox,
|
|
8087
|
+
CdkMenuTrigger,
|
|
8088
|
+
CdkMenuGroup,
|
|
8089
|
+
CdkContextMenuTrigger,
|
|
8090
|
+
CdkTargetMenuAim,
|
|
8091
|
+
];
|
|
8092
|
+
class CdkMenuModule {
|
|
8093
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8094
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule, CdkMenuBar,
|
|
8095
|
+
CdkMenu,
|
|
8096
|
+
CdkMenuItem,
|
|
8097
|
+
CdkMenuItemRadio,
|
|
8098
|
+
CdkMenuItemCheckbox,
|
|
8099
|
+
CdkMenuTrigger,
|
|
8100
|
+
CdkMenuGroup,
|
|
8101
|
+
CdkContextMenuTrigger,
|
|
8102
|
+
CdkTargetMenuAim], exports: [CdkMenuBar,
|
|
8103
|
+
CdkMenu,
|
|
8104
|
+
CdkMenuItem,
|
|
8105
|
+
CdkMenuItemRadio,
|
|
8106
|
+
CdkMenuItemCheckbox,
|
|
8107
|
+
CdkMenuTrigger,
|
|
8108
|
+
CdkMenuGroup,
|
|
8109
|
+
CdkContextMenuTrigger,
|
|
8110
|
+
CdkTargetMenuAim] }); }
|
|
8111
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule] }); }
|
|
8112
|
+
}
|
|
8113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: CdkMenuModule, decorators: [{
|
|
8114
|
+
type: NgModule,
|
|
8115
|
+
args: [{
|
|
8116
|
+
imports: [OverlayModule, ...MENU_DIRECTIVES],
|
|
8117
|
+
exports: MENU_DIRECTIVES,
|
|
8118
|
+
}]
|
|
8119
|
+
}] });
|
|
8120
|
+
|
|
8121
|
+
const TOGGLETIP_CONFIG = new InjectionToken('ToggletipConfig');
|
|
8122
|
+
const TOGGLETIP_TEXT = new InjectionToken('ToggletipText');
|
|
8123
|
+
const TOGGLETIP_TEMPLATE = new InjectionToken('ToggletipTemplate');
|
|
8124
|
+
const TOGGLETIP_DEFAULT_CONFIG = {
|
|
8125
|
+
placement: 'auto',
|
|
8126
|
+
offset: [0, 8],
|
|
8127
|
+
arrowPadding: 4,
|
|
8128
|
+
customAnimated: false,
|
|
8129
|
+
};
|
|
8130
|
+
|
|
8131
|
+
const createToggletipConfig = (config = {}) => ({
|
|
8132
|
+
...TOGGLETIP_DEFAULT_CONFIG,
|
|
8133
|
+
...(config || {}),
|
|
8134
|
+
});
|
|
8135
|
+
|
|
8136
|
+
const provideToggletipConfig = (config = {}) => {
|
|
8137
|
+
return { provide: TOGGLETIP_CONFIG, useValue: createToggletipConfig(config) };
|
|
8138
|
+
};
|
|
8139
|
+
|
|
8140
|
+
const TOGGLETIP_DIRECTIVE = new InjectionToken('TOGGLETIP_DIRECTIVE');
|
|
8141
|
+
class ToggletipDirective {
|
|
8142
|
+
get toggletip() {
|
|
8143
|
+
return this._toggletip;
|
|
8144
|
+
}
|
|
8145
|
+
set toggletip(v) {
|
|
8146
|
+
this._toggletip = v;
|
|
8147
|
+
}
|
|
8148
|
+
get showToggletip() {
|
|
8149
|
+
return this._showToggletip;
|
|
8150
|
+
}
|
|
8151
|
+
set showToggletip(value) {
|
|
8152
|
+
this._showToggletip = booleanAttribute(value);
|
|
8153
|
+
if (this._showToggletip && !this._animatedOverlay.isMounted) {
|
|
8154
|
+
nextFrame(() => {
|
|
8155
|
+
this._mountToggletip();
|
|
8156
|
+
this._addListeners();
|
|
8157
|
+
});
|
|
8158
|
+
}
|
|
8159
|
+
else if (!this._showToggletip && this._animatedOverlay.isMounted) {
|
|
8160
|
+
this._animatedOverlay.unmount();
|
|
8161
|
+
this._removeListeners();
|
|
8162
|
+
}
|
|
8163
|
+
}
|
|
8164
|
+
constructor() {
|
|
8165
|
+
this._destroy$ = createDestroy();
|
|
8166
|
+
this._defaultConfig = inject(TOGGLETIP_CONFIG, { optional: true }) ?? createToggletipConfig();
|
|
8167
|
+
this._animatedOverlay = inject(AnimatedOverlayDirective);
|
|
8168
|
+
this._toggletip = null;
|
|
8169
|
+
this._showToggletip = false;
|
|
8170
|
+
this.toggletipClose = new EventEmitter();
|
|
8171
|
+
this._clickObserverService = inject(ClickObserverService);
|
|
8172
|
+
this._listenerSubscriptions = [];
|
|
8173
|
+
this._animatedOverlay.placement = this._defaultConfig.placement;
|
|
8174
|
+
this._animatedOverlay.offset = this._defaultConfig.offset;
|
|
8175
|
+
this._animatedOverlay.arrowPadding = this._defaultConfig.arrowPadding;
|
|
8176
|
+
}
|
|
8177
|
+
ngOnInit() {
|
|
8178
|
+
this._animatedOverlay
|
|
8179
|
+
.afterClosed()
|
|
8180
|
+
.pipe(tap(() => {
|
|
8181
|
+
this._removeListeners();
|
|
8182
|
+
this.toggletipClose.emit();
|
|
8183
|
+
}), takeUntil(this._destroy$))
|
|
8184
|
+
.subscribe();
|
|
8185
|
+
}
|
|
8186
|
+
ngOnDestroy() {
|
|
8187
|
+
this._animatedOverlay._destroy();
|
|
8188
|
+
this._removeListeners();
|
|
8189
|
+
}
|
|
8190
|
+
_addListeners() {
|
|
8191
|
+
const keyupEscSub = fromEvent(document, 'keyup')
|
|
8192
|
+
.pipe(filter((e) => e.key === 'Escape'), tap(() => this._animatedOverlay.unmount()))
|
|
8193
|
+
.subscribe();
|
|
8194
|
+
const clickOutsideSub = this._clickObserverService
|
|
8195
|
+
.observe(this._animatedOverlay.componentRef?.location.nativeElement)
|
|
8196
|
+
.subscribe((e) => {
|
|
8197
|
+
const targetElement = e.target;
|
|
8198
|
+
const isInside = this._animatedOverlay.componentRef?.location.nativeElement.contains(targetElement);
|
|
8199
|
+
if (!isInside) {
|
|
8200
|
+
this._animatedOverlay.unmount();
|
|
8201
|
+
}
|
|
8202
|
+
});
|
|
8203
|
+
this._listenerSubscriptions.push(keyupEscSub, clickOutsideSub);
|
|
8204
|
+
}
|
|
8205
|
+
_removeListeners() {
|
|
8206
|
+
this._listenerSubscriptions.forEach((s) => s.unsubscribe());
|
|
8207
|
+
this._listenerSubscriptions.length = 0;
|
|
8208
|
+
}
|
|
8209
|
+
_mountToggletip() {
|
|
8210
|
+
this._animatedOverlay.mount({
|
|
8211
|
+
component: ToggletipComponent,
|
|
8212
|
+
providers: [
|
|
8213
|
+
{
|
|
8214
|
+
provide: TOGGLETIP_CONFIG,
|
|
8215
|
+
useValue: this._defaultConfig,
|
|
8216
|
+
},
|
|
8217
|
+
...[
|
|
8218
|
+
typeof this.toggletip === 'string'
|
|
8219
|
+
? {
|
|
8220
|
+
provide: TOGGLETIP_TEXT,
|
|
8221
|
+
useValue: this.toggletip,
|
|
8222
|
+
}
|
|
8223
|
+
: {
|
|
8224
|
+
provide: TOGGLETIP_TEMPLATE,
|
|
8225
|
+
useValue: this.toggletip,
|
|
8226
|
+
},
|
|
8227
|
+
],
|
|
8228
|
+
],
|
|
8229
|
+
});
|
|
8230
|
+
}
|
|
8231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ToggletipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8232
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.1", type: ToggletipDirective, isStandalone: true, selector: "[etToggletip]", inputs: { toggletip: ["etToggletip", "toggletip"], showToggletip: "showToggletip" }, outputs: { toggletipClose: "toggletipClose" }, providers: [
|
|
8233
|
+
{
|
|
8234
|
+
provide: TOGGLETIP_DIRECTIVE,
|
|
8235
|
+
useExisting: ToggletipDirective,
|
|
8236
|
+
},
|
|
8237
|
+
], hostDirectives: [{ directive: i1$1.AnimatedOverlayDirective, inputs: ["placement", "placement"] }], ngImport: i0 }); }
|
|
8238
|
+
}
|
|
8239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ToggletipDirective, decorators: [{
|
|
8240
|
+
type: Directive,
|
|
8241
|
+
args: [{
|
|
8242
|
+
selector: '[etToggletip]',
|
|
8243
|
+
standalone: true,
|
|
8244
|
+
providers: [
|
|
8245
|
+
{
|
|
8246
|
+
provide: TOGGLETIP_DIRECTIVE,
|
|
8247
|
+
useExisting: ToggletipDirective,
|
|
8248
|
+
},
|
|
8249
|
+
],
|
|
8250
|
+
hostDirectives: [{ directive: AnimatedOverlayDirective, inputs: ['placement'] }],
|
|
8251
|
+
}]
|
|
8252
|
+
}], ctorParameters: function () { return []; }, propDecorators: { toggletip: [{
|
|
8253
|
+
type: Input,
|
|
8254
|
+
args: ['etToggletip']
|
|
8255
|
+
}], showToggletip: [{
|
|
8256
|
+
type: Input
|
|
8257
|
+
}], toggletipClose: [{
|
|
8258
|
+
type: Output
|
|
8259
|
+
}] } });
|
|
8260
|
+
|
|
8261
|
+
const TOGGLETIP = new InjectionToken('Toggletip');
|
|
8262
|
+
// TODO(TRB): The focus should get trapped inside the toggletip.
|
|
8263
|
+
// The toggletip trigger should get a aria-haspopup="true" and aria-expanded="true" attribute.
|
|
8264
|
+
class ToggletipComponent {
|
|
8265
|
+
constructor() {
|
|
8266
|
+
this._config = inject(TOGGLETIP_CONFIG);
|
|
8267
|
+
this.toggletipText = inject(TOGGLETIP_TEXT, { optional: true });
|
|
8268
|
+
this.toggletipTemplate = inject(TOGGLETIP_TEMPLATE, { optional: true });
|
|
8269
|
+
this.injector = inject(Injector);
|
|
8270
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
8271
|
+
this._trigger = inject(TOGGLETIP_DIRECTIVE);
|
|
8272
|
+
}
|
|
8273
|
+
get attrAriaHidden() {
|
|
8274
|
+
return true;
|
|
8275
|
+
}
|
|
8276
|
+
get usesDefaultAnimation() {
|
|
8277
|
+
return !this._config.customAnimated;
|
|
8278
|
+
}
|
|
8279
|
+
get containerClass() {
|
|
8280
|
+
return this._config.containerClass;
|
|
8281
|
+
}
|
|
8282
|
+
_markForCheck() {
|
|
8283
|
+
this._cdr.markForCheck();
|
|
8284
|
+
}
|
|
8285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ToggletipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: ToggletipComponent, isStandalone: true, selector: "et-toggletip", host: { properties: { "attr.aria-hidden": "this.attrAriaHidden", "class.et-with-default-animation": "this.usesDefaultAnimation", "class": "this.containerClass" }, classAttribute: "et-toggletip" }, providers: [
|
|
8287
|
+
{
|
|
8288
|
+
provide: TOGGLETIP,
|
|
8289
|
+
useExisting: ToggletipComponent,
|
|
8290
|
+
},
|
|
8291
|
+
], viewQueries: [{ propertyName: "_animatedLifecycle", first: true, predicate: ANIMATED_LIFECYCLE_TOKEN, descendants: true, static: true }], ngImport: i0, template: "<div class=\"et-toggletip-container\" etAnimatedLifecycle>\n <ng-container *ngIf=\"toggletipText\">\n {{ toggletipText }}\n </ng-container>\n\n <ng-container *ngIf=\"toggletipTemplate\">\n <ng-container *ngTemplateOutlet=\"toggletipTemplate; injector: injector\" />\n </ng-container>\n\n <div class=\"toggletip-arrow\" data-popper-arrow></div>\n</div>\n", styles: [":where(.et-toggletip){--background-color: hsl(0 0% 20%);--foreground-color: CanvasText;--border-radius: 4px;--padding-inline: 1.5ch;--padding-block: .75ch;--inline-max-size: 25ch;--arrow-size: 10px;--arrow-radius: 2px}.et-toggletip[data-popper-placement^=top] .toggletip-arrow{bottom:-4px}.et-toggletip[data-popper-placement^=right] .toggletip-arrow{left:-4px}.et-toggletip[data-popper-placement^=bottom] .toggletip-arrow{top:-4px}.et-toggletip[data-popper-placement^=left] .toggletip-arrow{right:-4px}.et-toggletip-container{z-index:1;inline-size:max-content;max-inline-size:var(--inline-max-size);padding:var(--padding-block) var(--padding-inline);border-radius:var(--border-radius);background:var(--background-color);color:var(--foreground-color)}.et-toggletip-container:before{content:\"; Has toggletip: \";clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.toggletip-arrow{inline-size:var(--arrow-size);block-size:var(--arrow-size);position:absolute;z-index:-1}.toggletip-arrow:before{inline-size:var(--arrow-size);block-size:var(--arrow-size);border-radius:var(--arrow-radius);position:absolute;z-index:-1;transform:rotate(45deg);background:var(--background-color);top:0;left:0;content:\"\"}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-to{opacity:0}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-from .toggletip-arrow:before,.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-to .toggletip-arrow:before{transform:rotate(45deg) scale(0)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-active{transition:transform .2s var(--ease-out-5),opacity .2s var(--ease-out-5)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-active .toggletip-arrow:before{transition:transform .2s var(--ease-out-5)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-active{transition:transform .15s var(--ease-in-5),opacity .15s var(--ease-in-5)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-active .toggletip-arrow:before{transition:transform .15s var(--ease-in-5)}.et-toggletip.et-with-default-animation[data-popper-placement^=top] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=top] .et-toggletip-container.et-animation-leave-to{transform:translateY(5px)}.et-toggletip.et-with-default-animation[data-popper-placement^=right] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=right] .et-toggletip-container.et-animation-leave-to{transform:translate(-5px)}.et-toggletip.et-with-default-animation[data-popper-placement^=bottom] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=bottom] .et-toggletip-container.et-animation-leave-to{transform:translateY(-5px)}.et-toggletip.et-with-default-animation[data-popper-placement^=left] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=left] .et-toggletip-container.et-animation-leave-to{transform:translate(5px)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AnimatedLifecycleDirective, selector: "[etAnimatedLifecycle]", exportAs: ["etAnimatedLifecycle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8292
|
+
}
|
|
8293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ToggletipComponent, decorators: [{
|
|
8294
|
+
type: Component,
|
|
8295
|
+
args: [{ selector: 'et-toggletip', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgIf, NgTemplateOutlet, AnimatedLifecycleDirective], host: {
|
|
8296
|
+
class: 'et-toggletip',
|
|
8297
|
+
}, providers: [
|
|
8298
|
+
{
|
|
8299
|
+
provide: TOGGLETIP,
|
|
8300
|
+
useExisting: ToggletipComponent,
|
|
8301
|
+
},
|
|
8302
|
+
], template: "<div class=\"et-toggletip-container\" etAnimatedLifecycle>\n <ng-container *ngIf=\"toggletipText\">\n {{ toggletipText }}\n </ng-container>\n\n <ng-container *ngIf=\"toggletipTemplate\">\n <ng-container *ngTemplateOutlet=\"toggletipTemplate; injector: injector\" />\n </ng-container>\n\n <div class=\"toggletip-arrow\" data-popper-arrow></div>\n</div>\n", styles: [":where(.et-toggletip){--background-color: hsl(0 0% 20%);--foreground-color: CanvasText;--border-radius: 4px;--padding-inline: 1.5ch;--padding-block: .75ch;--inline-max-size: 25ch;--arrow-size: 10px;--arrow-radius: 2px}.et-toggletip[data-popper-placement^=top] .toggletip-arrow{bottom:-4px}.et-toggletip[data-popper-placement^=right] .toggletip-arrow{left:-4px}.et-toggletip[data-popper-placement^=bottom] .toggletip-arrow{top:-4px}.et-toggletip[data-popper-placement^=left] .toggletip-arrow{right:-4px}.et-toggletip-container{z-index:1;inline-size:max-content;max-inline-size:var(--inline-max-size);padding:var(--padding-block) var(--padding-inline);border-radius:var(--border-radius);background:var(--background-color);color:var(--foreground-color)}.et-toggletip-container:before{content:\"; Has toggletip: \";clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.toggletip-arrow{inline-size:var(--arrow-size);block-size:var(--arrow-size);position:absolute;z-index:-1}.toggletip-arrow:before{inline-size:var(--arrow-size);block-size:var(--arrow-size);border-radius:var(--arrow-radius);position:absolute;z-index:-1;transform:rotate(45deg);background:var(--background-color);top:0;left:0;content:\"\"}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-to{opacity:0}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-from .toggletip-arrow:before,.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-to .toggletip-arrow:before{transform:rotate(45deg) scale(0)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-active{transition:transform .2s var(--ease-out-5),opacity .2s var(--ease-out-5)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-enter-active .toggletip-arrow:before{transition:transform .2s var(--ease-out-5)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-active{transition:transform .15s var(--ease-in-5),opacity .15s var(--ease-in-5)}.et-toggletip.et-with-default-animation .et-toggletip-container.et-animation-leave-active .toggletip-arrow:before{transition:transform .15s var(--ease-in-5)}.et-toggletip.et-with-default-animation[data-popper-placement^=top] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=top] .et-toggletip-container.et-animation-leave-to{transform:translateY(5px)}.et-toggletip.et-with-default-animation[data-popper-placement^=right] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=right] .et-toggletip-container.et-animation-leave-to{transform:translate(-5px)}.et-toggletip.et-with-default-animation[data-popper-placement^=bottom] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=bottom] .et-toggletip-container.et-animation-leave-to{transform:translateY(-5px)}.et-toggletip.et-with-default-animation[data-popper-placement^=left] .et-toggletip-container.et-animation-enter-from,.et-toggletip.et-with-default-animation[data-popper-placement^=left] .et-toggletip-container.et-animation-leave-to{transform:translate(5px)}\n"] }]
|
|
8303
|
+
}], propDecorators: { _animatedLifecycle: [{
|
|
8304
|
+
type: ViewChild,
|
|
8305
|
+
args: [ANIMATED_LIFECYCLE_TOKEN, { static: true }]
|
|
8306
|
+
}], attrAriaHidden: [{
|
|
8307
|
+
type: HostBinding,
|
|
6908
8308
|
args: ['attr.aria-hidden']
|
|
6909
8309
|
}], usesDefaultAnimation: [{
|
|
6910
8310
|
type: HostBinding,
|
|
@@ -7687,7 +9087,6 @@ class ScrollableComponent {
|
|
|
7687
9087
|
this._renderer.setAttribute(element, 'can-scroll', state.canScroll.toString());
|
|
7688
9088
|
}), takeUntil(this._destroy$))
|
|
7689
9089
|
.subscribe();
|
|
7690
|
-
this._setupScrollListening();
|
|
7691
9090
|
}
|
|
7692
9091
|
ngAfterContentInit() {
|
|
7693
9092
|
if (!this.activeElements || !this.elements) {
|
|
@@ -7713,6 +9112,7 @@ class ScrollableComponent {
|
|
|
7713
9112
|
});
|
|
7714
9113
|
}), takeUntil(this._destroy$))
|
|
7715
9114
|
.subscribe();
|
|
9115
|
+
this._setupScrollListening();
|
|
7716
9116
|
}
|
|
7717
9117
|
scrollOneContainerSize(direction) {
|
|
7718
9118
|
const scrollElement = this.scrollable.nativeElement;
|
|
@@ -7809,7 +9209,7 @@ class ScrollableComponent {
|
|
|
7809
9209
|
isSnapping = false;
|
|
7810
9210
|
}))
|
|
7811
9211
|
.subscribe();
|
|
7812
|
-
merge(fromEvent(scrollElement, 'scroll'), this._isCursorDragging$, of(
|
|
9212
|
+
merge(fromEvent(scrollElement, 'scroll'), this._isCursorDragging$, this.elements?.changes.pipe(startWith(this.elements)) ?? of(null))
|
|
7813
9213
|
.pipe(debounceTime(300), takeUntil(this._destroy$), tap(() => {
|
|
7814
9214
|
const elements = this.elements
|
|
7815
9215
|
?.toArray()
|
|
@@ -7878,13 +9278,13 @@ class ScrollableComponent {
|
|
|
7878
9278
|
.subscribe();
|
|
7879
9279
|
}
|
|
7880
9280
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ScrollableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7881
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: ScrollableComponent, isStandalone: true, selector: "et-scrollable", inputs: { itemSize: "itemSize", direction: "direction", scrollableRole: "scrollableRole", scrollableClass: "scrollableClass", renderMasks: ["renderMasks", "renderMasks", booleanAttribute], renderButtons: ["renderButtons", "renderButtons", booleanAttribute], renderScrollbars: ["renderScrollbars", "renderScrollbars", booleanAttribute], stickyButtons: ["stickyButtons", "stickyButtons", booleanAttribute], cursorDragScroll: ["cursorDragScroll", "cursorDragScroll", booleanAttribute], disableActiveElementScrolling: ["disableActiveElementScrolling", "disableActiveElementScrolling", booleanAttribute], scrollMode: "scrollMode", snap: ["snap", "snap", booleanAttribute], scrollMargin: ["scrollMargin", "scrollMargin", numberAttribute] }, outputs: { scrollStateChange: "scrollStateChange", intersectionChange: "intersectionChange" }, host: { properties: { "attr.item-size": "this.itemSize", "attr.direction": "this.direction", "attr.render-scrollbars": "this.renderScrollbars", "attr.sticky-buttons": "this.stickyButtons" }, classAttribute: "et-scrollable" }, queries: [{ propertyName: "activeElements", predicate: IS_ACTIVE_ELEMENT, descendants: true }, { propertyName: "elements", predicate: IS_ELEMENT, descendants: true }], viewQueries: [{ propertyName: "scrollable", first: true, predicate: ["scrollable"], descendants: true, static: true }], ngImport: i0, template: "<div\n #scrollable\n [attr.role]=\"scrollableRole ?? undefined\"\n [
|
|
9281
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: ScrollableComponent, isStandalone: true, selector: "et-scrollable", inputs: { itemSize: "itemSize", direction: "direction", scrollableRole: "scrollableRole", scrollableClass: "scrollableClass", renderMasks: ["renderMasks", "renderMasks", booleanAttribute], renderButtons: ["renderButtons", "renderButtons", booleanAttribute], renderScrollbars: ["renderScrollbars", "renderScrollbars", booleanAttribute], stickyButtons: ["stickyButtons", "stickyButtons", booleanAttribute], cursorDragScroll: ["cursorDragScroll", "cursorDragScroll", booleanAttribute], disableActiveElementScrolling: ["disableActiveElementScrolling", "disableActiveElementScrolling", booleanAttribute], scrollMode: "scrollMode", snap: ["snap", "snap", booleanAttribute], scrollMargin: ["scrollMargin", "scrollMargin", numberAttribute] }, outputs: { scrollStateChange: "scrollStateChange", intersectionChange: "intersectionChange" }, host: { properties: { "attr.item-size": "this.itemSize", "attr.direction": "this.direction", "attr.render-scrollbars": "this.renderScrollbars", "attr.sticky-buttons": "this.stickyButtons" }, classAttribute: "et-scrollable" }, queries: [{ propertyName: "activeElements", predicate: IS_ACTIVE_ELEMENT, descendants: true }, { propertyName: "elements", predicate: IS_ELEMENT, descendants: true }], viewQueries: [{ propertyName: "scrollable", first: true, predicate: ["scrollable"], descendants: true, static: true }], ngImport: i0, template: "<div\n #scrollable\n [attr.role]=\"scrollableRole ?? undefined\"\n [etCursorDragScroll]=\"cursorDragScroll\"\n [allowedDirection]=\"direction\"\n (etObserveScrollState)=\"_scrollStateChanged($event)\"\n (cursorDragStart)=\"setIsCursorDragging(true)\"\n (cursorDragEnd)=\"setIsCursorDragging(false)\"\n class=\"et-scrollable-container-outer\"\n>\n <div class=\"et-scroll-observer-first-element\"></div>\n <div [ngClass]=\"scrollableClass\" class=\"et-scrollable-container\">\n <ng-content />\n </div>\n <div class=\"et-scroll-observer-last-element\"></div>\n</div>\n\n<div *ngIf=\"renderMasks\" class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n</div>\n\n<div *ngIf=\"renderButtons\" class=\"et-scrollable-buttons\">\n <button\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n <button\n (click)=\"scrollToStartEnd()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n</div>\n", styles: [".et-scrollable{--mask: #121212 0, transparent 100%;--mask-size: 25px;--_auto-size: min-content;--_flow: column;display:grid;position:relative}.et-scrollable[item-size=same]{--auto-size: 1fr}.et-scrollable[item-size=full]{--auto-size: 100%}.et-scrollable[render-scrollbars=false] .et-scrollable-container-outer{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container-outer::-webkit-scrollbar{display:none}.et-scrollable[direction=horizontal] .et-scrollable-container-outer{overflow-x:auto;overflow-y:hidden;grid-template-columns:auto 1fr auto}.et-scrollable[direction=horizontal] .et-scrollable-container{grid-auto-columns:var(--_auto-size)}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:rotate(90deg)}.et-scrollable[direction=vertical]{--_flow: row}.et-scrollable[direction=vertical] .et-scrollable-container-outer{overflow-x:hidden;overflow-y:auto;grid-template-rows:auto 1fr auto}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-rows:var(--_auto-size)}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-inline-start:calc(50% - 20px);transform:rotate(0)}.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-inline-start:calc(50% - 20px);transform:rotate(180deg)}.et-scrollable[at-start=false] .et-scrollable-masks .et-scrollable-mask--start,.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{opacity:1}.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{pointer-events:all}.et-scrollable[at-end=false] .et-scrollable-masks .et-scrollable-mask--end,.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{opacity:1}.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{pointer-events:all}.et-scrollable .et-scrollable-container-outer{overflow:auto;display:grid;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-container{display:grid;grid-auto-flow:var(--_flow)}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0;transition:opacity .3s var(--ease-5)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-chevron-icon{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true]{--_sticky-margin: 10%}.et-scrollable[sticky-buttons=true] .et-scrollable-button{position:sticky}.et-scrollable[sticky-buttons=true][direction=horizontal] .et-scrollable-buttons{margin-block:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons{margin-inline:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons .et-scrollable-button--end{inset-block-start:100%}\n"], dependencies: [{ kind: "directive", type: CursorDragScrollDirective, selector: "[etCursorDragScroll]", inputs: ["etCursorDragScroll", "allowedDirection"], outputs: ["cursorDragStart", "cursorDragMove", "cursorDragEnd"], exportAs: ["etCursorDragScroll"] }, { kind: "directive", type: ObserveScrollStateDirective, selector: "[etObserveScrollState]", inputs: ["rootMargin", "observerThreshold"], outputs: ["etObserveScrollState"], exportAs: ["etObserveScrollState"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7882
9282
|
}
|
|
7883
9283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ScrollableComponent, decorators: [{
|
|
7884
9284
|
type: Component,
|
|
7885
9285
|
args: [{ selector: 'et-scrollable', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CursorDragScrollDirective, ObserveScrollStateDirective, NgClass, NgIf, LetDirective, ChevronIconComponent], host: {
|
|
7886
9286
|
class: 'et-scrollable',
|
|
7887
|
-
}, template: "<div\n #scrollable\n [attr.role]=\"scrollableRole ?? undefined\"\n [
|
|
9287
|
+
}, template: "<div\n #scrollable\n [attr.role]=\"scrollableRole ?? undefined\"\n [etCursorDragScroll]=\"cursorDragScroll\"\n [allowedDirection]=\"direction\"\n (etObserveScrollState)=\"_scrollStateChanged($event)\"\n (cursorDragStart)=\"setIsCursorDragging(true)\"\n (cursorDragEnd)=\"setIsCursorDragging(false)\"\n class=\"et-scrollable-container-outer\"\n>\n <div class=\"et-scroll-observer-first-element\"></div>\n <div [ngClass]=\"scrollableClass\" class=\"et-scrollable-container\">\n <ng-content />\n </div>\n <div class=\"et-scroll-observer-last-element\"></div>\n</div>\n\n<div *ngIf=\"renderMasks\" class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n</div>\n\n<div *ngIf=\"renderButtons\" class=\"et-scrollable-buttons\">\n <button\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n <button\n (click)=\"scrollToStartEnd()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n</div>\n", styles: [".et-scrollable{--mask: #121212 0, transparent 100%;--mask-size: 25px;--_auto-size: min-content;--_flow: column;display:grid;position:relative}.et-scrollable[item-size=same]{--auto-size: 1fr}.et-scrollable[item-size=full]{--auto-size: 100%}.et-scrollable[render-scrollbars=false] .et-scrollable-container-outer{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container-outer::-webkit-scrollbar{display:none}.et-scrollable[direction=horizontal] .et-scrollable-container-outer{overflow-x:auto;overflow-y:hidden;grid-template-columns:auto 1fr auto}.et-scrollable[direction=horizontal] .et-scrollable-container{grid-auto-columns:var(--_auto-size)}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:rotate(90deg)}.et-scrollable[direction=vertical]{--_flow: row}.et-scrollable[direction=vertical] .et-scrollable-container-outer{overflow-x:hidden;overflow-y:auto;grid-template-rows:auto 1fr auto}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-rows:var(--_auto-size)}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-inline-start:calc(50% - 20px);transform:rotate(0)}.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-inline-start:calc(50% - 20px);transform:rotate(180deg)}.et-scrollable[at-start=false] .et-scrollable-masks .et-scrollable-mask--start,.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{opacity:1}.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{pointer-events:all}.et-scrollable[at-end=false] .et-scrollable-masks .et-scrollable-mask--end,.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{opacity:1}.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{pointer-events:all}.et-scrollable .et-scrollable-container-outer{overflow:auto;display:grid;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-container{display:grid;grid-auto-flow:var(--_flow)}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0;transition:opacity .3s var(--ease-5)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-chevron-icon{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true]{--_sticky-margin: 10%}.et-scrollable[sticky-buttons=true] .et-scrollable-button{position:sticky}.et-scrollable[sticky-buttons=true][direction=horizontal] .et-scrollable-buttons{margin-block:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons{margin-inline:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons .et-scrollable-button--end{inset-block-start:100%}\n"] }]
|
|
7888
9288
|
}], propDecorators: { itemSize: [{
|
|
7889
9289
|
type: Input
|
|
7890
9290
|
}, {
|
|
@@ -10290,5 +11690,5 @@ const TABS_CONFIG = new InjectionToken('TABS_CONFIG');
|
|
|
10290
11690
|
* Generated bundle index. Do not edit.
|
|
10291
11691
|
*/
|
|
10292
11692
|
|
|
10293
|
-
export { ACCORDION_COMPONENT, ACCORDION_HINT_WRAPPER_DIRECTIVE, ACCORDION_LABEL_WRAPPER_DIRECTIVE, AccordionComponent, AccordionGroupComponent, AccordionHintDirective, AccordionHintWrapperDirective, AccordionImports, AccordionLabelDirective, AccordionLabelWrapperDirective, ActiveTabUnderlineBarManager, ActiveTabUnderlineDirective, AutosizeTextareaDirective, BOTTOM_SHEET_CONFIG, BOTTOM_SHEET_DATA, BOTTOM_SHEET_DEFAULT_CONFIG, BOTTOM_SHEET_DEFAULT_OPTIONS, BOTTOM_SHEET_MIN_SWIPE_TO_CLOSE_LENGTH, BOTTOM_SHEET_MIN_VELOCITY_TO_CLOSE, BOTTOM_SHEET_SCROLL_STRATEGY, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER_FACTORY, BRACKET_CONFIG_TOKEN, BRACKET_DEFAULT_CONFIG, BRACKET_MATCH_ID_TOKEN, BRACKET_ROUND_ID_TOKEN, BRACKET_TOKEN, BottomSheetContainerBaseComponent, BottomSheetContainerComponent, BottomSheetDragHandleComponent, BottomSheetImports, BottomSheetRef, BottomSheetService, BottomSheetServiceBase, BottomSheetSwipeHandlerService, BottomSheetTitleDirective, Bracket, BracketComponent, BracketImports, BracketMatchComponent, BracketMatchDirective, BracketRoundDirective, BracketRoundHeaderComponent, ButtonComponent, ButtonDirective, ButtonImports, CHECKBOX_FIELD_TOKEN, CHECKBOX_GROUP_CONTROL_TOKEN, CHECKBOX_GROUP_TOKEN, CHECKBOX_TOKEN, COMBOBOX_DIR_TOKEN, COMBOBOX_TOKEN, CellDefDirective, CellDirective, CheckboxComponent, CheckboxDirective, CheckboxFieldComponent, CheckboxFieldDirective, CheckboxGroupComponent, CheckboxGroupControlDirective, CheckboxGroupDirective, CheckboxImports, ChevronIconComponent, ColumnDefDirective, ComboboxComponent, ComboboxDirective, ComboboxImports, DIALOG_CONFIG, DIALOG_DATA, DIALOG_DEFAULT_CONFIG, DIALOG_DEFAULT_OPTIONS, DIALOG_SCROLL_STRATEGY, DIALOG_SCROLL_STRATEGY_PROVIDER, DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, DYNAMIC_FORM_FIELD_TOKEN, DYNAMIC_FORM_GROUP_TOKEN, DecoratedFormFieldBase, DecoratedInputBase, DefaultValidatorErrorsService, DialogCloseDirective, DialogContainerBaseComponent, DialogContainerComponent, DialogImports, DialogRef, DialogService, DialogServiceBase, DialogTitleDirective, DynamicFormFieldDirective, DynamicFormGroupDirective, DynamicOverlayService, EMAIL_INPUT_TOKEN, EmailInputComponent, EmailInputDirective, ErrorComponent, FooterCellDefDirective, FooterCellDirective, FooterRowComponent, FooterRowDefDirective, FormFieldStateService, FormGroupStateService, HeaderCellDefDirective, HeaderCellDirective, HeaderRowComponent, HeaderRowDefDirective, INPUT_PREFIX_TOKEN, INPUT_SUFFIX_TOKEN, INPUT_TOKEN, IconImports, IfInputEmptyDirective, IfInputFilledDirective, InlineTabBodyComponent, InlineTabBodyHostDirective, InlineTabChangeEvent, InlineTabComponent, InlineTabContentDirective, InlineTabHeaderComponent, InlineTabLabelDirective, InlineTabLabelWrapperDirective, InlineTabsComponent, InputBase, InputDirective, InputFieldComponent, InputImports, InputPrefixDirective, InputStateService, InputSuffixDirective, LABEL_TOKEN, LabelComponent, LabelImports, LabelSuffixDirective, MASONRY_ITEM_TOKEN, MAX_SAFE_INTEGER, MasonryComponent, MasonryImports, MasonryItemComponent, NATIVE_INPUT_REF_TOKEN, NATIVE_SELECT_INPUT_TOKEN, NATIVE_SELECT_OPTION_TOKEN, NUMBER_INPUT_TOKEN, NativeInputRefDirective, NativeSelectImports, NativeSelectInputComponent, NativeSelectInputDirective, NativeSelectOptionComponent, NativeSelectOptionDirective, NavTabLinkComponent, NavTabsComponent, NavTabsOutletComponent, NoDataRowDirective, NumberInputComponent, NumberInputDirective, PASSWORD_INPUT_TOKEN, PROGRESS_SPINNER_DEFAULT_OPTIONS, PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, PaginatedTabHeaderDirective, PaginationComponent, PaginationImports, PasswordInputComponent, PasswordInputDirective, PasswordInputToggleComponent, PictureComponent, PictureDataDirective, ProgressSpinnerComponent, QueryButtonComponent, QueryButtonDirective, RADIO_FIELD_TOKEN, RADIO_GROUP_TOKEN, RADIO_TOKEN, RadioComponent, RadioDirective, RadioFieldComponent, RadioFieldDirective, RadioGroupComponent, RadioGroupDirective, RadioImports, RecycleRowsDirective, RowComponent, RowDefDirective, SEARCH_INPUT_TOKEN, SEGMENTED_BUTTON_FIELD_TOKEN, SEGMENTED_BUTTON_GROUP_TOKEN, SEGMENTED_BUTTON_TOKEN, SELECT_BODY_TOKEN, SELECT_FIELD_TOKEN, SELECT_OPTION_TOKEN, SELECT_TOKEN, SLIDE_TOGGLE_TOKEN, SORT_DEFAULT_OPTIONS, SORT_HEADER_COLUMN_DEF, SORT_HEADER_INTL_PROVIDER, SORT_HEADER_INTL_PROVIDER_FACTORY, STATIC_FORM_FIELD_TOKEN, STATIC_FORM_GROUP_TOKEN, ScrollableComponent, ScrollableImports, SearchInputClearComponent, SearchInputComponent, SearchInputDirective, SegmentedButtonComponent, SegmentedButtonDirective, SegmentedButtonFieldComponent, SegmentedButtonFieldDirective, SegmentedButtonGroupComponent, SegmentedButtonGroupDirective, SegmentedButtonImports, SelectBodyComponent, SelectBodyDirective, SelectComponent, SelectDirective, SelectFieldComponent, SelectFieldDirective, SelectImports, SelectOptionComponent, SelectOptionDirective, SkeletonComponent, SkeletonImports, SkeletonItemComponent, SlideToggleComponent, SlideToggleDirective, SlideToggleFieldComponent, SlideToggleImports, SliderComponent, SliderFieldComponent, SliderImports, SortDirective, SortHeaderComponent, SortHeaderIntl, SortImports, StaticFormFieldDirective, StaticFormGroupDirective, SwipeHandlerService, TAB, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TAB_LABEL, TEXTAREA_INPUT_TOKEN, TEXT_INPUT_TOKEN, TOGGLETIP, TOGGLETIP_CONFIG, TOGGLETIP_DEFAULT_CONFIG, TOGGLETIP_DIRECTIVE, TOGGLETIP_TEMPLATE, TOGGLETIP_TEXT, TOOLTIP, TOOLTIP_CONFIG, TOOLTIP_DEFAULT_CONFIG, TOOLTIP_DIRECTIVE, TOOLTIP_TEMPLATE, TOOLTIP_TEXT, TabImports, TableBusyDirective, TableBusyOutletDirective, TableComponent, TableDataSource, TableImports, TextColumnComponent, TextInputComponent, TextInputDirective, TextareaInputComponent, TextareaInputDirective, ToggletipComponent, ToggletipDirective, ToggletipImports, TooltipComponent, TooltipDirective, TooltipImports, VALIDATOR_ERROR_SERVICE_TOKEN, WRITEABLE_INPUT_TOKEN, WRITEABLE_INPUT_VALUE_ACCESSOR, WriteableInputDirective, _MAT_INK_BAR_POSITIONER, _MAT_INK_BAR_POSITIONER_FACTORY, accordionAnimations, createBottomSheetConfig, createBracketConfig, createDialogConfig, createToggletipConfig, createTooltipConfig, getClosestBottomSheet, getClosestDialog, isOptionDisabled, isUpperBracketMatch, normalizeRoundType, orderRounds, orderRoundsByRoundNumber, paginate, provideBottomSheet, provideBottomSheetDefaultConfig, provideBracketConfig, provideDialog, provideDialogDefaultConfig, provideSort, provideToggletipConfig, provideTooltipConfig, provideValidatorErrorsService, tabAnimations };
|
|
11693
|
+
export { ACCORDION_COMPONENT, ACCORDION_HINT_WRAPPER_DIRECTIVE, ACCORDION_LABEL_WRAPPER_DIRECTIVE, AccordionComponent, AccordionGroupComponent, AccordionHintDirective, AccordionHintWrapperDirective, AccordionImports, AccordionLabelDirective, AccordionLabelWrapperDirective, ActiveTabUnderlineBarManager, ActiveTabUnderlineDirective, AutosizeTextareaDirective, BOTTOM_SHEET_CONFIG, BOTTOM_SHEET_DATA, BOTTOM_SHEET_DEFAULT_CONFIG, BOTTOM_SHEET_DEFAULT_OPTIONS, BOTTOM_SHEET_MIN_SWIPE_TO_CLOSE_LENGTH, BOTTOM_SHEET_MIN_VELOCITY_TO_CLOSE, BOTTOM_SHEET_SCROLL_STRATEGY, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER_FACTORY, BRACKET_CONFIG_TOKEN, BRACKET_DEFAULT_CONFIG, BRACKET_MATCH_ID_TOKEN, BRACKET_ROUND_ID_TOKEN, BRACKET_TOKEN, BottomSheetContainerBaseComponent, BottomSheetContainerComponent, BottomSheetDragHandleComponent, BottomSheetImports, BottomSheetRef, BottomSheetService, BottomSheetServiceBase, BottomSheetSwipeHandlerService, BottomSheetTitleDirective, Bracket, BracketComponent, BracketImports, BracketMatchComponent, BracketMatchDirective, BracketRoundDirective, BracketRoundHeaderComponent, ButtonComponent, ButtonDirective, ButtonImports, CDK_MENU, CHECKBOX_FIELD_TOKEN, CHECKBOX_GROUP_CONTROL_TOKEN, CHECKBOX_GROUP_TOKEN, CHECKBOX_TOKEN, COMBOBOX_DIR_TOKEN, COMBOBOX_TOKEN, CdkContextMenuTrigger, CdkMenu, CdkMenuBar, CdkMenuBase, CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio, CdkMenuItemSelectable, CdkMenuModule, CdkMenuTrigger, CdkMenuTriggerBase, CdkTargetMenuAim, CellDefDirective, CellDirective, CheckboxComponent, CheckboxDirective, CheckboxFieldComponent, CheckboxFieldDirective, CheckboxGroupComponent, CheckboxGroupControlDirective, CheckboxGroupDirective, CheckboxImports, ChevronIconComponent, ColumnDefDirective, ComboboxComponent, ComboboxDirective, ComboboxImports, ContextMenuTracker, DIALOG_CONFIG, DIALOG_DATA, DIALOG_DEFAULT_CONFIG, DIALOG_DEFAULT_OPTIONS, DIALOG_SCROLL_STRATEGY, DIALOG_SCROLL_STRATEGY_PROVIDER, DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, DYNAMIC_FORM_FIELD_TOKEN, DYNAMIC_FORM_GROUP_TOKEN, DecoratedFormFieldBase, DecoratedInputBase, DefaultValidatorErrorsService, DialogCloseDirective, DialogContainerBaseComponent, DialogContainerComponent, DialogImports, DialogRef, DialogService, DialogServiceBase, DialogTitleDirective, DynamicFormFieldDirective, DynamicFormGroupDirective, DynamicOverlayService, EMAIL_INPUT_TOKEN, EmailInputComponent, EmailInputDirective, ErrorComponent, FooterCellDefDirective, FooterCellDirective, FooterRowComponent, FooterRowDefDirective, FormFieldStateService, FormGroupStateService, HeaderCellDefDirective, HeaderCellDirective, HeaderRowComponent, HeaderRowDefDirective, INPUT_PREFIX_TOKEN, INPUT_SUFFIX_TOKEN, INPUT_TOKEN, IconImports, IfInputEmptyDirective, IfInputFilledDirective, InlineTabBodyComponent, InlineTabBodyHostDirective, InlineTabChangeEvent, InlineTabComponent, InlineTabContentDirective, InlineTabHeaderComponent, InlineTabLabelDirective, InlineTabLabelWrapperDirective, InlineTabsComponent, InputBase, InputDirective, InputFieldComponent, InputImports, InputPrefixDirective, InputStateService, InputSuffixDirective, LABEL_TOKEN, LabelComponent, LabelImports, LabelSuffixDirective, MASONRY_ITEM_TOKEN, MAX_SAFE_INTEGER, MENU_AIM, MENU_STACK, MENU_TRIGGER, MasonryComponent, MasonryImports, MasonryItemComponent, MenuStack, NATIVE_INPUT_REF_TOKEN, NATIVE_SELECT_INPUT_TOKEN, NATIVE_SELECT_OPTION_TOKEN, NUMBER_INPUT_TOKEN, NativeInputRefDirective, NativeSelectImports, NativeSelectInputComponent, NativeSelectInputDirective, NativeSelectOptionComponent, NativeSelectOptionDirective, NavTabLinkComponent, NavTabsComponent, NavTabsOutletComponent, NoDataRowDirective, NumberInputComponent, NumberInputDirective, PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER, PARENT_OR_NEW_MENU_STACK_PROVIDER, PASSWORD_INPUT_TOKEN, PROGRESS_SPINNER_DEFAULT_OPTIONS, PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, PaginatedTabHeaderDirective, PaginationComponent, PaginationImports, PasswordInputComponent, PasswordInputDirective, PasswordInputToggleComponent, PictureComponent, PictureDataDirective, PointerFocusTracker, ProgressSpinnerComponent, QueryButtonComponent, QueryButtonDirective, RADIO_FIELD_TOKEN, RADIO_GROUP_TOKEN, RADIO_TOKEN, RadioComponent, RadioDirective, RadioFieldComponent, RadioFieldDirective, RadioGroupComponent, RadioGroupDirective, RadioImports, RecycleRowsDirective, RowComponent, RowDefDirective, SEARCH_INPUT_TOKEN, SEGMENTED_BUTTON_FIELD_TOKEN, SEGMENTED_BUTTON_GROUP_TOKEN, SEGMENTED_BUTTON_TOKEN, SELECT_BODY_TOKEN, SELECT_FIELD_TOKEN, SELECT_OPTION_TOKEN, SELECT_TOKEN, SLIDE_TOGGLE_TOKEN, SORT_DEFAULT_OPTIONS, SORT_HEADER_COLUMN_DEF, SORT_HEADER_INTL_PROVIDER, SORT_HEADER_INTL_PROVIDER_FACTORY, STATIC_FORM_FIELD_TOKEN, STATIC_FORM_GROUP_TOKEN, ScrollableComponent, ScrollableImports, SearchInputClearComponent, SearchInputComponent, SearchInputDirective, SegmentedButtonComponent, SegmentedButtonDirective, SegmentedButtonFieldComponent, SegmentedButtonFieldDirective, SegmentedButtonGroupComponent, SegmentedButtonGroupDirective, SegmentedButtonImports, SelectBodyComponent, SelectBodyDirective, SelectComponent, SelectDirective, SelectFieldComponent, SelectFieldDirective, SelectImports, SelectOptionComponent, SelectOptionDirective, SkeletonComponent, SkeletonImports, SkeletonItemComponent, SlideToggleComponent, SlideToggleDirective, SlideToggleFieldComponent, SlideToggleImports, SliderComponent, SliderFieldComponent, SliderImports, SortDirective, SortHeaderComponent, SortHeaderIntl, SortImports, StaticFormFieldDirective, StaticFormGroupDirective, SwipeHandlerService, TAB, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TAB_LABEL, TEXTAREA_INPUT_TOKEN, TEXT_INPUT_TOKEN, TOGGLETIP, TOGGLETIP_CONFIG, TOGGLETIP_DEFAULT_CONFIG, TOGGLETIP_DIRECTIVE, TOGGLETIP_TEMPLATE, TOGGLETIP_TEXT, TOOLTIP, TOOLTIP_CONFIG, TOOLTIP_DEFAULT_CONFIG, TOOLTIP_DIRECTIVE, TOOLTIP_TEMPLATE, TOOLTIP_TEXT, TabImports, TableBusyDirective, TableBusyOutletDirective, TableComponent, TableDataSource, TableImports, TargetMenuAim, TextColumnComponent, TextInputComponent, TextInputDirective, TextareaInputComponent, TextareaInputDirective, ToggletipComponent, ToggletipDirective, ToggletipImports, TooltipComponent, TooltipDirective, TooltipImports, VALIDATOR_ERROR_SERVICE_TOKEN, WRITEABLE_INPUT_TOKEN, WRITEABLE_INPUT_VALUE_ACCESSOR, WriteableInputDirective, _MAT_INK_BAR_POSITIONER, _MAT_INK_BAR_POSITIONER_FACTORY, accordionAnimations, createBottomSheetConfig, createBracketConfig, createDialogConfig, createToggletipConfig, createTooltipConfig, getClosestBottomSheet, getClosestDialog, isOptionDisabled, isUpperBracketMatch, normalizeRoundType, orderRounds, orderRoundsByRoundNumber, paginate, provideBottomSheet, provideBottomSheetDefaultConfig, provideBracketConfig, provideDialog, provideDialogDefaultConfig, provideSort, provideToggletipConfig, provideTooltipConfig, provideValidatorErrorsService, tabAnimations };
|
|
10294
11694
|
//# sourceMappingURL=ethlete-cdk.mjs.map
|