@ethlete/components 1.0.0-next.37 → 1.0.0-next.38
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 +27 -0
- package/fesm2022/ethlete-components.mjs +1163 -110
- package/fesm2022/ethlete-components.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ethlete-components.d.ts +642 -69
|
@@ -4,7 +4,7 @@ import * as i1 from '@ethlete/core';
|
|
|
4
4
|
import { injectHostElement, RuntimeError, createComponentId, ProvideColorDirective, defineLabels, toProvideFn, toInjectFn, toToken, injectStyleManager, SurfaceInteractiveDirective, createCanAnimateSignal, ColorInteractiveDirective, injectSuccessTheme, injectWarningTheme, injectErrorTheme, injectLocale, defineStaticRootProvider, inferMimeType, injectColorThemes, injectRenderer, ProvideSurfaceDirective, COLOR_PROVIDER, SURFACE_PROVIDER, injectSurfaceThemes, injectSurfaceThemesPrefix, injectSurfaceContextTracker, injectBoundaryElement, ANIMATED_LIFECYCLE_TOKEN, resolveAppRootColorProvider, resolveSurfaceByElevation, createCssSurfaceName, provideBoundaryElement, AnimatedLifecycleDirective, injectBreakpointObserver, isHTMLElement, equal, animationDebugLog, defineRootProvider, injectOverlayRuntime, anchoredOverlayPosition, enableAnchoredOverlayPositionExtras, randomId, forceReflow, nextFrame, elementCanScroll, matchesReducedMotion, createSwipeTracker, ScrollObserverDirective, signalElementScrollState, ScrollObserverStartDirective, ScrollObserverEndDirective, applyHostListener, injectQueryParam, createUnsavedChangesTracker, createDocumentElementSignal, defineProvider, fromNextFrame, injectRoute, AnimatedIfDirective, signalElementDimensions, applyInitialFocus, syncSignal, AutoSurfaceDirective, setInputSignal, injectTemplateRef, signalHostElementScrollState, applyStructuredDataBinding, typedBreakpointTransform, signalElementChildren, signalElementIntersection, signalHostAttributes, signalHostClasses, signalHostStyles, getScrollContainerTarget, getScrollItemTarget, getElementScrollCoordinates, provideBreakpointInstance, signalClasses, useCursorDragScroll, signalStyles, getScrollSnapTarget, injectPrefersReducedMotion, injectIsDocumentVisible, signalHostElementIntersection, clamp as clamp$1, copyToClipboard, injectAnimatedBlockSize, injectObserveBreakpoint, AnimatableDirective, ColorInteractiveContainerDirective, ColorInteractiveExcludeDirective, createFlipAnimation, createFlipAnimationGroup, ColorInteractiveHasFocusDirective, htmlToMarkdown, markdownToHtml, injectHasTouchInput, signalHostElementDimensions, DragHandleDirective, ResizeHandlesComponent, numberBreakpointTransform, applyLinkBinding, applyHeadTitleBinding, injectViewportSize, injectFocusVisibleTracker, getFocusableElements, dragGestureFrom, injectRouterEvent, canUseSessionMemory, createAutoSessionMemoryKey, createSessionMemory } from '@ethlete/core';
|
|
5
5
|
import { NgTemplateOutlet, NgComponentOutlet, Location, DOCUMENT as DOCUMENT$1, isPlatformBrowser } from '@angular/common';
|
|
6
6
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
7
|
-
import { format, startOfWeek, startOfDay, endOfWeek, isBefore, addDays, endOfMonth, startOfMonth, isSameYear, isSameMonth, isSameDay, startOfYear, isAfter, addYears, addMonths, setMonth, setYear, getDate, setDate, lastDayOfMonth, getWeek, endOfYear, parse, isValid, setSeconds, setMinutes, setHours, setMilliseconds, endOfDay, eachDayOfInterval } from 'date-fns';
|
|
7
|
+
import { format, startOfWeek, startOfDay, endOfWeek, isBefore, addDays, endOfMonth, startOfMonth, isSameYear, isSameMonth, isSameDay, startOfYear, isAfter, addYears, addMonths, setMonth, setYear, getDate, setDate, lastDayOfMonth, getWeek, endOfYear, parse, isValid, setSeconds, setMinutes, setHours, setMilliseconds, endOfDay, eachDayOfInterval, addHours } from 'date-fns';
|
|
8
8
|
import { takeUntilDestroyed, toObservable, toSignal, outputFromObservable, outputToObservable, rxResource } from '@angular/core/rxjs-interop';
|
|
9
9
|
import { Subject, take, tap, timer, takeUntil, fromEvent, filter, combineLatest, switchMap, map, distinctUntilChanged, EMPTY, debounceTime, merge, defer, finalize, of, isObservable, from, catchError, firstValueFrom, concat, scan, interval, animationFrameScheduler, EmptyError, exhaustMap, Observable, shareReplay, defaultIfEmpty, expand, toArray } from 'rxjs';
|
|
10
10
|
import * as i1$1 from '@angular/router';
|
|
@@ -1108,6 +1108,7 @@ const ET_BUILT_IN_ICON_NAMES = [
|
|
|
1108
1108
|
'et-strikethrough',
|
|
1109
1109
|
'et-table',
|
|
1110
1110
|
'et-times',
|
|
1111
|
+
'et-trash',
|
|
1111
1112
|
'et-triangle-exclamation',
|
|
1112
1113
|
'et-trophy',
|
|
1113
1114
|
'et-underline',
|
|
@@ -1535,6 +1536,29 @@ const TIMES_ICON = {
|
|
|
1535
1536
|
`,
|
|
1536
1537
|
};
|
|
1537
1538
|
|
|
1539
|
+
const TRASH_ICON = {
|
|
1540
|
+
name: 'et-trash',
|
|
1541
|
+
data: `
|
|
1542
|
+
<svg
|
|
1543
|
+
width="100%"
|
|
1544
|
+
height="100%"
|
|
1545
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
1546
|
+
viewBox="0 0 24 24"
|
|
1547
|
+
fill="none"
|
|
1548
|
+
stroke="currentColor"
|
|
1549
|
+
stroke-width="1.8"
|
|
1550
|
+
stroke-linecap="round"
|
|
1551
|
+
stroke-linejoin="round"
|
|
1552
|
+
>
|
|
1553
|
+
<path d="M4 7h16" />
|
|
1554
|
+
<path d="M9 7V4.5A1.5 1.5 0 0 1 10.5 3h3A1.5 1.5 0 0 1 15 4.5V7" />
|
|
1555
|
+
<path d="M6 7l1 13a2 2 0 0 0 2 1.9h6a2 2 0 0 0 2-1.9l1-13" />
|
|
1556
|
+
<path d="M10 11v6" />
|
|
1557
|
+
<path d="M14 11v6" />
|
|
1558
|
+
</svg>
|
|
1559
|
+
`,
|
|
1560
|
+
};
|
|
1561
|
+
|
|
1538
1562
|
// Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.
|
|
1539
1563
|
const TRIANGLE_EXCLAMATION_ICON = {
|
|
1540
1564
|
name: 'et-triangle-exclamation',
|
|
@@ -8488,11 +8512,6 @@ const swissBracketLayout = (options = {}) => ({
|
|
|
8488
8512
|
styles: [BracketSwissStylesComponent],
|
|
8489
8513
|
});
|
|
8490
8514
|
|
|
8491
|
-
// TODO(bracket): curate the public surface once the default cards are built - `./core` and
|
|
8492
|
-
// `./linked` currently re-export internal engine builders (createBracket, relations, base
|
|
8493
|
-
// map/round/match builders) alongside the public data types. Narrow to the types consumers
|
|
8494
|
-
// actually need (data source, round/match/participant, swiss group, enums) at that point.
|
|
8495
|
-
|
|
8496
8515
|
class FabComponent {
|
|
8497
8516
|
constructor() {
|
|
8498
8517
|
this.buttonDir = inject(ButtonDirective);
|
|
@@ -9626,6 +9645,7 @@ const buildAnchoredRuntimePositionStrategy = (options = {}) => (origin) => {
|
|
|
9626
9645
|
viewportPadding: options.viewportPadding,
|
|
9627
9646
|
shift: options.shift,
|
|
9628
9647
|
autoResize: options.autoResize,
|
|
9648
|
+
minAvailableSpace: options.minAvailableSpace,
|
|
9629
9649
|
autoHide: options.autoHide,
|
|
9630
9650
|
autoCloseIfReferenceHidden: options.autoCloseIfReferenceHidden,
|
|
9631
9651
|
mirrorWidth: options.mirrorWidth,
|
|
@@ -9825,7 +9845,7 @@ const injectAnchoredDialogStrategy = /* @__PURE__ */ toInjectFn(ANCHORED_DIALOG_
|
|
|
9825
9845
|
const anchoredDialogOverlayStrategy = (options = {}) => {
|
|
9826
9846
|
return () => {
|
|
9827
9847
|
const strategyProvider = injectAnchoredDialogStrategy();
|
|
9828
|
-
const { placement, fallbackPlacements, offset, arrowPadding, viewportPadding, shift, autoResize, autoHide, autoCloseIfReferenceHidden, mirrorWidth, positionStrategy, ...breakpointConfig } = options;
|
|
9848
|
+
const { placement, fallbackPlacements, offset, arrowPadding, viewportPadding, shift, autoResize, minAvailableSpace, autoHide, autoCloseIfReferenceHidden, mirrorWidth, positionStrategy, ...breakpointConfig } = options;
|
|
9829
9849
|
const config = {
|
|
9830
9850
|
...breakpointConfig,
|
|
9831
9851
|
positionStrategy: positionStrategy ??
|
|
@@ -9837,6 +9857,7 @@ const anchoredDialogOverlayStrategy = (options = {}) => {
|
|
|
9837
9857
|
viewportPadding,
|
|
9838
9858
|
shift: shift ?? DEFAULT_ANCHORED_DIALOG_POSITION.shift,
|
|
9839
9859
|
autoResize: autoResize ?? DEFAULT_ANCHORED_DIALOG_POSITION.autoResize,
|
|
9860
|
+
minAvailableSpace,
|
|
9840
9861
|
autoHide,
|
|
9841
9862
|
autoCloseIfReferenceHidden,
|
|
9842
9863
|
mirrorWidth,
|
|
@@ -11159,6 +11180,8 @@ class OverlayDirective {
|
|
|
11159
11180
|
this.viewportPadding = input(8, /* @ts-ignore */
|
|
11160
11181
|
...(ngDevMode ? [{ debugName: "viewportPadding" }] : /* istanbul ignore next */ []));
|
|
11161
11182
|
this.autoResize = input(false, { ...(ngDevMode ? { debugName: "autoResize" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
11183
|
+
this.minAvailableSpace = input(undefined, /* @ts-ignore */
|
|
11184
|
+
...(ngDevMode ? [{ debugName: "minAvailableSpace" }] : /* istanbul ignore next */ []));
|
|
11162
11185
|
this.shift = input(true, { ...(ngDevMode ? { debugName: "shift" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
11163
11186
|
this.autoHide = input(false, { ...(ngDevMode ? { debugName: "autoHide" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
11164
11187
|
this.autoCloseIfReferenceHidden = input(false, { ...(ngDevMode ? { debugName: "autoCloseIfReferenceHidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -11287,6 +11310,7 @@ class OverlayDirective {
|
|
|
11287
11310
|
offset: this.offset(),
|
|
11288
11311
|
viewportPadding: this.viewportPadding(),
|
|
11289
11312
|
autoResize: this.autoResize(),
|
|
11313
|
+
minAvailableSpace: this.minAvailableSpace(),
|
|
11290
11314
|
shift: this.shift(),
|
|
11291
11315
|
autoHide: this.autoHide(),
|
|
11292
11316
|
autoCloseIfReferenceHidden: this.autoCloseIfReferenceHidden(),
|
|
@@ -11311,7 +11335,7 @@ class OverlayDirective {
|
|
|
11311
11335
|
.subscribe();
|
|
11312
11336
|
}
|
|
11313
11337
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: OverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11314
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: OverlayDirective, isStandalone: true, selector: "[etOverlay]", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsidePointer: { classPropertyName: "closeOnOutsidePointer", publicName: "closeOnOutsidePointer", isSignal: true, isRequired: false, transformFunction: null }, hostClass: { classPropertyName: "hostClass", publicName: "hostClass", isSignal: true, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: "backdropClass", publicName: "backdropClass", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, fallbackPlacements: { classPropertyName: "fallbackPlacements", publicName: "fallbackPlacements", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, viewportPadding: { classPropertyName: "viewportPadding", publicName: "viewportPadding", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, shift: { classPropertyName: "shift", publicName: "shift", isSignal: true, isRequired: false, transformFunction: null }, autoHide: { classPropertyName: "autoHide", publicName: "autoHide", isSignal: true, isRequired: false, transformFunction: null }, autoCloseIfReferenceHidden: { classPropertyName: "autoCloseIfReferenceHidden", publicName: "autoCloseIfReferenceHidden", isSignal: true, isRequired: false, transformFunction: null }, mirrorWidth: { classPropertyName: "mirrorWidth", publicName: "mirrorWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { properties: { "attr.data-overlay-open": "open() || null", "attr.data-overlay-mode": "mode()" } }, exportAs: ["etOverlay"], ngImport: i0 }); }
|
|
11338
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: OverlayDirective, isStandalone: true, selector: "[etOverlay]", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsidePointer: { classPropertyName: "closeOnOutsidePointer", publicName: "closeOnOutsidePointer", isSignal: true, isRequired: false, transformFunction: null }, hostClass: { classPropertyName: "hostClass", publicName: "hostClass", isSignal: true, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: "backdropClass", publicName: "backdropClass", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, fallbackPlacements: { classPropertyName: "fallbackPlacements", publicName: "fallbackPlacements", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, viewportPadding: { classPropertyName: "viewportPadding", publicName: "viewportPadding", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, minAvailableSpace: { classPropertyName: "minAvailableSpace", publicName: "minAvailableSpace", isSignal: true, isRequired: false, transformFunction: null }, shift: { classPropertyName: "shift", publicName: "shift", isSignal: true, isRequired: false, transformFunction: null }, autoHide: { classPropertyName: "autoHide", publicName: "autoHide", isSignal: true, isRequired: false, transformFunction: null }, autoCloseIfReferenceHidden: { classPropertyName: "autoCloseIfReferenceHidden", publicName: "autoCloseIfReferenceHidden", isSignal: true, isRequired: false, transformFunction: null }, mirrorWidth: { classPropertyName: "mirrorWidth", publicName: "mirrorWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { properties: { "attr.data-overlay-open": "open() || null", "attr.data-overlay-mode": "mode()" } }, exportAs: ["etOverlay"], ngImport: i0 }); }
|
|
11315
11339
|
}
|
|
11316
11340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: OverlayDirective, decorators: [{
|
|
11317
11341
|
type: Directive,
|
|
@@ -11323,7 +11347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
11323
11347
|
'[attr.data-overlay-mode]': 'mode()',
|
|
11324
11348
|
},
|
|
11325
11349
|
}]
|
|
11326
|
-
}], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], disableClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableClose", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], restoreFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreFocus", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnOutsidePointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsidePointer", required: false }] }], hostClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "hostClass", required: false }] }], backdropClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdropClass", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], fallbackPlacements: [{ type: i0.Input, args: [{ isSignal: true, alias: "fallbackPlacements", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "offset", required: false }] }], viewportPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewportPadding", required: false }] }], autoResize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoResize", required: false }] }], shift: [{ type: i0.Input, args: [{ isSignal: true, alias: "shift", required: false }] }], autoHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoHide", required: false }] }], autoCloseIfReferenceHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoCloseIfReferenceHidden", required: false }] }], mirrorWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "mirrorWidth", required: false }] }] } });
|
|
11350
|
+
}], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], disableClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableClose", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], restoreFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreFocus", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnOutsidePointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsidePointer", required: false }] }], hostClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "hostClass", required: false }] }], backdropClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdropClass", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], fallbackPlacements: [{ type: i0.Input, args: [{ isSignal: true, alias: "fallbackPlacements", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "offset", required: false }] }], viewportPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewportPadding", required: false }] }], autoResize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoResize", required: false }] }], minAvailableSpace: [{ type: i0.Input, args: [{ isSignal: true, alias: "minAvailableSpace", required: false }] }], shift: [{ type: i0.Input, args: [{ isSignal: true, alias: "shift", required: false }] }], autoHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoHide", required: false }] }], autoCloseIfReferenceHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoCloseIfReferenceHidden", required: false }] }], mirrorWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "mirrorWidth", required: false }] }] } });
|
|
11327
11351
|
|
|
11328
11352
|
class OverlayAnchorDirective {
|
|
11329
11353
|
constructor() {
|
|
@@ -18266,6 +18290,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
18266
18290
|
|
|
18267
18291
|
const DESCRIPTION_LIST_IMPORTS = [DescriptionListComponent];
|
|
18268
18292
|
|
|
18293
|
+
/**
|
|
18294
|
+
* A thin rule between two groups of content or controls, announced as a separator.
|
|
18295
|
+
*
|
|
18296
|
+
* A `vertical` divider sizes itself from its parent's cross axis, so it needs a flex or grid parent
|
|
18297
|
+
* (or an explicit `block-size`) to be visible. Set `decorative` when the grouping is already clear
|
|
18298
|
+
* from the surrounding markup - the rule then carries no semantics at all.
|
|
18299
|
+
*
|
|
18300
|
+
* @example
|
|
18301
|
+
* <et-divider />
|
|
18302
|
+
*
|
|
18303
|
+
* @example
|
|
18304
|
+
* <div class="flex items-center">
|
|
18305
|
+
* <button et-button>Save</button>
|
|
18306
|
+
* <et-divider orientation="vertical" decorative />
|
|
18307
|
+
* <button et-button>Discard</button>
|
|
18308
|
+
* </div>
|
|
18309
|
+
*/
|
|
18310
|
+
class DividerComponent {
|
|
18311
|
+
constructor() {
|
|
18312
|
+
this.orientation = input('horizontal', /* @ts-ignore */
|
|
18313
|
+
...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
18314
|
+
this.decorative = input(false, { ...(ngDevMode ? { debugName: "decorative" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
18315
|
+
}
|
|
18316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18317
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: DividerComponent, isStandalone: true, selector: "et-divider", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, decorative: { classPropertyName: "decorative", publicName: "decorative", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-orientation": "orientation()", "attr.role": "decorative() ? \"presentation\" : \"separator\"", "attr.aria-orientation": "decorative() ? null : orientation()", "attr.aria-hidden": "decorative() ? \"true\" : null" }, classAttribute: "et-divider" }, ngImport: i0, template: ``, isInline: true, styles: ["@layer components{@property --et-divider-thickness{syntax: \"<length>\"; inherits: true; initial-value: 1px;}@property --et-divider-spacing{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-divider-inset{syntax: \"<length>\"; inherits: true; initial-value: 0px;}.et-divider{display:block;flex:none;background:var(--et-divider-color, var(--et-surface-border-solid, rgb(255 255 255 / .1)));block-size:var(--et-divider-thickness);margin-block:var(--et-divider-spacing);margin-inline:var(--et-divider-inset)}.et-divider:where([data-orientation=vertical]){align-self:stretch;block-size:auto;inline-size:var(--et-divider-thickness);margin-block:var(--et-divider-inset);margin-inline:var(--et-divider-spacing)}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
18318
|
+
}
|
|
18319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DividerComponent, decorators: [{
|
|
18320
|
+
type: Component,
|
|
18321
|
+
args: [{ selector: 'et-divider', template: ``, encapsulation: ViewEncapsulation.None, host: {
|
|
18322
|
+
class: 'et-divider',
|
|
18323
|
+
'[attr.data-orientation]': 'orientation()',
|
|
18324
|
+
'[attr.role]': 'decorative() ? "presentation" : "separator"',
|
|
18325
|
+
'[attr.aria-orientation]': 'decorative() ? null : orientation()',
|
|
18326
|
+
'[attr.aria-hidden]': 'decorative() ? "true" : null',
|
|
18327
|
+
}, styles: ["@layer components{@property --et-divider-thickness{syntax: \"<length>\"; inherits: true; initial-value: 1px;}@property --et-divider-spacing{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-divider-inset{syntax: \"<length>\"; inherits: true; initial-value: 0px;}.et-divider{display:block;flex:none;background:var(--et-divider-color, var(--et-surface-border-solid, rgb(255 255 255 / .1)));block-size:var(--et-divider-thickness);margin-block:var(--et-divider-spacing);margin-inline:var(--et-divider-inset)}.et-divider:where([data-orientation=vertical]){align-self:stretch;block-size:auto;inline-size:var(--et-divider-thickness);margin-block:var(--et-divider-inset);margin-inline:var(--et-divider-spacing)}}\n"] }]
|
|
18328
|
+
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }] } });
|
|
18329
|
+
|
|
18330
|
+
const DIVIDER_IMPORTS = [DividerComponent];
|
|
18331
|
+
|
|
18269
18332
|
/**
|
|
18270
18333
|
* A placeholder for a section or page that currently has nothing to show - no results, an empty
|
|
18271
18334
|
* list, a not-yet-configured feature. Project an icon via `[etIcon]`, set `title`/`description`,
|
|
@@ -20199,13 +20262,10 @@ class CascaderDirective {
|
|
|
20199
20262
|
...anchoredOverlayStrategy({
|
|
20200
20263
|
containerClass: ['et-overlay--anchored', 'et-overlay--cascader'],
|
|
20201
20264
|
placement: 'bottom-start',
|
|
20202
|
-
// prefer flipping the alignment on the same side (right-align under the field) before
|
|
20203
|
-
// flipping up, so a field near the right viewport edge opens bottom-end, not shifted
|
|
20204
|
-
fallbackPlacements: ['bottom-end', 'top-start', 'top-end'],
|
|
20205
20265
|
offset: 4,
|
|
20206
20266
|
viewportPadding: 8,
|
|
20207
20267
|
autoResize: true,
|
|
20208
|
-
|
|
20268
|
+
minAvailableSpace: 160,
|
|
20209
20269
|
mirrorWidth: this.mirrorPanelWidth(),
|
|
20210
20270
|
})().map((entry) => ({ ...entry, breakpoint: 'md' })),
|
|
20211
20271
|
],
|
|
@@ -21479,7 +21539,7 @@ class CascaderPanelComponent {
|
|
|
21479
21539
|
<div #panelBody class="et-cascader-panel-body">
|
|
21480
21540
|
<ng-content />
|
|
21481
21541
|
</div>
|
|
21482
|
-
`, isInline: true, styles: ["@layer components{@property --et-cascader-column-inline-size{syntax: \"<length>\"; inherits: true; initial-value: 220px;}@property --et-cascader-panel-max-block-size{syntax: \"<length-percentage>\"; inherits: false; initial-value: 320px;}@property --et-cascader-node-height{syntax: \"<length>\"; inherits: true; initial-value: 36px;}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--cascader[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--cascader[data-overlay-placement].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-cascader-panel{display:block;box-sizing:border-box;border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:14px;box-shadow:0 10px 24px #00000029;overflow:hidden}.et-cascader-panel.et-cascader-panel--resizing{overflow:clip}.et-cascader-panel:not([data-sheet])>.et-cascader-panel-body{inline-size:max-content}.et-cascader-panel .et-cascader-sheet-header{position:relative;display:flex;align-items:center;flex:none;box-sizing:border-box;block-size:var(--et-cascader-node-height);padding-block:4px;padding-inline:20px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-back{position:absolute;inset-block:0;inset-inline-start:20px;display:inline-flex;align-items:center;transition:opacity .18s ease,transform .18s ease}.et-cascader-panel .et-cascader-back.et-cascader-back--hidden{opacity:0;transform:translate(-6px);pointer-events:none}.et-cascader-panel .et-cascader-back-icon{rotate:-90deg}.et-cascader-panel .et-cascader-sheet-title-slot{position:relative;flex:1;min-inline-size:0;align-self:stretch;overflow:hidden;pointer-events:none}.et-cascader-panel .et-cascader-sheet-title-shift{position:absolute;inset:0;transform:translate(0);transition:transform .18s ease}.et-cascader-panel .et-cascader-sheet-header[data-back] .et-cascader-sheet-title-shift{transform:translate(var(--et-cascader-back-slot, 4em))}.et-cascader-panel .et-cascader-sheet-title{position:absolute;inset:0;display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:600;color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-forward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-backward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-forward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-backward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--enter{animation:et-cascader-title-fade-in .18s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--leave{animation:et-cascader-title-fade-out .18s ease forwards}.et-cascader-panel .et-cascader-breadcrumbs{display:flex;align-items:center;gap:2px;box-sizing:border-box;inline-size:0;min-inline-size:100%;padding:6px;border-block-start:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));overflow:hidden}.et-cascader-panel .et-cascader-crumb{display:flex;align-items:center;gap:2px;min-inline-size:0}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--enter{animation:et-cascader-crumb-in .2s ease}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--leave{animation:et-cascader-crumb-out .16s ease forwards}.et-cascader-panel .et-cascader-breadcrumb{display:block;min-inline-size:0;padding:4px 8px;border:none;border-radius:6px;background:transparent;font:inherit;font-size:12px;color:var(--et-surface-color-muted-solid, currentColor);text-align:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;appearance:none;outline:none;transition:background .12s ease,color .12s ease}@media(hover:hover){.et-cascader-panel .et-cascader-breadcrumb:hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent);color:var(--et-surface-color-solid, currentColor)}}.et-cascader-panel .et-cascader-breadcrumb:focus-visible{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent);color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb[data-current]{color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb-chevron{flex:none;inline-size:10px;block-size:10px;color:var(--et-surface-color-subtle-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-columns{display:flex;max-block-size:var(--et-cascader-panel-max-block-size)}.et-cascader-panel .et-cascader-columns:not([data-sheet]){display:block;inline-size:calc(var(--_et-cascader-visible-columns, 1) * var(--et-cascader-column-inline-size));overflow:clip}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column{box-sizing:border-box}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column--offstage{contain:size}.et-cascader-panel .et-cascader-columns[data-sheet]{display:block;flex:1;min-block-size:0;max-block-size:none;overflow-y:auto;overflow-x:clip;overscroll-behavior:contain}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column{inline-size:100%;block-size:100%;max-block-size:none;overflow:visible;border-inline-end:none}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:has(.et-cascader-state){display:flex;align-items:center;justify-content:center}.et-cascader-panel .et-cascader-columns-track{display:flex;max-block-size:inherit;transform:translate(calc(var(--_et-cascader-column-window-start, 0) * -1 * var(--et-cascader-column-inline-size)));transition:transform .24s ease}.et-cascader-panel .et-cascader-sheet-body{display:flex;flex-direction:column;block-size:min(60vh,480px)}.et-cascader-panel .et-cascader-search{padding:6px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-search input[etcascadersearch]{inline-size:100%;block-size:36px;box-sizing:border-box;padding-inline:10px;border-radius:6px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 6%,transparent);color:inherit;font:inherit;outline:none;caret-color:var(--et-theme-color-primary-solid, currentColor);transition:border-color .12s ease,background .12s ease}.et-cascader-panel .et-cascader-search input[etcascadersearch]:focus-visible{border-color:var(--et-theme-color-primary-solid, rgb(255 255 255 / .3))}.et-cascader-panel .et-cascader-search input[etcascadersearch]::placeholder{color:var(--et-surface-color-muted-solid, rgb(255 255 255 / .55))}.et-cascader-panel .et-cascader-results{display:block;box-sizing:border-box;inline-size:min(320px,calc(100vw - 24px));max-block-size:var(--et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-sheet-body .et-cascader-results{flex:1;min-block-size:0;inline-size:100%;max-block-size:none}.et-cascader-panel .et-cascader-column{display:block;flex:none;inline-size:var(--et-cascader-column-inline-size);max-block-size:var(--et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-column:not(:last-child){border-inline-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-in-forward .2s ease}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=backward]){animation:et-cascader-column-in-backward .2s ease}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-grow-in .18s ease}.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option{display:flex;align-items:center;gap:8px;inline-size:100%;min-block-size:var(--et-cascader-node-height);padding-inline:10px;border:none;border-radius:6px;background:transparent;font:inherit;text-align:start;color:inherit;cursor:pointer;appearance:none;outline:none;transition:background .12s ease}@media(hover:hover){:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):focus-visible,:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-focused]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-expanded]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-selected]{color:var(--et-theme-color-ink-solid, currentColor);font-weight:500}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-disabled]{cursor:default;opacity:.4}.et-cascader-panel .et-cascader-node-label,.et-cascader-panel .et-cascader-search-option-label{flex:1;min-inline-size:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.et-cascader-panel .et-cascader-search-option-ancestor{color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-check{position:relative;flex:none;inline-size:16px;block-size:16px;box-sizing:border-box;border:2px solid var(--et-surface-border-solid, rgb(255 255 255 / .3));border-radius:4px;transition:background .12s ease,border-color .12s ease}.et-cascader-panel .et-cascader-check:after{content:\"\";position:absolute;opacity:0}.et-cascader-panel [data-selected]>.et-cascader-check,.et-cascader-panel [data-indeterminate]>.et-cascader-check{border-color:var(--et-theme-color-primary-solid, currentColor);background:var(--et-theme-color-primary-solid, currentColor)}.et-cascader-panel [data-selected]>.et-cascader-check:after{inset-inline-start:4px;inset-block-start:1px;inline-size:4px;block-size:8px;border:solid var(--et-theme-color-on-primary, rgb(0 0 0));border-width:0 2px 2px 0;rotate:45deg;opacity:1}.et-cascader-panel [data-indeterminate]>.et-cascader-check:after{inset-inline-start:2px;inset-block-start:5px;inline-size:8px;block-size:2px;background:var(--et-theme-color-on-primary, rgb(0 0 0));opacity:1}.et-cascader-panel .et-cascader-node-chevron{flex:none;inline-size:12px;block-size:12px;color:var(--et-surface-color-muted-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-state{display:flex;align-items:center;justify-content:center;gap:8px;min-block-size:var(--et-cascader-node-height);padding:12px 16px;text-align:center;color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-state.et-cascader-state--error{flex-direction:column;gap:8px;font-size:12px}.et-cascader-panel .et-cascader-state-error-message{color:var(--et-theme-color-primary-solid, rgb(248 113 113))}@keyframes et-cascader-title-enter-forward{0%{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-enter-backward{0%{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-forward{to{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-backward{to{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-fade-in{0%{opacity:0}}@keyframes et-cascader-title-fade-out{to{opacity:0}}@keyframes et-cascader-column-in-forward{0%{opacity:0;transform:translate(14px)}}@keyframes et-cascader-column-in-backward{0%{opacity:0;transform:translate(-14px)}}@keyframes et-cascader-column-grow-in{0%{opacity:0;transform:translate(-10px)}}@keyframes et-cascader-crumb-in{0%{opacity:0;transform:translate(8px)}}@keyframes et-cascader-crumb-out{to{opacity:0;transform:translate(8px)}}@media(prefers-reduced-motion:reduce){.et-cascader-panel .et-cascader-column,.et-cascader-panel .et-cascader-sheet-title,.et-cascader-panel .et-cascader-crumb{animation:none}.et-cascader-panel .et-cascader-back,.et-cascader-panel .et-cascader-sheet-title-shift,.et-cascader-panel .et-cascader-columns-track{transition:none}}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
21542
|
+
`, isInline: true, styles: ["@layer components{@property --et-cascader-column-inline-size{syntax: \"<length>\"; inherits: true; initial-value: 220px;}@property --et-cascader-panel-max-block-size{syntax: \"<length-percentage>\"; inherits: false; initial-value: 320px;}@property --et-cascader-node-height{syntax: \"<length>\"; inherits: true; initial-value: 36px;}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--cascader[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--cascader[data-overlay-placement].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-cascader-panel{display:block;box-sizing:border-box;--_et-cascader-panel-max-block-size: min( var(--et-cascader-panel-max-block-size), var(--et-overlay-max-height, 100vh) );border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:14px;box-shadow:0 10px 24px #00000029;overflow:hidden}.et-cascader-panel.et-cascader-panel--resizing{overflow:clip}.et-cascader-panel:not([data-sheet])>.et-cascader-panel-body{inline-size:max-content}.et-cascader-panel .et-cascader-sheet-header{position:relative;display:flex;align-items:center;flex:none;box-sizing:border-box;block-size:var(--et-cascader-node-height);padding-block:4px;padding-inline:20px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-back{position:absolute;inset-block:0;inset-inline-start:20px;display:inline-flex;align-items:center;transition:opacity .18s ease,transform .18s ease}.et-cascader-panel .et-cascader-back.et-cascader-back--hidden{opacity:0;transform:translate(-6px);pointer-events:none}.et-cascader-panel .et-cascader-back-icon{rotate:-90deg}.et-cascader-panel .et-cascader-sheet-title-slot{position:relative;flex:1;min-inline-size:0;align-self:stretch;overflow:hidden;pointer-events:none}.et-cascader-panel .et-cascader-sheet-title-shift{position:absolute;inset:0;transform:translate(0);transition:transform .18s ease}.et-cascader-panel .et-cascader-sheet-header[data-back] .et-cascader-sheet-title-shift{transform:translate(var(--et-cascader-back-slot, 4em))}.et-cascader-panel .et-cascader-sheet-title{position:absolute;inset:0;display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:600;color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-forward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-backward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-forward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-backward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--enter{animation:et-cascader-title-fade-in .18s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--leave{animation:et-cascader-title-fade-out .18s ease forwards}.et-cascader-panel .et-cascader-breadcrumbs{display:flex;align-items:center;gap:2px;box-sizing:border-box;inline-size:0;min-inline-size:100%;padding:6px;border-block-start:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));overflow:hidden}.et-cascader-panel .et-cascader-crumb{display:flex;align-items:center;gap:2px;min-inline-size:0}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--enter{animation:et-cascader-crumb-in .2s ease}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--leave{animation:et-cascader-crumb-out .16s ease forwards}.et-cascader-panel .et-cascader-breadcrumb{display:block;min-inline-size:0;padding:4px 8px;border:none;border-radius:6px;background:transparent;font:inherit;font-size:12px;color:var(--et-surface-color-muted-solid, currentColor);text-align:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;appearance:none;outline:none;transition:background .12s ease,color .12s ease}@media(hover:hover){.et-cascader-panel .et-cascader-breadcrumb:hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent);color:var(--et-surface-color-solid, currentColor)}}.et-cascader-panel .et-cascader-breadcrumb:focus-visible{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent);color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb[data-current]{color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb-chevron{flex:none;inline-size:10px;block-size:10px;color:var(--et-surface-color-subtle-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-columns{display:flex;max-block-size:var(--_et-cascader-panel-max-block-size)}.et-cascader-panel .et-cascader-columns:not([data-sheet]){display:block;inline-size:calc(var(--_et-cascader-visible-columns, 1) * var(--et-cascader-column-inline-size));overflow:clip}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column{box-sizing:border-box}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column--offstage{contain:size}.et-cascader-panel .et-cascader-columns[data-sheet]{display:block;flex:1;min-block-size:0;max-block-size:none;overflow-y:auto;overflow-x:clip;overscroll-behavior:contain}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column{inline-size:100%;block-size:100%;max-block-size:none;overflow:visible;border-inline-end:none}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:has(.et-cascader-state){display:flex;align-items:center;justify-content:center}.et-cascader-panel .et-cascader-columns-track{display:flex;max-block-size:inherit;transform:translate(calc(var(--_et-cascader-column-window-start, 0) * -1 * var(--et-cascader-column-inline-size)));transition:transform .24s ease}.et-cascader-panel .et-cascader-sheet-body{display:flex;flex-direction:column;block-size:min(60vh,480px)}.et-cascader-panel .et-cascader-search{padding:6px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-search input[etcascadersearch]{inline-size:100%;block-size:36px;box-sizing:border-box;padding-inline:10px;border-radius:6px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 6%,transparent);color:inherit;font:inherit;outline:none;caret-color:var(--et-theme-color-primary-solid, currentColor);transition:border-color .12s ease,background .12s ease}.et-cascader-panel .et-cascader-search input[etcascadersearch]:focus-visible{border-color:var(--et-theme-color-primary-solid, rgb(255 255 255 / .3))}.et-cascader-panel .et-cascader-search input[etcascadersearch]::placeholder{color:var(--et-surface-color-muted-solid, rgb(255 255 255 / .55))}.et-cascader-panel .et-cascader-results{display:block;box-sizing:border-box;inline-size:min(320px,calc(100vw - 24px));max-block-size:var(--_et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-sheet-body .et-cascader-results{flex:1;min-block-size:0;inline-size:100%;max-block-size:none}.et-cascader-panel .et-cascader-column{display:block;flex:none;inline-size:var(--et-cascader-column-inline-size);max-block-size:var(--_et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-column:not(:last-child){border-inline-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-in-forward .2s ease}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=backward]){animation:et-cascader-column-in-backward .2s ease}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-grow-in .18s ease}.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option{display:flex;align-items:center;gap:8px;inline-size:100%;min-block-size:var(--et-cascader-node-height);padding-inline:10px;border:none;border-radius:6px;background:transparent;font:inherit;text-align:start;color:inherit;cursor:pointer;appearance:none;outline:none;transition:background .12s ease}@media(hover:hover){:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):focus-visible,:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-focused]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-expanded]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-selected]{color:var(--et-theme-color-ink-solid, currentColor);font-weight:500}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-disabled]{cursor:default;opacity:.4}.et-cascader-panel .et-cascader-node-label,.et-cascader-panel .et-cascader-search-option-label{flex:1;min-inline-size:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.et-cascader-panel .et-cascader-search-option-ancestor{color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-check{position:relative;flex:none;inline-size:16px;block-size:16px;box-sizing:border-box;border:2px solid var(--et-surface-border-solid, rgb(255 255 255 / .3));border-radius:4px;transition:background .12s ease,border-color .12s ease}.et-cascader-panel .et-cascader-check:after{content:\"\";position:absolute;opacity:0}.et-cascader-panel [data-selected]>.et-cascader-check,.et-cascader-panel [data-indeterminate]>.et-cascader-check{border-color:var(--et-theme-color-primary-solid, currentColor);background:var(--et-theme-color-primary-solid, currentColor)}.et-cascader-panel [data-selected]>.et-cascader-check:after{inset-inline-start:4px;inset-block-start:1px;inline-size:4px;block-size:8px;border:solid var(--et-theme-color-on-primary, rgb(0 0 0));border-width:0 2px 2px 0;rotate:45deg;opacity:1}.et-cascader-panel [data-indeterminate]>.et-cascader-check:after{inset-inline-start:2px;inset-block-start:5px;inline-size:8px;block-size:2px;background:var(--et-theme-color-on-primary, rgb(0 0 0));opacity:1}.et-cascader-panel .et-cascader-node-chevron{flex:none;inline-size:12px;block-size:12px;color:var(--et-surface-color-muted-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-state{display:flex;align-items:center;justify-content:center;gap:8px;min-block-size:var(--et-cascader-node-height);padding:12px 16px;text-align:center;color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-state.et-cascader-state--error{flex-direction:column;gap:8px;font-size:12px}.et-cascader-panel .et-cascader-state-error-message{color:var(--et-theme-color-primary-solid, rgb(248 113 113))}@keyframes et-cascader-title-enter-forward{0%{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-enter-backward{0%{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-forward{to{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-backward{to{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-fade-in{0%{opacity:0}}@keyframes et-cascader-title-fade-out{to{opacity:0}}@keyframes et-cascader-column-in-forward{0%{opacity:0;transform:translate(14px)}}@keyframes et-cascader-column-in-backward{0%{opacity:0;transform:translate(-14px)}}@keyframes et-cascader-column-grow-in{0%{opacity:0;transform:translate(-10px)}}@keyframes et-cascader-crumb-in{0%{opacity:0;transform:translate(8px)}}@keyframes et-cascader-crumb-out{to{opacity:0;transform:translate(8px)}}@media(prefers-reduced-motion:reduce){.et-cascader-panel .et-cascader-column,.et-cascader-panel .et-cascader-sheet-title,.et-cascader-panel .et-cascader-crumb{animation:none}.et-cascader-panel .et-cascader-back,.et-cascader-panel .et-cascader-sheet-title-shift,.et-cascader-panel .et-cascader-columns-track{transition:none}}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
21483
21543
|
}
|
|
21484
21544
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CascaderPanelComponent, decorators: [{
|
|
21485
21545
|
type: Component,
|
|
@@ -21499,7 +21559,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
21499
21559
|
'[attr.data-sheet]': 'isSheet() || null',
|
|
21500
21560
|
'(focusin)': 'handleFocusIn()',
|
|
21501
21561
|
'(focusout)': 'handleFocusOut($event)',
|
|
21502
|
-
}, styles: ["@layer components{@property --et-cascader-column-inline-size{syntax: \"<length>\"; inherits: true; initial-value: 220px;}@property --et-cascader-panel-max-block-size{syntax: \"<length-percentage>\"; inherits: false; initial-value: 320px;}@property --et-cascader-node-height{syntax: \"<length>\"; inherits: true; initial-value: 36px;}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--cascader[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--cascader[data-overlay-placement].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-cascader-panel{display:block;box-sizing:border-box;border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:14px;box-shadow:0 10px 24px #00000029;overflow:hidden}.et-cascader-panel.et-cascader-panel--resizing{overflow:clip}.et-cascader-panel:not([data-sheet])>.et-cascader-panel-body{inline-size:max-content}.et-cascader-panel .et-cascader-sheet-header{position:relative;display:flex;align-items:center;flex:none;box-sizing:border-box;block-size:var(--et-cascader-node-height);padding-block:4px;padding-inline:20px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-back{position:absolute;inset-block:0;inset-inline-start:20px;display:inline-flex;align-items:center;transition:opacity .18s ease,transform .18s ease}.et-cascader-panel .et-cascader-back.et-cascader-back--hidden{opacity:0;transform:translate(-6px);pointer-events:none}.et-cascader-panel .et-cascader-back-icon{rotate:-90deg}.et-cascader-panel .et-cascader-sheet-title-slot{position:relative;flex:1;min-inline-size:0;align-self:stretch;overflow:hidden;pointer-events:none}.et-cascader-panel .et-cascader-sheet-title-shift{position:absolute;inset:0;transform:translate(0);transition:transform .18s ease}.et-cascader-panel .et-cascader-sheet-header[data-back] .et-cascader-sheet-title-shift{transform:translate(var(--et-cascader-back-slot, 4em))}.et-cascader-panel .et-cascader-sheet-title{position:absolute;inset:0;display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:600;color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-forward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-backward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-forward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-backward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--enter{animation:et-cascader-title-fade-in .18s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--leave{animation:et-cascader-title-fade-out .18s ease forwards}.et-cascader-panel .et-cascader-breadcrumbs{display:flex;align-items:center;gap:2px;box-sizing:border-box;inline-size:0;min-inline-size:100%;padding:6px;border-block-start:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));overflow:hidden}.et-cascader-panel .et-cascader-crumb{display:flex;align-items:center;gap:2px;min-inline-size:0}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--enter{animation:et-cascader-crumb-in .2s ease}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--leave{animation:et-cascader-crumb-out .16s ease forwards}.et-cascader-panel .et-cascader-breadcrumb{display:block;min-inline-size:0;padding:4px 8px;border:none;border-radius:6px;background:transparent;font:inherit;font-size:12px;color:var(--et-surface-color-muted-solid, currentColor);text-align:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;appearance:none;outline:none;transition:background .12s ease,color .12s ease}@media(hover:hover){.et-cascader-panel .et-cascader-breadcrumb:hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent);color:var(--et-surface-color-solid, currentColor)}}.et-cascader-panel .et-cascader-breadcrumb:focus-visible{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent);color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb[data-current]{color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb-chevron{flex:none;inline-size:10px;block-size:10px;color:var(--et-surface-color-subtle-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-columns{display:flex;max-block-size:var(--et-cascader-panel-max-block-size)}.et-cascader-panel .et-cascader-columns:not([data-sheet]){display:block;inline-size:calc(var(--_et-cascader-visible-columns, 1) * var(--et-cascader-column-inline-size));overflow:clip}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column{box-sizing:border-box}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column--offstage{contain:size}.et-cascader-panel .et-cascader-columns[data-sheet]{display:block;flex:1;min-block-size:0;max-block-size:none;overflow-y:auto;overflow-x:clip;overscroll-behavior:contain}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column{inline-size:100%;block-size:100%;max-block-size:none;overflow:visible;border-inline-end:none}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:has(.et-cascader-state){display:flex;align-items:center;justify-content:center}.et-cascader-panel .et-cascader-columns-track{display:flex;max-block-size:inherit;transform:translate(calc(var(--_et-cascader-column-window-start, 0) * -1 * var(--et-cascader-column-inline-size)));transition:transform .24s ease}.et-cascader-panel .et-cascader-sheet-body{display:flex;flex-direction:column;block-size:min(60vh,480px)}.et-cascader-panel .et-cascader-search{padding:6px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-search input[etcascadersearch]{inline-size:100%;block-size:36px;box-sizing:border-box;padding-inline:10px;border-radius:6px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 6%,transparent);color:inherit;font:inherit;outline:none;caret-color:var(--et-theme-color-primary-solid, currentColor);transition:border-color .12s ease,background .12s ease}.et-cascader-panel .et-cascader-search input[etcascadersearch]:focus-visible{border-color:var(--et-theme-color-primary-solid, rgb(255 255 255 / .3))}.et-cascader-panel .et-cascader-search input[etcascadersearch]::placeholder{color:var(--et-surface-color-muted-solid, rgb(255 255 255 / .55))}.et-cascader-panel .et-cascader-results{display:block;box-sizing:border-box;inline-size:min(320px,calc(100vw - 24px));max-block-size:var(--et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-sheet-body .et-cascader-results{flex:1;min-block-size:0;inline-size:100%;max-block-size:none}.et-cascader-panel .et-cascader-column{display:block;flex:none;inline-size:var(--et-cascader-column-inline-size);max-block-size:var(--et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-column:not(:last-child){border-inline-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-in-forward .2s ease}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=backward]){animation:et-cascader-column-in-backward .2s ease}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-grow-in .18s ease}.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option{display:flex;align-items:center;gap:8px;inline-size:100%;min-block-size:var(--et-cascader-node-height);padding-inline:10px;border:none;border-radius:6px;background:transparent;font:inherit;text-align:start;color:inherit;cursor:pointer;appearance:none;outline:none;transition:background .12s ease}@media(hover:hover){:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):focus-visible,:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-focused]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-expanded]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-selected]{color:var(--et-theme-color-ink-solid, currentColor);font-weight:500}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-disabled]{cursor:default;opacity:.4}.et-cascader-panel .et-cascader-node-label,.et-cascader-panel .et-cascader-search-option-label{flex:1;min-inline-size:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.et-cascader-panel .et-cascader-search-option-ancestor{color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-check{position:relative;flex:none;inline-size:16px;block-size:16px;box-sizing:border-box;border:2px solid var(--et-surface-border-solid, rgb(255 255 255 / .3));border-radius:4px;transition:background .12s ease,border-color .12s ease}.et-cascader-panel .et-cascader-check:after{content:\"\";position:absolute;opacity:0}.et-cascader-panel [data-selected]>.et-cascader-check,.et-cascader-panel [data-indeterminate]>.et-cascader-check{border-color:var(--et-theme-color-primary-solid, currentColor);background:var(--et-theme-color-primary-solid, currentColor)}.et-cascader-panel [data-selected]>.et-cascader-check:after{inset-inline-start:4px;inset-block-start:1px;inline-size:4px;block-size:8px;border:solid var(--et-theme-color-on-primary, rgb(0 0 0));border-width:0 2px 2px 0;rotate:45deg;opacity:1}.et-cascader-panel [data-indeterminate]>.et-cascader-check:after{inset-inline-start:2px;inset-block-start:5px;inline-size:8px;block-size:2px;background:var(--et-theme-color-on-primary, rgb(0 0 0));opacity:1}.et-cascader-panel .et-cascader-node-chevron{flex:none;inline-size:12px;block-size:12px;color:var(--et-surface-color-muted-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-state{display:flex;align-items:center;justify-content:center;gap:8px;min-block-size:var(--et-cascader-node-height);padding:12px 16px;text-align:center;color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-state.et-cascader-state--error{flex-direction:column;gap:8px;font-size:12px}.et-cascader-panel .et-cascader-state-error-message{color:var(--et-theme-color-primary-solid, rgb(248 113 113))}@keyframes et-cascader-title-enter-forward{0%{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-enter-backward{0%{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-forward{to{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-backward{to{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-fade-in{0%{opacity:0}}@keyframes et-cascader-title-fade-out{to{opacity:0}}@keyframes et-cascader-column-in-forward{0%{opacity:0;transform:translate(14px)}}@keyframes et-cascader-column-in-backward{0%{opacity:0;transform:translate(-14px)}}@keyframes et-cascader-column-grow-in{0%{opacity:0;transform:translate(-10px)}}@keyframes et-cascader-crumb-in{0%{opacity:0;transform:translate(8px)}}@keyframes et-cascader-crumb-out{to{opacity:0;transform:translate(8px)}}@media(prefers-reduced-motion:reduce){.et-cascader-panel .et-cascader-column,.et-cascader-panel .et-cascader-sheet-title,.et-cascader-panel .et-cascader-crumb{animation:none}.et-cascader-panel .et-cascader-back,.et-cascader-panel .et-cascader-sheet-title-shift,.et-cascader-panel .et-cascader-columns-track{transition:none}}}\n"] }]
|
|
21562
|
+
}, styles: ["@layer components{@property --et-cascader-column-inline-size{syntax: \"<length>\"; inherits: true; initial-value: 220px;}@property --et-cascader-panel-max-block-size{syntax: \"<length-percentage>\"; inherits: false; initial-value: 320px;}@property --et-cascader-node-height{syntax: \"<length>\"; inherits: true; initial-value: 36px;}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--cascader[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--cascader.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--cascader[data-overlay-placement].et-animation-enter-from,.et-overlay--cascader[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-cascader-panel{display:block;box-sizing:border-box;--_et-cascader-panel-max-block-size: min( var(--et-cascader-panel-max-block-size), var(--et-overlay-max-height, 100vh) );border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:14px;box-shadow:0 10px 24px #00000029;overflow:hidden}.et-cascader-panel.et-cascader-panel--resizing{overflow:clip}.et-cascader-panel:not([data-sheet])>.et-cascader-panel-body{inline-size:max-content}.et-cascader-panel .et-cascader-sheet-header{position:relative;display:flex;align-items:center;flex:none;box-sizing:border-box;block-size:var(--et-cascader-node-height);padding-block:4px;padding-inline:20px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-back{position:absolute;inset-block:0;inset-inline-start:20px;display:inline-flex;align-items:center;transition:opacity .18s ease,transform .18s ease}.et-cascader-panel .et-cascader-back.et-cascader-back--hidden{opacity:0;transform:translate(-6px);pointer-events:none}.et-cascader-panel .et-cascader-back-icon{rotate:-90deg}.et-cascader-panel .et-cascader-sheet-title-slot{position:relative;flex:1;min-inline-size:0;align-self:stretch;overflow:hidden;pointer-events:none}.et-cascader-panel .et-cascader-sheet-title-shift{position:absolute;inset:0;transform:translate(0);transition:transform .18s ease}.et-cascader-panel .et-cascader-sheet-header[data-back] .et-cascader-sheet-title-shift{transform:translate(var(--et-cascader-back-slot, 4em))}.et-cascader-panel .et-cascader-sheet-title{position:absolute;inset:0;display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:600;color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-forward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--enter{animation:et-cascader-title-enter-backward .2s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=forward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-forward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=slide][data-nav=backward] .et-cascader-sheet-title--leave{animation:et-cascader-title-leave-backward .18s ease forwards}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--enter{animation:et-cascader-title-fade-in .18s ease}.et-cascader-panel .et-cascader-sheet-title-slot[data-anim=fade] .et-cascader-sheet-title--leave{animation:et-cascader-title-fade-out .18s ease forwards}.et-cascader-panel .et-cascader-breadcrumbs{display:flex;align-items:center;gap:2px;box-sizing:border-box;inline-size:0;min-inline-size:100%;padding:6px;border-block-start:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));overflow:hidden}.et-cascader-panel .et-cascader-crumb{display:flex;align-items:center;gap:2px;min-inline-size:0}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--enter{animation:et-cascader-crumb-in .2s ease}.et-cascader-panel .et-cascader-crumb.et-cascader-crumb--leave{animation:et-cascader-crumb-out .16s ease forwards}.et-cascader-panel .et-cascader-breadcrumb{display:block;min-inline-size:0;padding:4px 8px;border:none;border-radius:6px;background:transparent;font:inherit;font-size:12px;color:var(--et-surface-color-muted-solid, currentColor);text-align:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;appearance:none;outline:none;transition:background .12s ease,color .12s ease}@media(hover:hover){.et-cascader-panel .et-cascader-breadcrumb:hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent);color:var(--et-surface-color-solid, currentColor)}}.et-cascader-panel .et-cascader-breadcrumb:focus-visible{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent);color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb[data-current]{color:var(--et-surface-color-solid, currentColor)}.et-cascader-panel .et-cascader-breadcrumb-chevron{flex:none;inline-size:10px;block-size:10px;color:var(--et-surface-color-subtle-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-columns{display:flex;max-block-size:var(--_et-cascader-panel-max-block-size)}.et-cascader-panel .et-cascader-columns:not([data-sheet]){display:block;inline-size:calc(var(--_et-cascader-visible-columns, 1) * var(--et-cascader-column-inline-size));overflow:clip}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column{box-sizing:border-box}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column--offstage{contain:size}.et-cascader-panel .et-cascader-columns[data-sheet]{display:block;flex:1;min-block-size:0;max-block-size:none;overflow-y:auto;overflow-x:clip;overscroll-behavior:contain}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column{inline-size:100%;block-size:100%;max-block-size:none;overflow:visible;border-inline-end:none}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:has(.et-cascader-state){display:flex;align-items:center;justify-content:center}.et-cascader-panel .et-cascader-columns-track{display:flex;max-block-size:inherit;transform:translate(calc(var(--_et-cascader-column-window-start, 0) * -1 * var(--et-cascader-column-inline-size)));transition:transform .24s ease}.et-cascader-panel .et-cascader-sheet-body{display:flex;flex-direction:column;block-size:min(60vh,480px)}.et-cascader-panel .et-cascader-search{padding:6px;border-block-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-search input[etcascadersearch]{inline-size:100%;block-size:36px;box-sizing:border-box;padding-inline:10px;border-radius:6px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 6%,transparent);color:inherit;font:inherit;outline:none;caret-color:var(--et-theme-color-primary-solid, currentColor);transition:border-color .12s ease,background .12s ease}.et-cascader-panel .et-cascader-search input[etcascadersearch]:focus-visible{border-color:var(--et-theme-color-primary-solid, rgb(255 255 255 / .3))}.et-cascader-panel .et-cascader-search input[etcascadersearch]::placeholder{color:var(--et-surface-color-muted-solid, rgb(255 255 255 / .55))}.et-cascader-panel .et-cascader-results{display:block;box-sizing:border-box;inline-size:min(320px,calc(100vw - 24px));max-block-size:var(--_et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-sheet-body .et-cascader-results{flex:1;min-block-size:0;inline-size:100%;max-block-size:none}.et-cascader-panel .et-cascader-column{display:block;flex:none;inline-size:var(--et-cascader-column-inline-size);max-block-size:var(--_et-cascader-panel-max-block-size);overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;padding:6px}.et-cascader-panel .et-cascader-column:not(:last-child){border-inline-end:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1))}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-in-forward .2s ease}.et-cascader-panel .et-cascader-columns[data-sheet] .et-cascader-column:where([data-nav=backward]){animation:et-cascader-column-in-backward .2s ease}.et-cascader-panel .et-cascader-columns:not([data-sheet]) .et-cascader-column:where([data-nav=forward]){animation:et-cascader-column-grow-in .18s ease}.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option{display:flex;align-items:center;gap:8px;inline-size:100%;min-block-size:var(--et-cascader-node-height);padding-inline:10px;border:none;border-radius:6px;background:transparent;font:inherit;text-align:start;color:inherit;cursor:pointer;appearance:none;outline:none;transition:background .12s ease}@media(hover:hover){:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option):focus-visible,:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-focused]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 16%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-expanded]{background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 12%,transparent)}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-selected]{color:var(--et-theme-color-ink-solid, currentColor);font-weight:500}:is(.et-cascader-panel .et-cascader-node,.et-cascader-panel .et-cascader-search-option)[data-disabled]{cursor:default;opacity:.4}.et-cascader-panel .et-cascader-node-label,.et-cascader-panel .et-cascader-search-option-label{flex:1;min-inline-size:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.et-cascader-panel .et-cascader-search-option-ancestor{color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-check{position:relative;flex:none;inline-size:16px;block-size:16px;box-sizing:border-box;border:2px solid var(--et-surface-border-solid, rgb(255 255 255 / .3));border-radius:4px;transition:background .12s ease,border-color .12s ease}.et-cascader-panel .et-cascader-check:after{content:\"\";position:absolute;opacity:0}.et-cascader-panel [data-selected]>.et-cascader-check,.et-cascader-panel [data-indeterminate]>.et-cascader-check{border-color:var(--et-theme-color-primary-solid, currentColor);background:var(--et-theme-color-primary-solid, currentColor)}.et-cascader-panel [data-selected]>.et-cascader-check:after{inset-inline-start:4px;inset-block-start:1px;inline-size:4px;block-size:8px;border:solid var(--et-theme-color-on-primary, rgb(0 0 0));border-width:0 2px 2px 0;rotate:45deg;opacity:1}.et-cascader-panel [data-indeterminate]>.et-cascader-check:after{inset-inline-start:2px;inset-block-start:5px;inline-size:8px;block-size:2px;background:var(--et-theme-color-on-primary, rgb(0 0 0));opacity:1}.et-cascader-panel .et-cascader-node-chevron{flex:none;inline-size:12px;block-size:12px;color:var(--et-surface-color-muted-solid, currentColor);rotate:90deg}.et-cascader-panel .et-cascader-state{display:flex;align-items:center;justify-content:center;gap:8px;min-block-size:var(--et-cascader-node-height);padding:12px 16px;text-align:center;color:var(--et-surface-color-muted-solid, currentColor)}.et-cascader-panel .et-cascader-state.et-cascader-state--error{flex-direction:column;gap:8px;font-size:12px}.et-cascader-panel .et-cascader-state-error-message{color:var(--et-theme-color-primary-solid, rgb(248 113 113))}@keyframes et-cascader-title-enter-forward{0%{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-enter-backward{0%{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-forward{to{opacity:0;transform:translate(-12px)}}@keyframes et-cascader-title-leave-backward{to{opacity:0;transform:translate(12px)}}@keyframes et-cascader-title-fade-in{0%{opacity:0}}@keyframes et-cascader-title-fade-out{to{opacity:0}}@keyframes et-cascader-column-in-forward{0%{opacity:0;transform:translate(14px)}}@keyframes et-cascader-column-in-backward{0%{opacity:0;transform:translate(-14px)}}@keyframes et-cascader-column-grow-in{0%{opacity:0;transform:translate(-10px)}}@keyframes et-cascader-crumb-in{0%{opacity:0;transform:translate(8px)}}@keyframes et-cascader-crumb-out{to{opacity:0;transform:translate(8px)}}@media(prefers-reduced-motion:reduce){.et-cascader-panel .et-cascader-column,.et-cascader-panel .et-cascader-sheet-title,.et-cascader-panel .et-cascader-crumb{animation:none}.et-cascader-panel .et-cascader-back,.et-cascader-panel .et-cascader-sheet-title-shift,.et-cascader-panel .et-cascader-columns-track{transition:none}}}\n"] }]
|
|
21503
21563
|
}], ctorParameters: () => [], propDecorators: { panelBody: [{ type: i0.ViewChild, args: ['panelBody', { isSignal: true }] }] } });
|
|
21504
21564
|
|
|
21505
21565
|
class CascaderComponent {
|
|
@@ -28900,17 +28960,17 @@ class RichTextEditorFloatingToolbarComponent {
|
|
|
28900
28960
|
return richTextEditorToolLabel(this.labels(), tool);
|
|
28901
28961
|
}
|
|
28902
28962
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RichTextEditorFloatingToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28903
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: RichTextEditorFloatingToolbarComponent, isStandalone: true, selector: "et-rich-text-editor-floating-toolbar", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "toolbar" }, listeners: { "mousedown": "$event.preventDefault()" }, properties: { "attr.aria-label": "labels().selectionToolbar" }, classAttribute: "et-rte-floating-toolbar" }, providers: [provideIcons(BOLD_ICON, ITALIC_ICON, UNDERLINE_ICON, STRIKETHROUGH_ICON, CODE_ICON, LINK_ICON)], hostDirectives: [{ directive: i1.ProvideColorDirective }, { directive: i1.AutoSurfaceDirective }], ngImport: i0, template: "@for (def of inlineTools(); track def.token; let first = $first) {\n @if (def.token === TOOLS.LINK && !first) {\n <
|
|
28963
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: RichTextEditorFloatingToolbarComponent, isStandalone: true, selector: "et-rich-text-editor-floating-toolbar", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "toolbar" }, listeners: { "mousedown": "$event.preventDefault()" }, properties: { "attr.aria-label": "labels().selectionToolbar" }, classAttribute: "et-rte-floating-toolbar" }, providers: [provideIcons(BOLD_ICON, ITALIC_ICON, UNDERLINE_ICON, STRIKETHROUGH_ICON, CODE_ICON, LINK_ICON)], hostDirectives: [{ directive: i1.ProvideColorDirective }, { directive: i1.AutoSurfaceDirective }], ngImport: i0, template: "@for (def of inlineTools(); track def.token; let first = $first) {\n @if (def.token === TOOLS.LINK && !first) {\n <et-divider orientation=\"vertical\" decorative />\n }\n\n <!-- Icon tools only: this bar has no room for a custom control, and every inline tool is a toggle. -->\n @if (def.icon; as icon) {\n <button\n [pressed]=\"def.isActive?.(editor()) ?? false\"\n [disabled]=\"def.isDisabled?.(editor()) ?? false\"\n [attr.aria-label]=\"toolLabel(def)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"def.run?.(editor())\"\n mutedUntilPressed\n et-icon-button\n size=\"sm\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i [allowHardcodedColor]=\"def.allowHardcodedColor ?? false\" [etIcon]=\"icon\"></i>\n </button>\n }\n}\n", styles: ["@layer components{.et-overlay.et-rte-floating-toolbar-overlay{overflow:visible;background:transparent;box-shadow:none;border-radius:10px}.et-overlay.et-rte-floating-toolbar-overlay>.et-rte-floating-toolbar{display:flex}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-enter-from,.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-rte-floating-toolbar-overlay[data-overlay-placement^=top].et-animation-enter-from,.et-rte-floating-toolbar-overlay[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-rte-floating-toolbar-overlay[data-overlay-placement^=bottom].et-animation-enter-from,.et-rte-floating-toolbar-overlay[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-leave-active{transition:opacity .1s ease}.et-rte-floating-toolbar-overlay[data-overlay-placement].et-animation-enter-from,.et-rte-floating-toolbar-overlay[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-rte-floating-toolbar{display:flex;align-items:center;gap:var(--et-rich-text-editor-toolbar-gap, 2px);padding:var(--et-rich-text-editor-toolbar-padding, 4px);border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, var(--et-surface-2, rgb(38 38 38)));color:var(--et-surface-color-solid, var(--et-color-main-contrast, rgb(244 244 245)));box-shadow:0 10px 24px #00000029;--et-icon-button-border-radius: var(--et-rich-text-editor-button-radius, 4px)}.et-rte-floating-toolbar .et-divider{--et-divider-color: color-mix(in srgb, currentColor 20%, transparent);--et-divider-spacing: 2px;--et-divider-inset: 4px}}\n"], dependencies: [{ kind: "component", type: DividerComponent, selector: "et-divider", inputs: ["orientation", "decorative"] }, { kind: "component", type: IconButtonComponent, selector: "[et-icon-button]", inputs: ["variant", "size"] }, { kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "variant", "allowHardcodedColor", "label"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
28904
28964
|
}
|
|
28905
28965
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RichTextEditorFloatingToolbarComponent, decorators: [{
|
|
28906
28966
|
type: Component,
|
|
28907
|
-
args: [{ selector: 'et-rich-text-editor-floating-toolbar', encapsulation: ViewEncapsulation.None, imports: [IconButtonComponent, IconDirective], providers: [provideIcons(BOLD_ICON, ITALIC_ICON, UNDERLINE_ICON, STRIKETHROUGH_ICON, CODE_ICON, LINK_ICON)], hostDirectives: [ProvideColorDirective, AutoSurfaceDirective], host: {
|
|
28967
|
+
args: [{ selector: 'et-rich-text-editor-floating-toolbar', encapsulation: ViewEncapsulation.None, imports: [DividerComponent, IconButtonComponent, IconDirective], providers: [provideIcons(BOLD_ICON, ITALIC_ICON, UNDERLINE_ICON, STRIKETHROUGH_ICON, CODE_ICON, LINK_ICON)], hostDirectives: [ProvideColorDirective, AutoSurfaceDirective], host: {
|
|
28908
28968
|
class: 'et-rte-floating-toolbar',
|
|
28909
28969
|
role: 'toolbar',
|
|
28910
28970
|
'[attr.aria-label]': 'labels().selectionToolbar',
|
|
28911
28971
|
// keep the caret/selection in the editor when the user clicks a button
|
|
28912
28972
|
'(mousedown)': '$event.preventDefault()',
|
|
28913
|
-
}, template: "@for (def of inlineTools(); track def.token; let first = $first) {\n @if (def.token === TOOLS.LINK && !first) {\n <
|
|
28973
|
+
}, template: "@for (def of inlineTools(); track def.token; let first = $first) {\n @if (def.token === TOOLS.LINK && !first) {\n <et-divider orientation=\"vertical\" decorative />\n }\n\n <!-- Icon tools only: this bar has no room for a custom control, and every inline tool is a toggle. -->\n @if (def.icon; as icon) {\n <button\n [pressed]=\"def.isActive?.(editor()) ?? false\"\n [disabled]=\"def.isDisabled?.(editor()) ?? false\"\n [attr.aria-label]=\"toolLabel(def)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"def.run?.(editor())\"\n mutedUntilPressed\n et-icon-button\n size=\"sm\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i [allowHardcodedColor]=\"def.allowHardcodedColor ?? false\" [etIcon]=\"icon\"></i>\n </button>\n }\n}\n", styles: ["@layer components{.et-overlay.et-rte-floating-toolbar-overlay{overflow:visible;background:transparent;box-shadow:none;border-radius:10px}.et-overlay.et-rte-floating-toolbar-overlay>.et-rte-floating-toolbar{display:flex}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-enter-from,.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-rte-floating-toolbar-overlay[data-overlay-placement^=top].et-animation-enter-from,.et-rte-floating-toolbar-overlay[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-rte-floating-toolbar-overlay[data-overlay-placement^=bottom].et-animation-enter-from,.et-rte-floating-toolbar-overlay[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-rte-floating-toolbar-overlay.et-animation-leave-active{transition:opacity .1s ease}.et-rte-floating-toolbar-overlay[data-overlay-placement].et-animation-enter-from,.et-rte-floating-toolbar-overlay[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-rte-floating-toolbar{display:flex;align-items:center;gap:var(--et-rich-text-editor-toolbar-gap, 2px);padding:var(--et-rich-text-editor-toolbar-padding, 4px);border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, var(--et-surface-2, rgb(38 38 38)));color:var(--et-surface-color-solid, var(--et-color-main-contrast, rgb(244 244 245)));box-shadow:0 10px 24px #00000029;--et-icon-button-border-radius: var(--et-rich-text-editor-button-radius, 4px)}.et-rte-floating-toolbar .et-divider{--et-divider-color: color-mix(in srgb, currentColor 20%, transparent);--et-divider-spacing: 2px;--et-divider-inset: 4px}}\n"] }]
|
|
28914
28974
|
}], ctorParameters: () => [], propDecorators: { editor: [{ type: i0.Input, args: [{ isSignal: true, alias: "editor", required: true }] }] } });
|
|
28915
28975
|
|
|
28916
28976
|
const HEADING_SELECTOR = 'h1, h2, h3, h4, h5, h6';
|
|
@@ -32430,6 +32490,7 @@ const createMenuHoverIntent = () => {
|
|
|
32430
32490
|
};
|
|
32431
32491
|
};
|
|
32432
32492
|
|
|
32493
|
+
const MENU_MIN_AVAILABLE_SPACE = 160;
|
|
32433
32494
|
class MenuDirective {
|
|
32434
32495
|
constructor() {
|
|
32435
32496
|
this.destroyRef = inject(DestroyRef);
|
|
@@ -33005,6 +33066,7 @@ class MenuDirective {
|
|
|
33005
33066
|
const positionOptions = {
|
|
33006
33067
|
placement: this.resolvedPlacement(),
|
|
33007
33068
|
fallbackPlacements: this.resolvedFallbackPlacements(),
|
|
33069
|
+
minAvailableSpace: this.resolvedMinAvailableSpace(),
|
|
33008
33070
|
offset: this.resolvedOffset(),
|
|
33009
33071
|
arrowPadding: this.arrowPadding(),
|
|
33010
33072
|
viewportPadding: this.viewportPadding(),
|
|
@@ -33066,6 +33128,18 @@ class MenuDirective {
|
|
|
33066
33128
|
}
|
|
33067
33129
|
return ['left-start', 'right-end', 'left-end'];
|
|
33068
33130
|
}
|
|
33131
|
+
/**
|
|
33132
|
+
* `minAvailableSpace` replaces `flip` outright, so it may only kick in where no consumer has
|
|
33133
|
+
* expressed a placement preference of their own. It is also vertical-only: a submenu opens on the
|
|
33134
|
+
* x axis, where shrinking to the space beside the parent means a narrower - not a shorter - panel.
|
|
33135
|
+
*/
|
|
33136
|
+
resolvedMinAvailableSpace() {
|
|
33137
|
+
if (this.fallbackPlacements() || this.anchorPoint() || !this.isRoot) {
|
|
33138
|
+
return undefined;
|
|
33139
|
+
}
|
|
33140
|
+
const side = this.resolvedPlacement().split('-')[0];
|
|
33141
|
+
return side === 'top' || side === 'bottom' ? MENU_MIN_AVAILABLE_SPACE : undefined;
|
|
33142
|
+
}
|
|
33069
33143
|
resolvedArrow() {
|
|
33070
33144
|
// a point anchor (context menu) has no element the arrow could meaningfully point at
|
|
33071
33145
|
return this.arrow() && this.isRoot && !this.anchorPoint();
|
|
@@ -34022,12 +34096,12 @@ class MenuComponent {
|
|
|
34022
34096
|
this.contextColorProvider = inject(COLOR_PROVIDER, { optional: true, skipSelf: true });
|
|
34023
34097
|
this.menu = inject(MenuDirective, { optional: true });
|
|
34024
34098
|
this.errorColorTheme = injectErrorTheme();
|
|
34025
|
-
//
|
|
34026
|
-
//
|
|
34099
|
+
// both must stay content-sized: the host's used size is overridden by the resize animation and
|
|
34100
|
+
// the scroller is sized by the host, so observing either would feed the animation back in
|
|
34027
34101
|
this.headerElement = viewChild('menuHeader', /* @ts-ignore */
|
|
34028
34102
|
...(ngDevMode ? [{ debugName: "headerElement" }] : /* istanbul ignore next */ []));
|
|
34029
|
-
this.
|
|
34030
|
-
...(ngDevMode ? [{ debugName: "
|
|
34103
|
+
this.bodyContentElement = viewChild('menuBodyContent', /* @ts-ignore */
|
|
34104
|
+
...(ngDevMode ? [{ debugName: "bodyContentElement" }] : /* istanbul ignore next */ []));
|
|
34031
34105
|
this.search = computed(() => this.menu?.registeredSearch() ?? null, /* @ts-ignore */
|
|
34032
34106
|
...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
|
|
34033
34107
|
this.searchLoading = computed(() => this.search()?.loading() ?? false, /* @ts-ignore */
|
|
@@ -34053,19 +34127,19 @@ class MenuComponent {
|
|
|
34053
34127
|
// animate the menu's block size when its content changes while open
|
|
34054
34128
|
// (e.g. search filtering items away or the search error line appearing)
|
|
34055
34129
|
injectAnimatedBlockSize({
|
|
34056
|
-
observe: [this.headerElement, this.
|
|
34130
|
+
observe: [this.headerElement, this.bodyContentElement],
|
|
34057
34131
|
resizingClass: RESIZE_ANIMATION_CLASS,
|
|
34058
34132
|
});
|
|
34059
34133
|
}
|
|
34060
34134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34061
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MenuComponent, isStandalone: true, selector: "et-menu", host: { classAttribute: "et-menu" }, viewQueries: [{ propertyName: "headerElement", first: true, predicate: ["menuHeader"], descendants: true, isSignal: true }, { propertyName: "
|
|
34135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MenuComponent, isStandalone: true, selector: "et-menu", host: { classAttribute: "et-menu" }, viewQueries: [{ propertyName: "headerElement", first: true, predicate: ["menuHeader"], descendants: true, isSignal: true }, { propertyName: "bodyContentElement", first: true, predicate: ["menuBodyContent"], descendants: true, isSignal: true }], hostDirectives: [{ directive: MenuPanelDirective }, { directive: i1.ProvideColorDirective }, { directive: i1.AutoSurfaceDirective }], ngImport: i0, template: "<div #menuHeader class=\"et-menu-header\">\n <div class=\"et-menu-search-field\">\n <ng-content select=\"input[etMenuSearch]\" />\n\n @if (searchLoading()) {\n <et-spinner class=\"et-menu-search-spinner\" diameter=\"16\" />\n }\n </div>\n\n @if (searchError(); as error) {\n <p [id]=\"searchErrorId\" [etProvideColor]=\"errorColorTheme\" class=\"et-menu-search-error\" role=\"alert\">\n {{ error }}\n </p>\n }\n</div>\n\n<div class=\"et-menu-body\">\n <div #menuBodyContent class=\"et-menu-body-content\">\n <ng-content />\n </div>\n</div>\n", styles: ["@layer components{@property --et-menu-min-width{syntax: \"<length>\"; inherits: false; initial-value: 180px;}@property --et-menu-max-height{syntax: \"<length-percentage>\"; inherits: false; initial-value: 40vh;}@property --et-menu-padding-block{syntax: \"<length>\"; inherits: false; initial-value: 6px;}@property --et-menu-padding-inline{syntax: \"<length>\"; inherits: false; initial-value: 6px;}@property --et-menu-item-height{syntax: \"<length>\"; inherits: true; initial-value: 36px;}@property --et-menu-item-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 10px;}@property --et-menu-item-gap{syntax: \"<length>\"; inherits: true; initial-value: 10px;}@property --et-menu-item-border-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-menu-item-font-size{syntax: \"<length>\"; inherits: true; initial-value: 14px;}@property --et-menu-item-icon-size{syntax: \"<length>\"; inherits: true; initial-value: 16px;}@property --et-menu-separator-margin-block{syntax: \"<length>\"; inherits: false; initial-value: 6px;}@property --et-menu-group-label-font-size{syntax: \"<length>\"; inherits: false; initial-value: 12px;}@property --et-menu-search-height{syntax: \"<length>\"; inherits: false; initial-value: 36px;}.et-overlay.et-overlay--menu{overflow:visible;background:transparent;box-shadow:none}.et-menu{--_et-menu-background: var(--et-surface-background-solid, var(--et-surface-2, rgb(32 32 32)));--_et-menu-color: var(--et-surface-color-solid, var(--et-color-main-contrast, rgb(244 244 245)));--_et-menu-border: var(--et-surface-border-solid, rgb(255 255 255 / .1));--_et-menu-shadow: 0 10px 24px rgb(0 0 0 / .16);--_et-menu-radius: 10px;--_et-menu-item-active-background: color-mix( in srgb, var(--et-surface-interaction-solid, rgb(255 255 255)) 12%, transparent );--_et-menu-item-pressed-background: color-mix( in srgb, var(--et-surface-interaction-solid, rgb(255 255 255)) 20%, transparent );--_et-menu-muted-color: var(--et-surface-color-muted-solid, rgb(255 255 255 / .55));--_et-menu-separator-color: var(--et-surface-border-solid, rgb(255 255 255 / .1));display:flex;flex-direction:column;min-inline-size:var(--et-menu-min-width);max-inline-size:min(320px,calc(100vw - 24px));max-block-size:min(var(--et-menu-max-height),var(--et-overlay-max-height, 100vh));border-radius:var(--_et-menu-radius);border:1px solid var(--_et-menu-border);background:var(--_et-menu-background);color:var(--_et-menu-color);font-family:var(--et-font-family, inherit);font-size:var(--et-menu-item-font-size);box-shadow:var(--_et-menu-shadow);outline:none}.et-menu.et-menu--resizing{overflow:clip}.et-menu.et-menu--resizing .et-menu-body{overflow:clip}.et-menu .et-menu-header{flex:none;padding:var(--et-menu-padding-block) var(--et-menu-padding-inline) 0;contain:inline-size}.et-menu .et-menu-header:not(:has(input[etmenusearch])){display:none}.et-menu .et-menu-header .et-menu-search-field{position:relative}.et-menu .et-menu-header .et-menu-search-field:has(.et-menu-search-spinner) input[etmenusearch]{padding-inline-end:calc(var(--et-menu-item-padding-inline) + 22px)}.et-menu .et-menu-header .et-menu-search-spinner{position:absolute;inset-block-start:50%;inset-inline-end:10px;translate:0 -50%;color:var(--_et-menu-muted-color)}.et-menu .et-menu-header .et-menu-search-error{margin:6px 2px 0;font-size:12px;color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-menu .et-menu-header input[etmenusearch]{inline-size:100%;block-size:var(--et-menu-search-height);padding-inline:var(--et-menu-item-padding-inline);border-radius:var(--et-menu-item-border-radius);border:1px solid var(--_et-menu-border);background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 6%,transparent);color:inherit;font:inherit;outline:none;box-sizing:border-box;transition:border-color .12s ease,background .12s ease}.et-menu .et-menu-header input[etmenusearch]:focus-visible{border-color:var(--et-theme-color-primary-solid, rgb(255 255 255 / .3))}.et-menu .et-menu-header input[etmenusearch]::placeholder{color:var(--_et-menu-muted-color)}.et-menu .et-menu-body{flex:1;min-block-size:0;padding:var(--et-menu-padding-block) var(--et-menu-padding-inline);overflow-y:auto;overscroll-behavior:contain}.et-menu .et-menu-group{display:block}.et-menu .et-menu-item{display:flex;align-items:center;gap:var(--et-menu-item-gap);inline-size:100%;min-block-size:var(--et-menu-item-height);padding-inline:var(--et-menu-item-padding-inline);border:none;border-radius:var(--et-menu-item-border-radius);background:transparent;color:inherit;font:inherit;text-align:start;text-decoration:none;cursor:pointer;outline:none;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transition:background .12s ease,color .12s ease,opacity .12s ease}.et-menu .et-menu-item[data-active]:where(:focus-visible),.et-menu .et-menu-item[data-menu-open]{background:var(--_et-menu-item-active-background)}@media(hover:hover){.et-menu .et-menu-item[data-active]:where(:hover){background:var(--_et-menu-item-active-background)}}.et-menu .et-menu-item:active:not([aria-disabled=true]){background:var(--_et-menu-item-pressed-background)}.et-menu .et-menu-item[aria-disabled=true]{opacity:.4;cursor:default}.et-menu .et-menu-item[data-variant=destructive]{color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-menu .et-menu-item .et-menu-item-content{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--menu[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--menu[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}.et-overlay--menu[data-overlay-placement^=right].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=right].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translate(-.3rem)!important}.et-overlay--menu[data-overlay-placement^=left].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=left].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translate(.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--menu[data-overlay-placement].et-animation-enter-from,.et-overlay--menu[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}}\n"], dependencies: [{ kind: "directive", type: ProvideColorDirective, selector: "[etProvideColor]", inputs: ["etProvideColor"] }, { kind: "component", type: SpinnerComponent, selector: "et-spinner", inputs: ["diameter", "strokeWidth", "track", "value", "determinate"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
34062
34136
|
}
|
|
34063
34137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MenuComponent, decorators: [{
|
|
34064
34138
|
type: Component,
|
|
34065
34139
|
args: [{ selector: 'et-menu', encapsulation: ViewEncapsulation.None, imports: [ProvideColorDirective, SpinnerComponent], hostDirectives: [MenuPanelDirective, ProvideColorDirective, AutoSurfaceDirective], host: {
|
|
34066
34140
|
class: 'et-menu',
|
|
34067
|
-
}, template: "<div #menuHeader class=\"et-menu-header\">\n <div class=\"et-menu-search-field\">\n <ng-content select=\"input[etMenuSearch]\" />\n\n @if (searchLoading()) {\n <et-spinner class=\"et-menu-search-spinner\" diameter=\"16\" />\n }\n </div>\n\n @if (searchError(); as error) {\n <p [id]=\"searchErrorId\" [etProvideColor]=\"errorColorTheme\" class=\"et-menu-search-error\" role=\"alert\">\n {{ error }}\n </p>\n }\n</div>\n\n<div #
|
|
34068
|
-
}], ctorParameters: () => [], propDecorators: { headerElement: [{ type: i0.ViewChild, args: ['menuHeader', { isSignal: true }] }],
|
|
34141
|
+
}, template: "<div #menuHeader class=\"et-menu-header\">\n <div class=\"et-menu-search-field\">\n <ng-content select=\"input[etMenuSearch]\" />\n\n @if (searchLoading()) {\n <et-spinner class=\"et-menu-search-spinner\" diameter=\"16\" />\n }\n </div>\n\n @if (searchError(); as error) {\n <p [id]=\"searchErrorId\" [etProvideColor]=\"errorColorTheme\" class=\"et-menu-search-error\" role=\"alert\">\n {{ error }}\n </p>\n }\n</div>\n\n<div class=\"et-menu-body\">\n <div #menuBodyContent class=\"et-menu-body-content\">\n <ng-content />\n </div>\n</div>\n", styles: ["@layer components{@property --et-menu-min-width{syntax: \"<length>\"; inherits: false; initial-value: 180px;}@property --et-menu-max-height{syntax: \"<length-percentage>\"; inherits: false; initial-value: 40vh;}@property --et-menu-padding-block{syntax: \"<length>\"; inherits: false; initial-value: 6px;}@property --et-menu-padding-inline{syntax: \"<length>\"; inherits: false; initial-value: 6px;}@property --et-menu-item-height{syntax: \"<length>\"; inherits: true; initial-value: 36px;}@property --et-menu-item-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 10px;}@property --et-menu-item-gap{syntax: \"<length>\"; inherits: true; initial-value: 10px;}@property --et-menu-item-border-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-menu-item-font-size{syntax: \"<length>\"; inherits: true; initial-value: 14px;}@property --et-menu-item-icon-size{syntax: \"<length>\"; inherits: true; initial-value: 16px;}@property --et-menu-separator-margin-block{syntax: \"<length>\"; inherits: false; initial-value: 6px;}@property --et-menu-group-label-font-size{syntax: \"<length>\"; inherits: false; initial-value: 12px;}@property --et-menu-search-height{syntax: \"<length>\"; inherits: false; initial-value: 36px;}.et-overlay.et-overlay--menu{overflow:visible;background:transparent;box-shadow:none}.et-menu{--_et-menu-background: var(--et-surface-background-solid, var(--et-surface-2, rgb(32 32 32)));--_et-menu-color: var(--et-surface-color-solid, var(--et-color-main-contrast, rgb(244 244 245)));--_et-menu-border: var(--et-surface-border-solid, rgb(255 255 255 / .1));--_et-menu-shadow: 0 10px 24px rgb(0 0 0 / .16);--_et-menu-radius: 10px;--_et-menu-item-active-background: color-mix( in srgb, var(--et-surface-interaction-solid, rgb(255 255 255)) 12%, transparent );--_et-menu-item-pressed-background: color-mix( in srgb, var(--et-surface-interaction-solid, rgb(255 255 255)) 20%, transparent );--_et-menu-muted-color: var(--et-surface-color-muted-solid, rgb(255 255 255 / .55));--_et-menu-separator-color: var(--et-surface-border-solid, rgb(255 255 255 / .1));display:flex;flex-direction:column;min-inline-size:var(--et-menu-min-width);max-inline-size:min(320px,calc(100vw - 24px));max-block-size:min(var(--et-menu-max-height),var(--et-overlay-max-height, 100vh));border-radius:var(--_et-menu-radius);border:1px solid var(--_et-menu-border);background:var(--_et-menu-background);color:var(--_et-menu-color);font-family:var(--et-font-family, inherit);font-size:var(--et-menu-item-font-size);box-shadow:var(--_et-menu-shadow);outline:none}.et-menu.et-menu--resizing{overflow:clip}.et-menu.et-menu--resizing .et-menu-body{overflow:clip}.et-menu .et-menu-header{flex:none;padding:var(--et-menu-padding-block) var(--et-menu-padding-inline) 0;contain:inline-size}.et-menu .et-menu-header:not(:has(input[etmenusearch])){display:none}.et-menu .et-menu-header .et-menu-search-field{position:relative}.et-menu .et-menu-header .et-menu-search-field:has(.et-menu-search-spinner) input[etmenusearch]{padding-inline-end:calc(var(--et-menu-item-padding-inline) + 22px)}.et-menu .et-menu-header .et-menu-search-spinner{position:absolute;inset-block-start:50%;inset-inline-end:10px;translate:0 -50%;color:var(--_et-menu-muted-color)}.et-menu .et-menu-header .et-menu-search-error{margin:6px 2px 0;font-size:12px;color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-menu .et-menu-header input[etmenusearch]{inline-size:100%;block-size:var(--et-menu-search-height);padding-inline:var(--et-menu-item-padding-inline);border-radius:var(--et-menu-item-border-radius);border:1px solid var(--_et-menu-border);background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 6%,transparent);color:inherit;font:inherit;outline:none;box-sizing:border-box;transition:border-color .12s ease,background .12s ease}.et-menu .et-menu-header input[etmenusearch]:focus-visible{border-color:var(--et-theme-color-primary-solid, rgb(255 255 255 / .3))}.et-menu .et-menu-header input[etmenusearch]::placeholder{color:var(--_et-menu-muted-color)}.et-menu .et-menu-body{flex:1;min-block-size:0;padding:var(--et-menu-padding-block) var(--et-menu-padding-inline);overflow-y:auto;overscroll-behavior:contain}.et-menu .et-menu-group{display:block}.et-menu .et-menu-item{display:flex;align-items:center;gap:var(--et-menu-item-gap);inline-size:100%;min-block-size:var(--et-menu-item-height);padding-inline:var(--et-menu-item-padding-inline);border:none;border-radius:var(--et-menu-item-border-radius);background:transparent;color:inherit;font:inherit;text-align:start;text-decoration:none;cursor:pointer;outline:none;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transition:background .12s ease,color .12s ease,opacity .12s ease}.et-menu .et-menu-item[data-active]:where(:focus-visible),.et-menu .et-menu-item[data-menu-open]{background:var(--_et-menu-item-active-background)}@media(hover:hover){.et-menu .et-menu-item[data-active]:where(:hover){background:var(--_et-menu-item-active-background)}}.et-menu .et-menu-item:active:not([aria-disabled=true]){background:var(--_et-menu-item-pressed-background)}.et-menu .et-menu-item[aria-disabled=true]{opacity:.4;cursor:default}.et-menu .et-menu-item[data-variant=destructive]{color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-menu .et-menu-item .et-menu-item-content{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--menu[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--menu[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}.et-overlay--menu[data-overlay-placement^=right].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=right].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translate(-.3rem)!important}.et-overlay--menu[data-overlay-placement^=left].et-animation-enter-from,.et-overlay--menu[data-overlay-placement^=left].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translate(.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--menu.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--menu[data-overlay-placement].et-animation-enter-from,.et-overlay--menu[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}}\n"] }]
|
|
34142
|
+
}], ctorParameters: () => [], propDecorators: { headerElement: [{ type: i0.ViewChild, args: ['menuHeader', { isSignal: true }] }], bodyContentElement: [{ type: i0.ViewChild, args: ['menuBodyContent', { isSignal: true }] }] } });
|
|
34069
34143
|
|
|
34070
34144
|
const MENU_IMPORTS = [
|
|
34071
34145
|
MenuDirective,
|
|
@@ -36630,6 +36704,160 @@ const createRichTextEditorTriggerWithQuery = (config) => {
|
|
|
36630
36704
|
*/
|
|
36631
36705
|
const RICH_TEXT_EDITOR_TRIGGERS_IMPORTS = [RichTextEditorTriggersDirective];
|
|
36632
36706
|
|
|
36707
|
+
const TOOLBAR_ORIENTATIONS = {
|
|
36708
|
+
HORIZONTAL: 'horizontal',
|
|
36709
|
+
VERTICAL: 'vertical',
|
|
36710
|
+
};
|
|
36711
|
+
|
|
36712
|
+
const CONTROL_SELECTOR = 'button, [href], input, select, textarea';
|
|
36713
|
+
const TOOLBAR_SELECTOR = '[role="toolbar"]';
|
|
36714
|
+
/**
|
|
36715
|
+
* Turns its host into an ARIA toolbar: a single tab stop that Tab enters and leaves, with the arrow
|
|
36716
|
+
* keys moving focus between the controls inside it. `Home`/`End` jump to the first/last control and
|
|
36717
|
+
* arrow navigation wraps around; in a horizontal toolbar the left/right keys follow the writing
|
|
36718
|
+
* direction.
|
|
36719
|
+
*
|
|
36720
|
+
* Every focusable control rendered inside the host is a toolbar control - projected content,
|
|
36721
|
+
* `@for` output and components that own their own button templates included - so nothing has to be
|
|
36722
|
+
* marked up per item. Natively disabled controls are skipped; controls belonging to a nested
|
|
36723
|
+
* toolbar stay with that toolbar.
|
|
36724
|
+
*
|
|
36725
|
+
* Pair it with an accessible name (`aria-label`, or `aria-labelledby` pointing at a visible
|
|
36726
|
+
* heading), which is what tells the user what the toolbar is for.
|
|
36727
|
+
*
|
|
36728
|
+
* @example
|
|
36729
|
+
* <div [attr.aria-label]="'Text formatting'" etToolbar>
|
|
36730
|
+
* <button et-icon-button type="button">…</button>
|
|
36731
|
+
* <button et-icon-button type="button">…</button>
|
|
36732
|
+
* </div>
|
|
36733
|
+
*/
|
|
36734
|
+
class ToolbarDirective {
|
|
36735
|
+
constructor() {
|
|
36736
|
+
this.elementRef = inject(ElementRef);
|
|
36737
|
+
this.document = inject(DOCUMENT$1);
|
|
36738
|
+
this.orientation = input(TOOLBAR_ORIENTATIONS.HORIZONTAL, /* @ts-ignore */
|
|
36739
|
+
...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
36740
|
+
this.tabStop = null;
|
|
36741
|
+
afterEveryRender(() => this.syncTabStops());
|
|
36742
|
+
}
|
|
36743
|
+
/** Moves focus to the toolbar's first control, the tab stop a fresh Tab would land on. */
|
|
36744
|
+
focusFirst() {
|
|
36745
|
+
this.focusableControls()[0]?.focus();
|
|
36746
|
+
}
|
|
36747
|
+
handleKeydown(event) {
|
|
36748
|
+
const horizontal = this.orientation() === TOOLBAR_ORIENTATIONS.HORIZONTAL;
|
|
36749
|
+
const rtl = horizontal && getComputedStyle(this.elementRef.nativeElement).direction === 'rtl';
|
|
36750
|
+
const nextKey = horizontal ? (rtl ? 'ArrowLeft' : 'ArrowRight') : 'ArrowDown';
|
|
36751
|
+
const previousKey = horizontal ? (rtl ? 'ArrowRight' : 'ArrowLeft') : 'ArrowUp';
|
|
36752
|
+
let target;
|
|
36753
|
+
const controls = this.focusableControls();
|
|
36754
|
+
if (!controls.length)
|
|
36755
|
+
return;
|
|
36756
|
+
const current = controls.indexOf(this.document.activeElement);
|
|
36757
|
+
switch (event.key) {
|
|
36758
|
+
case nextKey:
|
|
36759
|
+
target = controls[(current + 1) % controls.length];
|
|
36760
|
+
break;
|
|
36761
|
+
case previousKey:
|
|
36762
|
+
target = controls[current <= 0 ? controls.length - 1 : current - 1];
|
|
36763
|
+
break;
|
|
36764
|
+
case 'Home':
|
|
36765
|
+
target = controls[0];
|
|
36766
|
+
break;
|
|
36767
|
+
case 'End':
|
|
36768
|
+
target = controls[controls.length - 1];
|
|
36769
|
+
break;
|
|
36770
|
+
default:
|
|
36771
|
+
return;
|
|
36772
|
+
}
|
|
36773
|
+
if (!target)
|
|
36774
|
+
return;
|
|
36775
|
+
event.preventDefault();
|
|
36776
|
+
target.focus();
|
|
36777
|
+
}
|
|
36778
|
+
/** The last focused control keeps the tab stop, so Shift+Tab back re-enters where the user left. */
|
|
36779
|
+
handleFocusIn(event) {
|
|
36780
|
+
const target = event.target;
|
|
36781
|
+
if (!(target instanceof HTMLElement) || !this.focusableControls().includes(target))
|
|
36782
|
+
return;
|
|
36783
|
+
this.tabStop = target;
|
|
36784
|
+
this.syncTabStops();
|
|
36785
|
+
}
|
|
36786
|
+
/** Every control this toolbar owns. Disabled ones are included: they must lose their tab stop too,
|
|
36787
|
+
* or re-enabling one would leave the toolbar with two. */
|
|
36788
|
+
controls() {
|
|
36789
|
+
const host = this.elementRef.nativeElement;
|
|
36790
|
+
// eslint-disable-next-line ethlete/no-dom-query -- any focusable descendant is a toolbar control, including those inside components that own their own button templates, which no directive token could reach
|
|
36791
|
+
const found = Array.from(host.querySelectorAll(`${CONTROL_SELECTOR}, ${TOOLBAR_SELECTOR}`));
|
|
36792
|
+
const nested = found.filter((element) => element.matches(TOOLBAR_SELECTOR));
|
|
36793
|
+
return found.filter((control) => !nested.includes(control) && !nested.some((toolbar) => toolbar.contains(control)));
|
|
36794
|
+
}
|
|
36795
|
+
focusableControls() {
|
|
36796
|
+
return this.controls().filter((control) => !control.disabled);
|
|
36797
|
+
}
|
|
36798
|
+
syncTabStops() {
|
|
36799
|
+
const focusable = this.focusableControls();
|
|
36800
|
+
if (!this.tabStop || !focusable.includes(this.tabStop)) {
|
|
36801
|
+
this.tabStop = focusable[0] ?? null;
|
|
36802
|
+
}
|
|
36803
|
+
for (const control of this.controls()) {
|
|
36804
|
+
const tabIndex = control === this.tabStop ? 0 : -1;
|
|
36805
|
+
// written imperatively rather than as a binding: the controls are arbitrary projected content,
|
|
36806
|
+
// so only touch the DOM when the value changed to keep the per-render pass free
|
|
36807
|
+
if (control.tabIndex !== tabIndex)
|
|
36808
|
+
control.tabIndex = tabIndex;
|
|
36809
|
+
}
|
|
36810
|
+
}
|
|
36811
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToolbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
36812
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: ToolbarDirective, isStandalone: true, selector: "[etToolbar]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "toolbar" }, listeners: { "keydown": "handleKeydown($event)", "focusin": "handleFocusIn($event)" }, properties: { "attr.aria-orientation": "orientation()" } }, ngImport: i0 }); }
|
|
36813
|
+
}
|
|
36814
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToolbarDirective, decorators: [{
|
|
36815
|
+
type: Directive,
|
|
36816
|
+
args: [{
|
|
36817
|
+
selector: '[etToolbar]',
|
|
36818
|
+
host: {
|
|
36819
|
+
role: 'toolbar',
|
|
36820
|
+
'[attr.aria-orientation]': 'orientation()',
|
|
36821
|
+
'(keydown)': 'handleKeydown($event)',
|
|
36822
|
+
'(focusin)': 'handleFocusIn($event)',
|
|
36823
|
+
},
|
|
36824
|
+
}]
|
|
36825
|
+
}], ctorParameters: () => [], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }] } });
|
|
36826
|
+
|
|
36827
|
+
/**
|
|
36828
|
+
* A bar of related controls that share one tab stop, laid out in a row (or a column with
|
|
36829
|
+
* `orientation="vertical"`) and navigated with the arrow keys - see `[etToolbar]` for the keyboard
|
|
36830
|
+
* model. Group the controls inside it with `et-divider`.
|
|
36831
|
+
*
|
|
36832
|
+
* Pass an `aria-label` naming what the toolbar acts on; without one a screen reader announces only
|
|
36833
|
+
* that a toolbar is present.
|
|
36834
|
+
*
|
|
36835
|
+
* @example
|
|
36836
|
+
* <et-toolbar aria-label="Text formatting">
|
|
36837
|
+
* <button et-icon-button type="button"><i etIcon="et-bold"></i></button>
|
|
36838
|
+
* <button et-icon-button type="button"><i etIcon="et-italic"></i></button>
|
|
36839
|
+
* <et-divider orientation="vertical" decorative />
|
|
36840
|
+
* <button et-icon-button type="button"><i etIcon="et-link"></i></button>
|
|
36841
|
+
* </et-toolbar>
|
|
36842
|
+
*/
|
|
36843
|
+
class ToolbarComponent {
|
|
36844
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36845
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: ToolbarComponent, isStandalone: true, selector: "et-toolbar, [et-toolbar]", host: { classAttribute: "et-toolbar" }, hostDirectives: [{ directive: ToolbarDirective, inputs: ["orientation", "orientation"] }], ngImport: i0, template: `<ng-content />`, isInline: true, styles: ["@layer components{@property --et-toolbar-gap{syntax: \"<length>\"; inherits: false; initial-value: 4px;}@property --et-toolbar-padding{syntax: \"<length>\"; inherits: false; initial-value: 4px;}@property --et-toolbar-border-radius{syntax: \"<length>\"; inherits: false; initial-value: 8px;}@property --et-toolbar-background{syntax: \"<color>\"; inherits: false; initial-value: transparent;}.et-toolbar{display:flex;align-items:center;gap:var(--et-toolbar-gap);padding:var(--et-toolbar-padding);border-radius:var(--et-toolbar-border-radius);background:var(--et-toolbar-background);box-sizing:border-box}.et-toolbar:where([aria-orientation=vertical]){flex-direction:column;align-items:stretch}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
36846
|
+
}
|
|
36847
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
36848
|
+
type: Component,
|
|
36849
|
+
args: [{ selector: 'et-toolbar, [et-toolbar]', template: `<ng-content />`, encapsulation: ViewEncapsulation.None, hostDirectives: [
|
|
36850
|
+
{
|
|
36851
|
+
directive: ToolbarDirective,
|
|
36852
|
+
inputs: ['orientation'],
|
|
36853
|
+
},
|
|
36854
|
+
], host: {
|
|
36855
|
+
class: 'et-toolbar',
|
|
36856
|
+
}, styles: ["@layer components{@property --et-toolbar-gap{syntax: \"<length>\"; inherits: false; initial-value: 4px;}@property --et-toolbar-padding{syntax: \"<length>\"; inherits: false; initial-value: 4px;}@property --et-toolbar-border-radius{syntax: \"<length>\"; inherits: false; initial-value: 8px;}@property --et-toolbar-background{syntax: \"<color>\"; inherits: false; initial-value: transparent;}.et-toolbar{display:flex;align-items:center;gap:var(--et-toolbar-gap);padding:var(--et-toolbar-padding);border-radius:var(--et-toolbar-border-radius);background:var(--et-toolbar-background);box-sizing:border-box}.et-toolbar:where([aria-orientation=vertical]){flex-direction:column;align-items:stretch}}\n"] }]
|
|
36857
|
+
}] });
|
|
36858
|
+
|
|
36859
|
+
const TOOLBAR_IMPORTS = [ToolbarComponent, ToolbarDirective];
|
|
36860
|
+
|
|
36633
36861
|
/** How often the docked toolbar re-checks where the keyboard is, to recover a missed viewport event. */
|
|
36634
36862
|
const DOCKED_TOOLBAR_POLL_MS = 500;
|
|
36635
36863
|
/** Caret-navigation / deletion keys that should drop any pending stored-mark toggle. */
|
|
@@ -36664,8 +36892,6 @@ class RichTextEditorComponent {
|
|
|
36664
36892
|
this.floatingToolbarSetup = inject(RICH_TEXT_EDITOR_FLOATING_TOOLBAR, { optional: true });
|
|
36665
36893
|
this.editable = viewChild.required('editable', /* @ts-ignore */
|
|
36666
36894
|
...(ngDevMode ? [{ debugName: "editable" }] : /* istanbul ignore next */ []));
|
|
36667
|
-
this.toolbar = viewChild.required('toolbar', /* @ts-ignore */
|
|
36668
|
-
...(ngDevMode ? [{ debugName: "toolbar" }] : /* istanbul ignore next */ []));
|
|
36669
36895
|
this.TOOLS = RICH_TEXT_EDITOR_TOOLS;
|
|
36670
36896
|
/** The strings in effect, owned by the directive so the opt-in tools read the same set. */
|
|
36671
36897
|
this.labels = computed(() => this.dir.resolvedLabels(), /* @ts-ignore */
|
|
@@ -36679,14 +36905,10 @@ class RichTextEditorComponent {
|
|
|
36679
36905
|
/** Dock the toolbar above the keyboard only on touch while editing. */
|
|
36680
36906
|
this.dockedToolbar = computed(() => this.hasTouchInput() && this.editingActive(), /* @ts-ignore */
|
|
36681
36907
|
...(ngDevMode ? [{ debugName: "dockedToolbar" }] : /* istanbul ignore next */ []));
|
|
36682
|
-
/** The toolbar button currently holding the single roving tab stop (ARIA toolbar pattern). */
|
|
36683
|
-
this.toolbarTabStop = null;
|
|
36684
36908
|
this.linkEditorSetup?.(this.dir, this.host.nativeElement);
|
|
36685
36909
|
this.floatingToolbarSetup?.(this.dir);
|
|
36686
36910
|
this.trackKeyboardInset();
|
|
36687
36911
|
this.trackEditingActive();
|
|
36688
|
-
// keep the roving tab stop valid as tools are added/removed or become disabled
|
|
36689
|
-
afterEveryRender(() => this.updateToolbarTabStops());
|
|
36690
36912
|
afterNextRender(() => {
|
|
36691
36913
|
this.dir.editorDom.root.set(this.editable().nativeElement ?? null);
|
|
36692
36914
|
this.dir.renderExternalValue();
|
|
@@ -36713,48 +36935,6 @@ class RichTextEditorComponent {
|
|
|
36713
36935
|
syncValueFromDom() {
|
|
36714
36936
|
this.dir.syncFromDom();
|
|
36715
36937
|
}
|
|
36716
|
-
/**
|
|
36717
|
-
* The toolbar is a single tab stop (ARIA toolbar pattern): Tab enters on one button, the arrow
|
|
36718
|
-
* keys move focus between the buttons, and the next Tab leaves the toolbar. Menu surfaces render
|
|
36719
|
-
* into an overlay, so every `button` inside the toolbar element is a toolbar control - including
|
|
36720
|
-
* the custom tool controls (`ngComponentOutlet`), which template bindings couldn't reach.
|
|
36721
|
-
*/
|
|
36722
|
-
handleToolbarKeydown(event) {
|
|
36723
|
-
if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight' && event.key !== 'Home' && event.key !== 'End') {
|
|
36724
|
-
return;
|
|
36725
|
-
}
|
|
36726
|
-
const buttons = this.toolbarButtons().filter((button) => !button.disabled);
|
|
36727
|
-
if (!buttons.length)
|
|
36728
|
-
return;
|
|
36729
|
-
const currentIndex = buttons.indexOf(this.document.activeElement);
|
|
36730
|
-
let next;
|
|
36731
|
-
switch (event.key) {
|
|
36732
|
-
case 'ArrowLeft':
|
|
36733
|
-
next = buttons[currentIndex <= 0 ? buttons.length - 1 : currentIndex - 1];
|
|
36734
|
-
break;
|
|
36735
|
-
case 'ArrowRight':
|
|
36736
|
-
next = buttons[(currentIndex + 1) % buttons.length];
|
|
36737
|
-
break;
|
|
36738
|
-
case 'Home':
|
|
36739
|
-
next = buttons[0];
|
|
36740
|
-
break;
|
|
36741
|
-
case 'End':
|
|
36742
|
-
next = buttons[buttons.length - 1];
|
|
36743
|
-
break;
|
|
36744
|
-
}
|
|
36745
|
-
if (!next)
|
|
36746
|
-
return;
|
|
36747
|
-
event.preventDefault();
|
|
36748
|
-
next.focus();
|
|
36749
|
-
}
|
|
36750
|
-
/** The last focused button keeps the tab stop, so Shift+Tab back re-enters where the user left. */
|
|
36751
|
-
handleToolbarFocusIn(event) {
|
|
36752
|
-
const target = event.target;
|
|
36753
|
-
if (!(target instanceof HTMLButtonElement) || target.disabled)
|
|
36754
|
-
return;
|
|
36755
|
-
this.toolbarTabStop = target;
|
|
36756
|
-
this.updateToolbarTabStops();
|
|
36757
|
-
}
|
|
36758
36938
|
interceptEditorKeydown(event) {
|
|
36759
36939
|
// History first, and always prevented: the native contenteditable undo stack must never run,
|
|
36760
36940
|
// since paste normalization and autoformat rewrite the DOM behind its back and it would restore
|
|
@@ -36924,24 +37104,6 @@ class RichTextEditorComponent {
|
|
|
36924
37104
|
break;
|
|
36925
37105
|
}
|
|
36926
37106
|
}
|
|
36927
|
-
toolbarButtons() {
|
|
36928
|
-
// eslint-disable-next-line ethlete/no-dom-query -- custom tool controls (ngComponentOutlet) own their button templates, so no directive token could reach them
|
|
36929
|
-
return Array.from(this.toolbar().nativeElement.querySelectorAll('button'));
|
|
36930
|
-
}
|
|
36931
|
-
updateToolbarTabStops() {
|
|
36932
|
-
const buttons = this.toolbarButtons();
|
|
36933
|
-
const enabled = buttons.filter((button) => !button.disabled);
|
|
36934
|
-
if (!this.toolbarTabStop || !enabled.includes(this.toolbarTabStop)) {
|
|
36935
|
-
this.toolbarTabStop = enabled[0] ?? null;
|
|
36936
|
-
}
|
|
36937
|
-
for (const button of buttons) {
|
|
36938
|
-
const tabIndex = button === this.toolbarTabStop ? 0 : -1;
|
|
36939
|
-
// written imperatively (not a binding) since custom tool controls own their button templates;
|
|
36940
|
-
// only touch the DOM when the value changed so the per-render pass stays free
|
|
36941
|
-
if (button.tabIndex !== tabIndex)
|
|
36942
|
-
button.tabIndex = tabIndex;
|
|
36943
|
-
}
|
|
36944
|
-
}
|
|
36945
37107
|
/** Track the visual viewport so the docked (fixed) toolbar sits right above the on-screen
|
|
36946
37108
|
* keyboard: the inset is the gap from where `position: fixed; bottom: 0` actually renders (a
|
|
36947
37109
|
* measured probe - see below) down past the keyboard's top edge
|
|
@@ -37088,11 +37250,11 @@ class RichTextEditorComponent {
|
|
|
37088
37250
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RichTextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37089
37251
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: RichTextEditorComponent, isStandalone: true, selector: "et-rich-text-editor", host: { listeners: { "click": "dir.activate()" }, properties: { "class.et-rich-text-editor--touch": "hasTouchInput()", "class.et-rich-text-editor--docked-toolbar": "dockedToolbar()" }, classAttribute: "et-rich-text-editor" }, providers: [
|
|
37090
37252
|
provideIcons(BOLD_ICON, ITALIC_ICON, UNDERLINE_ICON, STRIKETHROUGH_ICON, CODE_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LINK_ICON, QUOTE_ICON, CODE_BLOCK_ICON, UNDO_ICON, REDO_ICON),
|
|
37091
|
-
], viewQueries: [{ propertyName: "editable", first: true, predicate: ["editable"], descendants: true, isSignal: true }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true, isSignal: true }], hostDirectives: [{ directive: RichTextEditorDirective, inputs: ["value", "value", "disabled", "disabled", "readonly", "readonly", "hidden", "hidden", "invalid", "invalid", "errors", "errors", "required", "required", "name", "name", "placeholder", "placeholder", "tools", "tools", "autoformat", "autoformat", "labels", "labels"], outputs: ["valueChange", "valueChange", "touchedChange", "touchedChange"] }], ngImport: i0, template: "<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -- ARIA toolbar pattern: the container only relays keys/focus for its roving tab stop; the buttons inside are the focusable controls -->\n<div\n #toolbar\n [attr.aria-label]=\"labels().toolbar\"\n (keydown)=\"handleToolbarKeydown($event)\"\n (focusin)=\"handleToolbarFocusIn($event)\"\n class=\"et-rte-toolbar\"\n role=\"toolbar\"\n>\n @for (tool of dir.resolvedTools(); track $index) {\n @switch (tool) {\n @case (TOOLS.DIVIDER) {\n <span class=\"et-rte-toolbar-divider\" aria-hidden=\"true\"></span>\n }\n @default {\n @if (dir.toolDefs.get(tool); as def) {\n @if (def.control; as control) {\n <ng-container [ngComponentOutlet]=\"control\" [ngComponentOutletInputs]=\"{ editor: dir }\" />\n } @else {\n <button\n [pressed]=\"def.isActive?.(dir) ?? false\"\n [disabled]=\"dir.disabled() || dir.readonly() || (def.isDisabled?.(dir) ?? false)\"\n [attr.aria-label]=\"toolLabel(def)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"def.run?.(dir)\"\n mutedUntilPressed\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i [allowHardcodedColor]=\"def.allowHardcodedColor ?? false\" [etIcon]=\"def.icon ?? ''\"></i>\n </button>\n }\n }\n }\n }\n }\n</div>\n\n<div\n #editable\n [attr.contenteditable]=\"dir.disabled() || dir.readonly() ? 'false' : 'true'\"\n [attr.tabindex]=\"dir.disabled() ? -1 : 0\"\n [attr.data-placeholder]=\"dir.placeholder() || null\"\n [attr.aria-invalid]=\"dir.shouldDisplayError() || null\"\n [attr.aria-describedby]=\"dir.describedBy() || null\"\n [attr.aria-labelledby]=\"dir.labelId() || null\"\n [attr.aria-disabled]=\"dir.disabled() || null\"\n [attr.aria-readonly]=\"dir.readonly() || null\"\n (input)=\"syncValueFromDom()\"\n (beforeinput)=\"interceptFormattingCommand($event)\"\n (keydown)=\"interceptEditorKeydown($event)\"\n (paste)=\"interceptPaste($event)\"\n (drop)=\"interceptDrop($event)\"\n (click)=\"interceptClick($event)\"\n (pointerdown)=\"dir.clearPendingMarks()\"\n (focus)=\"dir.focused.set(true)\"\n (blur)=\"dir.focused.set(false); dir.touched.set(true)\"\n class=\"et-rte-content\"\n role=\"textbox\"\n aria-multiline=\"true\"\n></div>\n", styles: ["@layer components{@property --et-rich-text-editor-toolbar-gap{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-toolbar-padding{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-button-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-min-height{syntax: \"<length>\"; inherits: true; initial-value: 96px;}@property --et-rich-text-editor-content-gap{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-rich-text-editor-quote-indent{syntax: \"<length>\"; inherits: true; initial-value: 12px;}@property --et-rich-text-editor-quote-bar-width{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-code-block-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-rich-text-editor-token-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-token-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 4px;}et-rich-text-editor{display:flex;flex:1;flex-direction:column;min-inline-size:0;color:inherit}et-rich-text-editor .et-rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--et-rich-text-editor-toolbar-gap);padding:var(--et-rich-text-editor-toolbar-padding);padding-inline:calc(var(--et-form-field-control-padding-inline) - var(--et-rich-text-editor-toolbar-padding));border-block-end:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);--et-icon-button-border-radius: var(--et-rich-text-editor-button-radius)}et-rich-text-editor .et-rte-toolbar .et-icon-button{--_et-focus-ring-offset: -1px}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{position:fixed;inset-inline:0;inset-block-end:0;z-index:60;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding-inline:8px;padding-block-start:6px;padding-block-end:calc(6px + max(var(--_et-rte-keyboard-inset, 0px),env(keyboard-inset-height,0px)));background:var(--et-surface-background-solid, var(--et-surface-2, rgb(24 24 24)));border-block-end:none;border-block-start:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:0 -6px 20px #0000003d;scrollbar-width:none;opacity:0;transform:translateY(100%);pointer-events:none;transition:opacity .16s var(--ease-out-5, ease),transform .26s var(--ease-out-5, ease)}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar::-webkit-scrollbar{display:none}et-rich-text-editor.et-rich-text-editor--touch.et-rich-text-editor--docked-toolbar .et-rte-toolbar{opacity:1;transform:translateY(0);pointer-events:auto}et-rich-text-editor.et-rich-text-editor--touch .et-rte-content{font-size:max(1em,16px)}@media(prefers-reduced-motion:reduce){et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{transition:opacity .16s var(--ease-out-5, ease)}}et-rich-text-editor .et-rte-toolbar-divider{inline-size:1px;align-self:stretch;margin-block:4px;margin-inline:2px;background:color-mix(in srgb,currentColor 12%,transparent)}et-rich-text-editor .et-rte-content{--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb));display:block;flex:1;min-inline-size:0;padding-block:var(--et-form-field-control-padding-block);padding-inline:var(--et-form-field-control-padding-inline);min-block-size:var(--et-rich-text-editor-min-height);outline:none;color:inherit;caret-color:var(--et-theme-color-primary-solid, currentColor);overflow-wrap:anywhere}et-rich-text-editor .et-rte-content:empty:before{content:attr(data-placeholder);color:color-mix(in srgb,currentColor 46%,transparent);pointer-events:none}et-rich-text-editor .et-rte-content>:first-child{margin-block-start:0}et-rich-text-editor .et-rte-content>:last-child{margin-block-end:0}et-rich-text-editor .et-rte-content p{margin-block:0}et-rich-text-editor .et-rte-content p+p,et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol,et-rich-text-editor .et-rte-content blockquote,et-rich-text-editor .et-rte-content pre{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1,et-rich-text-editor .et-rte-content h2,et-rich-text-editor .et-rte-content h3,et-rich-text-editor .et-rte-content h4,et-rich-text-editor .et-rte-content h5,et-rich-text-editor .et-rte-content h6{margin-block:0;font-weight:700;line-height:1.25}et-rich-text-editor .et-rte-content :is(h1,h2,h3,h4,h5,h6)+*,et-rich-text-editor .et-rte-content *+:is(h1,h2,h3,h4,h5,h6){margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1{font-size:2.4rem}et-rich-text-editor .et-rte-content h2{font-size:2rem}et-rich-text-editor .et-rte-content h3{font-size:1.6rem}et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol{margin-block-end:0;padding-inline-start:1.5em;list-style-position:outside}et-rich-text-editor .et-rte-content ul{list-style-type:disc}et-rich-text-editor .et-rte-content ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul{list-style-type:circle}et-rich-text-editor .et-rte-content ul ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul ul{list-style-type:square}et-rich-text-editor .et-rte-content ul ul ul ul{list-style-type:disc}et-rich-text-editor .et-rte-content ol{list-style-type:decimal}et-rich-text-editor .et-rte-content ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol{list-style-type:lower-alpha}et-rich-text-editor .et-rte-content ol ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol ol{list-style-type:lower-roman}et-rich-text-editor .et-rte-content ol ol ol ol{list-style-type:decimal}et-rich-text-editor .et-rte-content li{margin-block:0}et-rich-text-editor .et-rte-content li::marker{color:color-mix(in srgb,currentColor 60%,transparent)}et-rich-text-editor .et-rte-content a{color:var(--et-theme-color-primary-solid, currentColor);text-decoration:underline}et-rich-text-editor .et-rte-content code{padding:.1em .3em;border-radius:4px;background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 14%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em}et-rich-text-editor .et-rte-content blockquote{margin-inline:0;margin-block-end:0;padding-inline-start:var(--et-rich-text-editor-quote-indent);border-inline-start:var(--et-rich-text-editor-quote-bar-width) solid color-mix(in srgb,var(--et-surface-border-solid, currentColor) 80%,transparent);color:color-mix(in srgb,currentColor 82%,transparent)}et-rich-text-editor .et-rte-content blockquote blockquote{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content pre{margin-block-end:0;padding:8px 10px;border-radius:var(--et-rich-text-editor-code-block-radius);background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 10%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em;white-space:pre-wrap}et-rich-text-editor .et-rte-content pre code{padding:0;border-radius:0;background:none;font-size:inherit}et-rich-text-editor .et-rte-content .et-rte-token{--_et-rte-token-accent: var(--et-theme-color-primary-solid, var(--et-surface-interaction-solid, currentColor));display:inline;padding-inline:var(--et-rich-text-editor-token-padding-inline);border-radius:var(--et-rich-text-editor-token-radius);background:color-mix(in srgb,var(--_et-rte-token-accent) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_et-rte-token-accent) 45%,transparent);color:var(--et-theme-color-ink-solid, inherit);font-weight:500;white-space:nowrap;-webkit-user-select:all;user-select:all;cursor:default}et-rich-text-editor .et-rte-content .et-rte-token-prefix{margin-inline-end:1px;opacity:.65}}\n"], dependencies: [{ kind: "component", type: IconButtonComponent, selector: "[et-icon-button]", inputs: ["variant", "size"] }, { kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "variant", "allowHardcodedColor", "label"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
37253
|
+
], viewQueries: [{ propertyName: "editable", first: true, predicate: ["editable"], descendants: true, isSignal: true }], hostDirectives: [{ directive: RichTextEditorDirective, inputs: ["value", "value", "disabled", "disabled", "readonly", "readonly", "hidden", "hidden", "invalid", "invalid", "errors", "errors", "required", "required", "name", "name", "placeholder", "placeholder", "tools", "tools", "autoformat", "autoformat", "labels", "labels"], outputs: ["valueChange", "valueChange", "touchedChange", "touchedChange"] }], ngImport: i0, template: "<div [attr.aria-label]=\"labels().toolbar\" class=\"et-rte-toolbar\" etToolbar>\n @for (tool of dir.resolvedTools(); track $index) {\n @switch (tool) {\n @case (TOOLS.DIVIDER) {\n <et-divider orientation=\"vertical\" decorative />\n }\n @default {\n @if (dir.toolDefs.get(tool); as def) {\n @if (def.control; as control) {\n <ng-container [ngComponentOutlet]=\"control\" [ngComponentOutletInputs]=\"{ editor: dir }\" />\n } @else {\n <button\n [pressed]=\"def.isActive?.(dir) ?? false\"\n [disabled]=\"dir.disabled() || dir.readonly() || (def.isDisabled?.(dir) ?? false)\"\n [attr.aria-label]=\"toolLabel(def)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"def.run?.(dir)\"\n mutedUntilPressed\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i [allowHardcodedColor]=\"def.allowHardcodedColor ?? false\" [etIcon]=\"def.icon ?? ''\"></i>\n </button>\n }\n }\n }\n }\n }\n</div>\n\n<div\n #editable\n [attr.contenteditable]=\"dir.disabled() || dir.readonly() ? 'false' : 'true'\"\n [attr.tabindex]=\"dir.disabled() ? -1 : 0\"\n [attr.data-placeholder]=\"dir.placeholder() || null\"\n [attr.aria-invalid]=\"dir.shouldDisplayError() || null\"\n [attr.aria-describedby]=\"dir.describedBy() || null\"\n [attr.aria-labelledby]=\"dir.labelId() || null\"\n [attr.aria-disabled]=\"dir.disabled() || null\"\n [attr.aria-readonly]=\"dir.readonly() || null\"\n (input)=\"syncValueFromDom()\"\n (beforeinput)=\"interceptFormattingCommand($event)\"\n (keydown)=\"interceptEditorKeydown($event)\"\n (paste)=\"interceptPaste($event)\"\n (drop)=\"interceptDrop($event)\"\n (click)=\"interceptClick($event)\"\n (pointerdown)=\"dir.clearPendingMarks()\"\n (focus)=\"dir.focused.set(true)\"\n (blur)=\"dir.focused.set(false); dir.touched.set(true)\"\n class=\"et-rte-content\"\n role=\"textbox\"\n aria-multiline=\"true\"\n></div>\n", styles: ["@layer components{@property --et-rich-text-editor-toolbar-gap{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-toolbar-padding{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-button-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-min-height{syntax: \"<length>\"; inherits: true; initial-value: 96px;}@property --et-rich-text-editor-content-gap{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-rich-text-editor-quote-indent{syntax: \"<length>\"; inherits: true; initial-value: 12px;}@property --et-rich-text-editor-quote-bar-width{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-code-block-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-rich-text-editor-token-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-token-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 4px;}et-rich-text-editor{display:flex;flex:1;flex-direction:column;min-inline-size:0;color:inherit}et-rich-text-editor .et-rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--et-rich-text-editor-toolbar-gap);padding:var(--et-rich-text-editor-toolbar-padding);padding-inline:calc(var(--et-form-field-control-padding-inline) - var(--et-rich-text-editor-toolbar-padding));border-block-end:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);--et-icon-button-border-radius: var(--et-rich-text-editor-button-radius)}et-rich-text-editor .et-rte-toolbar .et-icon-button{--_et-focus-ring-offset: -1px}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{position:fixed;inset-inline:0;inset-block-end:0;z-index:60;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding-inline:8px;padding-block-start:6px;padding-block-end:calc(6px + max(var(--_et-rte-keyboard-inset, 0px),env(keyboard-inset-height,0px)));background:var(--et-surface-background-solid, var(--et-surface-2, rgb(24 24 24)));border-block-end:none;border-block-start:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:0 -6px 20px #0000003d;scrollbar-width:none;opacity:0;transform:translateY(100%);pointer-events:none;transition:opacity .16s var(--ease-out-5, ease),transform .26s var(--ease-out-5, ease)}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar::-webkit-scrollbar{display:none}et-rich-text-editor.et-rich-text-editor--touch.et-rich-text-editor--docked-toolbar .et-rte-toolbar{opacity:1;transform:translateY(0);pointer-events:auto}et-rich-text-editor.et-rich-text-editor--touch .et-rte-content{font-size:max(1em,16px)}@media(prefers-reduced-motion:reduce){et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{transition:opacity .16s var(--ease-out-5, ease)}}et-rich-text-editor .et-rte-toolbar .et-divider{--et-divider-color: color-mix(in srgb, currentColor 12%, transparent);--et-divider-spacing: 2px;--et-divider-inset: 4px}et-rich-text-editor .et-rte-content{--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb));display:block;flex:1;min-inline-size:0;padding-block:var(--et-form-field-control-padding-block);padding-inline:var(--et-form-field-control-padding-inline);min-block-size:var(--et-rich-text-editor-min-height);outline:none;color:inherit;caret-color:var(--et-theme-color-primary-solid, currentColor);overflow-wrap:anywhere}et-rich-text-editor .et-rte-content:empty:before{content:attr(data-placeholder);color:color-mix(in srgb,currentColor 46%,transparent);pointer-events:none}et-rich-text-editor .et-rte-content>:first-child{margin-block-start:0}et-rich-text-editor .et-rte-content>:last-child{margin-block-end:0}et-rich-text-editor .et-rte-content p{margin-block:0}et-rich-text-editor .et-rte-content p+p,et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol,et-rich-text-editor .et-rte-content blockquote,et-rich-text-editor .et-rte-content pre{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1,et-rich-text-editor .et-rte-content h2,et-rich-text-editor .et-rte-content h3,et-rich-text-editor .et-rte-content h4,et-rich-text-editor .et-rte-content h5,et-rich-text-editor .et-rte-content h6{margin-block:0;font-weight:700;line-height:1.25}et-rich-text-editor .et-rte-content :is(h1,h2,h3,h4,h5,h6)+*,et-rich-text-editor .et-rte-content *+:is(h1,h2,h3,h4,h5,h6){margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1{font-size:2.4rem}et-rich-text-editor .et-rte-content h2{font-size:2rem}et-rich-text-editor .et-rte-content h3{font-size:1.6rem}et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol{margin-block-end:0;padding-inline-start:1.5em;list-style-position:outside}et-rich-text-editor .et-rte-content ul{list-style-type:disc}et-rich-text-editor .et-rte-content ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul{list-style-type:circle}et-rich-text-editor .et-rte-content ul ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul ul{list-style-type:square}et-rich-text-editor .et-rte-content ul ul ul ul{list-style-type:disc}et-rich-text-editor .et-rte-content ol{list-style-type:decimal}et-rich-text-editor .et-rte-content ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol{list-style-type:lower-alpha}et-rich-text-editor .et-rte-content ol ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol ol{list-style-type:lower-roman}et-rich-text-editor .et-rte-content ol ol ol ol{list-style-type:decimal}et-rich-text-editor .et-rte-content li{margin-block:0}et-rich-text-editor .et-rte-content li::marker{color:color-mix(in srgb,currentColor 60%,transparent)}et-rich-text-editor .et-rte-content a{color:var(--et-theme-color-primary-solid, currentColor);text-decoration:underline}et-rich-text-editor .et-rte-content code{padding:.1em .3em;border-radius:4px;background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 14%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em}et-rich-text-editor .et-rte-content blockquote{margin-inline:0;margin-block-end:0;padding-inline-start:var(--et-rich-text-editor-quote-indent);border-inline-start:var(--et-rich-text-editor-quote-bar-width) solid color-mix(in srgb,var(--et-surface-border-solid, currentColor) 80%,transparent);color:color-mix(in srgb,currentColor 82%,transparent)}et-rich-text-editor .et-rte-content blockquote blockquote{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content pre{margin-block-end:0;padding:8px 10px;border-radius:var(--et-rich-text-editor-code-block-radius);background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 10%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em;white-space:pre-wrap}et-rich-text-editor .et-rte-content pre code{padding:0;border-radius:0;background:none;font-size:inherit}et-rich-text-editor .et-rte-content .et-rte-token{--_et-rte-token-accent: var(--et-theme-color-primary-solid, var(--et-surface-interaction-solid, currentColor));display:inline;padding-inline:var(--et-rich-text-editor-token-padding-inline);border-radius:var(--et-rich-text-editor-token-radius);background:color-mix(in srgb,var(--_et-rte-token-accent) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_et-rte-token-accent) 45%,transparent);color:var(--et-theme-color-ink-solid, inherit);font-weight:500;white-space:nowrap;-webkit-user-select:all;user-select:all;cursor:default}et-rich-text-editor .et-rte-content .et-rte-token-prefix{margin-inline-end:1px;opacity:.65}}\n"], dependencies: [{ kind: "component", type: IconButtonComponent, selector: "[et-icon-button]", inputs: ["variant", "size"] }, { kind: "component", type: DividerComponent, selector: "et-divider", inputs: ["orientation", "decorative"] }, { kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "variant", "allowHardcodedColor", "label"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: ToolbarDirective, selector: "[etToolbar]", inputs: ["orientation"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
37092
37254
|
}
|
|
37093
37255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RichTextEditorComponent, decorators: [{
|
|
37094
37256
|
type: Component,
|
|
37095
|
-
args: [{ selector: 'et-rich-text-editor', encapsulation: ViewEncapsulation.None, imports: [...BUTTON_IMPORTS, IconDirective, NgComponentOutlet], providers: [
|
|
37257
|
+
args: [{ selector: 'et-rich-text-editor', encapsulation: ViewEncapsulation.None, imports: [...BUTTON_IMPORTS, DividerComponent, IconDirective, NgComponentOutlet, ToolbarDirective], providers: [
|
|
37096
37258
|
provideIcons(BOLD_ICON, ITALIC_ICON, UNDERLINE_ICON, STRIKETHROUGH_ICON, CODE_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LINK_ICON, QUOTE_ICON, CODE_BLOCK_ICON, UNDO_ICON, REDO_ICON),
|
|
37097
37259
|
], hostDirectives: [
|
|
37098
37260
|
{
|
|
@@ -37121,8 +37283,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
37121
37283
|
'[class.et-rich-text-editor--touch]': 'hasTouchInput()',
|
|
37122
37284
|
'[class.et-rich-text-editor--docked-toolbar]': 'dockedToolbar()',
|
|
37123
37285
|
'(click)': 'dir.activate()',
|
|
37124
|
-
}, template: "<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -- ARIA toolbar pattern: the container only relays keys/focus for its roving tab stop; the buttons inside are the focusable controls -->\n<div\n #toolbar\n [attr.aria-label]=\"labels().toolbar\"\n (keydown)=\"handleToolbarKeydown($event)\"\n (focusin)=\"handleToolbarFocusIn($event)\"\n class=\"et-rte-toolbar\"\n role=\"toolbar\"\n>\n @for (tool of dir.resolvedTools(); track $index) {\n @switch (tool) {\n @case (TOOLS.DIVIDER) {\n <span class=\"et-rte-toolbar-divider\" aria-hidden=\"true\"></span>\n }\n @default {\n @if (dir.toolDefs.get(tool); as def) {\n @if (def.control; as control) {\n <ng-container [ngComponentOutlet]=\"control\" [ngComponentOutletInputs]=\"{ editor: dir }\" />\n } @else {\n <button\n [pressed]=\"def.isActive?.(dir) ?? false\"\n [disabled]=\"dir.disabled() || dir.readonly() || (def.isDisabled?.(dir) ?? false)\"\n [attr.aria-label]=\"toolLabel(def)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"def.run?.(dir)\"\n mutedUntilPressed\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i [allowHardcodedColor]=\"def.allowHardcodedColor ?? false\" [etIcon]=\"def.icon ?? ''\"></i>\n </button>\n }\n }\n }\n }\n }\n</div>\n\n<div\n #editable\n [attr.contenteditable]=\"dir.disabled() || dir.readonly() ? 'false' : 'true'\"\n [attr.tabindex]=\"dir.disabled() ? -1 : 0\"\n [attr.data-placeholder]=\"dir.placeholder() || null\"\n [attr.aria-invalid]=\"dir.shouldDisplayError() || null\"\n [attr.aria-describedby]=\"dir.describedBy() || null\"\n [attr.aria-labelledby]=\"dir.labelId() || null\"\n [attr.aria-disabled]=\"dir.disabled() || null\"\n [attr.aria-readonly]=\"dir.readonly() || null\"\n (input)=\"syncValueFromDom()\"\n (beforeinput)=\"interceptFormattingCommand($event)\"\n (keydown)=\"interceptEditorKeydown($event)\"\n (paste)=\"interceptPaste($event)\"\n (drop)=\"interceptDrop($event)\"\n (click)=\"interceptClick($event)\"\n (pointerdown)=\"dir.clearPendingMarks()\"\n (focus)=\"dir.focused.set(true)\"\n (blur)=\"dir.focused.set(false); dir.touched.set(true)\"\n class=\"et-rte-content\"\n role=\"textbox\"\n aria-multiline=\"true\"\n></div>\n", styles: ["@layer components{@property --et-rich-text-editor-toolbar-gap{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-toolbar-padding{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-button-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-min-height{syntax: \"<length>\"; inherits: true; initial-value: 96px;}@property --et-rich-text-editor-content-gap{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-rich-text-editor-quote-indent{syntax: \"<length>\"; inherits: true; initial-value: 12px;}@property --et-rich-text-editor-quote-bar-width{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-code-block-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-rich-text-editor-token-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-token-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 4px;}et-rich-text-editor{display:flex;flex:1;flex-direction:column;min-inline-size:0;color:inherit}et-rich-text-editor .et-rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--et-rich-text-editor-toolbar-gap);padding:var(--et-rich-text-editor-toolbar-padding);padding-inline:calc(var(--et-form-field-control-padding-inline) - var(--et-rich-text-editor-toolbar-padding));border-block-end:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);--et-icon-button-border-radius: var(--et-rich-text-editor-button-radius)}et-rich-text-editor .et-rte-toolbar .et-icon-button{--_et-focus-ring-offset: -1px}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{position:fixed;inset-inline:0;inset-block-end:0;z-index:60;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding-inline:8px;padding-block-start:6px;padding-block-end:calc(6px + max(var(--_et-rte-keyboard-inset, 0px),env(keyboard-inset-height,0px)));background:var(--et-surface-background-solid, var(--et-surface-2, rgb(24 24 24)));border-block-end:none;border-block-start:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:0 -6px 20px #0000003d;scrollbar-width:none;opacity:0;transform:translateY(100%);pointer-events:none;transition:opacity .16s var(--ease-out-5, ease),transform .26s var(--ease-out-5, ease)}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar::-webkit-scrollbar{display:none}et-rich-text-editor.et-rich-text-editor--touch.et-rich-text-editor--docked-toolbar .et-rte-toolbar{opacity:1;transform:translateY(0);pointer-events:auto}et-rich-text-editor.et-rich-text-editor--touch .et-rte-content{font-size:max(1em,16px)}@media(prefers-reduced-motion:reduce){et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{transition:opacity .16s var(--ease-out-5, ease)}}et-rich-text-editor .et-rte-toolbar-divider{inline-size:1px;align-self:stretch;margin-block:4px;margin-inline:2px;background:color-mix(in srgb,currentColor 12%,transparent)}et-rich-text-editor .et-rte-content{--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb));display:block;flex:1;min-inline-size:0;padding-block:var(--et-form-field-control-padding-block);padding-inline:var(--et-form-field-control-padding-inline);min-block-size:var(--et-rich-text-editor-min-height);outline:none;color:inherit;caret-color:var(--et-theme-color-primary-solid, currentColor);overflow-wrap:anywhere}et-rich-text-editor .et-rte-content:empty:before{content:attr(data-placeholder);color:color-mix(in srgb,currentColor 46%,transparent);pointer-events:none}et-rich-text-editor .et-rte-content>:first-child{margin-block-start:0}et-rich-text-editor .et-rte-content>:last-child{margin-block-end:0}et-rich-text-editor .et-rte-content p{margin-block:0}et-rich-text-editor .et-rte-content p+p,et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol,et-rich-text-editor .et-rte-content blockquote,et-rich-text-editor .et-rte-content pre{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1,et-rich-text-editor .et-rte-content h2,et-rich-text-editor .et-rte-content h3,et-rich-text-editor .et-rte-content h4,et-rich-text-editor .et-rte-content h5,et-rich-text-editor .et-rte-content h6{margin-block:0;font-weight:700;line-height:1.25}et-rich-text-editor .et-rte-content :is(h1,h2,h3,h4,h5,h6)+*,et-rich-text-editor .et-rte-content *+:is(h1,h2,h3,h4,h5,h6){margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1{font-size:2.4rem}et-rich-text-editor .et-rte-content h2{font-size:2rem}et-rich-text-editor .et-rte-content h3{font-size:1.6rem}et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol{margin-block-end:0;padding-inline-start:1.5em;list-style-position:outside}et-rich-text-editor .et-rte-content ul{list-style-type:disc}et-rich-text-editor .et-rte-content ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul{list-style-type:circle}et-rich-text-editor .et-rte-content ul ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul ul{list-style-type:square}et-rich-text-editor .et-rte-content ul ul ul ul{list-style-type:disc}et-rich-text-editor .et-rte-content ol{list-style-type:decimal}et-rich-text-editor .et-rte-content ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol{list-style-type:lower-alpha}et-rich-text-editor .et-rte-content ol ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol ol{list-style-type:lower-roman}et-rich-text-editor .et-rte-content ol ol ol ol{list-style-type:decimal}et-rich-text-editor .et-rte-content li{margin-block:0}et-rich-text-editor .et-rte-content li::marker{color:color-mix(in srgb,currentColor 60%,transparent)}et-rich-text-editor .et-rte-content a{color:var(--et-theme-color-primary-solid, currentColor);text-decoration:underline}et-rich-text-editor .et-rte-content code{padding:.1em .3em;border-radius:4px;background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 14%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em}et-rich-text-editor .et-rte-content blockquote{margin-inline:0;margin-block-end:0;padding-inline-start:var(--et-rich-text-editor-quote-indent);border-inline-start:var(--et-rich-text-editor-quote-bar-width) solid color-mix(in srgb,var(--et-surface-border-solid, currentColor) 80%,transparent);color:color-mix(in srgb,currentColor 82%,transparent)}et-rich-text-editor .et-rte-content blockquote blockquote{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content pre{margin-block-end:0;padding:8px 10px;border-radius:var(--et-rich-text-editor-code-block-radius);background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 10%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em;white-space:pre-wrap}et-rich-text-editor .et-rte-content pre code{padding:0;border-radius:0;background:none;font-size:inherit}et-rich-text-editor .et-rte-content .et-rte-token{--_et-rte-token-accent: var(--et-theme-color-primary-solid, var(--et-surface-interaction-solid, currentColor));display:inline;padding-inline:var(--et-rich-text-editor-token-padding-inline);border-radius:var(--et-rich-text-editor-token-radius);background:color-mix(in srgb,var(--_et-rte-token-accent) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_et-rte-token-accent) 45%,transparent);color:var(--et-theme-color-ink-solid, inherit);font-weight:500;white-space:nowrap;-webkit-user-select:all;user-select:all;cursor:default}et-rich-text-editor .et-rte-content .et-rte-token-prefix{margin-inline-end:1px;opacity:.65}}\n"] }]
|
|
37125
|
-
}], ctorParameters: () => [], propDecorators: { editable: [{ type: i0.ViewChild, args: ['editable', { isSignal: true }] }]
|
|
37286
|
+
}, template: "<div [attr.aria-label]=\"labels().toolbar\" class=\"et-rte-toolbar\" etToolbar>\n @for (tool of dir.resolvedTools(); track $index) {\n @switch (tool) {\n @case (TOOLS.DIVIDER) {\n <et-divider orientation=\"vertical\" decorative />\n }\n @default {\n @if (dir.toolDefs.get(tool); as def) {\n @if (def.control; as control) {\n <ng-container [ngComponentOutlet]=\"control\" [ngComponentOutletInputs]=\"{ editor: dir }\" />\n } @else {\n <button\n [pressed]=\"def.isActive?.(dir) ?? false\"\n [disabled]=\"dir.disabled() || dir.readonly() || (def.isDisabled?.(dir) ?? false)\"\n [attr.aria-label]=\"toolLabel(def)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"def.run?.(dir)\"\n mutedUntilPressed\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i [allowHardcodedColor]=\"def.allowHardcodedColor ?? false\" [etIcon]=\"def.icon ?? ''\"></i>\n </button>\n }\n }\n }\n }\n }\n</div>\n\n<div\n #editable\n [attr.contenteditable]=\"dir.disabled() || dir.readonly() ? 'false' : 'true'\"\n [attr.tabindex]=\"dir.disabled() ? -1 : 0\"\n [attr.data-placeholder]=\"dir.placeholder() || null\"\n [attr.aria-invalid]=\"dir.shouldDisplayError() || null\"\n [attr.aria-describedby]=\"dir.describedBy() || null\"\n [attr.aria-labelledby]=\"dir.labelId() || null\"\n [attr.aria-disabled]=\"dir.disabled() || null\"\n [attr.aria-readonly]=\"dir.readonly() || null\"\n (input)=\"syncValueFromDom()\"\n (beforeinput)=\"interceptFormattingCommand($event)\"\n (keydown)=\"interceptEditorKeydown($event)\"\n (paste)=\"interceptPaste($event)\"\n (drop)=\"interceptDrop($event)\"\n (click)=\"interceptClick($event)\"\n (pointerdown)=\"dir.clearPendingMarks()\"\n (focus)=\"dir.focused.set(true)\"\n (blur)=\"dir.focused.set(false); dir.touched.set(true)\"\n class=\"et-rte-content\"\n role=\"textbox\"\n aria-multiline=\"true\"\n></div>\n", styles: ["@layer components{@property --et-rich-text-editor-toolbar-gap{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-toolbar-padding{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-button-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-min-height{syntax: \"<length>\"; inherits: true; initial-value: 96px;}@property --et-rich-text-editor-content-gap{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-rich-text-editor-quote-indent{syntax: \"<length>\"; inherits: true; initial-value: 12px;}@property --et-rich-text-editor-quote-bar-width{syntax: \"<length>\"; inherits: true; initial-value: 2px;}@property --et-rich-text-editor-code-block-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-rich-text-editor-token-radius{syntax: \"<length>\"; inherits: true; initial-value: 4px;}@property --et-rich-text-editor-token-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 4px;}et-rich-text-editor{display:flex;flex:1;flex-direction:column;min-inline-size:0;color:inherit}et-rich-text-editor .et-rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--et-rich-text-editor-toolbar-gap);padding:var(--et-rich-text-editor-toolbar-padding);padding-inline:calc(var(--et-form-field-control-padding-inline) - var(--et-rich-text-editor-toolbar-padding));border-block-end:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);--et-icon-button-border-radius: var(--et-rich-text-editor-button-radius)}et-rich-text-editor .et-rte-toolbar .et-icon-button{--_et-focus-ring-offset: -1px}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{position:fixed;inset-inline:0;inset-block-end:0;z-index:60;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding-inline:8px;padding-block-start:6px;padding-block-end:calc(6px + max(var(--_et-rte-keyboard-inset, 0px),env(keyboard-inset-height,0px)));background:var(--et-surface-background-solid, var(--et-surface-2, rgb(24 24 24)));border-block-end:none;border-block-start:var(--et-form-field-control-border-width, 1px) solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:0 -6px 20px #0000003d;scrollbar-width:none;opacity:0;transform:translateY(100%);pointer-events:none;transition:opacity .16s var(--ease-out-5, ease),transform .26s var(--ease-out-5, ease)}et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar::-webkit-scrollbar{display:none}et-rich-text-editor.et-rich-text-editor--touch.et-rich-text-editor--docked-toolbar .et-rte-toolbar{opacity:1;transform:translateY(0);pointer-events:auto}et-rich-text-editor.et-rich-text-editor--touch .et-rte-content{font-size:max(1em,16px)}@media(prefers-reduced-motion:reduce){et-rich-text-editor.et-rich-text-editor--touch .et-rte-toolbar{transition:opacity .16s var(--ease-out-5, ease)}}et-rich-text-editor .et-rte-toolbar .et-divider{--et-divider-color: color-mix(in srgb, currentColor 12%, transparent);--et-divider-spacing: 2px;--et-divider-inset: 4px}et-rich-text-editor .et-rte-content{--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb));display:block;flex:1;min-inline-size:0;padding-block:var(--et-form-field-control-padding-block);padding-inline:var(--et-form-field-control-padding-inline);min-block-size:var(--et-rich-text-editor-min-height);outline:none;color:inherit;caret-color:var(--et-theme-color-primary-solid, currentColor);overflow-wrap:anywhere}et-rich-text-editor .et-rte-content:empty:before{content:attr(data-placeholder);color:color-mix(in srgb,currentColor 46%,transparent);pointer-events:none}et-rich-text-editor .et-rte-content>:first-child{margin-block-start:0}et-rich-text-editor .et-rte-content>:last-child{margin-block-end:0}et-rich-text-editor .et-rte-content p{margin-block:0}et-rich-text-editor .et-rte-content p+p,et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol,et-rich-text-editor .et-rte-content blockquote,et-rich-text-editor .et-rte-content pre{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1,et-rich-text-editor .et-rte-content h2,et-rich-text-editor .et-rte-content h3,et-rich-text-editor .et-rte-content h4,et-rich-text-editor .et-rte-content h5,et-rich-text-editor .et-rte-content h6{margin-block:0;font-weight:700;line-height:1.25}et-rich-text-editor .et-rte-content :is(h1,h2,h3,h4,h5,h6)+*,et-rich-text-editor .et-rte-content *+:is(h1,h2,h3,h4,h5,h6){margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content h1{font-size:2.4rem}et-rich-text-editor .et-rte-content h2{font-size:2rem}et-rich-text-editor .et-rte-content h3{font-size:1.6rem}et-rich-text-editor .et-rte-content ul,et-rich-text-editor .et-rte-content ol{margin-block-end:0;padding-inline-start:1.5em;list-style-position:outside}et-rich-text-editor .et-rte-content ul{list-style-type:disc}et-rich-text-editor .et-rte-content ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul{list-style-type:circle}et-rich-text-editor .et-rte-content ul ul ul,et-rich-text-editor .et-rte-content ul ul ul ul ul ul{list-style-type:square}et-rich-text-editor .et-rte-content ul ul ul ul{list-style-type:disc}et-rich-text-editor .et-rte-content ol{list-style-type:decimal}et-rich-text-editor .et-rte-content ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol{list-style-type:lower-alpha}et-rich-text-editor .et-rte-content ol ol ol,et-rich-text-editor .et-rte-content ol ol ol ol ol ol{list-style-type:lower-roman}et-rich-text-editor .et-rte-content ol ol ol ol{list-style-type:decimal}et-rich-text-editor .et-rte-content li{margin-block:0}et-rich-text-editor .et-rte-content li::marker{color:color-mix(in srgb,currentColor 60%,transparent)}et-rich-text-editor .et-rte-content a{color:var(--et-theme-color-primary-solid, currentColor);text-decoration:underline}et-rich-text-editor .et-rte-content code{padding:.1em .3em;border-radius:4px;background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 14%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em}et-rich-text-editor .et-rte-content blockquote{margin-inline:0;margin-block-end:0;padding-inline-start:var(--et-rich-text-editor-quote-indent);border-inline-start:var(--et-rich-text-editor-quote-bar-width) solid color-mix(in srgb,var(--et-surface-border-solid, currentColor) 80%,transparent);color:color-mix(in srgb,currentColor 82%,transparent)}et-rich-text-editor .et-rte-content blockquote blockquote{margin-block-start:var(--et-rich-text-editor-content-gap)}et-rich-text-editor .et-rte-content pre{margin-block-end:0;padding:8px 10px;border-radius:var(--et-rich-text-editor-code-block-radius);background:color-mix(in srgb,var(--et-surface-interaction-solid, currentColor) 10%,transparent);font-family:var(--et-font-family-mono, ui-monospace, monospace);font-size:.9em;white-space:pre-wrap}et-rich-text-editor .et-rte-content pre code{padding:0;border-radius:0;background:none;font-size:inherit}et-rich-text-editor .et-rte-content .et-rte-token{--_et-rte-token-accent: var(--et-theme-color-primary-solid, var(--et-surface-interaction-solid, currentColor));display:inline;padding-inline:var(--et-rich-text-editor-token-padding-inline);border-radius:var(--et-rich-text-editor-token-radius);background:color-mix(in srgb,var(--_et-rte-token-accent) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_et-rte-token-accent) 45%,transparent);color:var(--et-theme-color-ink-solid, inherit);font-weight:500;white-space:nowrap;-webkit-user-select:all;user-select:all;cursor:default}et-rich-text-editor .et-rte-content .et-rte-token-prefix{margin-inline-end:1px;opacity:.65}}\n"] }]
|
|
37287
|
+
}], ctorParameters: () => [], propDecorators: { editable: [{ type: i0.ViewChild, args: ['editable', { isSignal: true }] }] } });
|
|
37126
37288
|
|
|
37127
37289
|
const RICH_TEXT_EDITOR_IMPORTS = [RichTextEditorComponent, RichTextEditorDirective];
|
|
37128
37290
|
|
|
@@ -38377,13 +38539,10 @@ class SelectDirective {
|
|
|
38377
38539
|
...(this.mirrorPanelWidth() ? [] : ['et-overlay--select-content-width']),
|
|
38378
38540
|
],
|
|
38379
38541
|
placement: 'bottom-start',
|
|
38380
|
-
// prefer flipping the alignment on the same side (right-align under the field) before
|
|
38381
|
-
// flipping up, so a field near the right viewport edge opens bottom-end, not shifted
|
|
38382
|
-
fallbackPlacements: ['bottom-end', 'top-start', 'top-end'],
|
|
38383
38542
|
offset: 4,
|
|
38384
38543
|
viewportPadding: 8,
|
|
38385
38544
|
autoResize: true,
|
|
38386
|
-
|
|
38545
|
+
minAvailableSpace: 160,
|
|
38387
38546
|
mirrorWidth: this.mirrorPanelWidth(),
|
|
38388
38547
|
}),
|
|
38389
38548
|
};
|
|
@@ -40543,7 +40702,7 @@ class SelectPanelComponent {
|
|
|
40543
40702
|
<ng-content select="[etSelectPanelExtras]" />
|
|
40544
40703
|
</div>
|
|
40545
40704
|
</div>
|
|
40546
|
-
`, isInline: true, styles: ["@layer components{@property --et-select-panel-max-height{syntax: \"<length-percentage>\"; inherits: false; initial-value: 40vh;}@property --et-select-panel-padding{syntax: \"<length>\"; inherits: false; initial-value: 6px;}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--select[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--select[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--select[data-overlay-placement].et-animation-enter-from,.et-overlay--select[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-select-panel{display:grid;grid-template-rows:minmax(0,1fr);box-sizing:border-box;max-block-size:var(--et-select-panel-max-height);overflow:hidden;--_et-select-panel-padding: var(--et-select-panel-padding);border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:var(--et-select-option-font-size, 14px);box-shadow:0 10px 24px #00000029}.et-select-panel .et-select-panel-scroller{box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain;padding:var(--_et-select-panel-padding)}.et-select-panel.et-select-panel--resizing .et-select-panel-scroller{overflow:clip}.et-select-panel .et-select-listbox,.et-select-panel .et-select-panel-extras{display:contents}.et-select-panel .et-select-state{display:flex;align-items:center;gap:8px;min-block-size:var(--et-select-option-height, 36px);padding-inline:var(--et-select-option-padding-inline, 10px);font-size:var(--et-select-option-font-size, 14px);color:var(--et-surface-color-muted-solid, currentColor)}.et-select-panel .et-select-state.et-select-state--error{font-size:12px;color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new{position:relative;display:flex;align-items:center;gap:var(--et-select-option-gap, 8px);inline-size:100%;min-block-size:var(--et-select-option-height, 36px);margin-block-start:7px;padding-inline:var(--et-select-option-padding-inline, 10px);border:none;border-radius:var(--et-select-option-border-radius, 6px);background:transparent;font:inherit;font-size:var(--et-select-option-font-size, 14px);text-align:start;color:var(--et-theme-color-ink-solid, currentColor);cursor:pointer;appearance:none;transition:background .12s ease}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):before{content:\"\";position:absolute;inset-inline:calc(var(--et-select-panel-padding, 6px) * -1);inset-block-start:-4px;block-size:1px;background:var(--et-surface-border-solid, rgb(255 255 255 / .1))}@media(hover:hover){:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 12%,transparent)}}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):active{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 20%,transparent)}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new) .et-icon{flex:none;inline-size:16px;block-size:16px}.et-select-panel .et-select-load-more+.et-select-add-new{margin-block-start:2px}.et-select-panel .et-select-load-more+.et-select-add-new:before{content:none}.et-select-panel .et-select-load-more-icon{rotate:180deg}.et-overlay--select-content-width .et-select-panel{max-inline-size:min(400px,calc(100vw - 24px))}}\n"], dependencies: [{ kind: "directive", type: SelectListboxDirective, selector: "[etSelectListbox]", exportAs: ["etSelectListbox"] }, { kind: "directive", type: SelectViewportDirective, selector: "[etSelectViewport]", exportAs: ["etSelectViewport"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
40705
|
+
`, isInline: true, styles: ["@layer components{@property --et-select-panel-max-height{syntax: \"<length-percentage>\"; inherits: false; initial-value: 40vh;}@property --et-select-panel-padding{syntax: \"<length>\"; inherits: false; initial-value: 6px;}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--select[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--select[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--select[data-overlay-placement].et-animation-enter-from,.et-overlay--select[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-select-panel{display:grid;grid-template-rows:minmax(0,1fr);box-sizing:border-box;max-block-size:min(var(--et-select-panel-max-height),var(--et-overlay-max-height, 100vh));overflow:hidden;--_et-select-panel-padding: var(--et-select-panel-padding);border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:var(--et-select-option-font-size, 14px);box-shadow:0 10px 24px #00000029}.et-select-panel .et-select-panel-scroller{box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain;padding:var(--_et-select-panel-padding)}.et-select-panel.et-select-panel--resizing .et-select-panel-scroller{overflow:clip}.et-select-panel .et-select-listbox,.et-select-panel .et-select-panel-extras{display:contents}.et-select-panel .et-select-state{display:flex;align-items:center;gap:8px;min-block-size:var(--et-select-option-height, 36px);padding-inline:var(--et-select-option-padding-inline, 10px);font-size:var(--et-select-option-font-size, 14px);color:var(--et-surface-color-muted-solid, currentColor)}.et-select-panel .et-select-state.et-select-state--error{font-size:12px;color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new{position:relative;display:flex;align-items:center;gap:var(--et-select-option-gap, 8px);inline-size:100%;min-block-size:var(--et-select-option-height, 36px);margin-block-start:7px;padding-inline:var(--et-select-option-padding-inline, 10px);border:none;border-radius:var(--et-select-option-border-radius, 6px);background:transparent;font:inherit;font-size:var(--et-select-option-font-size, 14px);text-align:start;color:var(--et-theme-color-ink-solid, currentColor);cursor:pointer;appearance:none;transition:background .12s ease}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):before{content:\"\";position:absolute;inset-inline:calc(var(--et-select-panel-padding, 6px) * -1);inset-block-start:-4px;block-size:1px;background:var(--et-surface-border-solid, rgb(255 255 255 / .1))}@media(hover:hover){:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 12%,transparent)}}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):active{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 20%,transparent)}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new) .et-icon{flex:none;inline-size:16px;block-size:16px}.et-select-panel .et-select-load-more+.et-select-add-new{margin-block-start:2px}.et-select-panel .et-select-load-more+.et-select-add-new:before{content:none}.et-select-panel .et-select-load-more-icon{rotate:180deg}.et-overlay--select-content-width .et-select-panel{max-inline-size:min(400px,calc(100vw - 24px))}}\n"], dependencies: [{ kind: "directive", type: SelectListboxDirective, selector: "[etSelectListbox]", exportAs: ["etSelectListbox"] }, { kind: "directive", type: SelectViewportDirective, selector: "[etSelectViewport]", exportAs: ["etSelectViewport"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
40547
40706
|
}
|
|
40548
40707
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SelectPanelComponent, decorators: [{
|
|
40549
40708
|
type: Component,
|
|
@@ -40558,7 +40717,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
40558
40717
|
</div>
|
|
40559
40718
|
`, encapsulation: ViewEncapsulation.None, imports: [SelectListboxDirective, SelectViewportDirective], hostDirectives: [ProvideColorDirective, AutoSurfaceDirective], host: {
|
|
40560
40719
|
class: 'et-select-panel',
|
|
40561
|
-
}, styles: ["@layer components{@property --et-select-panel-max-height{syntax: \"<length-percentage>\"; inherits: false; initial-value: 40vh;}@property --et-select-panel-padding{syntax: \"<length>\"; inherits: false; initial-value: 6px;}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--select[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--select[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--select[data-overlay-placement].et-animation-enter-from,.et-overlay--select[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-select-panel{display:grid;grid-template-rows:minmax(0,1fr);box-sizing:border-box;max-block-size:var(--et-select-panel-max-height);overflow:hidden;--_et-select-panel-padding: var(--et-select-panel-padding);border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:var(--et-select-option-font-size, 14px);box-shadow:0 10px 24px #00000029}.et-select-panel .et-select-panel-scroller{box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain;padding:var(--_et-select-panel-padding)}.et-select-panel.et-select-panel--resizing .et-select-panel-scroller{overflow:clip}.et-select-panel .et-select-listbox,.et-select-panel .et-select-panel-extras{display:contents}.et-select-panel .et-select-state{display:flex;align-items:center;gap:8px;min-block-size:var(--et-select-option-height, 36px);padding-inline:var(--et-select-option-padding-inline, 10px);font-size:var(--et-select-option-font-size, 14px);color:var(--et-surface-color-muted-solid, currentColor)}.et-select-panel .et-select-state.et-select-state--error{font-size:12px;color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new{position:relative;display:flex;align-items:center;gap:var(--et-select-option-gap, 8px);inline-size:100%;min-block-size:var(--et-select-option-height, 36px);margin-block-start:7px;padding-inline:var(--et-select-option-padding-inline, 10px);border:none;border-radius:var(--et-select-option-border-radius, 6px);background:transparent;font:inherit;font-size:var(--et-select-option-font-size, 14px);text-align:start;color:var(--et-theme-color-ink-solid, currentColor);cursor:pointer;appearance:none;transition:background .12s ease}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):before{content:\"\";position:absolute;inset-inline:calc(var(--et-select-panel-padding, 6px) * -1);inset-block-start:-4px;block-size:1px;background:var(--et-surface-border-solid, rgb(255 255 255 / .1))}@media(hover:hover){:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 12%,transparent)}}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):active{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 20%,transparent)}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new) .et-icon{flex:none;inline-size:16px;block-size:16px}.et-select-panel .et-select-load-more+.et-select-add-new{margin-block-start:2px}.et-select-panel .et-select-load-more+.et-select-add-new:before{content:none}.et-select-panel .et-select-load-more-icon{rotate:180deg}.et-overlay--select-content-width .et-select-panel{max-inline-size:min(400px,calc(100vw - 24px))}}\n"] }]
|
|
40720
|
+
}, styles: ["@layer components{@property --et-select-panel-max-height{syntax: \"<length-percentage>\"; inherits: false; initial-value: 40vh;}@property --et-select-panel-padding{syntax: \"<length>\"; inherits: false; initial-value: 6px;}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-to{opacity:0}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:transform .14s ease,opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:transform .1s ease,opacity .1s ease}.et-overlay--select[data-overlay-placement^=top].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=top].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(.3rem)!important}.et-overlay--select[data-overlay-placement^=bottom].et-animation-enter-from,.et-overlay--select[data-overlay-placement^=bottom].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0) translateY(-.3rem)!important}@media(prefers-reduced-motion:reduce){.et-overlay.et-with-default-animation.et-overlay--select.et-animation-enter-active{transition:opacity .14s ease}.et-overlay.et-with-default-animation.et-overlay--select.et-animation-leave-active{transition:opacity .1s ease}.et-overlay--select[data-overlay-placement].et-animation-enter-from,.et-overlay--select[data-overlay-placement].et-animation-leave-to{transform:translate3d(var(--et-overlay-anchored-x, 0px),var(--et-overlay-anchored-y, 0px),0)!important}}.et-select-panel{display:grid;grid-template-rows:minmax(0,1fr);box-sizing:border-box;max-block-size:min(var(--et-select-panel-max-height),var(--et-overlay-max-height, 100vh));overflow:hidden;--_et-select-panel-padding: var(--et-select-panel-padding);border-radius:10px;border:1px solid var(--et-surface-border-solid, rgb(255 255 255 / .1));background:var(--et-surface-background-solid, rgb(32 32 32));color:var(--et-surface-color-solid, rgb(244 244 245));font-size:var(--et-select-option-font-size, 14px);box-shadow:0 10px 24px #00000029}.et-select-panel .et-select-panel-scroller{box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain;padding:var(--_et-select-panel-padding)}.et-select-panel.et-select-panel--resizing .et-select-panel-scroller{overflow:clip}.et-select-panel .et-select-listbox,.et-select-panel .et-select-panel-extras{display:contents}.et-select-panel .et-select-state{display:flex;align-items:center;gap:8px;min-block-size:var(--et-select-option-height, 36px);padding-inline:var(--et-select-option-padding-inline, 10px);font-size:var(--et-select-option-font-size, 14px);color:var(--et-surface-color-muted-solid, currentColor)}.et-select-panel .et-select-state.et-select-state--error{font-size:12px;color:var(--et-theme-color-primary-solid, rgb(248 113 113))}.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new{position:relative;display:flex;align-items:center;gap:var(--et-select-option-gap, 8px);inline-size:100%;min-block-size:var(--et-select-option-height, 36px);margin-block-start:7px;padding-inline:var(--et-select-option-padding-inline, 10px);border:none;border-radius:var(--et-select-option-border-radius, 6px);background:transparent;font:inherit;font-size:var(--et-select-option-font-size, 14px);text-align:start;color:var(--et-theme-color-ink-solid, currentColor);cursor:pointer;appearance:none;transition:background .12s ease}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):before{content:\"\";position:absolute;inset-inline:calc(var(--et-select-panel-padding, 6px) * -1);inset-block-start:-4px;block-size:1px;background:var(--et-surface-border-solid, rgb(255 255 255 / .1))}@media(hover:hover){:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 12%,transparent)}}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new):active{background:color-mix(in srgb,var(--et-surface-interaction-solid, rgb(255 255 255)) 20%,transparent)}:is(.et-select-panel .et-select-load-more,.et-select-panel .et-select-add-new) .et-icon{flex:none;inline-size:16px;block-size:16px}.et-select-panel .et-select-load-more+.et-select-add-new{margin-block-start:2px}.et-select-panel .et-select-load-more+.et-select-add-new:before{content:none}.et-select-panel .et-select-load-more-icon{rotate:180deg}.et-overlay--select-content-width .et-select-panel{max-inline-size:min(400px,calc(100vw - 24px))}}\n"] }]
|
|
40562
40721
|
}], ctorParameters: () => [], propDecorators: { panelBody: [{ type: i0.ViewChild, args: ['panelBody', { isSignal: true }] }] } });
|
|
40563
40722
|
|
|
40564
40723
|
/**
|
|
@@ -51776,6 +51935,8 @@ const SCHEDULER_ERROR_CODES = {
|
|
|
51776
51935
|
FEATURE_OUTSIDE_SCHEDULER: 4500,
|
|
51777
51936
|
/** A view layout directive (e.g. `[etSchedulerMonth]`) was placed outside an `[etScheduler]`. */
|
|
51778
51937
|
VIEW_OUTSIDE_SCHEDULER: 4501,
|
|
51938
|
+
/** An edit-surface feature (e.g. an edit field or appointment action) was used outside an `<et-scheduler-edit-surface>`. */
|
|
51939
|
+
EDIT_SURFACE_FEATURE_OUTSIDE_SURFACE: 4502,
|
|
51779
51940
|
};
|
|
51780
51941
|
|
|
51781
51942
|
/** The built-in English labels. */
|
|
@@ -51789,6 +51950,21 @@ const DEFAULT_SCHEDULER_LABELS = {
|
|
|
51789
51950
|
week: 'Week',
|
|
51790
51951
|
day: 'Day',
|
|
51791
51952
|
agenda: 'Agenda',
|
|
51953
|
+
addAppointment: 'Add appointment',
|
|
51954
|
+
untitledAppointment: 'Untitled appointment',
|
|
51955
|
+
ancestors: 'Ancestor chain',
|
|
51956
|
+
subAppointments: 'Sub-appointments',
|
|
51957
|
+
moreActions: 'More actions',
|
|
51958
|
+
save: 'Save',
|
|
51959
|
+
cancel: 'Cancel',
|
|
51960
|
+
addSubAppointment: 'Add sub-appointment',
|
|
51961
|
+
deleteWithDescendants: 'Delete (with descendants)',
|
|
51962
|
+
titleField: 'Title',
|
|
51963
|
+
startField: 'Starts',
|
|
51964
|
+
endField: 'Ends',
|
|
51965
|
+
locationField: 'Location',
|
|
51966
|
+
descriptionField: 'Description',
|
|
51967
|
+
colorField: 'Color',
|
|
51792
51968
|
};
|
|
51793
51969
|
const SCHEDULER_LABELS_DEF = /* @__PURE__ */ defineLabels('SCHEDULER_LABELS', DEFAULT_SCHEDULER_LABELS);
|
|
51794
51970
|
const provideSchedulerLabels = /* @__PURE__ */ toProvideFn(SCHEDULER_LABELS_DEF);
|
|
@@ -51825,6 +52001,21 @@ const buildAppointmentTree = (appointments) => {
|
|
|
51825
52001
|
const flattenAppointmentTree = (nodes) => nodes.flatMap((node) => [node, ...flattenAppointmentTree(node.children)]);
|
|
51826
52002
|
/** Every descendant a node has, at any depth - what the chain-count badge adornment shows. */
|
|
51827
52003
|
const countDescendants = (node) => node.children.reduce((count, child) => count + 1 + countDescendants(child), 0);
|
|
52004
|
+
/** Finds the tree node for an appointment id, searching every chain at any depth. */
|
|
52005
|
+
const findAppointmentNode = (nodes, id) => {
|
|
52006
|
+
for (const node of nodes) {
|
|
52007
|
+
if (node.appointment.id === id) {
|
|
52008
|
+
return node;
|
|
52009
|
+
}
|
|
52010
|
+
const found = findAppointmentNode(node.children, id);
|
|
52011
|
+
if (found) {
|
|
52012
|
+
return found;
|
|
52013
|
+
}
|
|
52014
|
+
}
|
|
52015
|
+
return null;
|
|
52016
|
+
};
|
|
52017
|
+
/** Every descendant id a node has, at any depth - what "delete (with descendants)" removes in one pass. */
|
|
52018
|
+
const collectDescendantIds = (node) => node.children.flatMap((child) => [child.appointment.id, ...collectDescendantIds(child)]);
|
|
51828
52019
|
|
|
51829
52020
|
/**
|
|
51830
52021
|
* Headless scheduler state: the active view, the focused date, the visible date range each view
|
|
@@ -52001,6 +52192,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
52001
52192
|
}]
|
|
52002
52193
|
}], ctorParameters: () => [] });
|
|
52003
52194
|
|
|
52195
|
+
/**
|
|
52196
|
+
* Headless edit-surface state: which appointment is open, the live draft every field reads and
|
|
52197
|
+
* writes, and navigation across the sub-appointment chain (ancestors, children, "add
|
|
52198
|
+
* sub-appointment") - all without any template structure. `<et-scheduler-edit-surface>` applies
|
|
52199
|
+
* this via `hostDirectives` and renders the registered fields/actions on top (see
|
|
52200
|
+
* `SCHEDULER_EDIT_SURFACE_HOST`).
|
|
52201
|
+
*/
|
|
52202
|
+
class SchedulerEditSurfaceDirective {
|
|
52203
|
+
constructor() {
|
|
52204
|
+
/** The appointment to open the surface for - a freshly-synthesized blank one (with `id` already assigned) for "add". */
|
|
52205
|
+
this.appointment = input.required(/* @ts-ignore */
|
|
52206
|
+
...(ngDevMode ? [{ debugName: "appointment" }] : /* istanbul ignore next */ []));
|
|
52207
|
+
/** Every appointment the scheduler knows about - for the ancestor breadcrumb, the children list, and chain-aware actions. */
|
|
52208
|
+
this.appointments = input([], /* @ts-ignore */
|
|
52209
|
+
...(ngDevMode ? [{ debugName: "appointments" }] : /* istanbul ignore next */ []));
|
|
52210
|
+
/** Emits the draft when the surface commits an edit or a new sub-appointment. */
|
|
52211
|
+
this.save = output();
|
|
52212
|
+
/** Emits every id to remove - the current appointment plus, for "delete with descendants", its whole chain. */
|
|
52213
|
+
this.deleteAppointments = output();
|
|
52214
|
+
this.appointmentTree = computed(() => buildAppointmentTree(this.appointments()), /* @ts-ignore */
|
|
52215
|
+
...(ngDevMode ? [{ debugName: "appointmentTree" }] : /* istanbul ignore next */ []));
|
|
52216
|
+
/** A synthesized appointment not yet in `appointments()` - set while "add sub-appointment" is in progress. */
|
|
52217
|
+
this.pendingAppointment = signal(null, /* @ts-ignore */
|
|
52218
|
+
...(ngDevMode ? [{ debugName: "pendingAppointment" }] : /* istanbul ignore next */ []));
|
|
52219
|
+
/**
|
|
52220
|
+
* Which appointment id the surface is currently showing. Starts at `appointment()`'s id;
|
|
52221
|
+
* breadcrumb/children navigation and "add sub-appointment" move it without opening a new dialog.
|
|
52222
|
+
*/
|
|
52223
|
+
this.currentAppointmentId = linkedSignal(() => this.appointment().id, /* @ts-ignore */
|
|
52224
|
+
...(ngDevMode ? [{ debugName: "currentAppointmentId" }] : /* istanbul ignore next */ []));
|
|
52225
|
+
/** The pre-edit snapshot of whichever appointment is currently shown. */
|
|
52226
|
+
this.currentAppointment = computed(() => this.pendingAppointment() ??
|
|
52227
|
+
this.appointments().find((candidate) => candidate.id === this.currentAppointmentId()) ??
|
|
52228
|
+
this.appointment(), /* @ts-ignore */
|
|
52229
|
+
...(ngDevMode ? [{ debugName: "currentAppointment" }] : /* istanbul ignore next */ []));
|
|
52230
|
+
/**
|
|
52231
|
+
* The live draft every edit field reads and writes. Resets to `currentAppointment()` whenever
|
|
52232
|
+
* the surface navigates - unsaved edits are discarded on navigation, the same "edit a copy"
|
|
52233
|
+
* tradeoff the filter overlay makes.
|
|
52234
|
+
*/
|
|
52235
|
+
this.draft = linkedSignal(() => this.currentAppointment(), /* @ts-ignore */
|
|
52236
|
+
...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
|
|
52237
|
+
/** `currentAppointment()`'s ancestor chain, root first - what the breadcrumb renders. */
|
|
52238
|
+
this.ancestors = computed(() => {
|
|
52239
|
+
const byId = new Map(this.appointments().map((candidate) => [candidate.id, candidate]));
|
|
52240
|
+
const chain = [];
|
|
52241
|
+
const seen = new Set();
|
|
52242
|
+
let parentId = this.currentAppointment().parentId;
|
|
52243
|
+
while (parentId !== null && !seen.has(parentId)) {
|
|
52244
|
+
seen.add(parentId);
|
|
52245
|
+
const parent = byId.get(parentId);
|
|
52246
|
+
if (!parent) {
|
|
52247
|
+
break;
|
|
52248
|
+
}
|
|
52249
|
+
chain.unshift(parent);
|
|
52250
|
+
parentId = parent.parentId;
|
|
52251
|
+
}
|
|
52252
|
+
return chain;
|
|
52253
|
+
}, /* @ts-ignore */
|
|
52254
|
+
...(ngDevMode ? [{ debugName: "ancestors" }] : /* istanbul ignore next */ []));
|
|
52255
|
+
this.currentNode = computed(() => findAppointmentNode(this.appointmentTree(), this.currentAppointmentId()), /* @ts-ignore */
|
|
52256
|
+
...(ngDevMode ? [{ debugName: "currentNode" }] : /* istanbul ignore next */ []));
|
|
52257
|
+
/** `currentAppointment()`'s direct children - what the children list renders, each navigable via `navigateTo`. */
|
|
52258
|
+
this.children = computed(() => this.currentNode()?.children ?? [], /* @ts-ignore */
|
|
52259
|
+
...(ngDevMode ? [{ debugName: "children" }] : /* istanbul ignore next */ []));
|
|
52260
|
+
}
|
|
52261
|
+
/**
|
|
52262
|
+
* Navigates to a different appointment already in `appointments()` - a breadcrumb ancestor or a
|
|
52263
|
+
* child in the list. Discards any unsaved draft edits for the appointment navigated away from.
|
|
52264
|
+
*/
|
|
52265
|
+
navigateTo(id) {
|
|
52266
|
+
this.pendingAppointment.set(null);
|
|
52267
|
+
this.currentAppointmentId.set(id);
|
|
52268
|
+
}
|
|
52269
|
+
/** Starts "add sub-appointment": synthesizes a blank child of `currentAppointment()` and navigates to it. */
|
|
52270
|
+
startAddSubAppointment() {
|
|
52271
|
+
const parent = this.currentAppointment();
|
|
52272
|
+
const blank = {
|
|
52273
|
+
id: randomId(),
|
|
52274
|
+
parentId: parent.id,
|
|
52275
|
+
title: '',
|
|
52276
|
+
start: parent.start,
|
|
52277
|
+
end: parent.end,
|
|
52278
|
+
};
|
|
52279
|
+
this.pendingAppointment.set(blank);
|
|
52280
|
+
this.currentAppointmentId.set(blank.id);
|
|
52281
|
+
}
|
|
52282
|
+
/** Commits the current draft via `save` - the component closes the dialog on this. */
|
|
52283
|
+
commit() {
|
|
52284
|
+
this.save.emit(this.draft());
|
|
52285
|
+
}
|
|
52286
|
+
/** Emits `deleteAppointments` for the current appointment and every descendant - the component closes the dialog on this. */
|
|
52287
|
+
requestDelete() {
|
|
52288
|
+
const node = this.currentNode();
|
|
52289
|
+
const ids = node ? [node.appointment.id, ...collectDescendantIds(node)] : [this.currentAppointment().id];
|
|
52290
|
+
this.deleteAppointments.emit(ids);
|
|
52291
|
+
}
|
|
52292
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditSurfaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
52293
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditSurfaceDirective, isStandalone: true, selector: "[etSchedulerEditSurface]", inputs: { appointment: { classPropertyName: "appointment", publicName: "appointment", isSignal: true, isRequired: true, transformFunction: null }, appointments: { classPropertyName: "appointments", publicName: "appointments", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { save: "save", deleteAppointments: "deleteAppointments" }, exportAs: ["etSchedulerEditSurface"], ngImport: i0 }); }
|
|
52294
|
+
}
|
|
52295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditSurfaceDirective, decorators: [{
|
|
52296
|
+
type: Directive,
|
|
52297
|
+
args: [{
|
|
52298
|
+
selector: '[etSchedulerEditSurface]',
|
|
52299
|
+
exportAs: 'etSchedulerEditSurface',
|
|
52300
|
+
}]
|
|
52301
|
+
}], propDecorators: { appointment: [{ type: i0.Input, args: [{ isSignal: true, alias: "appointment", required: true }] }], appointments: [{ type: i0.Input, args: [{ isSignal: true, alias: "appointments", required: false }] }], save: [{ type: i0.Output, args: ["save"] }], deleteAppointments: [{ type: i0.Output, args: ["deleteAppointments"] }] } });
|
|
52302
|
+
|
|
52004
52303
|
const SCHEDULER_FEATURE_HOST = new InjectionToken('SCHEDULER_FEATURE_HOST');
|
|
52005
52304
|
/**
|
|
52006
52305
|
* Read a feature's config input. A feature directive is usually written bare
|
|
@@ -52019,6 +52318,18 @@ const injectSchedulerFeatureHost = (feature) => {
|
|
|
52019
52318
|
}
|
|
52020
52319
|
return host;
|
|
52021
52320
|
};
|
|
52321
|
+
const SCHEDULER_EDIT_SURFACE_HOST = new InjectionToken('SCHEDULER_EDIT_SURFACE_HOST');
|
|
52322
|
+
/**
|
|
52323
|
+
* Inject the host edit surface from inside a feature. Throws a labelled error when the feature was
|
|
52324
|
+
* placed outside an `<et-scheduler-edit-surface>`, where it could only ever silently do nothing.
|
|
52325
|
+
*/
|
|
52326
|
+
const injectSchedulerEditSurfaceHost = (feature) => {
|
|
52327
|
+
const host = inject(SCHEDULER_EDIT_SURFACE_HOST, { optional: true });
|
|
52328
|
+
if (!host) {
|
|
52329
|
+
throw new RuntimeError(SCHEDULER_ERROR_CODES.EDIT_SURFACE_FEATURE_OUTSIDE_SURFACE, `[${feature}] must be used inside an <et-scheduler-edit-surface>.`);
|
|
52330
|
+
}
|
|
52331
|
+
return host;
|
|
52332
|
+
};
|
|
52022
52333
|
|
|
52023
52334
|
const appointmentCoversDay = (appointment, day) => appointment.start <= day.end && appointment.end >= day.start;
|
|
52024
52335
|
/**
|
|
@@ -52224,6 +52535,22 @@ const buildSchedulerTimeGrid = (options) => {
|
|
|
52224
52535
|
}));
|
|
52225
52536
|
return { days: dayColumns, allDay, allDayRowCount: rowCount };
|
|
52226
52537
|
};
|
|
52538
|
+
/**
|
|
52539
|
+
* Which hour the time grid's scrollable body should open scrolled to, so day/week view never
|
|
52540
|
+
* starts on an empty screen scrolled to midnight: the current hour (with an hour of lead-in) when
|
|
52541
|
+
* today is one of the visible days, else the earliest timed appointment's hour (same lead-in),
|
|
52542
|
+
* else a business-hours default.
|
|
52543
|
+
*/
|
|
52544
|
+
const computeInitialScrollHour = (grid, now) => {
|
|
52545
|
+
if (grid.days.some((day) => day.today)) {
|
|
52546
|
+
return Math.max(0, now.getHours() - 1);
|
|
52547
|
+
}
|
|
52548
|
+
const offsets = grid.days.flatMap((day) => day.blocks.map((block) => block.offset));
|
|
52549
|
+
if (offsets.length === 0) {
|
|
52550
|
+
return 8;
|
|
52551
|
+
}
|
|
52552
|
+
return Math.max(0, Math.floor((Math.min(...offsets) / 100) * 24) - 1);
|
|
52553
|
+
};
|
|
52227
52554
|
|
|
52228
52555
|
/**
|
|
52229
52556
|
* Lays the host `[etScheduler]`'s appointments onto an hour-axis time grid: one day column per day
|
|
@@ -52257,6 +52584,14 @@ class SchedulerTimeGridDirective {
|
|
|
52257
52584
|
/** How many stacking rows {@link allDay} needs - sizes the all-day lane's reserved space. */
|
|
52258
52585
|
this.allDayRowCount = computed(() => this.grid().allDayRowCount, /* @ts-ignore */
|
|
52259
52586
|
...(ngDevMode ? [{ debugName: "allDayRowCount" }] : /* istanbul ignore next */ []));
|
|
52587
|
+
/**
|
|
52588
|
+
* Which hour the body's scrollable region should open scrolled to - the current hour when today
|
|
52589
|
+
* is visible, else the earliest appointment's hour, else a business-hours default. See
|
|
52590
|
+
* `SchedulerTimeGridViewComponent`, which reads this once on mount rather than reactively, so
|
|
52591
|
+
* navigating days/weeks afterwards never yanks the user's own scroll position back.
|
|
52592
|
+
*/
|
|
52593
|
+
this.initialScrollHour = computed(() => computeInitialScrollHour(this.grid(), new Date()), /* @ts-ignore */
|
|
52594
|
+
...(ngDevMode ? [{ debugName: "initialScrollHour" }] : /* istanbul ignore next */ []));
|
|
52260
52595
|
if (ngDevMode) {
|
|
52261
52596
|
afterNextRender(() => {
|
|
52262
52597
|
if (!this.scheduler) {
|
|
@@ -52276,6 +52611,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
52276
52611
|
}]
|
|
52277
52612
|
}], ctorParameters: () => [] });
|
|
52278
52613
|
|
|
52614
|
+
/**
|
|
52615
|
+
* Built-in toolbar action: opens the default edit surface for a brand-new, blank top-level
|
|
52616
|
+
* appointment - see `SchedulerFeatureHost.addAppointment`. One of the default pieces
|
|
52617
|
+
* `<et-scheduler>` bundles - see `registerToolbarAction`. Depends on the default edit surface
|
|
52618
|
+
* (it's what the dialog it opens is), so unlike `etSchedulerActionAddSubAppointment` it has no
|
|
52619
|
+
* bare-`[etScheduler]` equivalent - a headless-only composition needs its own "new appointment"
|
|
52620
|
+
* affordance.
|
|
52621
|
+
*
|
|
52622
|
+
* @example
|
|
52623
|
+
* <et-scheduler [etSchedulerActionAddAppointment]="{ enabled: false }" … />
|
|
52624
|
+
*/
|
|
52625
|
+
class SchedulerActionAddAppointmentDirective {
|
|
52626
|
+
constructor() {
|
|
52627
|
+
this.host = injectSchedulerFeatureHost('etSchedulerActionAddAppointment');
|
|
52628
|
+
this.labels = injectSchedulerLabels();
|
|
52629
|
+
/** See {@link SchedulerActionAddAppointmentConfig}. */
|
|
52630
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerActionAddAppointment',
|
|
52631
|
+
transform: (schedulerFeatureConfig) });
|
|
52632
|
+
this.host.registerToolbarAction({
|
|
52633
|
+
label: computed(() => this.labels().addAppointment),
|
|
52634
|
+
icon: 'et-plus',
|
|
52635
|
+
order: 0,
|
|
52636
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
52637
|
+
run: () => this.host.addAppointment(),
|
|
52638
|
+
});
|
|
52639
|
+
}
|
|
52640
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerActionAddAppointmentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
52641
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerActionAddAppointmentDirective, isStandalone: true, selector: "[etSchedulerActionAddAppointment]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerActionAddAppointment", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerActionAddAppointment"], ngImport: i0 }); }
|
|
52642
|
+
}
|
|
52643
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerActionAddAppointmentDirective, decorators: [{
|
|
52644
|
+
type: Directive,
|
|
52645
|
+
args: [{
|
|
52646
|
+
selector: '[etSchedulerActionAddAppointment]',
|
|
52647
|
+
exportAs: 'etSchedulerActionAddAppointment',
|
|
52648
|
+
}]
|
|
52649
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerActionAddAppointment", required: false }] }] } });
|
|
52650
|
+
|
|
52651
|
+
/**
|
|
52652
|
+
* Built-in appointment action: starts adding a sub-appointment of the surface's current
|
|
52653
|
+
* appointment - see `SchedulerEditSurfaceDirective.startAddSubAppointment`. One of the default
|
|
52654
|
+
* pieces `<et-scheduler-edit-surface>` bundles - see `registerAppointmentAction`.
|
|
52655
|
+
*
|
|
52656
|
+
* @example
|
|
52657
|
+
* <et-scheduler-edit-surface [etSchedulerActionAddSubAppointment]="{ enabled: false }" … />
|
|
52658
|
+
*/
|
|
52659
|
+
class SchedulerActionAddSubAppointmentDirective {
|
|
52660
|
+
constructor() {
|
|
52661
|
+
this.host = injectSchedulerEditSurfaceHost('etSchedulerActionAddSubAppointment');
|
|
52662
|
+
this.surface = inject(SchedulerEditSurfaceDirective);
|
|
52663
|
+
this.labels = injectSchedulerLabels();
|
|
52664
|
+
/** See {@link SchedulerActionAddSubAppointmentConfig}. */
|
|
52665
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerActionAddSubAppointment',
|
|
52666
|
+
transform: (schedulerFeatureConfig) });
|
|
52667
|
+
this.host.registerAppointmentAction({
|
|
52668
|
+
label: computed(() => this.labels().addSubAppointment),
|
|
52669
|
+
icon: 'et-plus',
|
|
52670
|
+
order: 0,
|
|
52671
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
52672
|
+
run: () => this.surface.startAddSubAppointment(),
|
|
52673
|
+
});
|
|
52674
|
+
}
|
|
52675
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerActionAddSubAppointmentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
52676
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerActionAddSubAppointmentDirective, isStandalone: true, selector: "[etSchedulerActionAddSubAppointment]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerActionAddSubAppointment", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerActionAddSubAppointment"], ngImport: i0 }); }
|
|
52677
|
+
}
|
|
52678
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerActionAddSubAppointmentDirective, decorators: [{
|
|
52679
|
+
type: Directive,
|
|
52680
|
+
args: [{
|
|
52681
|
+
selector: '[etSchedulerActionAddSubAppointment]',
|
|
52682
|
+
exportAs: 'etSchedulerActionAddSubAppointment',
|
|
52683
|
+
}]
|
|
52684
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerActionAddSubAppointment", required: false }] }] } });
|
|
52685
|
+
|
|
52686
|
+
/**
|
|
52687
|
+
* Built-in appointment action: deletes the surface's current appointment together with every
|
|
52688
|
+
* descendant - see `SchedulerEditSurfaceDirective.requestDelete`. One of the default pieces
|
|
52689
|
+
* `<et-scheduler-edit-surface>` bundles - see `registerAppointmentAction`.
|
|
52690
|
+
*
|
|
52691
|
+
* @example
|
|
52692
|
+
* <et-scheduler-edit-surface [etSchedulerActionDelete]="{ enabled: false }" … />
|
|
52693
|
+
*/
|
|
52694
|
+
class SchedulerActionDeleteDirective {
|
|
52695
|
+
constructor() {
|
|
52696
|
+
this.host = injectSchedulerEditSurfaceHost('etSchedulerActionDelete');
|
|
52697
|
+
this.surface = inject(SchedulerEditSurfaceDirective);
|
|
52698
|
+
this.labels = injectSchedulerLabels();
|
|
52699
|
+
/** See {@link SchedulerActionDeleteConfig}. */
|
|
52700
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerActionDelete',
|
|
52701
|
+
transform: (schedulerFeatureConfig) });
|
|
52702
|
+
this.host.registerAppointmentAction({
|
|
52703
|
+
label: computed(() => this.labels().deleteWithDescendants),
|
|
52704
|
+
icon: 'et-trash',
|
|
52705
|
+
order: 100,
|
|
52706
|
+
destructive: true,
|
|
52707
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
52708
|
+
run: () => this.surface.requestDelete(),
|
|
52709
|
+
});
|
|
52710
|
+
}
|
|
52711
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerActionDeleteDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
52712
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerActionDeleteDirective, isStandalone: true, selector: "[etSchedulerActionDelete]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerActionDelete", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerActionDelete"], ngImport: i0 }); }
|
|
52713
|
+
}
|
|
52714
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerActionDeleteDirective, decorators: [{
|
|
52715
|
+
type: Directive,
|
|
52716
|
+
args: [{
|
|
52717
|
+
selector: '[etSchedulerActionDelete]',
|
|
52718
|
+
exportAs: 'etSchedulerActionDelete',
|
|
52719
|
+
}]
|
|
52720
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerActionDelete", required: false }] }] } });
|
|
52721
|
+
|
|
52279
52722
|
/**
|
|
52280
52723
|
* The `.et-scheduler-appointment` badge rule, as a styles-only component mounted by every
|
|
52281
52724
|
* scheduler view that renders a plain (non-time-grid) appointment badge - see
|
|
@@ -52654,6 +53097,524 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
52654
53097
|
}]
|
|
52655
53098
|
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerBadgeTitle", required: false }] }] } });
|
|
52656
53099
|
|
|
53100
|
+
/**
|
|
53101
|
+
* The color piece of the edit surface, stamped by `etSchedulerEditColor`. A plain text field for
|
|
53102
|
+
* `colorToken` rather than a swatch picker - theme names are app-registered (see `theming`), so
|
|
53103
|
+
* the SDK has no fixed set of tokens to offer as choices.
|
|
53104
|
+
*
|
|
53105
|
+
* @internal
|
|
53106
|
+
*/
|
|
53107
|
+
class SchedulerEditColorComponent {
|
|
53108
|
+
constructor() {
|
|
53109
|
+
this.labels = injectSchedulerLabels();
|
|
53110
|
+
this.draft = input.required(/* @ts-ignore */
|
|
53111
|
+
...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
|
|
53112
|
+
this.label = computed(() => this.labels().colorField, /* @ts-ignore */
|
|
53113
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
53114
|
+
this.value = computed(() => this.draft()().colorToken ?? '', /* @ts-ignore */
|
|
53115
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
53116
|
+
}
|
|
53117
|
+
updateColorToken(value) {
|
|
53118
|
+
this.draft().update((appointment) => ({ ...appointment, colorToken: value || undefined }));
|
|
53119
|
+
}
|
|
53120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditColorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditColorComponent, isStandalone: true, selector: "et-scheduler-edit-color", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
53122
|
+
<et-form-field>
|
|
53123
|
+
<et-label>{{ label() }}</et-label>
|
|
53124
|
+
<et-input [value]="value()" (valueChange)="updateColorToken($event)" />
|
|
53125
|
+
</et-form-field>
|
|
53126
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FormFieldComponent, selector: "et-form-field", inputs: ["appearance", "fill", "labelMode", "size", "busy"] }, { kind: "component", type: LabelDirective, selector: "et-label" }, { kind: "component", type: InputComponent, selector: "et-input" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
53127
|
+
}
|
|
53128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditColorComponent, decorators: [{
|
|
53129
|
+
type: Component,
|
|
53130
|
+
args: [{
|
|
53131
|
+
selector: 'et-scheduler-edit-color',
|
|
53132
|
+
template: `
|
|
53133
|
+
<et-form-field>
|
|
53134
|
+
<et-label>{{ label() }}</et-label>
|
|
53135
|
+
<et-input [value]="value()" (valueChange)="updateColorToken($event)" />
|
|
53136
|
+
</et-form-field>
|
|
53137
|
+
`,
|
|
53138
|
+
encapsulation: ViewEncapsulation.None,
|
|
53139
|
+
imports: [...FORM_FIELD_IMPORTS, ...INPUT_IMPORTS],
|
|
53140
|
+
}]
|
|
53141
|
+
}], propDecorators: { draft: [{ type: i0.Input, args: [{ isSignal: true, alias: "draft", required: true }] }] } });
|
|
53142
|
+
|
|
53143
|
+
/**
|
|
53144
|
+
* Built-in edit-surface field: the appointment's `colorToken`. One of the default pieces
|
|
53145
|
+
* `<et-scheduler-edit-surface>` bundles - see `registerEditField`.
|
|
53146
|
+
*
|
|
53147
|
+
* @example
|
|
53148
|
+
* <et-scheduler-edit-surface [etSchedulerEditColor]="{ enabled: false }" … />
|
|
53149
|
+
*/
|
|
53150
|
+
class SchedulerEditColorDirective {
|
|
53151
|
+
constructor() {
|
|
53152
|
+
this.host = injectSchedulerEditSurfaceHost('etSchedulerEditColor');
|
|
53153
|
+
/** See {@link SchedulerEditColorConfig}. */
|
|
53154
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerEditColor',
|
|
53155
|
+
transform: (schedulerFeatureConfig) });
|
|
53156
|
+
this.host.registerEditField({
|
|
53157
|
+
component: SchedulerEditColorComponent,
|
|
53158
|
+
injector: inject(Injector),
|
|
53159
|
+
order: 40,
|
|
53160
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
53161
|
+
});
|
|
53162
|
+
}
|
|
53163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
53164
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditColorDirective, isStandalone: true, selector: "[etSchedulerEditColor]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerEditColor", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerEditColor"], ngImport: i0 }); }
|
|
53165
|
+
}
|
|
53166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditColorDirective, decorators: [{
|
|
53167
|
+
type: Directive,
|
|
53168
|
+
args: [{
|
|
53169
|
+
selector: '[etSchedulerEditColor]',
|
|
53170
|
+
exportAs: 'etSchedulerEditColor',
|
|
53171
|
+
}]
|
|
53172
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerEditColor", required: false }] }] } });
|
|
53173
|
+
|
|
53174
|
+
/**
|
|
53175
|
+
* The description piece of the edit surface, stamped by `etSchedulerEditDescription`.
|
|
53176
|
+
*
|
|
53177
|
+
* @internal
|
|
53178
|
+
*/
|
|
53179
|
+
class SchedulerEditDescriptionComponent {
|
|
53180
|
+
constructor() {
|
|
53181
|
+
this.labels = injectSchedulerLabels();
|
|
53182
|
+
this.draft = input.required(/* @ts-ignore */
|
|
53183
|
+
...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
|
|
53184
|
+
this.label = computed(() => this.labels().descriptionField, /* @ts-ignore */
|
|
53185
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
53186
|
+
this.value = computed(() => this.draft()().description ?? '', /* @ts-ignore */
|
|
53187
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
53188
|
+
}
|
|
53189
|
+
updateDescription(value) {
|
|
53190
|
+
this.draft().update((appointment) => ({ ...appointment, description: value || undefined }));
|
|
53191
|
+
}
|
|
53192
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53193
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditDescriptionComponent, isStandalone: true, selector: "et-scheduler-edit-description", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
53194
|
+
<et-form-field>
|
|
53195
|
+
<et-label>{{ label() }}</et-label>
|
|
53196
|
+
<et-textarea [value]="value()" (valueChange)="updateDescription($event)" />
|
|
53197
|
+
</et-form-field>
|
|
53198
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FormFieldComponent, selector: "et-form-field", inputs: ["appearance", "fill", "labelMode", "size", "busy"] }, { kind: "component", type: LabelDirective, selector: "et-label" }, { kind: "component", type: TextareaComponent, selector: "et-textarea" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
53199
|
+
}
|
|
53200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditDescriptionComponent, decorators: [{
|
|
53201
|
+
type: Component,
|
|
53202
|
+
args: [{
|
|
53203
|
+
selector: 'et-scheduler-edit-description',
|
|
53204
|
+
template: `
|
|
53205
|
+
<et-form-field>
|
|
53206
|
+
<et-label>{{ label() }}</et-label>
|
|
53207
|
+
<et-textarea [value]="value()" (valueChange)="updateDescription($event)" />
|
|
53208
|
+
</et-form-field>
|
|
53209
|
+
`,
|
|
53210
|
+
encapsulation: ViewEncapsulation.None,
|
|
53211
|
+
imports: [...FORM_FIELD_IMPORTS, ...TEXTAREA_IMPORTS],
|
|
53212
|
+
}]
|
|
53213
|
+
}], propDecorators: { draft: [{ type: i0.Input, args: [{ isSignal: true, alias: "draft", required: true }] }] } });
|
|
53214
|
+
|
|
53215
|
+
/**
|
|
53216
|
+
* Built-in edit-surface field: the appointment's `description`. One of the default pieces
|
|
53217
|
+
* `<et-scheduler-edit-surface>` bundles - see `registerEditField`.
|
|
53218
|
+
*
|
|
53219
|
+
* @example
|
|
53220
|
+
* <et-scheduler-edit-surface [etSchedulerEditDescription]="{ enabled: false }" … />
|
|
53221
|
+
*/
|
|
53222
|
+
class SchedulerEditDescriptionDirective {
|
|
53223
|
+
constructor() {
|
|
53224
|
+
this.host = injectSchedulerEditSurfaceHost('etSchedulerEditDescription');
|
|
53225
|
+
/** See {@link SchedulerEditDescriptionConfig}. */
|
|
53226
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerEditDescription',
|
|
53227
|
+
transform: (schedulerFeatureConfig) });
|
|
53228
|
+
this.host.registerEditField({
|
|
53229
|
+
component: SchedulerEditDescriptionComponent,
|
|
53230
|
+
injector: inject(Injector),
|
|
53231
|
+
order: 30,
|
|
53232
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
53233
|
+
});
|
|
53234
|
+
}
|
|
53235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditDescriptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
53236
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditDescriptionDirective, isStandalone: true, selector: "[etSchedulerEditDescription]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerEditDescription", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerEditDescription"], ngImport: i0 }); }
|
|
53237
|
+
}
|
|
53238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditDescriptionDirective, decorators: [{
|
|
53239
|
+
type: Directive,
|
|
53240
|
+
args: [{
|
|
53241
|
+
selector: '[etSchedulerEditDescription]',
|
|
53242
|
+
exportAs: 'etSchedulerEditDescription',
|
|
53243
|
+
}]
|
|
53244
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerEditDescription", required: false }] }] } });
|
|
53245
|
+
|
|
53246
|
+
/**
|
|
53247
|
+
* The location piece of the edit surface, stamped by `etSchedulerEditLocation`.
|
|
53248
|
+
*
|
|
53249
|
+
* @internal
|
|
53250
|
+
*/
|
|
53251
|
+
class SchedulerEditLocationComponent {
|
|
53252
|
+
constructor() {
|
|
53253
|
+
this.labels = injectSchedulerLabels();
|
|
53254
|
+
this.draft = input.required(/* @ts-ignore */
|
|
53255
|
+
...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
|
|
53256
|
+
this.label = computed(() => this.labels().locationField, /* @ts-ignore */
|
|
53257
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
53258
|
+
this.value = computed(() => this.draft()().location ?? '', /* @ts-ignore */
|
|
53259
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
53260
|
+
}
|
|
53261
|
+
updateLocation(value) {
|
|
53262
|
+
this.draft().update((appointment) => ({ ...appointment, location: value || undefined }));
|
|
53263
|
+
}
|
|
53264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditLocationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditLocationComponent, isStandalone: true, selector: "et-scheduler-edit-location", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
53266
|
+
<et-form-field>
|
|
53267
|
+
<et-label>{{ label() }}</et-label>
|
|
53268
|
+
<et-input [value]="value()" (valueChange)="updateLocation($event)" />
|
|
53269
|
+
</et-form-field>
|
|
53270
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FormFieldComponent, selector: "et-form-field", inputs: ["appearance", "fill", "labelMode", "size", "busy"] }, { kind: "component", type: LabelDirective, selector: "et-label" }, { kind: "component", type: InputComponent, selector: "et-input" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
53271
|
+
}
|
|
53272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditLocationComponent, decorators: [{
|
|
53273
|
+
type: Component,
|
|
53274
|
+
args: [{
|
|
53275
|
+
selector: 'et-scheduler-edit-location',
|
|
53276
|
+
template: `
|
|
53277
|
+
<et-form-field>
|
|
53278
|
+
<et-label>{{ label() }}</et-label>
|
|
53279
|
+
<et-input [value]="value()" (valueChange)="updateLocation($event)" />
|
|
53280
|
+
</et-form-field>
|
|
53281
|
+
`,
|
|
53282
|
+
encapsulation: ViewEncapsulation.None,
|
|
53283
|
+
imports: [...FORM_FIELD_IMPORTS, ...INPUT_IMPORTS],
|
|
53284
|
+
}]
|
|
53285
|
+
}], propDecorators: { draft: [{ type: i0.Input, args: [{ isSignal: true, alias: "draft", required: true }] }] } });
|
|
53286
|
+
|
|
53287
|
+
/**
|
|
53288
|
+
* Built-in edit-surface field: the appointment's `location`. One of the default pieces
|
|
53289
|
+
* `<et-scheduler-edit-surface>` bundles - see `registerEditField`.
|
|
53290
|
+
*
|
|
53291
|
+
* @example
|
|
53292
|
+
* <et-scheduler-edit-surface [etSchedulerEditLocation]="{ enabled: false }" … />
|
|
53293
|
+
*/
|
|
53294
|
+
class SchedulerEditLocationDirective {
|
|
53295
|
+
constructor() {
|
|
53296
|
+
this.host = injectSchedulerEditSurfaceHost('etSchedulerEditLocation');
|
|
53297
|
+
/** See {@link SchedulerEditLocationConfig}. */
|
|
53298
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerEditLocation',
|
|
53299
|
+
transform: (schedulerFeatureConfig) });
|
|
53300
|
+
this.host.registerEditField({
|
|
53301
|
+
component: SchedulerEditLocationComponent,
|
|
53302
|
+
injector: inject(Injector),
|
|
53303
|
+
order: 20,
|
|
53304
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
53305
|
+
});
|
|
53306
|
+
}
|
|
53307
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditLocationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
53308
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditLocationDirective, isStandalone: true, selector: "[etSchedulerEditLocation]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerEditLocation", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerEditLocation"], ngImport: i0 }); }
|
|
53309
|
+
}
|
|
53310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditLocationDirective, decorators: [{
|
|
53311
|
+
type: Directive,
|
|
53312
|
+
args: [{
|
|
53313
|
+
selector: '[etSchedulerEditLocation]',
|
|
53314
|
+
exportAs: 'etSchedulerEditLocation',
|
|
53315
|
+
}]
|
|
53316
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerEditLocation", required: false }] }] } });
|
|
53317
|
+
|
|
53318
|
+
/**
|
|
53319
|
+
* The start/end piece of the edit surface, stamped by `etSchedulerEditTimeRange`.
|
|
53320
|
+
*
|
|
53321
|
+
* @internal
|
|
53322
|
+
*/
|
|
53323
|
+
class SchedulerEditTimeRangeComponent {
|
|
53324
|
+
constructor() {
|
|
53325
|
+
this.labels = injectSchedulerLabels();
|
|
53326
|
+
this.dateFormat = injectDateFormat();
|
|
53327
|
+
this.draft = input.required(/* @ts-ignore */
|
|
53328
|
+
...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
|
|
53329
|
+
this.startLabel = computed(() => this.labels().startField, /* @ts-ignore */
|
|
53330
|
+
...(ngDevMode ? [{ debugName: "startLabel" }] : /* istanbul ignore next */ []));
|
|
53331
|
+
this.endLabel = computed(() => this.labels().endField, /* @ts-ignore */
|
|
53332
|
+
...(ngDevMode ? [{ debugName: "endLabel" }] : /* istanbul ignore next */ []));
|
|
53333
|
+
this.startValue = computed(() => format(this.draft()().start, this.dateFormat), /* @ts-ignore */
|
|
53334
|
+
...(ngDevMode ? [{ debugName: "startValue" }] : /* istanbul ignore next */ []));
|
|
53335
|
+
this.endValue = computed(() => format(this.draft()().end, this.dateFormat), /* @ts-ignore */
|
|
53336
|
+
...(ngDevMode ? [{ debugName: "endValue" }] : /* istanbul ignore next */ []));
|
|
53337
|
+
}
|
|
53338
|
+
updateStart(value) {
|
|
53339
|
+
if (!value) {
|
|
53340
|
+
return;
|
|
53341
|
+
}
|
|
53342
|
+
const start = parse(value, this.dateFormat, this.draft()().start);
|
|
53343
|
+
this.draft().update((appointment) => ({ ...appointment, start }));
|
|
53344
|
+
}
|
|
53345
|
+
updateEnd(value) {
|
|
53346
|
+
if (!value) {
|
|
53347
|
+
return;
|
|
53348
|
+
}
|
|
53349
|
+
const end = parse(value, this.dateFormat, this.draft()().end);
|
|
53350
|
+
this.draft().update((appointment) => ({ ...appointment, end }));
|
|
53351
|
+
}
|
|
53352
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTimeRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53353
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditTimeRangeComponent, isStandalone: true, selector: "et-scheduler-edit-time-range", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "et-scheduler-edit-time-range" }, ngImport: i0, template: `
|
|
53354
|
+
<et-form-field class="et-scheduler-edit-time-range-field">
|
|
53355
|
+
<et-label>{{ startLabel() }}</et-label>
|
|
53356
|
+
<et-date-time-input [value]="startValue()" (valueChange)="updateStart($event)" />
|
|
53357
|
+
</et-form-field>
|
|
53358
|
+
|
|
53359
|
+
<et-form-field class="et-scheduler-edit-time-range-field">
|
|
53360
|
+
<et-label>{{ endLabel() }}</et-label>
|
|
53361
|
+
<et-date-time-input [value]="endValue()" (valueChange)="updateEnd($event)" />
|
|
53362
|
+
</et-form-field>
|
|
53363
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FormFieldComponent, selector: "et-form-field", inputs: ["appearance", "fill", "labelMode", "size", "busy"] }, { kind: "component", type: LabelDirective, selector: "et-label" }, { kind: "component", type: DateTimeInputComponent, selector: "et-date-time-input", inputs: ["pickerTriggerLabel", "minuteStep", "secondStep", "dateTabLabel", "timeTabLabel", "clearable", "clearLabel"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
53364
|
+
}
|
|
53365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTimeRangeComponent, decorators: [{
|
|
53366
|
+
type: Component,
|
|
53367
|
+
args: [{
|
|
53368
|
+
selector: 'et-scheduler-edit-time-range',
|
|
53369
|
+
template: `
|
|
53370
|
+
<et-form-field class="et-scheduler-edit-time-range-field">
|
|
53371
|
+
<et-label>{{ startLabel() }}</et-label>
|
|
53372
|
+
<et-date-time-input [value]="startValue()" (valueChange)="updateStart($event)" />
|
|
53373
|
+
</et-form-field>
|
|
53374
|
+
|
|
53375
|
+
<et-form-field class="et-scheduler-edit-time-range-field">
|
|
53376
|
+
<et-label>{{ endLabel() }}</et-label>
|
|
53377
|
+
<et-date-time-input [value]="endValue()" (valueChange)="updateEnd($event)" />
|
|
53378
|
+
</et-form-field>
|
|
53379
|
+
`,
|
|
53380
|
+
encapsulation: ViewEncapsulation.None,
|
|
53381
|
+
imports: [...FORM_FIELD_IMPORTS, ...DATE_TIME_INPUT_IMPORTS],
|
|
53382
|
+
host: {
|
|
53383
|
+
class: 'et-scheduler-edit-time-range',
|
|
53384
|
+
},
|
|
53385
|
+
}]
|
|
53386
|
+
}], propDecorators: { draft: [{ type: i0.Input, args: [{ isSignal: true, alias: "draft", required: true }] }] } });
|
|
53387
|
+
|
|
53388
|
+
/**
|
|
53389
|
+
* Built-in edit-surface field: the appointment's `start`/`end`. One of the default pieces
|
|
53390
|
+
* `<et-scheduler-edit-surface>` bundles - see `registerEditField`. Invalid while `end` is before
|
|
53391
|
+
* `start`, which gates the surface's save button.
|
|
53392
|
+
*
|
|
53393
|
+
* @example
|
|
53394
|
+
* <et-scheduler-edit-surface [etSchedulerEditTimeRange]="{ enabled: false }" … />
|
|
53395
|
+
*/
|
|
53396
|
+
class SchedulerEditTimeRangeDirective {
|
|
53397
|
+
constructor() {
|
|
53398
|
+
this.host = injectSchedulerEditSurfaceHost('etSchedulerEditTimeRange');
|
|
53399
|
+
this.surface = inject(SchedulerEditSurfaceDirective);
|
|
53400
|
+
/** See {@link SchedulerEditTimeRangeConfig}. */
|
|
53401
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerEditTimeRange',
|
|
53402
|
+
transform: (schedulerFeatureConfig) });
|
|
53403
|
+
this.host.registerEditField({
|
|
53404
|
+
component: SchedulerEditTimeRangeComponent,
|
|
53405
|
+
injector: inject(Injector),
|
|
53406
|
+
order: 10,
|
|
53407
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
53408
|
+
valid: computed(() => this.surface.draft().end >= this.surface.draft().start),
|
|
53409
|
+
});
|
|
53410
|
+
}
|
|
53411
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTimeRangeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
53412
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditTimeRangeDirective, isStandalone: true, selector: "[etSchedulerEditTimeRange]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerEditTimeRange", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerEditTimeRange"], ngImport: i0 }); }
|
|
53413
|
+
}
|
|
53414
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTimeRangeDirective, decorators: [{
|
|
53415
|
+
type: Directive,
|
|
53416
|
+
args: [{
|
|
53417
|
+
selector: '[etSchedulerEditTimeRange]',
|
|
53418
|
+
exportAs: 'etSchedulerEditTimeRange',
|
|
53419
|
+
}]
|
|
53420
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerEditTimeRange", required: false }] }] } });
|
|
53421
|
+
|
|
53422
|
+
/**
|
|
53423
|
+
* The title piece of the edit surface, stamped by `etSchedulerEditTitle`.
|
|
53424
|
+
*
|
|
53425
|
+
* @internal
|
|
53426
|
+
*/
|
|
53427
|
+
class SchedulerEditTitleComponent {
|
|
53428
|
+
constructor() {
|
|
53429
|
+
this.labels = injectSchedulerLabels();
|
|
53430
|
+
this.draft = input.required(/* @ts-ignore */
|
|
53431
|
+
...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
|
|
53432
|
+
this.label = computed(() => this.labels().titleField, /* @ts-ignore */
|
|
53433
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
53434
|
+
this.value = computed(() => this.draft()().title, /* @ts-ignore */
|
|
53435
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
53436
|
+
}
|
|
53437
|
+
updateTitle(value) {
|
|
53438
|
+
this.draft().update((appointment) => ({ ...appointment, title: value }));
|
|
53439
|
+
}
|
|
53440
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53441
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditTitleComponent, isStandalone: true, selector: "et-scheduler-edit-title", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
53442
|
+
<et-form-field>
|
|
53443
|
+
<et-label>{{ label() }}</et-label>
|
|
53444
|
+
<et-input [value]="value()" (valueChange)="updateTitle($event)" />
|
|
53445
|
+
</et-form-field>
|
|
53446
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FormFieldComponent, selector: "et-form-field", inputs: ["appearance", "fill", "labelMode", "size", "busy"] }, { kind: "component", type: LabelDirective, selector: "et-label" }, { kind: "component", type: InputComponent, selector: "et-input" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
53447
|
+
}
|
|
53448
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTitleComponent, decorators: [{
|
|
53449
|
+
type: Component,
|
|
53450
|
+
args: [{
|
|
53451
|
+
selector: 'et-scheduler-edit-title',
|
|
53452
|
+
template: `
|
|
53453
|
+
<et-form-field>
|
|
53454
|
+
<et-label>{{ label() }}</et-label>
|
|
53455
|
+
<et-input [value]="value()" (valueChange)="updateTitle($event)" />
|
|
53456
|
+
</et-form-field>
|
|
53457
|
+
`,
|
|
53458
|
+
encapsulation: ViewEncapsulation.None,
|
|
53459
|
+
imports: [...FORM_FIELD_IMPORTS, ...INPUT_IMPORTS],
|
|
53460
|
+
}]
|
|
53461
|
+
}], propDecorators: { draft: [{ type: i0.Input, args: [{ isSignal: true, alias: "draft", required: true }] }] } });
|
|
53462
|
+
|
|
53463
|
+
/**
|
|
53464
|
+
* Built-in edit-surface field: the appointment's title. One of the default pieces
|
|
53465
|
+
* `<et-scheduler-edit-surface>` bundles - see `registerEditField`. Required - the field is
|
|
53466
|
+
* invalid while the draft's title is blank, which gates the surface's save button.
|
|
53467
|
+
*
|
|
53468
|
+
* @example
|
|
53469
|
+
* <et-scheduler-edit-surface [etSchedulerEditTitle]="{ enabled: false }" … />
|
|
53470
|
+
*/
|
|
53471
|
+
class SchedulerEditTitleDirective {
|
|
53472
|
+
constructor() {
|
|
53473
|
+
this.host = injectSchedulerEditSurfaceHost('etSchedulerEditTitle');
|
|
53474
|
+
this.surface = inject(SchedulerEditSurfaceDirective);
|
|
53475
|
+
/** See {@link SchedulerEditTitleConfig}. */
|
|
53476
|
+
this.config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'etSchedulerEditTitle',
|
|
53477
|
+
transform: (schedulerFeatureConfig) });
|
|
53478
|
+
this.host.registerEditField({
|
|
53479
|
+
component: SchedulerEditTitleComponent,
|
|
53480
|
+
injector: inject(Injector),
|
|
53481
|
+
order: 0,
|
|
53482
|
+
enabled: computed(() => this.config().enabled ?? true),
|
|
53483
|
+
valid: computed(() => this.surface.draft().title.trim().length > 0),
|
|
53484
|
+
});
|
|
53485
|
+
}
|
|
53486
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
53487
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SchedulerEditTitleDirective, isStandalone: true, selector: "[etSchedulerEditTitle]", inputs: { config: { classPropertyName: "config", publicName: "etSchedulerEditTitle", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["etSchedulerEditTitle"], ngImport: i0 }); }
|
|
53488
|
+
}
|
|
53489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditTitleDirective, decorators: [{
|
|
53490
|
+
type: Directive,
|
|
53491
|
+
args: [{
|
|
53492
|
+
selector: '[etSchedulerEditTitle]',
|
|
53493
|
+
exportAs: 'etSchedulerEditTitle',
|
|
53494
|
+
}]
|
|
53495
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "etSchedulerEditTitle", required: false }] }] } });
|
|
53496
|
+
|
|
53497
|
+
/**
|
|
53498
|
+
* The default edit surface: a dialog for one appointment, its fields, its ancestor breadcrumb and
|
|
53499
|
+
* children list, and an action menu - built on the overlay system. Orchestrates the active fields
|
|
53500
|
+
* + actions via `hostDirectives: [SchedulerEditSurfaceDirective]`, bakes the built-in fields and
|
|
53501
|
+
* actions in by default (each forwarding its own config input, same pattern as `<et-scheduler>`'s
|
|
53502
|
+
* badge adornments), and applies `SCHEDULER_EDIT_SURFACE_HOST` so they can register.
|
|
53503
|
+
*/
|
|
53504
|
+
class SchedulerEditSurfaceComponent {
|
|
53505
|
+
constructor() {
|
|
53506
|
+
this.labels = injectSchedulerLabels();
|
|
53507
|
+
this.elementRef = inject(ElementRef);
|
|
53508
|
+
this.overlayRef = inject(OVERLAY_REF, { optional: true });
|
|
53509
|
+
/** The headless directive behind this surface - field/action registration, draft state and navigation. */
|
|
53510
|
+
this.surface = inject(SchedulerEditSurfaceDirective);
|
|
53511
|
+
this.cancelLabel = computed(() => this.labels().cancel, /* @ts-ignore */
|
|
53512
|
+
...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
|
|
53513
|
+
this.saveLabel = computed(() => this.labels().save, /* @ts-ignore */
|
|
53514
|
+
...(ngDevMode ? [{ debugName: "saveLabel" }] : /* istanbul ignore next */ []));
|
|
53515
|
+
this.moreActionsLabel = computed(() => this.labels().moreActions, /* @ts-ignore */
|
|
53516
|
+
...(ngDevMode ? [{ debugName: "moreActionsLabel" }] : /* istanbul ignore next */ []));
|
|
53517
|
+
this.ancestorsLabel = computed(() => this.labels().ancestors, /* @ts-ignore */
|
|
53518
|
+
...(ngDevMode ? [{ debugName: "ancestorsLabel" }] : /* istanbul ignore next */ []));
|
|
53519
|
+
this.subAppointmentsLabel = computed(() => this.labels().subAppointments, /* @ts-ignore */
|
|
53520
|
+
...(ngDevMode ? [{ debugName: "subAppointmentsLabel" }] : /* istanbul ignore next */ []));
|
|
53521
|
+
this.untitledLabel = computed(() => this.labels().untitledAppointment, /* @ts-ignore */
|
|
53522
|
+
...(ngDevMode ? [{ debugName: "untitledLabel" }] : /* istanbul ignore next */ []));
|
|
53523
|
+
this.headerLabel = computed(() => this.surface.currentAppointment().title || this.untitledLabel(), /* @ts-ignore */
|
|
53524
|
+
...(ngDevMode ? [{ debugName: "headerLabel" }] : /* istanbul ignore next */ []));
|
|
53525
|
+
// UI contributed by edit-field/action features - see SCHEDULER_EDIT_SURFACE_HOST. The built-ins
|
|
53526
|
+
// above are features too, registering the same way a consumer's own field/action would.
|
|
53527
|
+
this.editFieldList = signal([], /* @ts-ignore */
|
|
53528
|
+
...(ngDevMode ? [{ debugName: "editFieldList" }] : /* istanbul ignore next */ []));
|
|
53529
|
+
this.appointmentActionList = signal([], /* @ts-ignore */
|
|
53530
|
+
...(ngDevMode ? [{ debugName: "appointmentActionList" }] : /* istanbul ignore next */ []));
|
|
53531
|
+
this.editFields = computed(() => this.editFieldList()
|
|
53532
|
+
.filter((field) => field.enabled?.() ?? true)
|
|
53533
|
+
.sort((a, b) => (a.order ?? 0) - (b.order ?? 0)), /* @ts-ignore */
|
|
53534
|
+
...(ngDevMode ? [{ debugName: "editFields" }] : /* istanbul ignore next */ []));
|
|
53535
|
+
this.appointmentActions = computed(() => this.appointmentActionList()
|
|
53536
|
+
.filter((action) => action.enabled?.() ?? true)
|
|
53537
|
+
.sort((a, b) => (a.order ?? 0) - (b.order ?? 0)), /* @ts-ignore */
|
|
53538
|
+
...(ngDevMode ? [{ debugName: "appointmentActions" }] : /* istanbul ignore next */ []));
|
|
53539
|
+
/** Gates the save button - every currently-enabled field must report itself valid. */
|
|
53540
|
+
this.canSave = computed(() => this.editFields().every((field) => field.valid?.() ?? true), /* @ts-ignore */
|
|
53541
|
+
...(ngDevMode ? [{ debugName: "canSave" }] : /* istanbul ignore next */ []));
|
|
53542
|
+
outputToObservable(this.surface.save)
|
|
53543
|
+
.pipe(takeUntilDestroyed(), tap((appointment) => this.overlayRef?.close({ kind: 'save', appointment })))
|
|
53544
|
+
.subscribe();
|
|
53545
|
+
outputToObservable(this.surface.deleteAppointments)
|
|
53546
|
+
.pipe(takeUntilDestroyed(), tap((ids) => this.overlayRef?.close({ kind: 'delete', ids })))
|
|
53547
|
+
.subscribe();
|
|
53548
|
+
}
|
|
53549
|
+
/** Part of the feature contract - see `SchedulerEditSurfaceHost`. */
|
|
53550
|
+
get element() {
|
|
53551
|
+
return this.elementRef.nativeElement;
|
|
53552
|
+
}
|
|
53553
|
+
/** Part of the feature contract - see `SchedulerEditSurfaceHost`. */
|
|
53554
|
+
get appointment() {
|
|
53555
|
+
return this.surface.currentAppointment;
|
|
53556
|
+
}
|
|
53557
|
+
/** Part of the feature contract - see `SchedulerEditSurfaceHost`. */
|
|
53558
|
+
get appointmentTree() {
|
|
53559
|
+
return this.surface.appointmentTree;
|
|
53560
|
+
}
|
|
53561
|
+
/** Part of the feature contract - see `SchedulerEditSurfaceHost`. */
|
|
53562
|
+
registerEditField(field) {
|
|
53563
|
+
this.editFieldList.update((list) => [...list, field]);
|
|
53564
|
+
}
|
|
53565
|
+
/** Part of the feature contract - see `SchedulerEditSurfaceHost`. */
|
|
53566
|
+
registerAppointmentAction(action) {
|
|
53567
|
+
this.appointmentActionList.update((list) => [...list, action]);
|
|
53568
|
+
}
|
|
53569
|
+
save() {
|
|
53570
|
+
this.surface.commit();
|
|
53571
|
+
}
|
|
53572
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditSurfaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53573
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: SchedulerEditSurfaceComponent, isStandalone: true, selector: "et-scheduler-edit-surface", host: { classAttribute: "et-scheduler-edit-surface" }, providers: [
|
|
53574
|
+
provideIcons(PLUS_ICON, TRASH_ICON, ELLIPSIS_VERTICAL_ICON),
|
|
53575
|
+
{ provide: SCHEDULER_EDIT_SURFACE_HOST, useExisting: SchedulerEditSurfaceComponent },
|
|
53576
|
+
], hostDirectives: [{ directive: OverlayMainDirective }, { directive: SchedulerEditSurfaceDirective, inputs: ["appointment", "appointment", "appointments", "appointments"] }, { directive: SchedulerEditTitleDirective, inputs: ["etSchedulerEditTitle", "etSchedulerEditTitle"] }, { directive: SchedulerEditTimeRangeDirective, inputs: ["etSchedulerEditTimeRange", "etSchedulerEditTimeRange"] }, { directive: SchedulerEditLocationDirective, inputs: ["etSchedulerEditLocation", "etSchedulerEditLocation"] }, { directive: SchedulerEditDescriptionDirective, inputs: ["etSchedulerEditDescription", "etSchedulerEditDescription"] }, { directive: SchedulerEditColorDirective, inputs: ["etSchedulerEditColor", "etSchedulerEditColor"] }, { directive: SchedulerActionAddSubAppointmentDirective, inputs: ["etSchedulerActionAddSubAppointment", "etSchedulerActionAddSubAppointment"] }, { directive: SchedulerActionDeleteDirective, inputs: ["etSchedulerActionDelete", "etSchedulerActionDelete"] }], ngImport: i0, template: "<div class=\"et-scheduler-edit-surface-header\" etOverlayHeader>\n <h2 class=\"et-scheduler-edit-surface-title\" etOverlayTitle>{{ headerLabel() }}</h2>\n\n @if (appointmentActions().length > 0) {\n <div class=\"et-scheduler-edit-surface-actions\" etMenu>\n <button [attr.aria-label]=\"moreActionsLabel()\" et-icon-button etMenuTrigger size=\"sm\" type=\"button\">\n <i etIcon=\"et-ellipsis-vertical\"></i>\n </button>\n\n <ng-template etMenuSurface>\n <et-menu>\n @for (action of appointmentActions(); track $index) {\n <button\n [variant]=\"action.destructive ? 'destructive' : 'default'\"\n (click)=\"action.run()\"\n et-menu-item\n type=\"button\"\n >\n @if (action.icon) {\n <i [etIcon]=\"action.icon\" aria-hidden=\"true\"></i>\n }\n {{ action.label() }}\n </button>\n }\n </et-menu>\n </ng-template>\n </div>\n }\n</div>\n\n<et-overlay-body>\n @if (surface.ancestors().length > 0) {\n <nav [attr.aria-label]=\"ancestorsLabel()\" class=\"et-scheduler-edit-surface-breadcrumb\">\n @for (ancestor of surface.ancestors(); track ancestor.id) {\n <button\n (click)=\"surface.navigateTo(ancestor.id)\"\n class=\"et-scheduler-edit-surface-breadcrumb-item\"\n type=\"button\"\n >\n {{ ancestor.title || untitledLabel() }}\n </button>\n <span class=\"et-scheduler-edit-surface-breadcrumb-separator\" aria-hidden=\"true\">/</span>\n }\n <span class=\"et-scheduler-edit-surface-breadcrumb-current\" aria-current=\"page\">{{ headerLabel() }}</span>\n </nav>\n }\n\n <div class=\"et-scheduler-edit-surface-fields\">\n @for (field of editFields(); track $index) {\n <ng-container *ngComponentOutlet=\"field.component; inputs: { draft: surface.draft }; injector: field.injector\" />\n }\n </div>\n\n @if (surface.children().length > 0) {\n <div class=\"et-scheduler-edit-surface-children\">\n <h3 class=\"et-scheduler-edit-surface-children-heading\">{{ subAppointmentsLabel() }}</h3>\n\n <ul class=\"et-scheduler-edit-surface-children-list\">\n @for (child of surface.children(); track child.appointment.id) {\n <li>\n <button\n (click)=\"surface.navigateTo(child.appointment.id)\"\n class=\"et-scheduler-edit-surface-children-item\"\n type=\"button\"\n >\n {{ child.appointment.title || untitledLabel() }}\n </button>\n </li>\n }\n </ul>\n </div>\n }\n</et-overlay-body>\n\n<div class=\"et-scheduler-edit-surface-footer\" etOverlayFooter>\n <button et-button etOverlayClose type=\"button\" variant=\"outline\">{{ cancelLabel() }}</button>\n <button [disabled]=\"!canSave()\" (click)=\"save()\" et-button type=\"button\">{{ saveLabel() }}</button>\n</div>\n", styles: ["@layer components{.et-scheduler-edit-surface-header{display:flex;align-items:center;gap:12px}.et-scheduler-edit-surface-title{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.et-scheduler-edit-surface-actions{flex-shrink:0;margin-inline-start:auto}.et-scheduler-edit-surface-footer{display:flex;justify-content:flex-end;gap:12px}.et-scheduler-edit-surface-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-block-end:16px;font-size:13px;color:var(--et-surface-color-muted-solid)}.et-scheduler-edit-surface-breadcrumb-item{color:inherit;text-decoration:underline;text-underline-offset:2px}.et-scheduler-edit-surface-breadcrumb-current{color:var(--et-surface-color-solid);font-weight:600}.et-scheduler-edit-surface-fields{display:flex;flex-direction:column;gap:16px}.et-scheduler-edit-time-range{display:flex;gap:12px}.et-scheduler-edit-time-range-field{flex:1;min-inline-size:0}.et-scheduler-edit-surface-children{margin-block-start:20px}.et-scheduler-edit-surface-children-heading{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--et-surface-color-muted-solid)}.et-scheduler-edit-surface-children-list{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.et-scheduler-edit-surface-children-item{color:var(--et-theme-color-ink-solid, var(--et-surface-color-solid));text-decoration:underline;text-underline-offset:2px}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[et-button]", inputs: ["variant", "size", "iconAlignment"] }, { kind: "component", type: IconButtonComponent, selector: "[et-icon-button]", inputs: ["variant", "size"] }, { kind: "directive", type: MenuDirective, selector: "[etMenu]", inputs: ["placement", "fallbackPlacements", "offset", "viewportPadding", "arrow", "arrowPadding", "autoFocus", "hoverOpen", "loop", "hoverOpenDelay", "hoverCloseDelay", "disabled", "open"], outputs: ["openChange"], exportAs: ["etMenu"] }, { kind: "directive", type: MenuTriggerDirective, selector: "[etMenuTrigger]", exportAs: ["etMenuTrigger"] }, { kind: "directive", type: MenuSurfaceDirective, selector: "ng-template[etMenuSurface]", exportAs: ["etMenuSurface"] }, { kind: "component", type: MenuComponent, selector: "et-menu" }, { kind: "component", type: MenuItemComponent, selector: "button[et-menu-item], a[et-menu-item]", inputs: ["variant"] }, { kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "variant", "allowHardcodedColor", "label"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: OverlayBodyComponent, selector: "[et-overlay-body], et-overlay-body", inputs: ["dividers"] }, { kind: "directive", type: OverlayCloseDirective, selector: "[et-overlay-close], [etOverlayClose]", inputs: ["aria-label", "type", "etOverlayClose", "et-overlay-close"], exportAs: ["etOverlayClose"] }, { kind: "directive", type: OverlayFooterDirective, selector: "[etOverlayFooter], et-overlay-footer" }, { kind: "directive", type: OverlayHeaderDirective, selector: "[etOverlayHeader], et-overlay-header" }, { kind: "directive", type: OverlayTitleDirective, selector: "[et-overlay-title], [etOverlayTitle]", inputs: ["id"], exportAs: ["etOverlayTitle"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
53577
|
+
}
|
|
53578
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerEditSurfaceComponent, decorators: [{
|
|
53579
|
+
type: Component,
|
|
53580
|
+
args: [{ selector: 'et-scheduler-edit-surface', encapsulation: ViewEncapsulation.None, imports: [
|
|
53581
|
+
...BUTTON_IMPORTS,
|
|
53582
|
+
...MENU_IMPORTS,
|
|
53583
|
+
IconDirective,
|
|
53584
|
+
NgComponentOutlet,
|
|
53585
|
+
OverlayBodyComponent,
|
|
53586
|
+
OverlayCloseDirective,
|
|
53587
|
+
OverlayFooterDirective,
|
|
53588
|
+
OverlayHeaderDirective,
|
|
53589
|
+
OverlayTitleDirective,
|
|
53590
|
+
], providers: [
|
|
53591
|
+
provideIcons(PLUS_ICON, TRASH_ICON, ELLIPSIS_VERTICAL_ICON),
|
|
53592
|
+
{ provide: SCHEDULER_EDIT_SURFACE_HOST, useExisting: SchedulerEditSurfaceComponent },
|
|
53593
|
+
], hostDirectives: [
|
|
53594
|
+
OverlayMainDirective,
|
|
53595
|
+
{ directive: SchedulerEditSurfaceDirective, inputs: ['appointment', 'appointments'] },
|
|
53596
|
+
// The built-in edit fields and appointment actions, bundled by default so
|
|
53597
|
+
// `<et-scheduler-edit-surface>` renders a full surface zero-config - each forwards its own
|
|
53598
|
+
// config input, so e.g. `[etSchedulerEditLocation]="{ enabled: false }"` disables just that
|
|
53599
|
+
// one piece without dropping to headless composition.
|
|
53600
|
+
{ directive: SchedulerEditTitleDirective, inputs: ['etSchedulerEditTitle'] },
|
|
53601
|
+
{ directive: SchedulerEditTimeRangeDirective, inputs: ['etSchedulerEditTimeRange'] },
|
|
53602
|
+
{ directive: SchedulerEditLocationDirective, inputs: ['etSchedulerEditLocation'] },
|
|
53603
|
+
{ directive: SchedulerEditDescriptionDirective, inputs: ['etSchedulerEditDescription'] },
|
|
53604
|
+
{ directive: SchedulerEditColorDirective, inputs: ['etSchedulerEditColor'] },
|
|
53605
|
+
{ directive: SchedulerActionAddSubAppointmentDirective, inputs: ['etSchedulerActionAddSubAppointment'] },
|
|
53606
|
+
{ directive: SchedulerActionDeleteDirective, inputs: ['etSchedulerActionDelete'] },
|
|
53607
|
+
], host: {
|
|
53608
|
+
class: 'et-scheduler-edit-surface',
|
|
53609
|
+
}, template: "<div class=\"et-scheduler-edit-surface-header\" etOverlayHeader>\n <h2 class=\"et-scheduler-edit-surface-title\" etOverlayTitle>{{ headerLabel() }}</h2>\n\n @if (appointmentActions().length > 0) {\n <div class=\"et-scheduler-edit-surface-actions\" etMenu>\n <button [attr.aria-label]=\"moreActionsLabel()\" et-icon-button etMenuTrigger size=\"sm\" type=\"button\">\n <i etIcon=\"et-ellipsis-vertical\"></i>\n </button>\n\n <ng-template etMenuSurface>\n <et-menu>\n @for (action of appointmentActions(); track $index) {\n <button\n [variant]=\"action.destructive ? 'destructive' : 'default'\"\n (click)=\"action.run()\"\n et-menu-item\n type=\"button\"\n >\n @if (action.icon) {\n <i [etIcon]=\"action.icon\" aria-hidden=\"true\"></i>\n }\n {{ action.label() }}\n </button>\n }\n </et-menu>\n </ng-template>\n </div>\n }\n</div>\n\n<et-overlay-body>\n @if (surface.ancestors().length > 0) {\n <nav [attr.aria-label]=\"ancestorsLabel()\" class=\"et-scheduler-edit-surface-breadcrumb\">\n @for (ancestor of surface.ancestors(); track ancestor.id) {\n <button\n (click)=\"surface.navigateTo(ancestor.id)\"\n class=\"et-scheduler-edit-surface-breadcrumb-item\"\n type=\"button\"\n >\n {{ ancestor.title || untitledLabel() }}\n </button>\n <span class=\"et-scheduler-edit-surface-breadcrumb-separator\" aria-hidden=\"true\">/</span>\n }\n <span class=\"et-scheduler-edit-surface-breadcrumb-current\" aria-current=\"page\">{{ headerLabel() }}</span>\n </nav>\n }\n\n <div class=\"et-scheduler-edit-surface-fields\">\n @for (field of editFields(); track $index) {\n <ng-container *ngComponentOutlet=\"field.component; inputs: { draft: surface.draft }; injector: field.injector\" />\n }\n </div>\n\n @if (surface.children().length > 0) {\n <div class=\"et-scheduler-edit-surface-children\">\n <h3 class=\"et-scheduler-edit-surface-children-heading\">{{ subAppointmentsLabel() }}</h3>\n\n <ul class=\"et-scheduler-edit-surface-children-list\">\n @for (child of surface.children(); track child.appointment.id) {\n <li>\n <button\n (click)=\"surface.navigateTo(child.appointment.id)\"\n class=\"et-scheduler-edit-surface-children-item\"\n type=\"button\"\n >\n {{ child.appointment.title || untitledLabel() }}\n </button>\n </li>\n }\n </ul>\n </div>\n }\n</et-overlay-body>\n\n<div class=\"et-scheduler-edit-surface-footer\" etOverlayFooter>\n <button et-button etOverlayClose type=\"button\" variant=\"outline\">{{ cancelLabel() }}</button>\n <button [disabled]=\"!canSave()\" (click)=\"save()\" et-button type=\"button\">{{ saveLabel() }}</button>\n</div>\n", styles: ["@layer components{.et-scheduler-edit-surface-header{display:flex;align-items:center;gap:12px}.et-scheduler-edit-surface-title{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.et-scheduler-edit-surface-actions{flex-shrink:0;margin-inline-start:auto}.et-scheduler-edit-surface-footer{display:flex;justify-content:flex-end;gap:12px}.et-scheduler-edit-surface-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-block-end:16px;font-size:13px;color:var(--et-surface-color-muted-solid)}.et-scheduler-edit-surface-breadcrumb-item{color:inherit;text-decoration:underline;text-underline-offset:2px}.et-scheduler-edit-surface-breadcrumb-current{color:var(--et-surface-color-solid);font-weight:600}.et-scheduler-edit-surface-fields{display:flex;flex-direction:column;gap:16px}.et-scheduler-edit-time-range{display:flex;gap:12px}.et-scheduler-edit-time-range-field{flex:1;min-inline-size:0}.et-scheduler-edit-surface-children{margin-block-start:20px}.et-scheduler-edit-surface-children-heading{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--et-surface-color-muted-solid)}.et-scheduler-edit-surface-children-list{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.et-scheduler-edit-surface-children-item{color:var(--et-theme-color-ink-solid, var(--et-surface-color-solid));text-decoration:underline;text-underline-offset:2px}}\n"] }]
|
|
53610
|
+
}], ctorParameters: () => [] });
|
|
53611
|
+
/** Opens `<et-scheduler-edit-surface>` as a dialog - what `<et-scheduler>` uses to auto-open on selection. */
|
|
53612
|
+
const SCHEDULER_EDIT_SURFACE_OVERLAY = /* @__PURE__ */ defineOverlay({
|
|
53613
|
+
component: SchedulerEditSurfaceComponent,
|
|
53614
|
+
strategies: /* @__PURE__ */ dialogOverlayStrategy({ maxWidth: '520px' }),
|
|
53615
|
+
panelClass: 'et-scheduler-edit-surface-panel',
|
|
53616
|
+
});
|
|
53617
|
+
|
|
52657
53618
|
/** The default month grid: one day cell per day, appointments as one-line badges with a "+N more" overflow. */
|
|
52658
53619
|
class SchedulerMonthViewComponent {
|
|
52659
53620
|
constructor() {
|
|
@@ -52697,6 +53658,10 @@ class SchedulerTimeGridViewComponent {
|
|
|
52697
53658
|
this.scheduler = inject(SchedulerDirective, { optional: true });
|
|
52698
53659
|
this.grid = inject(SchedulerTimeGridDirective);
|
|
52699
53660
|
this.featureHost = inject(SCHEDULER_FEATURE_HOST, { optional: true });
|
|
53661
|
+
this.timeGridBody = viewChild('timeGridBody', /* @ts-ignore */
|
|
53662
|
+
...(ngDevMode ? [{ debugName: "timeGridBody" }] : /* istanbul ignore next */ []));
|
|
53663
|
+
this.firstHourRow = viewChild('hourRow', /* @ts-ignore */
|
|
53664
|
+
...(ngDevMode ? [{ debugName: "firstHourRow" }] : /* istanbul ignore next */ []));
|
|
52700
53665
|
this.hours = computed(() => {
|
|
52701
53666
|
const locale = this.scheduler?.effectiveLocale();
|
|
52702
53667
|
const reference = startOfDay(new Date());
|
|
@@ -52707,6 +53672,16 @@ class SchedulerTimeGridViewComponent {
|
|
|
52707
53672
|
}, /* @ts-ignore */
|
|
52708
53673
|
...(ngDevMode ? [{ debugName: "hours" }] : /* istanbul ignore next */ []));
|
|
52709
53674
|
injectStyleManager().mount(SchedulerAppointmentStylesComponent);
|
|
53675
|
+
// Once per mount, not reactively - re-scrolling on every `focusedDate` change would yank a
|
|
53676
|
+
// user's own scroll position back every time they step to the next day/week.
|
|
53677
|
+
afterNextRender(() => {
|
|
53678
|
+
const body = this.timeGridBody()?.nativeElement;
|
|
53679
|
+
const hourRow = this.firstHourRow()?.nativeElement;
|
|
53680
|
+
if (!body || !hourRow) {
|
|
53681
|
+
return;
|
|
53682
|
+
}
|
|
53683
|
+
body.scrollTop = this.grid.initialScrollHour() * hourRow.offsetHeight;
|
|
53684
|
+
});
|
|
52710
53685
|
}
|
|
52711
53686
|
/** UI contributed by badge features (title, time range, …) - see `registerBadgeAdornment`. */
|
|
52712
53687
|
badgeAdornments() {
|
|
@@ -52723,14 +53698,14 @@ class SchedulerTimeGridViewComponent {
|
|
|
52723
53698
|
this.scheduler?.selectedAppointmentId.set(appointment.id);
|
|
52724
53699
|
}
|
|
52725
53700
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerTimeGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52726
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: SchedulerTimeGridViewComponent, isStandalone: true, selector: "et-scheduler-time-grid-view", host: { classAttribute: "et-scheduler-time-grid-view" }, hostDirectives: [{ directive: SchedulerTimeGridDirective }], ngImport: i0, template: "<div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-header\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-header-day\" role=\"columnheader\">\n <span class=\"et-scheduler-time-grid-header-weekday\">{{ weekdayLabel(day.date) }}</span>\n <span class=\"et-scheduler-time-grid-header-date\">{{ day.date.getDate() }}</span>\n </div>\n }\n </div>\n</div>\n\n@if (grid.allDayRowCount() > 0) {\n <div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-all-day\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div\n [style.--_et-scheduler-time-grid-all-day-row-count]=\"grid.allDayRowCount()\"\n class=\"et-scheduler-time-grid-all-day-lane\"\n role=\"gridcell\"\n >\n @for (entry of grid.allDay(); track entry.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-all-day-offset]=\"entry.inlineOffset\"\n [style.--_et-scheduler-time-grid-all-day-size]=\"entry.inlineSize\"\n [style.--_et-scheduler-time-grid-all-day-row]=\"entry.row\"\n [attr.data-selected]=\"isSelected(entry.node.appointment) ? '' : null\"\n [attr.title]=\"entry.node.appointment.title\"\n [etProvideColor]=\"entry.node.appointment.colorToken ?? null\"\n (click)=\"select(entry.node.appointment)\"\n class=\"et-scheduler-appointment et-scheduler-time-grid-all-day-entry\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: entry.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n </div>\n}\n\n<div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-body\">\n <div class=\"et-scheduler-time-grid-gutter\" role=\"presentation\">\n @for (hour of hours(); track hour.hour) {\n <div class=\"et-scheduler-time-grid-hour-row\">\n <span class=\"et-scheduler-time-grid-hour-label\">{{ hour.label }}</span>\n </div>\n }\n </div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-day\" role=\"gridcell\">\n @for (hour of hours(); track hour.hour) {\n <div class=\"et-scheduler-time-grid-hour-row\" role=\"presentation\"></div>\n }\n\n @for (block of day.blocks; track block.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-block-offset]=\"block.offset\"\n [style.--_et-scheduler-time-grid-block-span]=\"block.span\"\n [style.--_et-scheduler-time-grid-block-inline-offset]=\"block.inlineOffset\"\n [style.--_et-scheduler-time-grid-block-inline-size]=\"block.inlineSize\"\n [style.--_et-scheduler-time-grid-block-depth]=\"block.node.depth\"\n [attr.data-selected]=\"isSelected(block.node.appointment) ? '' : null\"\n [attr.data-nested]=\"block.node.depth > 0 ? '' : null\"\n [attr.title]=\"block.node.appointment.title\"\n [etProvideColor]=\"block.node.appointment.colorToken ?? null\"\n (click)=\"select(block.node.appointment)\"\n class=\"et-scheduler-time-grid-block\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: block.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n }\n </div>\n</div>\n", styles: ["@layer components{@property --et-scheduler-time-grid-hour-size{syntax: \"<length>\"; inherits: true; initial-value: 48px;}@property --et-scheduler-time-grid-gutter-size{syntax: \"<length>\"; inherits: true; initial-value: 56px;}@property --et-scheduler-time-grid-all-day-row-size{syntax: \"<length>\"; inherits: true; initial-value: 24px;}.et-scheduler-time-grid-view{display:flex;flex-direction:column}.et-scheduler-time-grid-row{display:flex}.et-scheduler-time-grid-gutter{flex-shrink:0;inline-size:var(--et-scheduler-time-grid-gutter-size)}.et-scheduler-time-grid-days{display:grid;flex:1;grid-auto-flow:column;grid-auto-columns:1fr}.et-scheduler-time-grid-header{padding-block-end:6px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-header-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding-block:4px}.et-scheduler-time-grid-header-day:where([data-today]) .et-scheduler-time-grid-header-date{background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}.et-scheduler-time-grid-header-weekday{font-size:12px;font-weight:600;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-header-date{display:inline-flex;align-items:center;justify-content:center;inline-size:22px;block-size:22px;border-radius:999px;font-size:13px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-solid)}.et-scheduler-time-grid-all-day{padding-block:4px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-all-day-lane{position:relative;flex:1;min-block-size:calc(var(--_et-scheduler-time-grid-all-day-row-count, 0) * var(--et-scheduler-time-grid-all-day-row-size))}.et-scheduler-time-grid-all-day-entry{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-all-day-row, 0) * var(--et-scheduler-time-grid-all-day-row-size));inset-inline-start:calc(var(--_et-scheduler-time-grid-all-day-offset, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-all-day-size, 100) * 1% - 4px);block-size:calc(var(--et-scheduler-time-grid-all-day-row-size) - 2px)}.et-scheduler-time-grid-hour-row{box-sizing:border-box;block-size:var(--et-scheduler-time-grid-hour-size);border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-gutter .et-scheduler-time-grid-hour-row{display:flex;align-items:flex-start;justify-content:flex-end;padding-inline-end:8px;border-block-end:none}.et-scheduler-time-grid-hour-label{inline-size:max-content;transform:translateY(-50%);font-size:11px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-days{border-inline-start:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day{position:relative;border-inline-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day:where([data-today]){background:color-mix(in srgb,var(--et-theme-color-primary-solid) 6%,transparent)}.et-scheduler-time-grid-block{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-block-offset, 0) * 1%);inset-inline-start:calc(var(--_et-scheduler-time-grid-block-inline-offset, 0) * 1%);block-size:calc(var(--_et-scheduler-time-grid-block-span, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-block-inline-size, 100) * 1% - 2px);min-block-size:16px;display:flex;align-items:flex-start;gap:6px;overflow:hidden;padding:2px 6px;padding-inline-start:calc(min(var(--_et-scheduler-time-grid-block-depth, 0),4)*6px + 6px);border:none;border-radius:4px;background:color-mix(in srgb,var(--et-theme-color-primary-solid) 14%,transparent);color:var(--et-theme-color-ink-solid);font:inherit;font-size:12px;text-align:start;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.et-scheduler-time-grid-block .et-scheduler-appointment-dot{margin-block-start:4px}@media(hover:hover){.et-scheduler-time-grid-block:hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid) 22%,transparent)}}.et-scheduler-time-grid-block:focus-visible{outline:2px solid var(--et-theme-color-primary-solid);outline-offset:1px}.et-scheduler-time-grid-block:where([data-selected]){background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}}\n"], dependencies: [{ kind: "directive", type: ProvideColorDirective, selector: "[etProvideColor]", inputs: ["etProvideColor"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
53701
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: SchedulerTimeGridViewComponent, isStandalone: true, selector: "et-scheduler-time-grid-view", host: { classAttribute: "et-scheduler-time-grid-view" }, viewQueries: [{ propertyName: "timeGridBody", first: true, predicate: ["timeGridBody"], descendants: true, isSignal: true }, { propertyName: "firstHourRow", first: true, predicate: ["hourRow"], descendants: true, isSignal: true }], hostDirectives: [{ directive: SchedulerTimeGridDirective }], ngImport: i0, template: "<div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-header\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-header-day\" role=\"columnheader\">\n <span class=\"et-scheduler-time-grid-header-weekday\">{{ weekdayLabel(day.date) }}</span>\n <span class=\"et-scheduler-time-grid-header-date\">{{ day.date.getDate() }}</span>\n </div>\n }\n </div>\n</div>\n\n@if (grid.allDayRowCount() > 0) {\n <div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-all-day\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div\n [style.--_et-scheduler-time-grid-all-day-row-count]=\"grid.allDayRowCount()\"\n class=\"et-scheduler-time-grid-all-day-lane\"\n role=\"gridcell\"\n >\n @for (entry of grid.allDay(); track entry.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-all-day-offset]=\"entry.inlineOffset\"\n [style.--_et-scheduler-time-grid-all-day-size]=\"entry.inlineSize\"\n [style.--_et-scheduler-time-grid-all-day-row]=\"entry.row\"\n [attr.data-selected]=\"isSelected(entry.node.appointment) ? '' : null\"\n [attr.title]=\"entry.node.appointment.title\"\n [etProvideColor]=\"entry.node.appointment.colorToken ?? null\"\n (click)=\"select(entry.node.appointment)\"\n class=\"et-scheduler-appointment et-scheduler-time-grid-all-day-entry\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: entry.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n </div>\n}\n\n<div #timeGridBody class=\"et-scheduler-time-grid-row et-scheduler-time-grid-body\">\n <div class=\"et-scheduler-time-grid-gutter\" role=\"presentation\">\n @for (hour of hours(); track hour.hour) {\n <div #hourRow class=\"et-scheduler-time-grid-hour-row\">\n <span class=\"et-scheduler-time-grid-hour-label\">{{ hour.label }}</span>\n </div>\n }\n </div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-day\" role=\"gridcell\">\n @for (hour of hours(); track hour.hour) {\n <div class=\"et-scheduler-time-grid-hour-row\" role=\"presentation\"></div>\n }\n\n @for (block of day.blocks; track block.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-block-offset]=\"block.offset\"\n [style.--_et-scheduler-time-grid-block-span]=\"block.span\"\n [style.--_et-scheduler-time-grid-block-inline-offset]=\"block.inlineOffset\"\n [style.--_et-scheduler-time-grid-block-inline-size]=\"block.inlineSize\"\n [style.--_et-scheduler-time-grid-block-depth]=\"block.node.depth\"\n [attr.data-selected]=\"isSelected(block.node.appointment) ? '' : null\"\n [attr.data-nested]=\"block.node.depth > 0 ? '' : null\"\n [attr.title]=\"block.node.appointment.title\"\n [etProvideColor]=\"block.node.appointment.colorToken ?? null\"\n (click)=\"select(block.node.appointment)\"\n class=\"et-scheduler-time-grid-block\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: block.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n }\n </div>\n</div>\n", styles: ["@layer components{@property --et-scheduler-time-grid-hour-size{syntax: \"<length>\"; inherits: true; initial-value: 48px;}@property --et-scheduler-time-grid-gutter-size{syntax: \"<length>\"; inherits: true; initial-value: 56px;}@property --et-scheduler-time-grid-all-day-row-size{syntax: \"<length>\"; inherits: true; initial-value: 24px;}@property --et-scheduler-time-grid-body-max-height{syntax: \"<length>\"; inherits: true; initial-value: 600px;}.et-scheduler-time-grid-view{display:flex;flex-direction:column}.et-scheduler-time-grid-row{display:flex}.et-scheduler-time-grid-body{overflow-y:auto;max-block-size:var(--et-scheduler-time-grid-body-max-height)}.et-scheduler-time-grid-gutter{flex-shrink:0;inline-size:var(--et-scheduler-time-grid-gutter-size)}.et-scheduler-time-grid-days{display:grid;flex:1;grid-auto-flow:column;grid-auto-columns:1fr}.et-scheduler-time-grid-header{padding-block-end:6px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-header-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding-block:4px}.et-scheduler-time-grid-header-day:where([data-today]) .et-scheduler-time-grid-header-date{background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}.et-scheduler-time-grid-header-weekday{font-size:12px;font-weight:600;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-header-date{display:inline-flex;align-items:center;justify-content:center;inline-size:22px;block-size:22px;border-radius:999px;font-size:13px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-solid)}.et-scheduler-time-grid-all-day{padding-block:4px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-all-day-lane{position:relative;flex:1;min-block-size:calc(var(--_et-scheduler-time-grid-all-day-row-count, 0) * var(--et-scheduler-time-grid-all-day-row-size))}.et-scheduler-time-grid-all-day-entry{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-all-day-row, 0) * var(--et-scheduler-time-grid-all-day-row-size));inset-inline-start:calc(var(--_et-scheduler-time-grid-all-day-offset, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-all-day-size, 100) * 1% - 4px);block-size:calc(var(--et-scheduler-time-grid-all-day-row-size) - 2px)}.et-scheduler-time-grid-hour-row{box-sizing:border-box;block-size:var(--et-scheduler-time-grid-hour-size);border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-gutter .et-scheduler-time-grid-hour-row{display:flex;align-items:flex-start;justify-content:flex-end;padding-inline-end:8px;border-block-end:none}.et-scheduler-time-grid-hour-label{inline-size:max-content;transform:translateY(-50%);font-size:11px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-days{border-inline-start:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day{position:relative;border-inline-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day:where([data-today]){background:color-mix(in srgb,var(--et-theme-color-primary-solid) 6%,transparent)}.et-scheduler-time-grid-block{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-block-offset, 0) * 1%);inset-inline-start:calc(var(--_et-scheduler-time-grid-block-inline-offset, 0) * 1%);block-size:calc(var(--_et-scheduler-time-grid-block-span, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-block-inline-size, 100) * 1% - 2px);min-block-size:16px;display:flex;align-items:flex-start;gap:6px;overflow:hidden;padding:2px 6px;padding-inline-start:calc(min(var(--_et-scheduler-time-grid-block-depth, 0),4)*6px + 6px);border:none;border-radius:4px;background:color-mix(in srgb,var(--et-theme-color-primary-solid) 14%,transparent);color:var(--et-theme-color-ink-solid);font:inherit;font-size:12px;text-align:start;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.et-scheduler-time-grid-block .et-scheduler-appointment-dot{margin-block-start:4px}@media(hover:hover){.et-scheduler-time-grid-block:hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid) 22%,transparent)}}.et-scheduler-time-grid-block:focus-visible{outline:2px solid var(--et-theme-color-primary-solid);outline-offset:1px}.et-scheduler-time-grid-block:where([data-selected]){background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}}\n"], dependencies: [{ kind: "directive", type: ProvideColorDirective, selector: "[etProvideColor]", inputs: ["etProvideColor"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
52727
53702
|
}
|
|
52728
53703
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerTimeGridViewComponent, decorators: [{
|
|
52729
53704
|
type: Component,
|
|
52730
53705
|
args: [{ selector: 'et-scheduler-time-grid-view', encapsulation: ViewEncapsulation.None, imports: [ProvideColorDirective, NgComponentOutlet], hostDirectives: [SchedulerTimeGridDirective], host: {
|
|
52731
53706
|
class: 'et-scheduler-time-grid-view',
|
|
52732
|
-
}, template: "<div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-header\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-header-day\" role=\"columnheader\">\n <span class=\"et-scheduler-time-grid-header-weekday\">{{ weekdayLabel(day.date) }}</span>\n <span class=\"et-scheduler-time-grid-header-date\">{{ day.date.getDate() }}</span>\n </div>\n }\n </div>\n</div>\n\n@if (grid.allDayRowCount() > 0) {\n <div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-all-day\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div\n [style.--_et-scheduler-time-grid-all-day-row-count]=\"grid.allDayRowCount()\"\n class=\"et-scheduler-time-grid-all-day-lane\"\n role=\"gridcell\"\n >\n @for (entry of grid.allDay(); track entry.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-all-day-offset]=\"entry.inlineOffset\"\n [style.--_et-scheduler-time-grid-all-day-size]=\"entry.inlineSize\"\n [style.--_et-scheduler-time-grid-all-day-row]=\"entry.row\"\n [attr.data-selected]=\"isSelected(entry.node.appointment) ? '' : null\"\n [attr.title]=\"entry.node.appointment.title\"\n [etProvideColor]=\"entry.node.appointment.colorToken ?? null\"\n (click)=\"select(entry.node.appointment)\"\n class=\"et-scheduler-appointment et-scheduler-time-grid-all-day-entry\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: entry.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n </div>\n}\n\n<div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-body\">\n <div class=\"et-scheduler-time-grid-gutter\" role=\"presentation\">\n @for (hour of hours(); track hour.hour) {\n <div class=\"et-scheduler-time-grid-hour-row\">\n <span class=\"et-scheduler-time-grid-hour-label\">{{ hour.label }}</span>\n </div>\n }\n </div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-day\" role=\"gridcell\">\n @for (hour of hours(); track hour.hour) {\n <div class=\"et-scheduler-time-grid-hour-row\" role=\"presentation\"></div>\n }\n\n @for (block of day.blocks; track block.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-block-offset]=\"block.offset\"\n [style.--_et-scheduler-time-grid-block-span]=\"block.span\"\n [style.--_et-scheduler-time-grid-block-inline-offset]=\"block.inlineOffset\"\n [style.--_et-scheduler-time-grid-block-inline-size]=\"block.inlineSize\"\n [style.--_et-scheduler-time-grid-block-depth]=\"block.node.depth\"\n [attr.data-selected]=\"isSelected(block.node.appointment) ? '' : null\"\n [attr.data-nested]=\"block.node.depth > 0 ? '' : null\"\n [attr.title]=\"block.node.appointment.title\"\n [etProvideColor]=\"block.node.appointment.colorToken ?? null\"\n (click)=\"select(block.node.appointment)\"\n class=\"et-scheduler-time-grid-block\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: block.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n }\n </div>\n</div>\n", styles: ["@layer components{@property --et-scheduler-time-grid-hour-size{syntax: \"<length>\"; inherits: true; initial-value: 48px;}@property --et-scheduler-time-grid-gutter-size{syntax: \"<length>\"; inherits: true; initial-value: 56px;}@property --et-scheduler-time-grid-all-day-row-size{syntax: \"<length>\"; inherits: true; initial-value: 24px;}.et-scheduler-time-grid-view{display:flex;flex-direction:column}.et-scheduler-time-grid-row{display:flex}.et-scheduler-time-grid-gutter{flex-shrink:0;inline-size:var(--et-scheduler-time-grid-gutter-size)}.et-scheduler-time-grid-days{display:grid;flex:1;grid-auto-flow:column;grid-auto-columns:1fr}.et-scheduler-time-grid-header{padding-block-end:6px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-header-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding-block:4px}.et-scheduler-time-grid-header-day:where([data-today]) .et-scheduler-time-grid-header-date{background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}.et-scheduler-time-grid-header-weekday{font-size:12px;font-weight:600;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-header-date{display:inline-flex;align-items:center;justify-content:center;inline-size:22px;block-size:22px;border-radius:999px;font-size:13px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-solid)}.et-scheduler-time-grid-all-day{padding-block:4px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-all-day-lane{position:relative;flex:1;min-block-size:calc(var(--_et-scheduler-time-grid-all-day-row-count, 0) * var(--et-scheduler-time-grid-all-day-row-size))}.et-scheduler-time-grid-all-day-entry{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-all-day-row, 0) * var(--et-scheduler-time-grid-all-day-row-size));inset-inline-start:calc(var(--_et-scheduler-time-grid-all-day-offset, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-all-day-size, 100) * 1% - 4px);block-size:calc(var(--et-scheduler-time-grid-all-day-row-size) - 2px)}.et-scheduler-time-grid-hour-row{box-sizing:border-box;block-size:var(--et-scheduler-time-grid-hour-size);border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-gutter .et-scheduler-time-grid-hour-row{display:flex;align-items:flex-start;justify-content:flex-end;padding-inline-end:8px;border-block-end:none}.et-scheduler-time-grid-hour-label{inline-size:max-content;transform:translateY(-50%);font-size:11px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-days{border-inline-start:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day{position:relative;border-inline-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day:where([data-today]){background:color-mix(in srgb,var(--et-theme-color-primary-solid) 6%,transparent)}.et-scheduler-time-grid-block{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-block-offset, 0) * 1%);inset-inline-start:calc(var(--_et-scheduler-time-grid-block-inline-offset, 0) * 1%);block-size:calc(var(--_et-scheduler-time-grid-block-span, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-block-inline-size, 100) * 1% - 2px);min-block-size:16px;display:flex;align-items:flex-start;gap:6px;overflow:hidden;padding:2px 6px;padding-inline-start:calc(min(var(--_et-scheduler-time-grid-block-depth, 0),4)*6px + 6px);border:none;border-radius:4px;background:color-mix(in srgb,var(--et-theme-color-primary-solid) 14%,transparent);color:var(--et-theme-color-ink-solid);font:inherit;font-size:12px;text-align:start;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.et-scheduler-time-grid-block .et-scheduler-appointment-dot{margin-block-start:4px}@media(hover:hover){.et-scheduler-time-grid-block:hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid) 22%,transparent)}}.et-scheduler-time-grid-block:focus-visible{outline:2px solid var(--et-theme-color-primary-solid);outline-offset:1px}.et-scheduler-time-grid-block:where([data-selected]){background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}}\n"] }]
|
|
52733
|
-
}], ctorParameters: () => [] });
|
|
53707
|
+
}, template: "<div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-header\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-header-day\" role=\"columnheader\">\n <span class=\"et-scheduler-time-grid-header-weekday\">{{ weekdayLabel(day.date) }}</span>\n <span class=\"et-scheduler-time-grid-header-date\">{{ day.date.getDate() }}</span>\n </div>\n }\n </div>\n</div>\n\n@if (grid.allDayRowCount() > 0) {\n <div class=\"et-scheduler-time-grid-row et-scheduler-time-grid-all-day\" role=\"row\">\n <div class=\"et-scheduler-time-grid-gutter\"></div>\n\n <div\n [style.--_et-scheduler-time-grid-all-day-row-count]=\"grid.allDayRowCount()\"\n class=\"et-scheduler-time-grid-all-day-lane\"\n role=\"gridcell\"\n >\n @for (entry of grid.allDay(); track entry.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-all-day-offset]=\"entry.inlineOffset\"\n [style.--_et-scheduler-time-grid-all-day-size]=\"entry.inlineSize\"\n [style.--_et-scheduler-time-grid-all-day-row]=\"entry.row\"\n [attr.data-selected]=\"isSelected(entry.node.appointment) ? '' : null\"\n [attr.title]=\"entry.node.appointment.title\"\n [etProvideColor]=\"entry.node.appointment.colorToken ?? null\"\n (click)=\"select(entry.node.appointment)\"\n class=\"et-scheduler-appointment et-scheduler-time-grid-all-day-entry\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: entry.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n </div>\n}\n\n<div #timeGridBody class=\"et-scheduler-time-grid-row et-scheduler-time-grid-body\">\n <div class=\"et-scheduler-time-grid-gutter\" role=\"presentation\">\n @for (hour of hours(); track hour.hour) {\n <div #hourRow class=\"et-scheduler-time-grid-hour-row\">\n <span class=\"et-scheduler-time-grid-hour-label\">{{ hour.label }}</span>\n </div>\n }\n </div>\n\n <div class=\"et-scheduler-time-grid-days\">\n @for (day of grid.days(); track day.date.getTime()) {\n <div [attr.data-today]=\"day.today ? '' : null\" class=\"et-scheduler-time-grid-day\" role=\"gridcell\">\n @for (hour of hours(); track hour.hour) {\n <div class=\"et-scheduler-time-grid-hour-row\" role=\"presentation\"></div>\n }\n\n @for (block of day.blocks; track block.node.appointment.id) {\n <button\n [style.--_et-scheduler-time-grid-block-offset]=\"block.offset\"\n [style.--_et-scheduler-time-grid-block-span]=\"block.span\"\n [style.--_et-scheduler-time-grid-block-inline-offset]=\"block.inlineOffset\"\n [style.--_et-scheduler-time-grid-block-inline-size]=\"block.inlineSize\"\n [style.--_et-scheduler-time-grid-block-depth]=\"block.node.depth\"\n [attr.data-selected]=\"isSelected(block.node.appointment) ? '' : null\"\n [attr.data-nested]=\"block.node.depth > 0 ? '' : null\"\n [attr.title]=\"block.node.appointment.title\"\n [etProvideColor]=\"block.node.appointment.colorToken ?? null\"\n (click)=\"select(block.node.appointment)\"\n class=\"et-scheduler-time-grid-block\"\n type=\"button\"\n >\n @for (adornment of badgeAdornments(); track $index) {\n <ng-container\n *ngComponentOutlet=\"adornment.component; inputs: { node: block.node }; injector: adornment.injector\"\n />\n }\n </button>\n }\n </div>\n }\n </div>\n</div>\n", styles: ["@layer components{@property --et-scheduler-time-grid-hour-size{syntax: \"<length>\"; inherits: true; initial-value: 48px;}@property --et-scheduler-time-grid-gutter-size{syntax: \"<length>\"; inherits: true; initial-value: 56px;}@property --et-scheduler-time-grid-all-day-row-size{syntax: \"<length>\"; inherits: true; initial-value: 24px;}@property --et-scheduler-time-grid-body-max-height{syntax: \"<length>\"; inherits: true; initial-value: 600px;}.et-scheduler-time-grid-view{display:flex;flex-direction:column}.et-scheduler-time-grid-row{display:flex}.et-scheduler-time-grid-body{overflow-y:auto;max-block-size:var(--et-scheduler-time-grid-body-max-height)}.et-scheduler-time-grid-gutter{flex-shrink:0;inline-size:var(--et-scheduler-time-grid-gutter-size)}.et-scheduler-time-grid-days{display:grid;flex:1;grid-auto-flow:column;grid-auto-columns:1fr}.et-scheduler-time-grid-header{padding-block-end:6px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-header-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding-block:4px}.et-scheduler-time-grid-header-day:where([data-today]) .et-scheduler-time-grid-header-date{background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}.et-scheduler-time-grid-header-weekday{font-size:12px;font-weight:600;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-header-date{display:inline-flex;align-items:center;justify-content:center;inline-size:22px;block-size:22px;border-radius:999px;font-size:13px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-solid)}.et-scheduler-time-grid-all-day{padding-block:4px;border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-all-day-lane{position:relative;flex:1;min-block-size:calc(var(--_et-scheduler-time-grid-all-day-row-count, 0) * var(--et-scheduler-time-grid-all-day-row-size))}.et-scheduler-time-grid-all-day-entry{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-all-day-row, 0) * var(--et-scheduler-time-grid-all-day-row-size));inset-inline-start:calc(var(--_et-scheduler-time-grid-all-day-offset, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-all-day-size, 100) * 1% - 4px);block-size:calc(var(--et-scheduler-time-grid-all-day-row-size) - 2px)}.et-scheduler-time-grid-hour-row{box-sizing:border-box;block-size:var(--et-scheduler-time-grid-hour-size);border-block-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-gutter .et-scheduler-time-grid-hour-row{display:flex;align-items:flex-start;justify-content:flex-end;padding-inline-end:8px;border-block-end:none}.et-scheduler-time-grid-hour-label{inline-size:max-content;transform:translateY(-50%);font-size:11px;font-variant-numeric:tabular-nums;color:var(--et-surface-color-muted-solid)}.et-scheduler-time-grid-body .et-scheduler-time-grid-days{border-inline-start:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day{position:relative;border-inline-end:1px solid var(--et-surface-border-solid)}.et-scheduler-time-grid-day:where([data-today]){background:color-mix(in srgb,var(--et-theme-color-primary-solid) 6%,transparent)}.et-scheduler-time-grid-block{position:absolute;inset-block-start:calc(var(--_et-scheduler-time-grid-block-offset, 0) * 1%);inset-inline-start:calc(var(--_et-scheduler-time-grid-block-inline-offset, 0) * 1%);block-size:calc(var(--_et-scheduler-time-grid-block-span, 0) * 1%);inline-size:calc(var(--_et-scheduler-time-grid-block-inline-size, 100) * 1% - 2px);min-block-size:16px;display:flex;align-items:flex-start;gap:6px;overflow:hidden;padding:2px 6px;padding-inline-start:calc(min(var(--_et-scheduler-time-grid-block-depth, 0),4)*6px + 6px);border:none;border-radius:4px;background:color-mix(in srgb,var(--et-theme-color-primary-solid) 14%,transparent);color:var(--et-theme-color-ink-solid);font:inherit;font-size:12px;text-align:start;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.et-scheduler-time-grid-block .et-scheduler-appointment-dot{margin-block-start:4px}@media(hover:hover){.et-scheduler-time-grid-block:hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid) 22%,transparent)}}.et-scheduler-time-grid-block:focus-visible{outline:2px solid var(--et-theme-color-primary-solid);outline-offset:1px}.et-scheduler-time-grid-block:where([data-selected]){background:var(--et-theme-color-primary-solid);color:var(--et-theme-color-on-primary)}}\n"] }]
|
|
53708
|
+
}], ctorParameters: () => [], propDecorators: { timeGridBody: [{ type: i0.ViewChild, args: ['timeGridBody', { isSignal: true }] }], firstHourRow: [{ type: i0.ViewChild, args: ['hourRow', { isSignal: true }] }] } });
|
|
52734
53709
|
|
|
52735
53710
|
class SchedulerComponent {
|
|
52736
53711
|
constructor() {
|
|
@@ -52741,6 +53716,10 @@ class SchedulerComponent {
|
|
|
52741
53716
|
*/
|
|
52742
53717
|
this.headless = inject(SchedulerDirective);
|
|
52743
53718
|
this.elementRef = inject(ElementRef);
|
|
53719
|
+
/** Emits the edited or newly-added appointment once the default edit surface saves. */
|
|
53720
|
+
this.appointmentSave = output();
|
|
53721
|
+
/** Emits every id to remove once the default edit surface deletes a chain. */
|
|
53722
|
+
this.appointmentsDelete = output();
|
|
52744
53723
|
this.previousLabel = computed(() => this.labels().previous, /* @ts-ignore */
|
|
52745
53724
|
...(ngDevMode ? [{ debugName: "previousLabel" }] : /* istanbul ignore next */ []));
|
|
52746
53725
|
this.nextLabel = computed(() => this.labels().next, /* @ts-ignore */
|
|
@@ -52786,11 +53765,56 @@ class SchedulerComponent {
|
|
|
52786
53765
|
.filter((adornment) => adornment.enabled?.() ?? true)
|
|
52787
53766
|
.sort((a, b) => (a.order ?? 0) - (b.order ?? 0)), /* @ts-ignore */
|
|
52788
53767
|
...(ngDevMode ? [{ debugName: "badgeAdornments" }] : /* istanbul ignore next */ []));
|
|
53768
|
+
// UI contributed by toolbar features (just "Add appointment" today) - rendered in the header
|
|
53769
|
+
// alongside the built-in nav controls. Same registration story as the badge adornments above.
|
|
53770
|
+
this.toolbarActionList = signal([], /* @ts-ignore */
|
|
53771
|
+
...(ngDevMode ? [{ debugName: "toolbarActionList" }] : /* istanbul ignore next */ []));
|
|
53772
|
+
this.toolbarActions = computed(() => this.toolbarActionList()
|
|
53773
|
+
.filter((action) => action.enabled?.() ?? true)
|
|
53774
|
+
.sort((a, b) => (a.order ?? 0) - (b.order ?? 0)), /* @ts-ignore */
|
|
53775
|
+
...(ngDevMode ? [{ debugName: "toolbarActions" }] : /* istanbul ignore next */ []));
|
|
53776
|
+
/**
|
|
53777
|
+
* Opens `<et-scheduler-edit-surface>` for the selected appointment - covers the zero-config
|
|
53778
|
+
* case (no feature directives applied) per the plan. Its result bubbles as `appointmentSave` /
|
|
53779
|
+
* `appointmentsDelete`, and closing always clears `selectedAppointmentId` back to `null` so
|
|
53780
|
+
* clicking the same appointment again reopens a fresh surface.
|
|
53781
|
+
*/
|
|
53782
|
+
this.editSurfaceOpener = createOverlayOpener(SCHEDULER_EDIT_SURFACE_OVERLAY, {
|
|
53783
|
+
afterClosed: (result) => {
|
|
53784
|
+
if (result?.kind === 'save') {
|
|
53785
|
+
this.appointmentSave.emit(result.appointment);
|
|
53786
|
+
}
|
|
53787
|
+
else if (result?.kind === 'delete') {
|
|
53788
|
+
this.appointmentsDelete.emit(result.ids);
|
|
53789
|
+
}
|
|
53790
|
+
this.headless.selectedAppointmentId.set(null);
|
|
53791
|
+
},
|
|
53792
|
+
});
|
|
53793
|
+
effect(() => {
|
|
53794
|
+
const appointment = this.headless.selectedAppointment();
|
|
53795
|
+
if (!appointment) {
|
|
53796
|
+
return;
|
|
53797
|
+
}
|
|
53798
|
+
untracked(() => this.openEditSurface(appointment));
|
|
53799
|
+
});
|
|
52789
53800
|
}
|
|
52790
53801
|
/** Bound to the view-switch's `(valueChange)` - safe to cast since every `<et-segmented-button>` below carries a `SchedulerView` literal. */
|
|
52791
53802
|
setView(value) {
|
|
52792
53803
|
this.headless.view.set(value);
|
|
52793
53804
|
}
|
|
53805
|
+
/**
|
|
53806
|
+
* Synthesizes a brand-new, blank top-level appointment - anchored to `focusedDate` so it lands
|
|
53807
|
+
* in whatever period is currently in view, defaulting to the next hour if that's today, else a
|
|
53808
|
+
* business-hours 9am - and opens the edit surface for it. Run by the built-in
|
|
53809
|
+
* `etSchedulerActionAddAppointment` toolbar action; call directly to trigger the same flow from
|
|
53810
|
+
* your own UI (`<et-scheduler #s>` then `s.addAppointment()`).
|
|
53811
|
+
*/
|
|
53812
|
+
addAppointment() {
|
|
53813
|
+
const day = startOfDay(this.headless.focusedDate());
|
|
53814
|
+
const hour = isSameDay(day, new Date()) ? Math.min(23, new Date().getHours() + 1) : 9;
|
|
53815
|
+
const start = setMinutes(setHours(day, hour), 0);
|
|
53816
|
+
this.openEditSurface({ id: randomId(), parentId: null, title: '', start, end: addHours(start, 1) });
|
|
53817
|
+
}
|
|
52794
53818
|
/** The scheduler's own element. Part of the feature contract (a feature is a directive on it). */
|
|
52795
53819
|
get element() {
|
|
52796
53820
|
return this.elementRef.nativeElement;
|
|
@@ -52810,8 +53834,23 @@ class SchedulerComponent {
|
|
|
52810
53834
|
registerBadgeAdornment(adornment) {
|
|
52811
53835
|
this.badgeAdornmentList.update((list) => [...list, adornment]);
|
|
52812
53836
|
}
|
|
53837
|
+
/** Part of the feature contract - see `SchedulerFeatureHost`. */
|
|
53838
|
+
registerToolbarAction(action) {
|
|
53839
|
+
this.toolbarActionList.update((list) => [...list, action]);
|
|
53840
|
+
}
|
|
53841
|
+
openEditSurface(appointment) {
|
|
53842
|
+
this.editSurfaceOpener.open({
|
|
53843
|
+
bindings: [
|
|
53844
|
+
inputBinding('appointment', () => appointment),
|
|
53845
|
+
inputBinding('appointments', () => this.headless.appointments()),
|
|
53846
|
+
],
|
|
53847
|
+
});
|
|
53848
|
+
}
|
|
52813
53849
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52814
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: SchedulerComponent, isStandalone: true, selector: "et-scheduler",
|
|
53850
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: SchedulerComponent, isStandalone: true, selector: "et-scheduler", outputs: { appointmentSave: "appointmentSave", appointmentsDelete: "appointmentsDelete" }, host: { classAttribute: "et-scheduler" }, providers: [
|
|
53851
|
+
provideIcons(CHEVRON_ICON, PLUS_ICON),
|
|
53852
|
+
{ provide: SCHEDULER_FEATURE_HOST, useExisting: SchedulerComponent },
|
|
53853
|
+
], hostDirectives: [{ directive: SchedulerDirective, inputs: ["appointments", "appointments", "view", "view", "focusedDate", "focusedDate", "selectedAppointmentId", "selectedAppointmentId", "locale", "locale", "firstDayOfWeek", "firstDayOfWeek"], outputs: ["viewChange", "viewChange", "focusedDateChange", "focusedDateChange", "selectedAppointmentIdChange", "selectedAppointmentIdChange"] }, { directive: SchedulerBadgeColorDotDirective, inputs: ["etSchedulerBadgeColorDot", "etSchedulerBadgeColorDot"] }, { directive: SchedulerBadgeTitleDirective, inputs: ["etSchedulerBadgeTitle", "etSchedulerBadgeTitle"] }, { directive: SchedulerBadgeTimeRangeDirective, inputs: ["etSchedulerBadgeTimeRange", "etSchedulerBadgeTimeRange"] }, { directive: SchedulerBadgeLocationDirective, inputs: ["etSchedulerBadgeLocation", "etSchedulerBadgeLocation"] }, { directive: SchedulerBadgeChainCountDirective, inputs: ["etSchedulerBadgeChainCount", "etSchedulerBadgeChainCount"] }, { directive: SchedulerActionAddAppointmentDirective, inputs: ["etSchedulerActionAddAppointment", "etSchedulerActionAddAppointment"] }], ngImport: i0, template: "<div class=\"et-scheduler-header\">\n <button\n (click)=\"headless.goToToday()\"\n class=\"et-scheduler-today-button\"\n et-button\n size=\"sm\"\n variant=\"outline\"\n type=\"button\"\n >\n {{ todayLabel() }}\n </button>\n\n @for (action of toolbarActions(); track $index) {\n <button (click)=\"action.run()\" class=\"et-scheduler-toolbar-action\" et-button size=\"sm\" type=\"button\">\n @if (action.icon) {\n <i [etIcon]=\"action.icon\" aria-hidden=\"true\"></i>\n }\n {{ action.label() }}\n </button>\n }\n\n <div class=\"et-scheduler-nav-buttons\">\n <button\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"headless.previous()\"\n class=\"et-scheduler-nav-button et-scheduler-nav-button--previous\"\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n\n <button\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"headless.next()\"\n class=\"et-scheduler-nav-button et-scheduler-nav-button--next\"\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n </div>\n\n <span class=\"et-scheduler-header-label\">{{ headerLabel() }}</span>\n\n <div class=\"et-scheduler-header-spacer\"></div>\n\n <et-segmented-button-group\n [value]=\"headless.view()\"\n (valueChange)=\"setView($event)\"\n class=\"et-scheduler-view-switch\"\n size=\"sm\"\n variant=\"tabs\"\n >\n <et-label class=\"et-scheduler-view-switch-label\">{{ switchViewLabel() }}</et-label>\n\n <et-segmented-button value=\"month\">{{ monthViewLabel() }}</et-segmented-button>\n <et-segmented-button value=\"week\">{{ weekViewLabel() }}</et-segmented-button>\n <et-segmented-button value=\"day\">{{ dayViewLabel() }}</et-segmented-button>\n <et-segmented-button value=\"agenda\">{{ agendaViewLabel() }}</et-segmented-button>\n </et-segmented-button-group>\n</div>\n\n<div class=\"et-scheduler-body\">\n @switch (headless.view()) {\n @case ('week') {\n <et-scheduler-time-grid-view />\n }\n @case ('day') {\n <et-scheduler-time-grid-view />\n }\n @case ('agenda') {\n <et-scheduler-agenda-view />\n }\n @default {\n <et-scheduler-month-view />\n }\n }\n</div>\n", styles: ["@layer components{.et-scheduler{container-type:inline-size;container-name:et-scheduler;display:flex;flex-direction:column;gap:12px}.et-scheduler-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.et-scheduler-view-switch{flex-basis:100%}@container et-scheduler (min-inline-size: 480px){.et-scheduler-header-spacer{display:block}.et-scheduler-view-switch{flex-basis:auto}}.et-scheduler-nav-buttons{display:flex;gap:2px}.et-scheduler-nav-button--previous .et-icon{rotate:-90deg}.et-scheduler-nav-button--next .et-icon{rotate:90deg}.et-scheduler-header-label{flex:1 1 auto;min-inline-size:0;overflow:hidden;font-size:15px;font-weight:600;color:var(--et-surface-color-solid);white-space:nowrap;text-overflow:ellipsis}.et-scheduler-header-spacer{display:none;flex:1}.et-scheduler-view-switch-label{position:absolute;inline-size:1px;block-size:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.et-scheduler-body{display:flex;flex:1;flex-direction:column}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[et-button]", inputs: ["variant", "size", "iconAlignment"] }, { kind: "component", type: IconButtonComponent, selector: "[et-icon-button]", inputs: ["variant", "size"] }, { kind: "component", type: SegmentedButtonGroupComponent, selector: "et-segmented-button-group", inputs: ["size", "variant"] }, { kind: "component", type: SegmentedButtonComponent, selector: "et-segmented-button" }, { kind: "component", type: LabelDirective, selector: "et-label" }, { kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "variant", "allowHardcodedColor", "label"] }, { kind: "component", type: SchedulerAgendaViewComponent, selector: "et-scheduler-agenda-view" }, { kind: "component", type: SchedulerMonthViewComponent, selector: "et-scheduler-month-view" }, { kind: "component", type: SchedulerTimeGridViewComponent, selector: "et-scheduler-time-grid-view" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
52815
53854
|
}
|
|
52816
53855
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SchedulerComponent, decorators: [{
|
|
52817
53856
|
type: Component,
|
|
@@ -52823,7 +53862,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
52823
53862
|
SchedulerAgendaViewComponent,
|
|
52824
53863
|
SchedulerMonthViewComponent,
|
|
52825
53864
|
SchedulerTimeGridViewComponent,
|
|
52826
|
-
], providers: [
|
|
53865
|
+
], providers: [
|
|
53866
|
+
provideIcons(CHEVRON_ICON, PLUS_ICON),
|
|
53867
|
+
{ provide: SCHEDULER_FEATURE_HOST, useExisting: SchedulerComponent },
|
|
53868
|
+
], hostDirectives: [
|
|
52827
53869
|
{
|
|
52828
53870
|
directive: SchedulerDirective,
|
|
52829
53871
|
inputs: ['appointments', 'view', 'focusedDate', 'selectedAppointmentId', 'locale', 'firstDayOfWeek'],
|
|
@@ -52837,16 +53879,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
52837
53879
|
{ directive: SchedulerBadgeTimeRangeDirective, inputs: ['etSchedulerBadgeTimeRange'] },
|
|
52838
53880
|
{ directive: SchedulerBadgeLocationDirective, inputs: ['etSchedulerBadgeLocation'] },
|
|
52839
53881
|
{ directive: SchedulerBadgeChainCountDirective, inputs: ['etSchedulerBadgeChainCount'] },
|
|
53882
|
+
{ directive: SchedulerActionAddAppointmentDirective, inputs: ['etSchedulerActionAddAppointment'] },
|
|
52840
53883
|
], host: {
|
|
52841
53884
|
class: 'et-scheduler',
|
|
52842
|
-
}, template: "<div class=\"et-scheduler-header\">\n <button\n (click)=\"headless.goToToday()\"\n class=\"et-scheduler-today-button\"\n et-button\n size=\"sm\"\n variant=\"outline\"\n type=\"button\"\n >\n {{ todayLabel() }}\n </button>\n\n <div class=\"et-scheduler-nav-buttons\">\n <button\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"headless.previous()\"\n class=\"et-scheduler-nav-button et-scheduler-nav-button--previous\"\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n\n <button\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"headless.next()\"\n class=\"et-scheduler-nav-button et-scheduler-nav-button--next\"\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n </div>\n\n <span class=\"et-scheduler-header-label\">{{ headerLabel() }}</span>\n\n <div class=\"et-scheduler-header-spacer\"></div>\n\n <et-segmented-button-group
|
|
52843
|
-
}] });
|
|
53885
|
+
}, template: "<div class=\"et-scheduler-header\">\n <button\n (click)=\"headless.goToToday()\"\n class=\"et-scheduler-today-button\"\n et-button\n size=\"sm\"\n variant=\"outline\"\n type=\"button\"\n >\n {{ todayLabel() }}\n </button>\n\n @for (action of toolbarActions(); track $index) {\n <button (click)=\"action.run()\" class=\"et-scheduler-toolbar-action\" et-button size=\"sm\" type=\"button\">\n @if (action.icon) {\n <i [etIcon]=\"action.icon\" aria-hidden=\"true\"></i>\n }\n {{ action.label() }}\n </button>\n }\n\n <div class=\"et-scheduler-nav-buttons\">\n <button\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"headless.previous()\"\n class=\"et-scheduler-nav-button et-scheduler-nav-button--previous\"\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n\n <button\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"headless.next()\"\n class=\"et-scheduler-nav-button et-scheduler-nav-button--next\"\n et-icon-button\n size=\"sm\"\n type=\"button\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n </div>\n\n <span class=\"et-scheduler-header-label\">{{ headerLabel() }}</span>\n\n <div class=\"et-scheduler-header-spacer\"></div>\n\n <et-segmented-button-group\n [value]=\"headless.view()\"\n (valueChange)=\"setView($event)\"\n class=\"et-scheduler-view-switch\"\n size=\"sm\"\n variant=\"tabs\"\n >\n <et-label class=\"et-scheduler-view-switch-label\">{{ switchViewLabel() }}</et-label>\n\n <et-segmented-button value=\"month\">{{ monthViewLabel() }}</et-segmented-button>\n <et-segmented-button value=\"week\">{{ weekViewLabel() }}</et-segmented-button>\n <et-segmented-button value=\"day\">{{ dayViewLabel() }}</et-segmented-button>\n <et-segmented-button value=\"agenda\">{{ agendaViewLabel() }}</et-segmented-button>\n </et-segmented-button-group>\n</div>\n\n<div class=\"et-scheduler-body\">\n @switch (headless.view()) {\n @case ('week') {\n <et-scheduler-time-grid-view />\n }\n @case ('day') {\n <et-scheduler-time-grid-view />\n }\n @case ('agenda') {\n <et-scheduler-agenda-view />\n }\n @default {\n <et-scheduler-month-view />\n }\n }\n</div>\n", styles: ["@layer components{.et-scheduler{container-type:inline-size;container-name:et-scheduler;display:flex;flex-direction:column;gap:12px}.et-scheduler-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.et-scheduler-view-switch{flex-basis:100%}@container et-scheduler (min-inline-size: 480px){.et-scheduler-header-spacer{display:block}.et-scheduler-view-switch{flex-basis:auto}}.et-scheduler-nav-buttons{display:flex;gap:2px}.et-scheduler-nav-button--previous .et-icon{rotate:-90deg}.et-scheduler-nav-button--next .et-icon{rotate:90deg}.et-scheduler-header-label{flex:1 1 auto;min-inline-size:0;overflow:hidden;font-size:15px;font-weight:600;color:var(--et-surface-color-solid);white-space:nowrap;text-overflow:ellipsis}.et-scheduler-header-spacer{display:none;flex:1}.et-scheduler-view-switch-label{position:absolute;inline-size:1px;block-size:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.et-scheduler-body{display:flex;flex:1;flex-direction:column}}\n"] }]
|
|
53886
|
+
}], ctorParameters: () => [], propDecorators: { appointmentSave: [{ type: i0.Output, args: ["appointmentSave"] }], appointmentsDelete: [{ type: i0.Output, args: ["appointmentsDelete"] }] } });
|
|
52844
53887
|
|
|
52845
53888
|
const SCHEDULER_IMPORTS = [
|
|
52846
53889
|
SchedulerDirective,
|
|
52847
53890
|
SchedulerAgendaDirective,
|
|
52848
53891
|
SchedulerMonthDirective,
|
|
52849
53892
|
SchedulerTimeGridDirective,
|
|
53893
|
+
SchedulerEditSurfaceDirective,
|
|
52850
53894
|
SchedulerComponent,
|
|
52851
53895
|
SchedulerAgendaViewComponent,
|
|
52852
53896
|
SchedulerMonthViewComponent,
|
|
@@ -52856,6 +53900,15 @@ const SCHEDULER_IMPORTS = [
|
|
|
52856
53900
|
SchedulerBadgeTimeRangeDirective,
|
|
52857
53901
|
SchedulerBadgeLocationDirective,
|
|
52858
53902
|
SchedulerBadgeChainCountDirective,
|
|
53903
|
+
SchedulerEditSurfaceComponent,
|
|
53904
|
+
SchedulerEditTitleDirective,
|
|
53905
|
+
SchedulerEditTimeRangeDirective,
|
|
53906
|
+
SchedulerEditLocationDirective,
|
|
53907
|
+
SchedulerEditDescriptionDirective,
|
|
53908
|
+
SchedulerEditColorDirective,
|
|
53909
|
+
SchedulerActionAddSubAppointmentDirective,
|
|
53910
|
+
SchedulerActionDeleteDirective,
|
|
53911
|
+
SchedulerActionAddAppointmentDirective,
|
|
52859
53912
|
];
|
|
52860
53913
|
|
|
52861
53914
|
/** The built-in English labels. */
|
|
@@ -63754,5 +64807,5 @@ const TOOLTIP_IMPORTS = [TooltipDirective, TooltipComponent];
|
|
|
63754
64807
|
* Generated bundle index. Do not edit.
|
|
63755
64808
|
*/
|
|
63756
64809
|
|
|
63757
|
-
export { ACCORDION_ERROR_CODES, ACCORDION_GROUP_TOKEN, ACCORDION_IMPORTS, ACCORDION_TOKEN, ALIGN_CENTER_ICON, ALIGN_JUSTIFY_ICON, ALIGN_LEFT_ICON, ALIGN_RIGHT_ICON, ARROWS_LEFT_RIGHT_ICON, ARROW_OUT_UP_RIGHT_ICON, ARROW_RIGHT_ICON, ARROW_UP_ICON, AVATAR_IMPORTS, AVATAR_SHAPES, AVATAR_SIZES, AccordionComponent, AccordionContentDirective, AccordionDirective, AccordionGroupComponent, AccordionGroupDirective, AccordionHintDirective, AccordionLabelDirective, AccordionPanelDirective, AccordionTriggerDirective, AvatarComponent, AvatarGroupComponent, BADGE_IMPORTS, BADGE_VARIANTS, BANNER_IMPORTS, BANNER_LABELS, BANNER_TYPES, BOLD_ICON, BRACKET_CARD_CONTEXT, BRACKET_DATA_LAYOUT, BRACKET_DEFAULTS, BRACKET_DENSITY, BRACKET_DENSITY_PRESETS, BRACKET_ERROR_CODES, BRACKET_IMPORTS, BRACKET_LABELS, BRACKET_ROUND_MIRROR_TYPE, BRACKET_SWISS_GROUP_COLOR_TYPE, BREADCRUMB_COLLAPSE_IMPORTS, BREADCRUMB_COLLAPSE_TOKEN, BREADCRUMB_ERROR_CODES, BREADCRUMB_IMPORTS, BREADCRUMB_LABELS, BREADCRUMB_SEGMENT_TOKEN, BREADCRUMB_SEO_IMPORTS, BREADCRUMB_TOKEN, BUTTON_ICON_ALIGNMENTS, BUTTON_IMPORTS, BUTTON_SIZES, BUTTON_SPINNER_CONFIG, BUTTON_TYPES, BUTTON_VARIANTS, BadgeComponent, BannerComponent, BracketComponent, BracketDefaultContinueComponent, BracketDefaultFinalMatchComponent, BracketDefaultMatchComponent, BracketDefaultRoundHeaderComponent, BracketMap, BracketRoundsListComponent, BrandLoaderComponent, BreadcrumbCollapseDirective, BreadcrumbComponent, BreadcrumbDirective, BreadcrumbItemDirective, BreadcrumbItemTemplateDirective, BreadcrumbOutletComponent, BreadcrumbOverflowComponent, BreadcrumbSegmentDirective, BreadcrumbSeoDirective, BreadcrumbSeparatorDirective, ButtonComponent, ButtonDirective, ButtonStylesDirective, CALENDAR_ERROR_CODES, CALENDAR_ICON, CALENDAR_IMPORTS, CALENDAR_LABELS, CARD_IMPORTS, CARD_VARIANTS, CAROUSEL_AUTOPLAY_TOKEN, CAROUSEL_ERROR_CODES, CAROUSEL_IMPORTS, CAROUSEL_LABELS, CAROUSEL_SLIDE_ALIGNMENTS, CAROUSEL_TOKEN, CAROUSEL_TRANSITIONS, CAROUSEL_TRANSITION_DRIVERS, CASCADER_ERROR_CODES, CASCADER_IMPORTS, CASCADER_LABELS, CASCADER_SELECTABLE_LEVELS, CHECKBOX_GROUP_IMPORTS, CHECKBOX_IMPORTS, CHECKBOX_OPTION_VARIANTS, CHECK_ICON, CHEVRON_ICON, CHIP_ERROR_CODES, CHIP_IMPORTS, CHIP_LABELS, CHOICE_FIELD_IMPORTS, CHOICE_FIELD_VARIANTS, CIRCLE_CHECK_ICON, CIRCLE_INFO_ICON, CLIPBOARD_CHECK_ICON, CLOCK_ICON, CODE_BLOCK_ICON, CODE_ICON, COLOR_INPUT_IMPORTS, COMMON_BRACKET_ROUND_TYPE, COPY_BUTTON_IMPORTS, CalendarCellDirective, CalendarComponent, CalendarDirective, CalendarGridDirective, CalendarHeaderDirective, CardComponent, CarouselAutoplayDirective, CarouselComponent, CarouselDirective, CarouselItemDirective, CarouselNextDirective, CarouselPlayToggleDirective, CarouselPreviousDirective, CarouselSlideDirective, CascaderColumnDirective, CascaderComponent, CascaderDirective, CascaderNodeDirective, CascaderPanelComponent, CascaderSearchDirective, CascaderSearchOptionDirective, CascaderSurfaceDirective, CascaderTriggerDirective, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxGroupSelectAllComponent, CheckboxOptionComponent, ChipComponent, ChipDirective, ChipRemoveDirective, ChoiceFieldComponent, ColorInputComponent, ColorInputDirective, CopyButtonDirective, CounterComponent, DAILYMOTION_PLAYER_TOKEN, DATE_FORMAT, DATE_INPUT_ERROR_CODES, DATE_INPUT_IMPORTS, DATE_LOCALE, DATE_PICKER_HOST, DATE_RANGE_INPUT_ERROR_CODES, DATE_RANGE_INPUT_IMPORTS, DATE_TIME_INPUT_ERROR_CODES, DATE_TIME_INPUT_IMPORTS, DATE_TIME_LABELS, DEFAULT_BANNER_LABELS, DEFAULT_BRACKET_LABELS, DEFAULT_BREADCRUMB_LABELS, DEFAULT_BREAKPOINTS, DEFAULT_CALENDAR_LABELS, DEFAULT_CALENDAR_RANGE_STRATEGY, DEFAULT_CAROUSEL_LABELS, DEFAULT_CASCADER_LABELS, DEFAULT_CHIP_LABELS, DEFAULT_DATE_TIME_LABELS, DEFAULT_DROPZONE_LABELS, DEFAULT_FILTER_OVERLAY_LABELS, DEFAULT_FORM_FIELD_LABELS, DEFAULT_GRID_LABELS, DEFAULT_ICON_VARIANT, DEFAULT_INPUT_LABELS, DEFAULT_LOADER_LABELS, DEFAULT_MATCH_CARD_START_TIME_FORMAT, DEFAULT_MATCH_LABELS, DEFAULT_NOTIFICATION_LABELS, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_NOTIFICATION_STATUS_ICONS, DEFAULT_PAGINATION_LABELS, DEFAULT_PHONE_INPUT_LABELS, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_QUERY_ERROR_LABELS, DEFAULT_RICH_TEXT_EDITOR_LABELS, DEFAULT_RICH_TEXT_EDITOR_TOOLS, DEFAULT_SCHEDULER_LABELS, DEFAULT_SELECT_LABELS, DEFAULT_SLIDER_LABELS, DEFAULT_STANDINGS_LABELS, DEFAULT_STREAM_LABELS, DEFAULT_STREAM_PLAYER_STATE, DEFAULT_TABLE_LABELS, DEFAULT_TIME_PICKER_LABELS, DESCRIPTION_IMPORTS, DESCRIPTION_LIST_IMPORTS, DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE, DROPZONE_ENTRY_STATUSES, DROPZONE_ERROR_CODES, DROPZONE_FILES_ERROR_KIND, DROPZONE_FILE_CONSTRAINTS, DROPZONE_FILE_REJECTION_REASONS, DROPZONE_IMPORTS, DROPZONE_LABELS, DURATION_INPUT_ERROR_CODES, DURATION_INPUT_IMPORTS, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DateInputComponent, DateInputDirective, DateInputFieldDirective, DatePickerPanelComponent, DatePickerSurfaceDirective, DatePickerTriggerDirective, DateRangeInputComponent, DateRangeInputDirective, DateRangeInputFieldDirective, DateTimeInputComponent, DateTimeInputDirective, DateTimeInputFieldDirective, DescriptionComponent, DescriptionListComponent, DropzoneComponent, DropzoneDirective, DurationInputComponent, DurationInputDirective, DurationInputFieldDirective, ELLIPSIS_ICON, ELLIPSIS_VERTICAL_ICON, EMPTY_STATE_IMPORTS, ET_BUILT_IN_ICON_NAMES, EYE_ICON, EYE_SLASH_ICON, EmptyStateComponent, FACEBOOK_PLAYER_TOKEN, FILE_ICON, FILTER_ICON, FILTER_OVERLAY_ERROR_CODES, FILTER_OVERLAY_IMPORTS, FILTER_OVERLAY_LABELS, FILTER_OVERLAY_TOKEN, FLOATING_ACTION_ERROR_CODES, FLOATING_ACTION_IMPORTS, FLOATING_ACTION_STATES, FLOATING_ACTION_TOKEN, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, FORM_ERROR_MESSAGE_RESOLVER, FORM_FIELD_APPEARANCES, FORM_FIELD_CONTROL_TYPES, FORM_FIELD_ERROR_CODES, FORM_FIELD_FILLS, FORM_FIELD_IMPORTS, FORM_FIELD_LABELS, FORM_FIELD_LABEL_MODES, FORM_FIELD_SIZES, FORM_FIELD_TOKEN, FabComponent, FacebookPlayerComponent, FacebookPlayerDirective, FacebookPlayerParamsDirective, FacebookPlayerSlotComponent, FilterOverlayResetDirective, FilterOverlaySubmitDirective, FloatingActionAnchorDirective, FloatingActionDirective, FloatingActionScopeDirective, FloatingActionTopDirective, FloatingActionTriggerDirective, FocusRingDirective, FormErrorComponent, FormFieldComponent, FormFieldDirective, GERMAN_FILTER_OVERLAY_LABELS, GERMAN_QUERY_ERROR_LABELS, GRID_2X2_ICON, GRID_DEBUG_IMPORTS, GRID_ERROR_CODES, GRID_IMPORTS, GRID_LABELS, GRID_TOKEN, GROUP_BRACKET_ROUND_TYPE, GridComponent, GridDebugComponent, GridDirective, GridDragDirective, GridItemComponent, GridItemDefaultActionsComponent, GridItemDirective, GridItemRef, GridItemToolbarComponent, GridResizeDirective, HEADING_1_ICON, HEADING_2_ICON, HEADING_3_ICON, HintComponent, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, ICON_ERROR_CODES, ICON_IMPORTS, ICON_OVERRIDES_TOKEN, IMAGE_ICON, INITIAL_SUPPORT_PRESENTATION_STATE, INPUT_IMPORTS, INPUT_LABELS, INPUT_MASK_HOST, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, INTERACTIVE_TAGS, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputMaskDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOADER_LABELS, LOCATION_ICON, LOCK_ICON, LabelDirective, MASKED_INPUT_ERROR_CODES, MASKED_INPUT_IMPORTS, MASK_VALUE_MODES, MASONRY_ERROR_CODES, MASONRY_IMPORTS, MASONRY_TOKEN, MATCH_CARD_IMPORTS, MATCH_CARD_SIZES, MATCH_CARD_TOKEN, MATCH_ERROR_CODES, MATCH_LABELS, MATCH_PARTICIPANT_IMPORTS, MENU_ERROR_CODES, MENU_IMPORTS, MENU_ITEM_VARIANTS, MENU_SELECTION_GROUP_MULTIPLE, MENU_SELECTION_GROUP_TOKEN, MENU_SELECTION_ITEM_KIND, MINUS_ICON, MULTI_LANGUAGE_RICH_TEXT_EDITOR_ERROR_CODES, MULTI_LANGUAGE_RICH_TEXT_EDITOR_IMPORTS, MasonryDirective, MasonryItemDirective, MatchCardComponent, MatchCardDirective, MatchCardGameScoresDirective, MatchCardMetaDirective, MatchCardScoreDirective, MatchParticipantComponent, MatchScoreComponent, MenuCheckboxGroupComponent, MenuCheckboxItemComponent, MenuComponent, MenuContextTriggerDirective, MenuDirective, MenuGroupLabelComponent, MenuItemComponent, MenuItemDirective, MenuItemShortcutComponent, MenuPanelDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSearchDirective, MenuSelectionGroupDirective, MenuSelectionItemDirective, MenuSeparatorComponent, MenuSurfaceDirective, MenuTriggerDirective, MultiLanguageRichTextEditorComponent, MultiLanguageRichTextEditorDirective, MultiLanguageRichTextEditorLanguageToolComponent, NAV_TABS_TOKEN, NAV_TAB_IMPORTS, NOTIFICATION_ACTION_SLOTS, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_LABELS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NUMBER_INPUT_IMPORTS, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, NotificationSwipeToDismissDirective, NumberInputComponent, NumberInputDirective, OTP_INPUT_IMPORTS, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CONFIG_CLASS_KEYS, OVERLAY_CONTENT_IMPORTS, OVERLAY_ERROR_CODES, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_IMPORTS, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_REF, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_ROUTER_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OtpInputComponent, OtpInputDirective, OverlayAnchorDirective, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseDirective, OverlayContainerComponent, OverlayDirective, OverlayFooterDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlaySurfaceDirective, OverlayTitleDirective, OverlayTriggerDirective, PAGE_SIZE_SELECT_IMPORTS, PAGINATION_IMPORTS, PAGINATION_LABELS, PARAGRAPH_ICON, PASSWORD_INPUT_IMPORTS, PAUSE_ICON, PENCIL_ICON, PHONE_COUNTRIES, PHONE_INPUT_ERROR_CODES, PHONE_INPUT_IMPORTS, PHONE_INPUT_LABELS, PICTURE_IMPORTS, PICTURE_STATES, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLAY_ICON, PLUS_ICON, PROGRESS_STEPS_IMPORTS, PROGRESS_STEP_STATES, PageSizeSelectComponent, PaginationComponent, PaginationDirective, PaginationSeoDirective, PasswordInputComponent, PasswordInputDirective, PhoneInputComponent, PhoneInputDirective, PhoneInputFieldDirective, PhoneInputFlagDirective, PictureComponent, PictureErrorDirective, PicturePlaceholderDirective, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, ProgressStepComponent, ProgressStepsComponent, QUERY_DEVTOOLS_IMPORTS, QUERY_ERROR_ERROR_CODES, QUERY_ERROR_IMPORTS, QUERY_ERROR_LABELS, QUERY_ERROR_TOKEN, QUOTE_ICON, QueryDevtoolsComponent, QueryDevtoolsJsonComponent, QueryDevtoolsJsonStylesComponent, QueryDevtoolsTimelineStylesComponent, QueryDevtoolsToggleComponent, QueryErrorActionsDirective, QueryErrorComponent, QueryErrorDirective, QueryErrorTitleDirective, QueryParamOverlayLinkDirective, RADIO_GROUP_IMPORTS, RADIO_VARIANTS, RATING_IMPORTS, REDO_ICON, RICH_TEXT_EDITOR_FLOATING_TOOLBAR, RICH_TEXT_EDITOR_HEADING_OPTIONS, RICH_TEXT_EDITOR_IMPORTS, RICH_TEXT_EDITOR_INLINE_TOOLS, RICH_TEXT_EDITOR_LABELS, RICH_TEXT_EDITOR_LANGUAGE_TOOL, RICH_TEXT_EDITOR_LINK_EDITOR, RICH_TEXT_EDITOR_TOKEN_CODEC, RICH_TEXT_EDITOR_TOKEN_PALETTE_IMPORTS, RICH_TEXT_EDITOR_TOOL, RICH_TEXT_EDITOR_TOOLS, RICH_TEXT_EDITOR_TOOL_BUTTONS, RICH_TEXT_EDITOR_TRIGGERS_IMPORTS, ROTATE_RIGHT_ICON, RadioComponent, RadioGroupComponent, RangeSliderComponent, RangeSliderDirective, RatingComponent, RatingDirective, RatingIconDirective, RichTextEditorAlignToolComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, RichTextEditorFloatingToolbarDirective, RichTextEditorHeadingToolComponent, RichTextEditorImageEditorComponent, RichTextEditorImageStylesComponent, RichTextEditorImageToolComponent, RichTextEditorLinkEditorComponent, RichTextEditorLinkEditorDirective, RichTextEditorTableStylesComponent, RichTextEditorTableToolComponent, RichTextEditorTokenPaletteComponent, RichTextEditorTokenPopupComponent, RichTextEditorTriggersDirective, SCHEDULER_ERROR_CODES, SCHEDULER_FEATURE_HOST, SCHEDULER_IMPORTS, SCHEDULER_LABELS, SCROLLABLE_DARKEN_IMPORTS, SCROLLABLE_DRAG_IMPORTS, SCROLLABLE_ERROR_CODES, SCROLLABLE_IMPORTS, SCROLLABLE_NAVIGATION_IMPORTS, SEGMENTED_BUTTON_GROUP_VARIANTS, SEGMENTED_BUTTON_IMPORTS, SELECTION_LIST_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SELECT_ERROR_CODES, SELECT_FILTER_MODES, SELECT_IMPORTS, SELECT_LABELS, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SINGLE_ELIMINATION_BRACKET_ROUND_TYPE, SKELETON_IMPORTS, SLIDER_ERROR_CODES, SLIDER_IMPORTS, SLIDER_LABELS, SLIDER_MARK_VALUE_ATTRIBUTE, SLIDER_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, SPLIT_BUTTON_ERROR_CODES, STANDINGS_ERROR_CODES, STANDINGS_IMPORTS, STANDINGS_LABELS, STAR_ICON, STREAM_ALL_IMPORTS, STREAM_CONSENT_TOKEN, STREAM_DAILYMOTION_IMPORTS, STREAM_FACEBOOK_IMPORTS, STREAM_IMPORTS, STREAM_KICK_IMPORTS, STREAM_LABELS, STREAM_PIP_IMPORTS, STREAM_PLAYER_COMPONENT_TOKEN, STREAM_PLAYER_ERROR_CONTEXT_TOKEN, STREAM_PLAYER_ERROR_TOKEN, STREAM_PLAYER_PARAMS_TOKEN, STREAM_PLAYER_SLOT_TOKEN, STREAM_PLAYER_TOKEN, STREAM_SLOT_PLAYER_ID_TOKEN, STREAM_SOOP_IMPORTS, STREAM_TIKTOK_IMPORTS, STREAM_TWITCH_IMPORTS, STREAM_USER_CONSENT_PROVIDER_TOKEN, STREAM_VIMEO_IMPORTS, STREAM_YOUTUBE_IMPORTS, STRIKETHROUGH_ICON, SUPPORT_CONTENT_STATE, SUPPORT_TRANSITION_DIRECTION, SWISS_ADVANCE_WINS, SWISS_BRACKET_ROUND_TYPE, SWISS_ELIMINATE_LOSSES, SWITCH_IMPORTS, SchedulerAgendaDirective, SchedulerAgendaViewComponent, SchedulerBadgeChainCountComponent, SchedulerBadgeChainCountDirective, SchedulerBadgeColorDotComponent, SchedulerBadgeColorDotDirective, SchedulerBadgeLocationComponent, SchedulerBadgeLocationDirective, SchedulerBadgeTimeRangeComponent, SchedulerBadgeTimeRangeDirective, SchedulerBadgeTitleComponent, SchedulerBadgeTitleDirective, SchedulerComponent, SchedulerDirective, SchedulerMonthDirective, SchedulerMonthViewComponent, SchedulerTimeGridDirective, SchedulerTimeGridViewComponent, ScrollableActiveChildDirective, ScrollableButtonsComponent, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksComponent, ScrollableNavigationComponent, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectComponent, SelectDirective, SelectEmptyDirective, SelectErrorDirective, SelectListboxDirective, SelectLoadingDirective, SelectOptionComponent, SelectOptionDirective, SelectOptionGroupComponent, SelectOptionGroupDirective, SelectOptionTemplateDirective, SelectOptionsDirective, SelectPanelComponent, SelectSearchDirective, SelectSurfaceDirective, SelectTriggerDirective, SelectValueDirective, SelectViewportDirective, SelectVirtualOptionComponent, SelectVirtualOptionDirective, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SkeletonComponent, SkeletonItemComponent, SkeletonTextComponent, SliderComponent, SliderDirective, SliderThumbDirective, SliderThumbLabelDirective, SliderTrackDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, SplitButtonActionDirective, SplitButtonComponent, SplitButtonDirective, SplitButtonTriggerDirective, StandingsComponent, StandingsDirective, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, TABLE_CELL_ERROR_TOOLTIP_IMPORTS, TABLE_COLUMN_CHOOSER_IMPORTS, TABLE_COLUMN_MENU_IMPORTS, TABLE_CSV_EXPORT_IMPORTS, TABLE_ERROR_CODES, TABLE_FEATURE_HOST, TABLE_FILTER_IMPORTS, TABLE_GROUP_HEADERS_IMPORTS, TABLE_ICON, TABLE_IMPORTS, TABLE_INLINE_EDIT_IMPORTS, TABLE_KEYBOARD_NAV_IMPORTS, TABLE_LABELS, TABLE_REORDER_IMPORTS, TABLE_RESIZE_IMPORTS, TABLE_ROW_EXPANSION_IMPORTS, TABLE_SELECTION_IMPORTS, TABLE_SKELETON_IMPORTS, TABLE_STATE_PERSISTENCE_IMPORTS, TABLE_STICKY_COLUMNS_IMPORTS, TABLE_VIRTUAL_SCROLL_IMPORTS, TAB_BAR_FITS, TAB_BAR_ORIENTATIONS, TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN, TAB_BAR_VARIANTS, TAB_ERROR_CODES, TAB_GROUP_TOKEN, TAB_IMPORTS, TAB_PANEL_TOKEN, TAB_SIZES, TAG_INPUT_ERROR_CODES, TAG_INPUT_IMPORTS, TEXTAREA_IMPORTS, TEXTAREA_RESIZE_MODES, TEXT_ALIGNS, TIKTOK_PLAYER_TOKEN, TIMES_ICON, TIME_FORMAT, TIME_INPUT_ERROR_CODES, TIME_INPUT_IMPORTS, TIME_PICKER_ERROR_CODES, TIME_PICKER_IMPORTS, TIME_PICKER_LABELS, TOGGLETIP_ERROR_CODES, TOGGLETIP_IMPORTS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TOURNAMENT_MODE, TRIANGLE_EXCLAMATION_ICON, TROPHY_ICON, TWITCH_PLAYER_TOKEN, TabBarDirective, TabBarTriggerDirective, TabBarUnderlineDirective, TabComponent, TabGroupComponent, TabGroupDirective, TabLabelDirective, TabPanelDirective, TabTriggerDirective, TableCellDirective, TableCellEditDirective, TableCellErrorMarkComponent, TableCellErrorTooltipDirective, TableCellSkeletonDirective, TableColumnChooserComponent, TableColumnMenuDirective, TableColumnMenuTriggerComponent, TableComponent, TableCsvExportDirective, TableDetailStylesComponent, TableExpanderCellComponent, TableFilterOptionDirective, TableFilterTriggerComponent, TableFiltersDirective, TableFooterCellDirective, TableFooterDirective, TableGroupHeaderRowComponent, TableGroupHeadersDirective, TableHeaderCellDirective, TableInlineEditDirective, TableInlineEditStylesComponent, TableKeyboardNavDirective, TableReorderDirective, TableReorderOverlayComponent, TableResizeDirective, TableResizeGripComponent, TableRowDetailComponent, TableRowExpansionDirective, TableSelectAllCellComponent, TableSelectCellComponent, TableSelectionDirective, TableSkeletonDirective, TableSkeletonRowsComponent, TableStatePersistenceDirective, TableStickyColumnsDirective, TableVirtualScrollDirective, TableVirtualScrollStylesComponent, TagInputComponent, TagInputDirective, TagInputFieldDirective, TextButtonComponent, TextFieldControlDirective, TextareaComponent, TextareaDirective, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, TimeInputComponent, TimeInputDirective, TimeInputFieldDirective, TimePickerColumnDirective, TimePickerComponent, TimePickerDirective, TimePickerOptionDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, UNDERLINE_ICON, UNDO_ICON, UNIT_MS, UPLOAD_ICON, VIMEO_PLAYER_TOKEN, VimeoPlayerComponent, VimeoPlayerDirective, VimeoPlayerParamsDirective, VimeoPlayerSlotComponent, WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent, YOUTUBE_PLAYER_SLOT_TOKEN, YOUTUBE_PLAYER_TOKEN, YoutubePlayerComponent, YoutubePlayerDirective, YoutubePlayerParamsDirective, YoutubePlayerSlotComponent, YoutubePlayerSlotDirective, abortFullscreenAnimation, anchoredDialogOverlayStrategy, anchoredOverlayStrategy, autoPlace, bottomSheetOverlayStrategy, bracketFitsWidth, bracketNaturalWidth, buildAnchoredRuntimePositionStrategy, canHaveChildren, cascaderFromQuery, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, countDescendants, createAnchoredPanelController, createAutoScroller, createBracket, createBracketBase, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createFixedLengthRangeStrategy, createGridAdapter, createIbanMask, createMatchesMapBase, createNewMatchParticipantBase, createNormalizedBracketMatch, createNotificationPromiseFn, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createOverlayUnsavedChangesGuard, createParticipantsMapBase, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, createRoundsMapBase, createStreamConfig, createStreamPlayerSlot, createTableRowsSource, createTableStateStorage, createV2DropzoneUpload, createWeekRangeStrategy, defaultCompareWith, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deriveDurationFormatSpec, deserializeGridLayout, deserializeTableState, dialogOverlayStrategy, disposeDropzoneEntry, doubleEliminationBracketLayout, dropzoneFiles, enableDragToDismiss, extractFirstImageUrl, filterOverlayLabelsForLocale, filterOverlayPreviewFromQuery, filterRows, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatDuration, formatFileSize, fromGridPosition, fullScreenDialogOverlayStrategy, generateBracketDataForEthlete, generateBracketRoundSwissGroupMaps, generateMatchPosition, generateMatchRelationPositions, generateMatchRelationsNew, generateRoundRelationsNew, generateRoundTypeFromEthleteRoundType, generateTournamentModeFormEthleteRounds, getAvailableSwissGroupsForRound, getClosestOverlay, getOriginCoordinatesAndDimensions, getSwissGroupColorType, hysteresisRound, iconRegistryKey, indexOfNode, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBannerLabels, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectBracketConfig, injectBracketLabels, injectBreadcrumbLabels, injectBreadcrumbManager, injectCalendarLabels, injectCarouselLabels, injectCascaderLabels, injectChipLabels, injectDateFormat, injectDateLocale, injectDateTimeLabels, injectDialogStrategy, injectDialogStrategyDefaults, injectDropzoneLabels, injectFilterOverlay, injectFilterOverlayLabels, injectFormFieldLabels, injectFormSupport, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectGridConfig, injectGridLabels, injectInputLabels, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectLoaderLabels, injectMatchLabels, injectNotificationLabels, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectOverlayRouter, injectOverlayScrollBlocker, injectOverlaySurfaceContext, injectPaginationLabels, injectPhoneInputLabels, injectPictureConfig, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectQueryErrorLabels, injectRichTextEditorLabels, injectRichTextEditorTools, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectSchedulerFeatureHost, injectSchedulerLabels, injectSelectLabels, injectSidebarOverlay, injectSliderLabels, injectStandingsLabels, injectStreamConfig, injectStreamConsentConfig, injectStreamLabels, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, injectTableCsvExport, injectTableFeatureHost, injectTableLabels, injectTimeFormat, injectTimePickerLabels, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isFileAccepted, isHtmlElement, isInteractiveElement, isPointerEvent, isTargetInsideOverlayTree, isTouchEvent, itemsCollide, kindOf, leftSheetOverlayStrategy, legacyQueryErrorSource, mapLayoutToBreakpoint, matchCountryByDialCode, matchParticipantDisplayName, mergeOverlayBreakpointConfigs, mergeOverlayConfigs, mirroredDoubleEliminationBracketLayout, mirroredSingleEliminationBracketLayout, mountRichTextEditorImageStyles, mountRichTextEditorTableStyles, nodesEqual, normalizeEthleteBracketMatch, normalizeEthleteGroupRanking, normalizeEthleteMatch, normalizeEthleteMatchStatus, normalizeEthleteMedia, normalizeEthleteParticipant, normalizeEthletePlacement, normalizePictureSizes, normalizePictureSource, paginate, parseDuration, phoneCountryFlag, phoneCountryName, pixelRectsEqual, positionToPixelRect, positionsEqual, projectDragCell, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBannerLabels, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideBracketConfig, provideBracketLabels, provideBreadcrumbLabels, provideBreadcrumbManager, provideCalendarLabels, provideCarouselLabels, provideCascaderLabels, provideChipLabels, provideDateFormat, provideDateLocale, provideDateTimeLabels, provideDialogStrategy, provideDialogStrategyDefaults, provideDropzoneLabels, provideFilterOverlay, provideFilterOverlayLabels, provideFormErrorMessageResolver, provideFormFieldLabels, provideFormSupport, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideGridConfig, provideGridLabels, provideIconOverrides, provideIcons, provideInputLabels, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideLoaderLabels, provideMatchLabels, provideNotificationLabels, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlay, provideOverlayManager, provideOverlayRouter, provideOverlayRouterConfig, provideOverlayRouterService, provideOverlayScrollBlocker, providePaginationLabels, providePhoneInputLabels, providePictureConfig, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideQueryErrorLabels, provideRichTextEditorAlignmentTool, provideRichTextEditorAutoformat, provideRichTextEditorBlockquoteTool, provideRichTextEditorCodeBlockTool, provideRichTextEditorDefaultTools, provideRichTextEditorFloatingToolbar, provideRichTextEditorHeadingTool, provideRichTextEditorImageTool, provideRichTextEditorLabels, provideRichTextEditorLanguageTool, provideRichTextEditorLinkEditor, provideRichTextEditorLinkTool, provideRichTextEditorTableTool, provideRichTextEditorTokenRendering, provideRichTextEditorTools, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSchedulerLabels, provideSelectLabels, provideSidebarOverlay, provideSidebarOverlayConfig, provideSidebarOverlayService, provideSliderLabels, provideStandingsLabels, provideStreamConfig, provideStreamConsentConfig, provideStreamLabels, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, provideTableLabels, provideTimeFormat, provideTimePickerLabels, provideTopSheetStrategy, provideTopSheetStrategyDefaults, queryErrorLabelsForLocale, queryErrorResponseFromLegacyError, reconcileColumnOrder, reconcileColumnWidths, reconcileHiddenColumns, reduceSupportPresentation, registerSingleton, requiredLanguages, resizeSpanBounds, resolveBracketLayout, resolveBreakpoint, resolveClosestOverlay, resolveCollisions, resolveFilterOverlaySubmitButton, resolveNotificationStatusIcon, resolveTableCsvRows, richTextEditorToolLabel, rightSheetOverlayStrategy, rowsToPixelHeight, schedulerFeatureConfig, selectOptionsFromQuery, selectOptionsFromV2Query, serializeGridLayout, serializeTableState, setupRichTextEditorFloatingToolbar, setupRichTextEditorLinkEditor, singleEliminationBracketLayout, snapResizeSpan, sortRows, spanHeight, spanWidth, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, startImageUpload, startOfCalendarUnit, stripTrunkZero, supportPresentationIncludesState, swissBracketLayout, tableCsvRowsFromPages, tableFeatureConfig, tableRowsFromQuery, tableRowsFromV2Query, tableToCsv, toChildrenObservable, toGridPosition, toNotificationContent, toPathObservable, toSearchObservable, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy, wireFormSupport, withPictureBaseUrl };
|
|
64810
|
+
export { ACCORDION_ERROR_CODES, ACCORDION_GROUP_TOKEN, ACCORDION_IMPORTS, ACCORDION_TOKEN, ALIGN_CENTER_ICON, ALIGN_JUSTIFY_ICON, ALIGN_LEFT_ICON, ALIGN_RIGHT_ICON, ARROWS_LEFT_RIGHT_ICON, ARROW_OUT_UP_RIGHT_ICON, ARROW_RIGHT_ICON, ARROW_UP_ICON, AVATAR_IMPORTS, AVATAR_SHAPES, AVATAR_SIZES, AccordionComponent, AccordionContentDirective, AccordionDirective, AccordionGroupComponent, AccordionGroupDirective, AccordionHintDirective, AccordionLabelDirective, AccordionPanelDirective, AccordionTriggerDirective, AvatarComponent, AvatarGroupComponent, BADGE_IMPORTS, BADGE_VARIANTS, BANNER_IMPORTS, BANNER_LABELS, BANNER_TYPES, BOLD_ICON, BRACKET_CARD_CONTEXT, BRACKET_DATA_LAYOUT, BRACKET_DEFAULTS, BRACKET_DENSITY, BRACKET_DENSITY_PRESETS, BRACKET_ERROR_CODES, BRACKET_IMPORTS, BRACKET_LABELS, BRACKET_ROUND_MIRROR_TYPE, BRACKET_SWISS_GROUP_COLOR_TYPE, BREADCRUMB_COLLAPSE_IMPORTS, BREADCRUMB_COLLAPSE_TOKEN, BREADCRUMB_ERROR_CODES, BREADCRUMB_IMPORTS, BREADCRUMB_LABELS, BREADCRUMB_SEGMENT_TOKEN, BREADCRUMB_SEO_IMPORTS, BREADCRUMB_TOKEN, BUTTON_ICON_ALIGNMENTS, BUTTON_IMPORTS, BUTTON_SIZES, BUTTON_SPINNER_CONFIG, BUTTON_TYPES, BUTTON_VARIANTS, BadgeComponent, BannerComponent, BracketComponent, BracketDefaultContinueComponent, BracketDefaultFinalMatchComponent, BracketDefaultMatchComponent, BracketDefaultRoundHeaderComponent, BracketMap, BracketRoundsListComponent, BrandLoaderComponent, BreadcrumbCollapseDirective, BreadcrumbComponent, BreadcrumbDirective, BreadcrumbItemDirective, BreadcrumbItemTemplateDirective, BreadcrumbOutletComponent, BreadcrumbOverflowComponent, BreadcrumbSegmentDirective, BreadcrumbSeoDirective, BreadcrumbSeparatorDirective, ButtonComponent, ButtonDirective, ButtonStylesDirective, CALENDAR_ERROR_CODES, CALENDAR_ICON, CALENDAR_IMPORTS, CALENDAR_LABELS, CARD_IMPORTS, CARD_VARIANTS, CAROUSEL_AUTOPLAY_TOKEN, CAROUSEL_ERROR_CODES, CAROUSEL_IMPORTS, CAROUSEL_LABELS, CAROUSEL_SLIDE_ALIGNMENTS, CAROUSEL_TOKEN, CAROUSEL_TRANSITIONS, CAROUSEL_TRANSITION_DRIVERS, CASCADER_ERROR_CODES, CASCADER_IMPORTS, CASCADER_LABELS, CASCADER_SELECTABLE_LEVELS, CHECKBOX_GROUP_IMPORTS, CHECKBOX_IMPORTS, CHECKBOX_OPTION_VARIANTS, CHECK_ICON, CHEVRON_ICON, CHIP_ERROR_CODES, CHIP_IMPORTS, CHIP_LABELS, CHOICE_FIELD_IMPORTS, CHOICE_FIELD_VARIANTS, CIRCLE_CHECK_ICON, CIRCLE_INFO_ICON, CLIPBOARD_CHECK_ICON, CLOCK_ICON, CODE_BLOCK_ICON, CODE_ICON, COLOR_INPUT_IMPORTS, COMMON_BRACKET_ROUND_TYPE, COPY_BUTTON_IMPORTS, CalendarCellDirective, CalendarComponent, CalendarDirective, CalendarGridDirective, CalendarHeaderDirective, CardComponent, CarouselAutoplayDirective, CarouselComponent, CarouselDirective, CarouselItemDirective, CarouselNextDirective, CarouselPlayToggleDirective, CarouselPreviousDirective, CarouselSlideDirective, CascaderColumnDirective, CascaderComponent, CascaderDirective, CascaderNodeDirective, CascaderPanelComponent, CascaderSearchDirective, CascaderSearchOptionDirective, CascaderSurfaceDirective, CascaderTriggerDirective, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxGroupSelectAllComponent, CheckboxOptionComponent, ChipComponent, ChipDirective, ChipRemoveDirective, ChoiceFieldComponent, ColorInputComponent, ColorInputDirective, CopyButtonDirective, CounterComponent, DAILYMOTION_PLAYER_TOKEN, DATE_FORMAT, DATE_INPUT_ERROR_CODES, DATE_INPUT_IMPORTS, DATE_LOCALE, DATE_PICKER_HOST, DATE_RANGE_INPUT_ERROR_CODES, DATE_RANGE_INPUT_IMPORTS, DATE_TIME_INPUT_ERROR_CODES, DATE_TIME_INPUT_IMPORTS, DATE_TIME_LABELS, DEFAULT_BANNER_LABELS, DEFAULT_BRACKET_LABELS, DEFAULT_BREADCRUMB_LABELS, DEFAULT_BREAKPOINTS, DEFAULT_CALENDAR_LABELS, DEFAULT_CALENDAR_RANGE_STRATEGY, DEFAULT_CAROUSEL_LABELS, DEFAULT_CASCADER_LABELS, DEFAULT_CHIP_LABELS, DEFAULT_DATE_TIME_LABELS, DEFAULT_DROPZONE_LABELS, DEFAULT_FILTER_OVERLAY_LABELS, DEFAULT_FORM_FIELD_LABELS, DEFAULT_GRID_LABELS, DEFAULT_ICON_VARIANT, DEFAULT_INPUT_LABELS, DEFAULT_LOADER_LABELS, DEFAULT_MATCH_CARD_START_TIME_FORMAT, DEFAULT_MATCH_LABELS, DEFAULT_NOTIFICATION_LABELS, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_NOTIFICATION_STATUS_ICONS, DEFAULT_PAGINATION_LABELS, DEFAULT_PHONE_INPUT_LABELS, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_QUERY_ERROR_LABELS, DEFAULT_RICH_TEXT_EDITOR_LABELS, DEFAULT_RICH_TEXT_EDITOR_TOOLS, DEFAULT_SCHEDULER_LABELS, DEFAULT_SELECT_LABELS, DEFAULT_SLIDER_LABELS, DEFAULT_STANDINGS_LABELS, DEFAULT_STREAM_LABELS, DEFAULT_STREAM_PLAYER_STATE, DEFAULT_TABLE_LABELS, DEFAULT_TIME_PICKER_LABELS, DESCRIPTION_IMPORTS, DESCRIPTION_LIST_IMPORTS, DIVIDER_IMPORTS, DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE, DROPZONE_ENTRY_STATUSES, DROPZONE_ERROR_CODES, DROPZONE_FILES_ERROR_KIND, DROPZONE_FILE_CONSTRAINTS, DROPZONE_FILE_REJECTION_REASONS, DROPZONE_IMPORTS, DROPZONE_LABELS, DURATION_INPUT_ERROR_CODES, DURATION_INPUT_IMPORTS, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DateInputComponent, DateInputDirective, DateInputFieldDirective, DatePickerPanelComponent, DatePickerSurfaceDirective, DatePickerTriggerDirective, DateRangeInputComponent, DateRangeInputDirective, DateRangeInputFieldDirective, DateTimeInputComponent, DateTimeInputDirective, DateTimeInputFieldDirective, DescriptionComponent, DescriptionListComponent, DividerComponent, DropzoneComponent, DropzoneDirective, DurationInputComponent, DurationInputDirective, DurationInputFieldDirective, ELLIPSIS_ICON, ELLIPSIS_VERTICAL_ICON, EMPTY_STATE_IMPORTS, ET_BUILT_IN_ICON_NAMES, EYE_ICON, EYE_SLASH_ICON, EmptyStateComponent, FACEBOOK_PLAYER_TOKEN, FILE_ICON, FILTER_ICON, FILTER_OVERLAY_ERROR_CODES, FILTER_OVERLAY_IMPORTS, FILTER_OVERLAY_LABELS, FILTER_OVERLAY_TOKEN, FLOATING_ACTION_ERROR_CODES, FLOATING_ACTION_IMPORTS, FLOATING_ACTION_STATES, FLOATING_ACTION_TOKEN, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, FORM_ERROR_MESSAGE_RESOLVER, FORM_FIELD_APPEARANCES, FORM_FIELD_CONTROL_TYPES, FORM_FIELD_ERROR_CODES, FORM_FIELD_FILLS, FORM_FIELD_IMPORTS, FORM_FIELD_LABELS, FORM_FIELD_LABEL_MODES, FORM_FIELD_SIZES, FORM_FIELD_TOKEN, FabComponent, FacebookPlayerComponent, FacebookPlayerDirective, FacebookPlayerParamsDirective, FacebookPlayerSlotComponent, FilterOverlayResetDirective, FilterOverlaySubmitDirective, FloatingActionAnchorDirective, FloatingActionDirective, FloatingActionScopeDirective, FloatingActionTopDirective, FloatingActionTriggerDirective, FocusRingDirective, FormErrorComponent, FormFieldComponent, FormFieldDirective, GERMAN_FILTER_OVERLAY_LABELS, GERMAN_QUERY_ERROR_LABELS, GRID_2X2_ICON, GRID_DEBUG_IMPORTS, GRID_ERROR_CODES, GRID_IMPORTS, GRID_LABELS, GRID_TOKEN, GROUP_BRACKET_ROUND_TYPE, GridComponent, GridDebugComponent, GridDirective, GridDragDirective, GridItemComponent, GridItemDefaultActionsComponent, GridItemDirective, GridItemRef, GridItemToolbarComponent, GridResizeDirective, HEADING_1_ICON, HEADING_2_ICON, HEADING_3_ICON, HintComponent, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, ICON_ERROR_CODES, ICON_IMPORTS, ICON_OVERRIDES_TOKEN, IMAGE_ICON, INITIAL_SUPPORT_PRESENTATION_STATE, INPUT_IMPORTS, INPUT_LABELS, INPUT_MASK_HOST, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, INTERACTIVE_TAGS, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputMaskDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOADER_LABELS, LOCATION_ICON, LOCK_ICON, LabelDirective, MASKED_INPUT_ERROR_CODES, MASKED_INPUT_IMPORTS, MASK_VALUE_MODES, MASONRY_ERROR_CODES, MASONRY_IMPORTS, MASONRY_TOKEN, MATCH_CARD_IMPORTS, MATCH_CARD_SIZES, MATCH_CARD_TOKEN, MATCH_ERROR_CODES, MATCH_LABELS, MATCH_PARTICIPANT_IMPORTS, MENU_ERROR_CODES, MENU_IMPORTS, MENU_ITEM_VARIANTS, MENU_SELECTION_GROUP_MULTIPLE, MENU_SELECTION_GROUP_TOKEN, MENU_SELECTION_ITEM_KIND, MINUS_ICON, MULTI_LANGUAGE_RICH_TEXT_EDITOR_ERROR_CODES, MULTI_LANGUAGE_RICH_TEXT_EDITOR_IMPORTS, MasonryDirective, MasonryItemDirective, MatchCardComponent, MatchCardDirective, MatchCardGameScoresDirective, MatchCardMetaDirective, MatchCardScoreDirective, MatchParticipantComponent, MatchScoreComponent, MenuCheckboxGroupComponent, MenuCheckboxItemComponent, MenuComponent, MenuContextTriggerDirective, MenuDirective, MenuGroupLabelComponent, MenuItemComponent, MenuItemDirective, MenuItemShortcutComponent, MenuPanelDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSearchDirective, MenuSelectionGroupDirective, MenuSelectionItemDirective, MenuSeparatorComponent, MenuSurfaceDirective, MenuTriggerDirective, MultiLanguageRichTextEditorComponent, MultiLanguageRichTextEditorDirective, MultiLanguageRichTextEditorLanguageToolComponent, NAV_TABS_TOKEN, NAV_TAB_IMPORTS, NOTIFICATION_ACTION_SLOTS, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_LABELS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NUMBER_INPUT_IMPORTS, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, NotificationSwipeToDismissDirective, NumberInputComponent, NumberInputDirective, OTP_INPUT_IMPORTS, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CONFIG_CLASS_KEYS, OVERLAY_CONTENT_IMPORTS, OVERLAY_ERROR_CODES, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_IMPORTS, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_REF, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_ROUTER_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OtpInputComponent, OtpInputDirective, OverlayAnchorDirective, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseDirective, OverlayContainerComponent, OverlayDirective, OverlayFooterDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlaySurfaceDirective, OverlayTitleDirective, OverlayTriggerDirective, PAGE_SIZE_SELECT_IMPORTS, PAGINATION_IMPORTS, PAGINATION_LABELS, PARAGRAPH_ICON, PASSWORD_INPUT_IMPORTS, PAUSE_ICON, PENCIL_ICON, PHONE_COUNTRIES, PHONE_INPUT_ERROR_CODES, PHONE_INPUT_IMPORTS, PHONE_INPUT_LABELS, PICTURE_IMPORTS, PICTURE_STATES, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLAY_ICON, PLUS_ICON, PROGRESS_STEPS_IMPORTS, PROGRESS_STEP_STATES, PageSizeSelectComponent, PaginationComponent, PaginationDirective, PaginationSeoDirective, PasswordInputComponent, PasswordInputDirective, PhoneInputComponent, PhoneInputDirective, PhoneInputFieldDirective, PhoneInputFlagDirective, PictureComponent, PictureErrorDirective, PicturePlaceholderDirective, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, ProgressStepComponent, ProgressStepsComponent, QUERY_DEVTOOLS_IMPORTS, QUERY_ERROR_ERROR_CODES, QUERY_ERROR_IMPORTS, QUERY_ERROR_LABELS, QUERY_ERROR_TOKEN, QUOTE_ICON, QueryDevtoolsComponent, QueryDevtoolsJsonComponent, QueryDevtoolsJsonStylesComponent, QueryDevtoolsTimelineStylesComponent, QueryDevtoolsToggleComponent, QueryErrorActionsDirective, QueryErrorComponent, QueryErrorDirective, QueryErrorTitleDirective, QueryParamOverlayLinkDirective, RADIO_GROUP_IMPORTS, RADIO_VARIANTS, RATING_IMPORTS, REDO_ICON, RICH_TEXT_EDITOR_FLOATING_TOOLBAR, RICH_TEXT_EDITOR_HEADING_OPTIONS, RICH_TEXT_EDITOR_IMPORTS, RICH_TEXT_EDITOR_INLINE_TOOLS, RICH_TEXT_EDITOR_LABELS, RICH_TEXT_EDITOR_LANGUAGE_TOOL, RICH_TEXT_EDITOR_LINK_EDITOR, RICH_TEXT_EDITOR_TOKEN_CODEC, RICH_TEXT_EDITOR_TOKEN_PALETTE_IMPORTS, RICH_TEXT_EDITOR_TOOL, RICH_TEXT_EDITOR_TOOLS, RICH_TEXT_EDITOR_TOOL_BUTTONS, RICH_TEXT_EDITOR_TRIGGERS_IMPORTS, ROTATE_RIGHT_ICON, RadioComponent, RadioGroupComponent, RangeSliderComponent, RangeSliderDirective, RatingComponent, RatingDirective, RatingIconDirective, RichTextEditorAlignToolComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, RichTextEditorFloatingToolbarDirective, RichTextEditorHeadingToolComponent, RichTextEditorImageEditorComponent, RichTextEditorImageStylesComponent, RichTextEditorImageToolComponent, RichTextEditorLinkEditorComponent, RichTextEditorLinkEditorDirective, RichTextEditorTableStylesComponent, RichTextEditorTableToolComponent, RichTextEditorTokenPaletteComponent, RichTextEditorTokenPopupComponent, RichTextEditorTriggersDirective, SCHEDULER_EDIT_SURFACE_HOST, SCHEDULER_EDIT_SURFACE_OVERLAY, SCHEDULER_ERROR_CODES, SCHEDULER_FEATURE_HOST, SCHEDULER_IMPORTS, SCHEDULER_LABELS, SCROLLABLE_DARKEN_IMPORTS, SCROLLABLE_DRAG_IMPORTS, SCROLLABLE_ERROR_CODES, SCROLLABLE_IMPORTS, SCROLLABLE_NAVIGATION_IMPORTS, SEGMENTED_BUTTON_GROUP_VARIANTS, SEGMENTED_BUTTON_IMPORTS, SELECTION_LIST_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SELECT_ERROR_CODES, SELECT_FILTER_MODES, SELECT_IMPORTS, SELECT_LABELS, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SINGLE_ELIMINATION_BRACKET_ROUND_TYPE, SKELETON_IMPORTS, SLIDER_ERROR_CODES, SLIDER_IMPORTS, SLIDER_LABELS, SLIDER_MARK_VALUE_ATTRIBUTE, SLIDER_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, SPLIT_BUTTON_ERROR_CODES, STANDINGS_ERROR_CODES, STANDINGS_IMPORTS, STANDINGS_LABELS, STAR_ICON, STREAM_ALL_IMPORTS, STREAM_CONSENT_TOKEN, STREAM_DAILYMOTION_IMPORTS, STREAM_FACEBOOK_IMPORTS, STREAM_IMPORTS, STREAM_KICK_IMPORTS, STREAM_LABELS, STREAM_PIP_IMPORTS, STREAM_PLAYER_COMPONENT_TOKEN, STREAM_PLAYER_ERROR_CONTEXT_TOKEN, STREAM_PLAYER_ERROR_TOKEN, STREAM_PLAYER_PARAMS_TOKEN, STREAM_PLAYER_SLOT_TOKEN, STREAM_PLAYER_TOKEN, STREAM_SLOT_PLAYER_ID_TOKEN, STREAM_SOOP_IMPORTS, STREAM_TIKTOK_IMPORTS, STREAM_TWITCH_IMPORTS, STREAM_USER_CONSENT_PROVIDER_TOKEN, STREAM_VIMEO_IMPORTS, STREAM_YOUTUBE_IMPORTS, STRIKETHROUGH_ICON, SUPPORT_CONTENT_STATE, SUPPORT_TRANSITION_DIRECTION, SWISS_BRACKET_ROUND_TYPE, SWITCH_IMPORTS, SchedulerActionAddAppointmentDirective, SchedulerActionAddSubAppointmentDirective, SchedulerActionDeleteDirective, SchedulerAgendaDirective, SchedulerAgendaViewComponent, SchedulerBadgeChainCountComponent, SchedulerBadgeChainCountDirective, SchedulerBadgeColorDotComponent, SchedulerBadgeColorDotDirective, SchedulerBadgeLocationComponent, SchedulerBadgeLocationDirective, SchedulerBadgeTimeRangeComponent, SchedulerBadgeTimeRangeDirective, SchedulerBadgeTitleComponent, SchedulerBadgeTitleDirective, SchedulerComponent, SchedulerDirective, SchedulerEditColorComponent, SchedulerEditColorDirective, SchedulerEditDescriptionComponent, SchedulerEditDescriptionDirective, SchedulerEditLocationComponent, SchedulerEditLocationDirective, SchedulerEditSurfaceComponent, SchedulerEditSurfaceDirective, SchedulerEditTimeRangeComponent, SchedulerEditTimeRangeDirective, SchedulerEditTitleComponent, SchedulerEditTitleDirective, SchedulerMonthDirective, SchedulerMonthViewComponent, SchedulerTimeGridDirective, SchedulerTimeGridViewComponent, ScrollableActiveChildDirective, ScrollableButtonsComponent, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksComponent, ScrollableNavigationComponent, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectComponent, SelectDirective, SelectEmptyDirective, SelectErrorDirective, SelectListboxDirective, SelectLoadingDirective, SelectOptionComponent, SelectOptionDirective, SelectOptionGroupComponent, SelectOptionGroupDirective, SelectOptionTemplateDirective, SelectOptionsDirective, SelectPanelComponent, SelectSearchDirective, SelectSurfaceDirective, SelectTriggerDirective, SelectValueDirective, SelectViewportDirective, SelectVirtualOptionComponent, SelectVirtualOptionDirective, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SkeletonComponent, SkeletonItemComponent, SkeletonTextComponent, SliderComponent, SliderDirective, SliderThumbDirective, SliderThumbLabelDirective, SliderTrackDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, SplitButtonActionDirective, SplitButtonComponent, SplitButtonDirective, SplitButtonTriggerDirective, StandingsComponent, StandingsDirective, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, TABLE_CELL_ERROR_TOOLTIP_IMPORTS, TABLE_COLUMN_CHOOSER_IMPORTS, TABLE_COLUMN_MENU_IMPORTS, TABLE_CSV_EXPORT_IMPORTS, TABLE_ERROR_CODES, TABLE_FEATURE_HOST, TABLE_FILTER_IMPORTS, TABLE_GROUP_HEADERS_IMPORTS, TABLE_ICON, TABLE_IMPORTS, TABLE_INLINE_EDIT_IMPORTS, TABLE_KEYBOARD_NAV_IMPORTS, TABLE_LABELS, TABLE_REORDER_IMPORTS, TABLE_RESIZE_IMPORTS, TABLE_ROW_EXPANSION_IMPORTS, TABLE_SELECTION_IMPORTS, TABLE_SKELETON_IMPORTS, TABLE_STATE_PERSISTENCE_IMPORTS, TABLE_STICKY_COLUMNS_IMPORTS, TABLE_VIRTUAL_SCROLL_IMPORTS, TAB_BAR_FITS, TAB_BAR_ORIENTATIONS, TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN, TAB_BAR_VARIANTS, TAB_ERROR_CODES, TAB_GROUP_TOKEN, TAB_IMPORTS, TAB_PANEL_TOKEN, TAB_SIZES, TAG_INPUT_ERROR_CODES, TAG_INPUT_IMPORTS, TEXTAREA_IMPORTS, TEXTAREA_RESIZE_MODES, TEXT_ALIGNS, TIKTOK_PLAYER_TOKEN, TIMES_ICON, TIME_FORMAT, TIME_INPUT_ERROR_CODES, TIME_INPUT_IMPORTS, TIME_PICKER_ERROR_CODES, TIME_PICKER_IMPORTS, TIME_PICKER_LABELS, TOGGLETIP_ERROR_CODES, TOGGLETIP_IMPORTS, TOOLBAR_IMPORTS, TOOLBAR_ORIENTATIONS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TOURNAMENT_MODE, TRASH_ICON, TRIANGLE_EXCLAMATION_ICON, TROPHY_ICON, TWITCH_PLAYER_TOKEN, TabBarDirective, TabBarTriggerDirective, TabBarUnderlineDirective, TabComponent, TabGroupComponent, TabGroupDirective, TabLabelDirective, TabPanelDirective, TabTriggerDirective, TableCellDirective, TableCellEditDirective, TableCellErrorMarkComponent, TableCellErrorTooltipDirective, TableCellSkeletonDirective, TableColumnChooserComponent, TableColumnMenuDirective, TableColumnMenuTriggerComponent, TableComponent, TableCsvExportDirective, TableDetailStylesComponent, TableExpanderCellComponent, TableFilterOptionDirective, TableFilterTriggerComponent, TableFiltersDirective, TableFooterCellDirective, TableFooterDirective, TableGroupHeaderRowComponent, TableGroupHeadersDirective, TableHeaderCellDirective, TableInlineEditDirective, TableInlineEditStylesComponent, TableKeyboardNavDirective, TableReorderDirective, TableReorderOverlayComponent, TableResizeDirective, TableResizeGripComponent, TableRowDetailComponent, TableRowExpansionDirective, TableSelectAllCellComponent, TableSelectCellComponent, TableSelectionDirective, TableSkeletonDirective, TableSkeletonRowsComponent, TableStatePersistenceDirective, TableStickyColumnsDirective, TableVirtualScrollDirective, TableVirtualScrollStylesComponent, TagInputComponent, TagInputDirective, TagInputFieldDirective, TextButtonComponent, TextFieldControlDirective, TextareaComponent, TextareaDirective, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, TimeInputComponent, TimeInputDirective, TimeInputFieldDirective, TimePickerColumnDirective, TimePickerComponent, TimePickerDirective, TimePickerOptionDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, ToolbarComponent, ToolbarDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, UNDERLINE_ICON, UNDO_ICON, UNIT_MS, UPLOAD_ICON, VIMEO_PLAYER_TOKEN, VimeoPlayerComponent, VimeoPlayerDirective, VimeoPlayerParamsDirective, VimeoPlayerSlotComponent, WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent, YOUTUBE_PLAYER_SLOT_TOKEN, YOUTUBE_PLAYER_TOKEN, YoutubePlayerComponent, YoutubePlayerDirective, YoutubePlayerParamsDirective, YoutubePlayerSlotComponent, YoutubePlayerSlotDirective, abortFullscreenAnimation, anchoredDialogOverlayStrategy, anchoredOverlayStrategy, autoPlace, bottomSheetOverlayStrategy, bracketFitsWidth, bracketNaturalWidth, buildAnchoredRuntimePositionStrategy, canHaveChildren, cascaderFromQuery, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, countDescendants, createAnchoredPanelController, createAutoScroller, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createFixedLengthRangeStrategy, createGridAdapter, createIbanMask, createNormalizedBracketMatch, createNotificationPromiseFn, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createOverlayUnsavedChangesGuard, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, createStreamConfig, createStreamPlayerSlot, createTableRowsSource, createTableStateStorage, createV2DropzoneUpload, createWeekRangeStrategy, defaultCompareWith, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deriveDurationFormatSpec, deserializeGridLayout, deserializeTableState, dialogOverlayStrategy, disposeDropzoneEntry, doubleEliminationBracketLayout, dropzoneFiles, enableDragToDismiss, extractFirstImageUrl, filterOverlayLabelsForLocale, filterOverlayPreviewFromQuery, filterRows, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatDuration, formatFileSize, fromGridPosition, fullScreenDialogOverlayStrategy, generateBracketDataForEthlete, generateRoundTypeFromEthleteRoundType, generateTournamentModeFormEthleteRounds, getClosestOverlay, getOriginCoordinatesAndDimensions, hysteresisRound, iconRegistryKey, indexOfNode, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBannerLabels, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectBracketConfig, injectBracketLabels, injectBreadcrumbLabels, injectBreadcrumbManager, injectCalendarLabels, injectCarouselLabels, injectCascaderLabels, injectChipLabels, injectDateFormat, injectDateLocale, injectDateTimeLabels, injectDialogStrategy, injectDialogStrategyDefaults, injectDropzoneLabels, injectFilterOverlay, injectFilterOverlayLabels, injectFormFieldLabels, injectFormSupport, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectGridConfig, injectGridLabels, injectInputLabels, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectLoaderLabels, injectMatchLabels, injectNotificationLabels, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectOverlayRouter, injectOverlayScrollBlocker, injectOverlaySurfaceContext, injectPaginationLabels, injectPhoneInputLabels, injectPictureConfig, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectQueryErrorLabels, injectRichTextEditorLabels, injectRichTextEditorTools, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectSchedulerEditSurfaceHost, injectSchedulerFeatureHost, injectSchedulerLabels, injectSelectLabels, injectSidebarOverlay, injectSliderLabels, injectStandingsLabels, injectStreamConfig, injectStreamConsentConfig, injectStreamLabels, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, injectTableCsvExport, injectTableFeatureHost, injectTableLabels, injectTimeFormat, injectTimePickerLabels, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isFileAccepted, isHtmlElement, isInteractiveElement, isPointerEvent, isTargetInsideOverlayTree, isTouchEvent, itemsCollide, kindOf, leftSheetOverlayStrategy, legacyQueryErrorSource, mapLayoutToBreakpoint, matchCountryByDialCode, matchParticipantDisplayName, mergeOverlayBreakpointConfigs, mergeOverlayConfigs, mirroredDoubleEliminationBracketLayout, mirroredSingleEliminationBracketLayout, mountRichTextEditorImageStyles, mountRichTextEditorTableStyles, nodesEqual, normalizeEthleteBracketMatch, normalizeEthleteGroupRanking, normalizeEthleteMatch, normalizeEthleteMatchStatus, normalizeEthleteMedia, normalizeEthleteParticipant, normalizeEthletePlacement, normalizePictureSizes, normalizePictureSource, paginate, parseDuration, phoneCountryFlag, phoneCountryName, pixelRectsEqual, positionToPixelRect, positionsEqual, projectDragCell, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBannerLabels, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideBracketConfig, provideBracketLabels, provideBreadcrumbLabels, provideBreadcrumbManager, provideCalendarLabels, provideCarouselLabels, provideCascaderLabels, provideChipLabels, provideDateFormat, provideDateLocale, provideDateTimeLabels, provideDialogStrategy, provideDialogStrategyDefaults, provideDropzoneLabels, provideFilterOverlay, provideFilterOverlayLabels, provideFormErrorMessageResolver, provideFormFieldLabels, provideFormSupport, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideGridConfig, provideGridLabels, provideIconOverrides, provideIcons, provideInputLabels, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideLoaderLabels, provideMatchLabels, provideNotificationLabels, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlay, provideOverlayManager, provideOverlayRouter, provideOverlayRouterConfig, provideOverlayRouterService, provideOverlayScrollBlocker, providePaginationLabels, providePhoneInputLabels, providePictureConfig, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideQueryErrorLabels, provideRichTextEditorAlignmentTool, provideRichTextEditorAutoformat, provideRichTextEditorBlockquoteTool, provideRichTextEditorCodeBlockTool, provideRichTextEditorDefaultTools, provideRichTextEditorFloatingToolbar, provideRichTextEditorHeadingTool, provideRichTextEditorImageTool, provideRichTextEditorLabels, provideRichTextEditorLanguageTool, provideRichTextEditorLinkEditor, provideRichTextEditorLinkTool, provideRichTextEditorTableTool, provideRichTextEditorTokenRendering, provideRichTextEditorTools, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSchedulerLabels, provideSelectLabels, provideSidebarOverlay, provideSidebarOverlayConfig, provideSidebarOverlayService, provideSliderLabels, provideStandingsLabels, provideStreamConfig, provideStreamConsentConfig, provideStreamLabels, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, provideTableLabels, provideTimeFormat, provideTimePickerLabels, provideTopSheetStrategy, provideTopSheetStrategyDefaults, queryErrorLabelsForLocale, queryErrorResponseFromLegacyError, reconcileColumnOrder, reconcileColumnWidths, reconcileHiddenColumns, reduceSupportPresentation, registerSingleton, requiredLanguages, resizeSpanBounds, resolveBracketLayout, resolveBreakpoint, resolveClosestOverlay, resolveCollisions, resolveFilterOverlaySubmitButton, resolveNotificationStatusIcon, resolveTableCsvRows, richTextEditorToolLabel, rightSheetOverlayStrategy, rowsToPixelHeight, schedulerFeatureConfig, selectOptionsFromQuery, selectOptionsFromV2Query, serializeGridLayout, serializeTableState, setupRichTextEditorFloatingToolbar, setupRichTextEditorLinkEditor, singleEliminationBracketLayout, snapResizeSpan, sortRows, spanHeight, spanWidth, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, startImageUpload, startOfCalendarUnit, stripTrunkZero, supportPresentationIncludesState, swissBracketLayout, tableCsvRowsFromPages, tableFeatureConfig, tableRowsFromQuery, tableRowsFromV2Query, tableToCsv, toChildrenObservable, toGridPosition, toNotificationContent, toPathObservable, toSearchObservable, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy, wireFormSupport, withPictureBaseUrl };
|
|
63758
64811
|
//# sourceMappingURL=ethlete-components.mjs.map
|