@frame-ui-ng/components 0.4.0-beta.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/confirm-popover/src/styles/confirm-popover.css +20 -0
- package/drag-drop/src/styles/_vars.css +28 -0
- package/drag-drop/src/styles/drag-drop.css +132 -0
- package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
- package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
- package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-calendar.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
- package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
- package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
- package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
- package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
- package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
- package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
- package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
- package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
- package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
- package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
- package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +128 -114
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
- package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
- package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
- package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
- package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +1387 -552
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/package.json +10 -2
- package/popover/src/styles/popover.css +106 -101
- package/src/styles/components.css +6 -4
- package/styles/components.css +6 -4
- package/styles.css +6 -4
- package/types/frame-ui-ng-components-accordion.d.ts +11 -4
- package/types/frame-ui-ng-components-alert.d.ts +4 -0
- package/types/frame-ui-ng-components-avatar.d.ts +7 -0
- package/types/frame-ui-ng-components-badge.d.ts +4 -0
- package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
- package/types/frame-ui-ng-components-button-group.d.ts +1 -0
- package/types/frame-ui-ng-components-button.d.ts +5 -0
- package/types/frame-ui-ng-components-calendar.d.ts +1 -0
- package/types/frame-ui-ng-components-card.d.ts +8 -3
- package/types/frame-ui-ng-components-carousel.d.ts +11 -2
- package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
- package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
- package/types/frame-ui-ng-components-combobox.d.ts +32 -3
- package/types/frame-ui-ng-components-command.d.ts +26 -4
- package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
- package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
- package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
- package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
- package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
- package/types/frame-ui-ng-components-empty.d.ts +6 -0
- package/types/frame-ui-ng-components-field.d.ts +9 -0
- package/types/frame-ui-ng-components-forms.d.ts +1 -0
- package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
- package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
- package/types/frame-ui-ng-components-input.d.ts +13 -0
- package/types/frame-ui-ng-components-item.d.ts +10 -0
- package/types/frame-ui-ng-components-menubar.d.ts +15 -0
- package/types/frame-ui-ng-components-modal.d.ts +12 -0
- package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
- package/types/frame-ui-ng-components-pagination.d.ts +8 -0
- package/types/frame-ui-ng-components-popover.d.ts +14 -2
- package/types/frame-ui-ng-components-progress.d.ts +2 -0
- package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
- package/types/frame-ui-ng-components-resizable.d.ts +3 -0
- package/types/frame-ui-ng-components-select.d.ts +23 -2
- package/types/frame-ui-ng-components-separator.d.ts +1 -0
- package/types/frame-ui-ng-components-sheet.d.ts +11 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
- package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
- package/types/frame-ui-ng-components-slider.d.ts +5 -2
- package/types/frame-ui-ng-components-spinner.d.ts +1 -0
- package/types/frame-ui-ng-components-switch.d.ts +6 -0
- package/types/frame-ui-ng-components-table.d.ts +26 -0
- package/types/frame-ui-ng-components-tabs.d.ts +4 -0
- package/types/frame-ui-ng-components-textarea.d.ts +1 -0
- package/types/frame-ui-ng-components-toast.d.ts +2 -0
- package/types/frame-ui-ng-components-toggle.d.ts +8 -2
- package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
- package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
- package/types/frame-ui-ng-components.d.ts +492 -76
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, ElementRef,
|
|
2
|
+
import { InjectionToken, inject, ElementRef, Directive, input, booleanAttribute, computed, output, linkedSignal, signal, Component, contentChild, forwardRef, ChangeDetectionStrategy, DestroyRef, TemplateRef, viewChild, model, afterNextRender, Renderer2, ViewContainerRef, Injectable, PLATFORM_ID, numberAttribute, Injector } from '@angular/core';
|
|
3
3
|
import * as i1 from '@frame-ui-ng/components/spinner';
|
|
4
4
|
import { FrSpinner } from '@frame-ui-ng/components/spinner';
|
|
5
|
-
import { NgTemplateOutlet, NgClass, NgComponentOutlet, DOCUMENT } from '@angular/common';
|
|
5
|
+
import { NgTemplateOutlet, isPlatformBrowser, NgClass, NgComponentOutlet, DOCUMENT } from '@angular/common';
|
|
6
6
|
import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
|
|
7
7
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
8
|
import { fromEvent } from 'rxjs';
|
|
9
9
|
import * as i1$1 from '@frame-ui-ng/components/button';
|
|
10
10
|
import { FrButton as FrButton$1, FrButtonLabel as FrButtonLabel$1 } from '@frame-ui-ng/components/button';
|
|
11
|
-
import { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
|
|
11
|
+
import { CdkOverlayOrigin, CdkConnectedOverlay, Overlay } from '@angular/cdk/overlay';
|
|
12
12
|
import { FrControlValueAccessor as FrControlValueAccessor$1, provideDsValueAccessor as provideDsValueAccessor$1 } from '@frame-ui-ng/components/forms';
|
|
13
13
|
import { Dialog, DialogRef, DIALOG_DATA } from '@angular/cdk/dialog';
|
|
14
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
14
15
|
import * as i1$2 from '@angular/cdk/menu';
|
|
15
16
|
import { CdkMenu, CdkTargetMenuAim, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuGroup, CdkMenuItemRadio, CdkMenuTrigger, CdkContextMenuTrigger } from '@angular/cdk/menu';
|
|
16
17
|
import * as i1$3 from '@frame-ui-ng/components/dropdown-menu';
|
|
@@ -22,23 +23,29 @@ import { clampNumber, coerceNumber } from '@frame-ui-ng/components/utils';
|
|
|
22
23
|
const ACCORDION_ROOT = new InjectionToken('FrAccordion');
|
|
23
24
|
const ACCORDION_ITEM = new InjectionToken('FrAccordionItem');
|
|
24
25
|
|
|
26
|
+
/** Content slot for accordion. */
|
|
25
27
|
class FrAccordionContent {
|
|
26
28
|
host = inject(ElementRef);
|
|
27
29
|
item = inject(ACCORDION_ITEM);
|
|
28
30
|
initialized = false;
|
|
31
|
+
lastOpen = false;
|
|
29
32
|
rafIds = [];
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
ngAfterViewInit() {
|
|
34
|
+
this.lastOpen = this.item.open();
|
|
35
|
+
this.applyStaticState(this.lastOpen);
|
|
36
|
+
this.initialized = true;
|
|
37
|
+
}
|
|
38
|
+
ngDoCheck() {
|
|
39
|
+
const open = this.item.open();
|
|
40
|
+
if (!this.initialized || open === this.lastOpen) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.cancelAnimationFrame();
|
|
44
|
+
this.lastOpen = open;
|
|
45
|
+
this.animate(open);
|
|
46
|
+
}
|
|
47
|
+
ngOnDestroy() {
|
|
48
|
+
this.cancelAnimationFrame();
|
|
42
49
|
}
|
|
43
50
|
onTransitionEnd(event) {
|
|
44
51
|
if (event.target !== this.host.nativeElement || event.propertyName !== 'height') {
|
|
@@ -115,9 +122,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
115
122
|
'role': 'region',
|
|
116
123
|
},
|
|
117
124
|
}]
|
|
118
|
-
}]
|
|
125
|
+
}] });
|
|
119
126
|
|
|
120
127
|
let accordionItemId = 0;
|
|
128
|
+
/** Item slot for accordion. */
|
|
121
129
|
class FrAccordionItem {
|
|
122
130
|
root = inject(ACCORDION_ROOT);
|
|
123
131
|
itemId = ++accordionItemId;
|
|
@@ -150,18 +158,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
150
158
|
}]
|
|
151
159
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
152
160
|
|
|
161
|
+
/** Accordion component primitive. */
|
|
153
162
|
class FrAccordion {
|
|
154
163
|
type = input('single', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
155
164
|
border = input(true, { ...(ngDevMode ? { debugName: "border" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
156
165
|
collapsible = input(false, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
157
166
|
defaultValue = input(null, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
|
|
158
167
|
valueChange = output();
|
|
159
|
-
openItems =
|
|
160
|
-
constructor() {
|
|
161
|
-
effect(() => {
|
|
162
|
-
this.openItems.set(this.normalizeValues(this.defaultValue(), this.type()));
|
|
163
|
-
});
|
|
164
|
-
}
|
|
168
|
+
openItems = linkedSignal(() => this.normalizeValues(this.defaultValue(), this.type()), ...(ngDevMode ? [{ debugName: "openItems" }] : /* istanbul ignore next */ []));
|
|
165
169
|
isItemOpen(value) {
|
|
166
170
|
return this.openItems().includes(value);
|
|
167
171
|
}
|
|
@@ -217,8 +221,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
217
221
|
'[attr.data-type]': 'type()',
|
|
218
222
|
},
|
|
219
223
|
}]
|
|
220
|
-
}],
|
|
224
|
+
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
221
225
|
|
|
226
|
+
/** Trigger control for accordion. */
|
|
222
227
|
class FrAccordionTrigger {
|
|
223
228
|
item = inject(ACCORDION_ITEM);
|
|
224
229
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -242,6 +247,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
242
247
|
},
|
|
243
248
|
}]
|
|
244
249
|
}] });
|
|
250
|
+
/** Icon slot for accordion. */
|
|
245
251
|
class FrAccordionIcon {
|
|
246
252
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
247
253
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAccordionIcon, isStandalone: true, selector: "[frAccordionIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-accordion__icon" }, ngImport: i0 });
|
|
@@ -267,6 +273,7 @@ const FR_ALERT_VARIANTS = [
|
|
|
267
273
|
'danger',
|
|
268
274
|
'info',
|
|
269
275
|
];
|
|
276
|
+
/** Alert component primitive. */
|
|
270
277
|
class FrAlert {
|
|
271
278
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
272
279
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAlert, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -283,6 +290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
283
290
|
},
|
|
284
291
|
}]
|
|
285
292
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
293
|
+
/** Icon slot for alert. */
|
|
286
294
|
class FrAlertIcon {
|
|
287
295
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAlertIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
288
296
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAlertIcon, isStandalone: true, selector: "[frAlertIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-alert__icon" }, ngImport: i0 });
|
|
@@ -297,6 +305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
297
305
|
},
|
|
298
306
|
}]
|
|
299
307
|
}] });
|
|
308
|
+
/** Title slot for alert. */
|
|
300
309
|
class FrAlertTitle {
|
|
301
310
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAlertTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
302
311
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAlertTitle, isStandalone: true, selector: "[frAlertTitle]", host: { classAttribute: "frame-alert__title" }, ngImport: i0 });
|
|
@@ -310,6 +319,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
310
319
|
},
|
|
311
320
|
}]
|
|
312
321
|
}] });
|
|
322
|
+
/** Description slot for alert. */
|
|
313
323
|
class FrAlertDescription {
|
|
314
324
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAlertDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
315
325
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAlertDescription, isStandalone: true, selector: "[frAlertDescription]", host: { classAttribute: "frame-alert__description" }, ngImport: i0 });
|
|
@@ -324,6 +334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
324
334
|
}]
|
|
325
335
|
}] });
|
|
326
336
|
|
|
337
|
+
/** Badge slot for avatar. */
|
|
327
338
|
class FrAvatarBadge {
|
|
328
339
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAvatarBadge, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
329
340
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAvatarBadge, isStandalone: true, selector: "[frAvatarBadge]", host: { classAttribute: "frame-avatar__badge" }, ngImport: i0 });
|
|
@@ -341,6 +352,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
341
352
|
|
|
342
353
|
const AVATAR_ROOT = new InjectionToken('FrAvatar');
|
|
343
354
|
|
|
355
|
+
/** Avatar fallback component primitive. */
|
|
344
356
|
class FrAvatarFallback {
|
|
345
357
|
root = inject(AVATAR_ROOT);
|
|
346
358
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAvatarFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -359,6 +371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
359
371
|
}]
|
|
360
372
|
}] });
|
|
361
373
|
|
|
374
|
+
/** Group slot for avatar. */
|
|
362
375
|
class FrAvatarGroup {
|
|
363
376
|
expandOnHover = input(false, { ...(ngDevMode ? { debugName: "expandOnHover" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
364
377
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
@@ -377,6 +390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
377
390
|
},
|
|
378
391
|
}]
|
|
379
392
|
}], propDecorators: { expandOnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandOnHover", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
393
|
+
/** Avatar group count component primitive. */
|
|
380
394
|
class FrAvatarGroupCount {
|
|
381
395
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAvatarGroupCount, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
382
396
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAvatarGroupCount, isStandalone: true, selector: "[frAvatarGroupCount]", host: { classAttribute: "frame-avatar-group__count" }, ngImport: i0 });
|
|
@@ -392,6 +406,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
392
406
|
}]
|
|
393
407
|
}] });
|
|
394
408
|
|
|
409
|
+
/** Icon slot for avatar. */
|
|
395
410
|
class FrAvatarIcon {
|
|
396
411
|
root = inject(AVATAR_ROOT);
|
|
397
412
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAvatarIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -410,6 +425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
410
425
|
}]
|
|
411
426
|
}] });
|
|
412
427
|
|
|
428
|
+
/** Avatar image component primitive. */
|
|
413
429
|
class FrAvatarImage {
|
|
414
430
|
host = inject(ElementRef);
|
|
415
431
|
root = inject(AVATAR_ROOT);
|
|
@@ -445,6 +461,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
445
461
|
}]
|
|
446
462
|
}] });
|
|
447
463
|
|
|
464
|
+
/** Avatar component primitive. */
|
|
448
465
|
class FrAvatar {
|
|
449
466
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
450
467
|
status = signal('idle', ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
@@ -481,6 +498,7 @@ const FR_BADGE_VARIANTS = [
|
|
|
481
498
|
'link',
|
|
482
499
|
];
|
|
483
500
|
const FR_BADGE_ICON_POSITIONS = ['inline-start', 'inline-end'];
|
|
501
|
+
/** Inline badge host with variant styling. */
|
|
484
502
|
class FrBadge {
|
|
485
503
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
486
504
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBadge, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -496,6 +514,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
496
514
|
},
|
|
497
515
|
}]
|
|
498
516
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
517
|
+
/** Icon slot for badge. */
|
|
499
518
|
class FrBadgeIcon {
|
|
500
519
|
position = input('inline-start', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
501
520
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBadgeIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -512,6 +531,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
512
531
|
},
|
|
513
532
|
}]
|
|
514
533
|
}], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
|
|
534
|
+
/** Label slot for badge. */
|
|
515
535
|
class FrBadgeLabel {
|
|
516
536
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBadgeLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
517
537
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBadgeLabel, isStandalone: true, selector: "[frBadgeLabel]", host: { classAttribute: "frame-badge__label" }, ngImport: i0 });
|
|
@@ -525,6 +545,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
525
545
|
},
|
|
526
546
|
}]
|
|
527
547
|
}] });
|
|
548
|
+
/** Loading indicator slot for badge. */
|
|
528
549
|
class FrBadgeSpinner {
|
|
529
550
|
position = input('inline-start', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
530
551
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBadgeSpinner, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -550,6 +571,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
550
571
|
}]
|
|
551
572
|
}], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
|
|
552
573
|
|
|
574
|
+
/** Breadcrumb navigation landmark. */
|
|
553
575
|
class FrBreadcrumb {
|
|
554
576
|
ariaLabel = input('breadcrumb', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
555
577
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -565,6 +587,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
565
587
|
},
|
|
566
588
|
}]
|
|
567
589
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }] } });
|
|
590
|
+
/** List slot for breadcrumb. */
|
|
568
591
|
class FrBreadcrumbList {
|
|
569
592
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
570
593
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbList, isStandalone: true, selector: "ol[frBreadcrumbList], ul[frBreadcrumbList], [frBreadcrumbList]", host: { classAttribute: "frame-breadcrumb__list" }, ngImport: i0 });
|
|
@@ -578,6 +601,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
578
601
|
},
|
|
579
602
|
}]
|
|
580
603
|
}] });
|
|
604
|
+
/** Item slot for breadcrumb. */
|
|
581
605
|
class FrBreadcrumbItem {
|
|
582
606
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
583
607
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbItem, isStandalone: true, selector: "li[frBreadcrumbItem], [frBreadcrumbItem]", host: { classAttribute: "frame-breadcrumb__item" }, ngImport: i0 });
|
|
@@ -591,6 +615,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
591
615
|
},
|
|
592
616
|
}]
|
|
593
617
|
}] });
|
|
618
|
+
/** Navigable link inside a breadcrumb item. */
|
|
594
619
|
class FrBreadcrumbLink {
|
|
595
620
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
596
621
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbLink, isStandalone: true, selector: "a[frBreadcrumbLink], [frBreadcrumbLink]", host: { classAttribute: "frame-breadcrumb__link" }, ngImport: i0 });
|
|
@@ -604,6 +629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
604
629
|
},
|
|
605
630
|
}]
|
|
606
631
|
}] });
|
|
632
|
+
/** Page slot for breadcrumb. */
|
|
607
633
|
class FrBreadcrumbPage {
|
|
608
634
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbPage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
609
635
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbPage, isStandalone: true, selector: "[frBreadcrumbPage]", host: { attributes: { "aria-current": "page" }, classAttribute: "frame-breadcrumb__page" }, ngImport: i0 });
|
|
@@ -618,6 +644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
618
644
|
},
|
|
619
645
|
}]
|
|
620
646
|
}] });
|
|
647
|
+
/** Separator slot for breadcrumb. */
|
|
621
648
|
class FrBreadcrumbSeparator {
|
|
622
649
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
623
650
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbSeparator, isStandalone: true, selector: "[frBreadcrumbSeparator]", host: { attributes: { "aria-hidden": "true", "role": "presentation" }, classAttribute: "frame-breadcrumb__separator" }, ngImport: i0 });
|
|
@@ -633,12 +660,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
633
660
|
},
|
|
634
661
|
}]
|
|
635
662
|
}] });
|
|
663
|
+
/** Ellipsis slot for breadcrumb. */
|
|
636
664
|
class FrBreadcrumbEllipsis {
|
|
637
665
|
label = input('More pages', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
638
666
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbEllipsis, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
639
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrBreadcrumbEllipsis, isStandalone: true, selector: "[frBreadcrumbEllipsis], frame-breadcrumb-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-breadcrumb__ellipsis" }, ngImport: i0, template: `
|
|
640
|
-
<span aria-hidden="true">...</span>
|
|
641
|
-
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
667
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrBreadcrumbEllipsis, isStandalone: true, selector: "[frBreadcrumbEllipsis], frame-breadcrumb-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-breadcrumb__ellipsis" }, ngImport: i0, template: `
|
|
668
|
+
<span aria-hidden="true">...</span>
|
|
669
|
+
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
642
670
|
`, isInline: true });
|
|
643
671
|
}
|
|
644
672
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbEllipsis, decorators: [{
|
|
@@ -649,9 +677,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
649
677
|
class: 'frame-breadcrumb__ellipsis',
|
|
650
678
|
'role': 'presentation',
|
|
651
679
|
},
|
|
652
|
-
template: `
|
|
653
|
-
<span aria-hidden="true">...</span>
|
|
654
|
-
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
680
|
+
template: `
|
|
681
|
+
<span aria-hidden="true">...</span>
|
|
682
|
+
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
655
683
|
`,
|
|
656
684
|
}]
|
|
657
685
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
@@ -664,6 +692,7 @@ const FR_BUTTON_APPEARANCES = [
|
|
|
664
692
|
const FR_BUTTON_LOADING_DISPLAYS = ['inline', 'replace'];
|
|
665
693
|
const FR_BUTTON_RADII = ['full', 'lg', 'md', 'none', 'sm'];
|
|
666
694
|
const FR_BUTTON_SIZES = ['sm', 'md', 'lg'];
|
|
695
|
+
/** Button host with FrameUI size and appearance variants. */
|
|
667
696
|
class FrButton {
|
|
668
697
|
loadingIndicator = contentChild(FrButtonLoading, ...(ngDevMode ? [{ debugName: "loadingIndicator" }] : /* istanbul ignore next */ []));
|
|
669
698
|
spinnerIndicator = contentChild(FrSpinner, ...(ngDevMode ? [{ debugName: "spinnerIndicator" }] : /* istanbul ignore next */ []));
|
|
@@ -699,6 +728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
699
728
|
},
|
|
700
729
|
}]
|
|
701
730
|
}], propDecorators: { loadingIndicator: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FrButtonLoading), { isSignal: true }] }], spinnerIndicator: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FrSpinner), { isSignal: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingDisplay", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
731
|
+
/** Icon-only button host with square sizing. */
|
|
702
732
|
class FrIconButton {
|
|
703
733
|
ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
704
734
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrIconButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -721,6 +751,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
721
751
|
},
|
|
722
752
|
}]
|
|
723
753
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }] } });
|
|
754
|
+
/** Icon slot for button. */
|
|
724
755
|
class FrButtonIcon {
|
|
725
756
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
726
757
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrButtonIcon, isStandalone: true, selector: "[frButtonIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-button__icon" }, ngImport: i0 });
|
|
@@ -735,6 +766,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
735
766
|
},
|
|
736
767
|
}]
|
|
737
768
|
}] });
|
|
769
|
+
/** Label slot for button. */
|
|
738
770
|
class FrButtonLabel {
|
|
739
771
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
740
772
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrButtonLabel, isStandalone: true, selector: "[frButtonLabel]", host: { classAttribute: "frame-button__label" }, ngImport: i0 });
|
|
@@ -748,6 +780,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
748
780
|
},
|
|
749
781
|
}]
|
|
750
782
|
}] });
|
|
783
|
+
/** Loading indicator slot for button. */
|
|
751
784
|
class FrButtonLoading {
|
|
752
785
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonLoading, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
753
786
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrButtonLoading, isStandalone: true, selector: "[frButtonLoading]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-button__loading" }, ngImport: i0 });
|
|
@@ -764,6 +797,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
764
797
|
}] });
|
|
765
798
|
|
|
766
799
|
const FR_BUTTON_GROUP_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
800
|
+
/** Groups related buttons with shared orientation. */
|
|
767
801
|
class FrButtonGroup {
|
|
768
802
|
orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
769
803
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -786,6 +820,7 @@ const VALUE_ACCESSOR = {
|
|
|
786
820
|
useExisting: forwardRef(() => FrCalendar),
|
|
787
821
|
multi: true,
|
|
788
822
|
};
|
|
823
|
+
/** Calendar control for single-date and range selection. */
|
|
789
824
|
class FrCalendar {
|
|
790
825
|
mode = input('single', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
791
826
|
captionLayout = input('label', ...(ngDevMode ? [{ debugName: "captionLayout" }] : /* istanbul ignore next */ []));
|
|
@@ -930,6 +965,7 @@ class FrCalendar {
|
|
|
930
965
|
}
|
|
931
966
|
resolveActiveDate() {
|
|
932
967
|
const focused = this.focusedDate();
|
|
968
|
+
// Prefer the roving-focus target, then selection, then today, then first enabled day.
|
|
933
969
|
if (focused && this.findDay(focused) && !this.isDayDisabled(focused)) {
|
|
934
970
|
return cloneDate(focused);
|
|
935
971
|
}
|
|
@@ -977,6 +1013,7 @@ class FrCalendar {
|
|
|
977
1013
|
if (this.focusDayElement(date)) {
|
|
978
1014
|
return;
|
|
979
1015
|
}
|
|
1016
|
+
// Month navigation may render the target button one tick later.
|
|
980
1017
|
setTimeout(() => {
|
|
981
1018
|
this.focusDayElement(date);
|
|
982
1019
|
});
|
|
@@ -995,6 +1032,7 @@ class FrCalendar {
|
|
|
995
1032
|
const start = startOfMonth(monthDate);
|
|
996
1033
|
const gridStart = startOfWeek(start, this.firstDayOfWeek());
|
|
997
1034
|
const weeks = [];
|
|
1035
|
+
// Always build a six-week grid so layout height stays stable across months.
|
|
998
1036
|
for (let week = 0; week < 6; week++) {
|
|
999
1037
|
const days = [];
|
|
1000
1038
|
for (let dayIndex = 0; dayIndex < 7; dayIndex++) {
|
|
@@ -1427,23 +1465,16 @@ const FR_CARD_SPACING_VALUES = {
|
|
|
1427
1465
|
lg: '1.25rem',
|
|
1428
1466
|
xl: '2rem',
|
|
1429
1467
|
};
|
|
1468
|
+
/** Card container with size and spacing controls. */
|
|
1430
1469
|
class FrCard {
|
|
1431
|
-
elementRef = inject(ElementRef);
|
|
1432
|
-
renderer = inject(Renderer2);
|
|
1433
1470
|
size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
1434
1471
|
spacing = input(null, ...(ngDevMode ? [{ debugName: "spacing" }] : /* istanbul ignore next */ []));
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
this.renderer.removeStyle(this.elementRef.nativeElement, '--frame-card-spacing', RendererStyleFlags2.DashCase);
|
|
1440
|
-
return;
|
|
1441
|
-
}
|
|
1442
|
-
this.renderer.setStyle(this.elementRef.nativeElement, '--frame-card-spacing', FR_CARD_SPACING_VALUES[spacing], RendererStyleFlags2.DashCase);
|
|
1443
|
-
});
|
|
1444
|
-
}
|
|
1472
|
+
spacingValue = computed(() => {
|
|
1473
|
+
const spacing = this.spacing();
|
|
1474
|
+
return spacing ? FR_CARD_SPACING_VALUES[spacing] : null;
|
|
1475
|
+
}, ...(ngDevMode ? [{ debugName: "spacingValue" }] : /* istanbul ignore next */ []));
|
|
1445
1476
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1446
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrCard, isStandalone: true, selector: "[frCard], frame-card", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.data-spacing": "spacing()" }, classAttribute: "frame-card" }, ngImport: i0 });
|
|
1477
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrCard, isStandalone: true, selector: "[frCard], frame-card", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.data-spacing": "spacing()", "style.--frame-card-spacing": "spacingValue()" }, classAttribute: "frame-card" }, ngImport: i0 });
|
|
1447
1478
|
}
|
|
1448
1479
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCard, decorators: [{
|
|
1449
1480
|
type: Directive,
|
|
@@ -1453,9 +1484,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1453
1484
|
class: 'frame-card',
|
|
1454
1485
|
'[attr.data-size]': 'size()',
|
|
1455
1486
|
'[attr.data-spacing]': 'spacing()',
|
|
1487
|
+
'[style.--frame-card-spacing]': 'spacingValue()',
|
|
1456
1488
|
},
|
|
1457
1489
|
}]
|
|
1458
|
-
}],
|
|
1490
|
+
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }] } });
|
|
1491
|
+
/** Header slot for card. */
|
|
1459
1492
|
class FrCardHeader {
|
|
1460
1493
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1461
1494
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardHeader, isStandalone: true, selector: "[frCardHeader]", host: { classAttribute: "frame-card__header" }, ngImport: i0 });
|
|
@@ -1469,6 +1502,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1469
1502
|
},
|
|
1470
1503
|
}]
|
|
1471
1504
|
}] });
|
|
1505
|
+
/** Title slot for card. */
|
|
1472
1506
|
class FrCardTitle {
|
|
1473
1507
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1474
1508
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardTitle, isStandalone: true, selector: "[frCardTitle]", host: { classAttribute: "frame-card__title" }, ngImport: i0 });
|
|
@@ -1482,6 +1516,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1482
1516
|
},
|
|
1483
1517
|
}]
|
|
1484
1518
|
}] });
|
|
1519
|
+
/** Description slot for card. */
|
|
1485
1520
|
class FrCardDescription {
|
|
1486
1521
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1487
1522
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardDescription, isStandalone: true, selector: "[frCardDescription]", host: { classAttribute: "frame-card__description" }, ngImport: i0 });
|
|
@@ -1495,6 +1530,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1495
1530
|
},
|
|
1496
1531
|
}]
|
|
1497
1532
|
}] });
|
|
1533
|
+
/** Action slot for card. */
|
|
1498
1534
|
class FrCardAction {
|
|
1499
1535
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1500
1536
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardAction, isStandalone: true, selector: "[frCardAction]", host: { classAttribute: "frame-card__action" }, ngImport: i0 });
|
|
@@ -1508,6 +1544,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1508
1544
|
},
|
|
1509
1545
|
}]
|
|
1510
1546
|
}] });
|
|
1547
|
+
/** Content slot for card. */
|
|
1511
1548
|
class FrCardContent {
|
|
1512
1549
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1513
1550
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardContent, isStandalone: true, selector: "[frCardContent]", host: { classAttribute: "frame-card__content" }, ngImport: i0 });
|
|
@@ -1521,6 +1558,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1521
1558
|
},
|
|
1522
1559
|
}]
|
|
1523
1560
|
}] });
|
|
1561
|
+
/** Footer slot for card. */
|
|
1524
1562
|
class FrCardFooter {
|
|
1525
1563
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
1526
1564
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -1541,6 +1579,7 @@ const FR_CAROUSEL_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
|
1541
1579
|
const FR_CAROUSEL_ALIGNS = ['start', 'center', 'end'];
|
|
1542
1580
|
const FR_CAROUSEL_DIRECTIONS = ['ltr', 'rtl'];
|
|
1543
1581
|
const FR_CAROUSEL = new InjectionToken('FrCarousel');
|
|
1582
|
+
/** Carousel root that coordinates scroll state and navigation. */
|
|
1544
1583
|
class FrCarousel {
|
|
1545
1584
|
destroyRef = inject(DestroyRef);
|
|
1546
1585
|
listeners = new Map();
|
|
@@ -1552,6 +1591,8 @@ class FrCarousel {
|
|
|
1552
1591
|
loopBoundaryClone = null;
|
|
1553
1592
|
contentElement = null;
|
|
1554
1593
|
itemElements = [];
|
|
1594
|
+
lastLoop = false;
|
|
1595
|
+
lastPlugins = null;
|
|
1555
1596
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
1556
1597
|
loop = input(false, { ...(ngDevMode ? { debugName: "loop" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1557
1598
|
orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
@@ -1575,27 +1616,20 @@ class FrCarousel {
|
|
|
1575
1616
|
on: (event, callback) => this.on(event, callback),
|
|
1576
1617
|
};
|
|
1577
1618
|
constructor() {
|
|
1578
|
-
effect(() => {
|
|
1579
|
-
const plugins = this.plugins();
|
|
1580
|
-
this.pluginCleanups.splice(0).forEach((cleanup) => cleanup());
|
|
1581
|
-
for (const plugin of plugins) {
|
|
1582
|
-
const cleanup = plugin(this.api);
|
|
1583
|
-
if (typeof cleanup === 'function') {
|
|
1584
|
-
this.pluginCleanups.push(cleanup);
|
|
1585
|
-
}
|
|
1586
|
-
}
|
|
1587
|
-
});
|
|
1588
|
-
effect(() => {
|
|
1589
|
-
if (!this.effectiveLoop()) {
|
|
1590
|
-
this.removeLoopClone();
|
|
1591
|
-
}
|
|
1592
|
-
});
|
|
1593
1619
|
this.destroyRef.onDestroy(() => {
|
|
1594
1620
|
this.pluginCleanups.splice(0).forEach((cleanup) => cleanup());
|
|
1595
1621
|
this.clearLoopResetTimer();
|
|
1596
1622
|
this.clearScrollSyncTimer();
|
|
1597
1623
|
});
|
|
1598
1624
|
}
|
|
1625
|
+
ngDoCheck() {
|
|
1626
|
+
this.syncPlugins();
|
|
1627
|
+
const loop = this.effectiveLoop();
|
|
1628
|
+
if (!loop && loop !== this.lastLoop) {
|
|
1629
|
+
this.removeLoopClone();
|
|
1630
|
+
}
|
|
1631
|
+
this.lastLoop = loop;
|
|
1632
|
+
}
|
|
1599
1633
|
ngAfterViewInit() {
|
|
1600
1634
|
queueMicrotask(() => {
|
|
1601
1635
|
this.recalculate();
|
|
@@ -1669,6 +1703,20 @@ class FrCarousel {
|
|
|
1669
1703
|
emit(event) {
|
|
1670
1704
|
this.listeners.get(event)?.forEach((callback) => callback());
|
|
1671
1705
|
}
|
|
1706
|
+
syncPlugins() {
|
|
1707
|
+
const plugins = this.plugins();
|
|
1708
|
+
if (plugins === this.lastPlugins) {
|
|
1709
|
+
return;
|
|
1710
|
+
}
|
|
1711
|
+
this.pluginCleanups.splice(0).forEach((cleanup) => cleanup());
|
|
1712
|
+
for (const plugin of plugins) {
|
|
1713
|
+
const cleanup = plugin(this.api);
|
|
1714
|
+
if (typeof cleanup === 'function') {
|
|
1715
|
+
this.pluginCleanups.push(cleanup);
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
this.lastPlugins = plugins;
|
|
1719
|
+
}
|
|
1672
1720
|
recalculate() {
|
|
1673
1721
|
this.snapCount.set(this.itemElements.length);
|
|
1674
1722
|
this.emit('reInit');
|
|
@@ -1677,6 +1725,7 @@ class FrCarousel {
|
|
|
1677
1725
|
if (this.isProgrammaticScroll || !this.contentElement || !this.itemElements.length) {
|
|
1678
1726
|
return;
|
|
1679
1727
|
}
|
|
1728
|
+
// Derive the active item from the nearest snap point during user-driven scrolling.
|
|
1680
1729
|
const current = this.getCurrentScrollOffset();
|
|
1681
1730
|
const closest = this.itemElements.reduce((best, item, index) => {
|
|
1682
1731
|
const targetOffset = this.getItemScrollOffset(item);
|
|
@@ -1748,6 +1797,7 @@ class FrCarousel {
|
|
|
1748
1797
|
if (!this.contentElement || !this.effectiveLoop() || this.snapCount() < 2) {
|
|
1749
1798
|
return;
|
|
1750
1799
|
}
|
|
1800
|
+
// Scroll to a temporary clone first, then jump back to the real edge item invisibly.
|
|
1751
1801
|
const finalIndex = direction === 'next' ? 0 : this.snapCount() - 1;
|
|
1752
1802
|
const cloneSource = direction === 'next' ? this.itemElements[0] : this.itemElements[this.snapCount() - 1];
|
|
1753
1803
|
const resetTarget = this.itemElements[finalIndex];
|
|
@@ -1795,6 +1845,7 @@ class FrCarousel {
|
|
|
1795
1845
|
if (!this.contentElement) {
|
|
1796
1846
|
return;
|
|
1797
1847
|
}
|
|
1848
|
+
// `scrollend` is not universal, so keep a timeout fallback for the loop reset.
|
|
1798
1849
|
let didReset = false;
|
|
1799
1850
|
const reset = () => {
|
|
1800
1851
|
if (didReset) {
|
|
@@ -1853,6 +1904,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1853
1904
|
providers: [{ provide: FR_CAROUSEL, useExisting: FrCarousel }],
|
|
1854
1905
|
}]
|
|
1855
1906
|
}], ctorParameters: () => [], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], opts: [{ type: i0.Input, args: [{ isSignal: true, alias: "opts", required: false }] }], plugins: [{ type: i0.Input, args: [{ isSignal: true, alias: "plugins", required: false }] }], apiReady: [{ type: i0.Output, args: ["apiReady"] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }] } });
|
|
1907
|
+
/** Content slot for carousel. */
|
|
1856
1908
|
class FrCarouselContent {
|
|
1857
1909
|
carousel = inject(FR_CAROUSEL);
|
|
1858
1910
|
elementRef = inject(ElementRef);
|
|
@@ -1872,6 +1924,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1872
1924
|
},
|
|
1873
1925
|
}]
|
|
1874
1926
|
}] });
|
|
1927
|
+
/** Item slot for carousel. */
|
|
1875
1928
|
class FrCarouselItem {
|
|
1876
1929
|
carousel = inject(FR_CAROUSEL);
|
|
1877
1930
|
destroyRef = inject(DestroyRef);
|
|
@@ -1894,6 +1947,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1894
1947
|
},
|
|
1895
1948
|
}]
|
|
1896
1949
|
}] });
|
|
1950
|
+
/** Previous-slide control for carousel. */
|
|
1897
1951
|
class FrCarouselPrevious {
|
|
1898
1952
|
carousel = inject(FR_CAROUSEL);
|
|
1899
1953
|
label = input('Previous slide', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
@@ -1919,6 +1973,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1919
1973
|
},
|
|
1920
1974
|
}]
|
|
1921
1975
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
1976
|
+
/** Next-slide control for carousel. */
|
|
1922
1977
|
class FrCarouselNext {
|
|
1923
1978
|
carousel = inject(FR_CAROUSEL);
|
|
1924
1979
|
label = input('Next slide', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
@@ -1945,16 +2000,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1945
2000
|
}]
|
|
1946
2001
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
1947
2002
|
|
|
2003
|
+
/** Checkbox input styled as a FrameUI control. */
|
|
1948
2004
|
class FrCheckbox {
|
|
1949
|
-
elementRef = inject((ElementRef));
|
|
1950
2005
|
indeterminate = input(false, { ...(ngDevMode ? { debugName: "indeterminate" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1951
|
-
constructor() {
|
|
1952
|
-
effect(() => {
|
|
1953
|
-
this.elementRef.nativeElement.indeterminate = this.indeterminate();
|
|
1954
|
-
});
|
|
1955
|
-
}
|
|
1956
2006
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1957
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrCheckbox, isStandalone: true, selector: "input[type=checkbox][frCheckbox]", inputs: { indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-checked": "indeterminate() ? \"mixed\" : null", "attr.data-indeterminate": "indeterminate() ? \"\" : null" }, classAttribute: "frame-checkbox" }, ngImport: i0 });
|
|
2007
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrCheckbox, isStandalone: true, selector: "input[type=checkbox][frCheckbox]", inputs: { indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-checked": "indeterminate() ? \"mixed\" : null", "attr.data-indeterminate": "indeterminate() ? \"\" : null", "indeterminate": "indeterminate()" }, classAttribute: "frame-checkbox" }, ngImport: i0 });
|
|
1958
2008
|
}
|
|
1959
2009
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCheckbox, decorators: [{
|
|
1960
2010
|
type: Directive,
|
|
@@ -1964,9 +2014,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1964
2014
|
class: 'frame-checkbox',
|
|
1965
2015
|
'[attr.aria-checked]': 'indeterminate() ? "mixed" : null',
|
|
1966
2016
|
'[attr.data-indeterminate]': 'indeterminate() ? "" : null',
|
|
2017
|
+
'[indeterminate]': 'indeterminate()',
|
|
1967
2018
|
},
|
|
1968
2019
|
}]
|
|
1969
|
-
}],
|
|
2020
|
+
}], propDecorators: { indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }] } });
|
|
2021
|
+
/** Field slot for checkbox. */
|
|
1970
2022
|
class FrCheckboxField {
|
|
1971
2023
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCheckboxField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1972
2024
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCheckboxField, isStandalone: true, selector: "label[frCheckboxField]", host: { classAttribute: "frame-checkbox-field" }, ngImport: i0 });
|
|
@@ -1980,6 +2032,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1980
2032
|
},
|
|
1981
2033
|
}]
|
|
1982
2034
|
}] });
|
|
2035
|
+
/** Label slot for checkbox. */
|
|
1983
2036
|
class FrCheckboxLabel {
|
|
1984
2037
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCheckboxLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1985
2038
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCheckboxLabel, isStandalone: true, selector: "[frCheckboxLabel]", host: { classAttribute: "frame-checkbox-label" }, ngImport: i0 });
|
|
@@ -1996,23 +2049,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1996
2049
|
|
|
1997
2050
|
const FR_COLLAPSIBLE = new InjectionToken('FrCollapsible');
|
|
1998
2051
|
|
|
2052
|
+
/** Content slot for collapsible. */
|
|
1999
2053
|
class FrCollapsibleContent {
|
|
2000
2054
|
host = inject(ElementRef);
|
|
2001
2055
|
collapsible = inject(FR_COLLAPSIBLE);
|
|
2002
2056
|
initialized = false;
|
|
2057
|
+
lastOpen = false;
|
|
2003
2058
|
rafId = -1;
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2059
|
+
ngAfterViewInit() {
|
|
2060
|
+
this.lastOpen = this.collapsible.open();
|
|
2061
|
+
this.applyStaticState(this.lastOpen);
|
|
2062
|
+
this.initialized = true;
|
|
2063
|
+
}
|
|
2064
|
+
ngDoCheck() {
|
|
2065
|
+
const open = this.collapsible.open();
|
|
2066
|
+
if (!this.initialized || open === this.lastOpen) {
|
|
2067
|
+
return;
|
|
2068
|
+
}
|
|
2069
|
+
this.cancelAnimationFrame();
|
|
2070
|
+
this.lastOpen = open;
|
|
2071
|
+
this.animate(open);
|
|
2072
|
+
}
|
|
2073
|
+
ngOnDestroy() {
|
|
2074
|
+
this.cancelAnimationFrame();
|
|
2016
2075
|
}
|
|
2017
2076
|
onTransitionEnd(event) {
|
|
2018
2077
|
if (event.target !== this.host.nativeElement || event.propertyName !== 'height') {
|
|
@@ -2074,12 +2133,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2074
2133
|
role: 'region',
|
|
2075
2134
|
},
|
|
2076
2135
|
}]
|
|
2077
|
-
}]
|
|
2136
|
+
}] });
|
|
2078
2137
|
|
|
2079
2138
|
let collapsibleId = 0;
|
|
2139
|
+
/** Root controller for expandable collapsible content. */
|
|
2080
2140
|
class FrCollapsible {
|
|
2081
2141
|
collapsibleId = ++collapsibleId;
|
|
2082
|
-
internalOpen =
|
|
2142
|
+
internalOpen = linkedSignal(() => this.defaultOpen(), ...(ngDevMode ? [{ debugName: "internalOpen" }] : /* istanbul ignore next */ []));
|
|
2083
2143
|
defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
2084
2144
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
2085
2145
|
openInput = input(undefined, { ...(ngDevMode ? { debugName: "openInput" } : /* istanbul ignore next */ {}), alias: 'open' });
|
|
@@ -2087,13 +2147,6 @@ class FrCollapsible {
|
|
|
2087
2147
|
open = computed(() => this.openInput() ?? this.internalOpen(), ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
2088
2148
|
triggerId = computed(() => `frame-collapsible-trigger-${this.collapsibleId}`, ...(ngDevMode ? [{ debugName: "triggerId" }] : /* istanbul ignore next */ []));
|
|
2089
2149
|
contentId = computed(() => `frame-collapsible-content-${this.collapsibleId}`, ...(ngDevMode ? [{ debugName: "contentId" }] : /* istanbul ignore next */ []));
|
|
2090
|
-
constructor() {
|
|
2091
|
-
effect(() => {
|
|
2092
|
-
if (this.openInput() === undefined) {
|
|
2093
|
-
this.internalOpen.set(this.defaultOpen());
|
|
2094
|
-
}
|
|
2095
|
-
});
|
|
2096
|
-
}
|
|
2097
2150
|
toggle() {
|
|
2098
2151
|
if (this.disabled()) {
|
|
2099
2152
|
return;
|
|
@@ -2125,8 +2178,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2125
2178
|
'[attr.data-state]': 'open() ? "open" : "closed"',
|
|
2126
2179
|
},
|
|
2127
2180
|
}]
|
|
2128
|
-
}],
|
|
2181
|
+
}], propDecorators: { defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], openInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
|
|
2129
2182
|
|
|
2183
|
+
/** Trigger control for collapsible. */
|
|
2130
2184
|
class FrCollapsibleTrigger {
|
|
2131
2185
|
collapsible = inject(FR_COLLAPSIBLE);
|
|
2132
2186
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCollapsibleTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -2151,6 +2205,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2151
2205
|
}]
|
|
2152
2206
|
}] });
|
|
2153
2207
|
|
|
2208
|
+
/** Content slot for combobox. */
|
|
2154
2209
|
class FrComboboxContent {
|
|
2155
2210
|
templateRef = inject((TemplateRef));
|
|
2156
2211
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -2163,6 +2218,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2163
2218
|
exportAs: 'frComboboxContent',
|
|
2164
2219
|
}]
|
|
2165
2220
|
}] });
|
|
2221
|
+
/** Panel slot for combobox. */
|
|
2166
2222
|
class FrComboboxPanel {
|
|
2167
2223
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2168
2224
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxPanel, isStandalone: true, selector: "[frComboboxPanel], frame-combobox-panel", host: { attributes: { "role": "listbox" }, classAttribute: "frame-combobox__panel" }, ngImport: i0 });
|
|
@@ -2177,6 +2233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2177
2233
|
},
|
|
2178
2234
|
}]
|
|
2179
2235
|
}] });
|
|
2236
|
+
/** List slot for combobox. */
|
|
2180
2237
|
class FrComboboxList {
|
|
2181
2238
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2182
2239
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxList, isStandalone: true, selector: "[frComboboxList], frame-combobox-list", host: { classAttribute: "frame-combobox__list" }, ngImport: i0 });
|
|
@@ -2190,6 +2247,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2190
2247
|
},
|
|
2191
2248
|
}]
|
|
2192
2249
|
}] });
|
|
2250
|
+
/** Empty-state slot for combobox results. */
|
|
2193
2251
|
class FrComboboxEmpty {
|
|
2194
2252
|
root = inject(FrComboboxRootLookup);
|
|
2195
2253
|
hidden() {
|
|
@@ -2208,6 +2266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2208
2266
|
},
|
|
2209
2267
|
}]
|
|
2210
2268
|
}] });
|
|
2269
|
+
/** Group slot for combobox. */
|
|
2211
2270
|
class FrComboboxGroup {
|
|
2212
2271
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2213
2272
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxGroup, isStandalone: true, selector: "[frComboboxGroup], frame-combobox-group", host: { classAttribute: "frame-combobox__group" }, ngImport: i0 });
|
|
@@ -2221,6 +2280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2221
2280
|
},
|
|
2222
2281
|
}]
|
|
2223
2282
|
}] });
|
|
2283
|
+
/** Label slot for combobox. */
|
|
2224
2284
|
class FrComboboxLabel {
|
|
2225
2285
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2226
2286
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxLabel, isStandalone: true, selector: "[frComboboxLabel], frame-combobox-label", host: { classAttribute: "frame-combobox__label" }, ngImport: i0 });
|
|
@@ -2234,6 +2294,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2234
2294
|
},
|
|
2235
2295
|
}]
|
|
2236
2296
|
}] });
|
|
2297
|
+
/** Separator slot for combobox. */
|
|
2237
2298
|
class FrComboboxSeparator {
|
|
2238
2299
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2239
2300
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxSeparator, isStandalone: true, selector: "[frComboboxSeparator], frame-combobox-separator", host: { attributes: { "role": "separator" }, classAttribute: "frame-combobox__separator" }, ngImport: i0 });
|
|
@@ -2248,6 +2309,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2248
2309
|
},
|
|
2249
2310
|
}]
|
|
2250
2311
|
}] });
|
|
2312
|
+
/** Collection host for combobox options. */
|
|
2251
2313
|
class FrComboboxCollection {
|
|
2252
2314
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxCollection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2253
2315
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxCollection, isStandalone: true, selector: "[frComboboxCollection], frame-combobox-collection", host: { classAttribute: "frame-combobox__collection" }, ngImport: i0 });
|
|
@@ -2262,6 +2324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2262
2324
|
}]
|
|
2263
2325
|
}] });
|
|
2264
2326
|
// Resolved by the root file to avoid a circular import in decorator metadata.
|
|
2327
|
+
/** Base API for combobox root lookup. */
|
|
2265
2328
|
class FrComboboxRootLookup {
|
|
2266
2329
|
}
|
|
2267
2330
|
|
|
@@ -2281,12 +2344,16 @@ const POSITIONS$1 = [
|
|
|
2281
2344
|
offsetY: -4,
|
|
2282
2345
|
},
|
|
2283
2346
|
];
|
|
2347
|
+
/** Combobox control with single and multi-value support. */
|
|
2284
2348
|
class FrCombobox extends FrControlValueAccessor$1 {
|
|
2285
2349
|
destroyRef = inject(DestroyRef);
|
|
2286
2350
|
elementRef = inject(ElementRef);
|
|
2287
2351
|
items = new Set();
|
|
2288
2352
|
itemsVersion = signal(0, ...(ngDevMode ? [{ debugName: "itemsVersion" }] : /* istanbul ignore next */ []));
|
|
2289
2353
|
selectedLabels = new Map();
|
|
2354
|
+
lastAutoHighlight = false;
|
|
2355
|
+
lastItemsVersion = -1;
|
|
2356
|
+
lastQuery = '';
|
|
2290
2357
|
resizeObserver = null;
|
|
2291
2358
|
origin = viewChild(CdkOverlayOrigin, ...(ngDevMode ? [{ debugName: "origin" }] : /* istanbul ignore next */ []));
|
|
2292
2359
|
content = contentChild(FrComboboxContent, ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
|
|
@@ -2323,18 +2390,6 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2323
2390
|
hasValue = computed(() => this.selectedValues().length > 0 || this.query().length > 0, ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
|
|
2324
2391
|
constructor() {
|
|
2325
2392
|
super();
|
|
2326
|
-
effect(() => {
|
|
2327
|
-
if (this.debugVisible()) {
|
|
2328
|
-
afterNextRender(() => this.open());
|
|
2329
|
-
}
|
|
2330
|
-
});
|
|
2331
|
-
effect(() => {
|
|
2332
|
-
this.query();
|
|
2333
|
-
this.itemsVersion();
|
|
2334
|
-
if (this.autoHighlight()) {
|
|
2335
|
-
this.highlightedIndex.set(0);
|
|
2336
|
-
}
|
|
2337
|
-
});
|
|
2338
2393
|
queueMicrotask(() => {
|
|
2339
2394
|
this.measureAnchor();
|
|
2340
2395
|
this.attachResizeObserver();
|
|
@@ -2343,6 +2398,29 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2343
2398
|
this.resizeObserver?.disconnect();
|
|
2344
2399
|
});
|
|
2345
2400
|
}
|
|
2401
|
+
ngAfterViewInit() {
|
|
2402
|
+
if (this.debugVisible()) {
|
|
2403
|
+
this.open();
|
|
2404
|
+
}
|
|
2405
|
+
}
|
|
2406
|
+
ngDoCheck() {
|
|
2407
|
+
if (this.debugVisible() && !this.isOpen()) {
|
|
2408
|
+
this.open();
|
|
2409
|
+
}
|
|
2410
|
+
const autoHighlight = this.autoHighlight();
|
|
2411
|
+
const itemsVersion = this.itemsVersion();
|
|
2412
|
+
const query = this.query();
|
|
2413
|
+
if (autoHighlight &&
|
|
2414
|
+
(query !== this.lastQuery ||
|
|
2415
|
+
itemsVersion !== this.lastItemsVersion ||
|
|
2416
|
+
autoHighlight !== this.lastAutoHighlight)) {
|
|
2417
|
+
// Filtering can invalidate the current index, so restart highlight at the first visible item.
|
|
2418
|
+
this.highlightedIndex.set(0);
|
|
2419
|
+
}
|
|
2420
|
+
this.lastAutoHighlight = autoHighlight;
|
|
2421
|
+
this.lastItemsVersion = itemsVersion;
|
|
2422
|
+
this.lastQuery = query;
|
|
2423
|
+
}
|
|
2346
2424
|
registerItem(item) {
|
|
2347
2425
|
this.items.add(item);
|
|
2348
2426
|
this.bumpItems();
|
|
@@ -2351,6 +2429,9 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2351
2429
|
this.items.delete(item);
|
|
2352
2430
|
this.bumpItems();
|
|
2353
2431
|
}
|
|
2432
|
+
refreshItems() {
|
|
2433
|
+
this.bumpItems();
|
|
2434
|
+
}
|
|
2354
2435
|
visibleItems() {
|
|
2355
2436
|
this.itemsVersion();
|
|
2356
2437
|
return Array.from(this.items).filter((item) => item.isVisible());
|
|
@@ -2460,6 +2541,7 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2460
2541
|
this.anchorWidth.set(null);
|
|
2461
2542
|
return;
|
|
2462
2543
|
}
|
|
2544
|
+
// Match the overlay width to the trigger even when content is rendered in the CDK overlay.
|
|
2463
2545
|
this.anchorWidth.set(element.getBoundingClientRect().width || null);
|
|
2464
2546
|
}
|
|
2465
2547
|
attachResizeObserver() {
|
|
@@ -2546,6 +2628,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2546
2628
|
}]
|
|
2547
2629
|
}], ctorParameters: () => [], propDecorators: { origin: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkOverlayOrigin), { isSignal: true }] }], content: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FrComboboxContent), { isSignal: true }] }], autoHighlight: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoHighlight", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], itemToStringValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemToStringValue", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
|
|
2548
2630
|
|
|
2631
|
+
/** Search input for combobox filtering. */
|
|
2549
2632
|
class FrComboboxInput {
|
|
2550
2633
|
root = inject(FrCombobox);
|
|
2551
2634
|
elementRef = inject(ElementRef);
|
|
@@ -2603,6 +2686,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2603
2686
|
},
|
|
2604
2687
|
}]
|
|
2605
2688
|
}] });
|
|
2689
|
+
/** Trigger control for combobox. */
|
|
2606
2690
|
class FrComboboxTrigger {
|
|
2607
2691
|
root = inject(FrCombobox);
|
|
2608
2692
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -2622,6 +2706,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2622
2706
|
},
|
|
2623
2707
|
}]
|
|
2624
2708
|
}] });
|
|
2709
|
+
/** Clear control for combobox values. */
|
|
2625
2710
|
class FrComboboxClear {
|
|
2626
2711
|
root = inject(FrCombobox);
|
|
2627
2712
|
hidden() {
|
|
@@ -2643,6 +2728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2643
2728
|
}]
|
|
2644
2729
|
}] });
|
|
2645
2730
|
|
|
2731
|
+
/** Item slot for combobox. */
|
|
2646
2732
|
class FrComboboxItem {
|
|
2647
2733
|
destroyRef = inject(DestroyRef);
|
|
2648
2734
|
elementRef = inject(ElementRef);
|
|
@@ -2652,6 +2738,7 @@ class FrComboboxItem {
|
|
|
2652
2738
|
itemLabel = input(null, { ...(ngDevMode ? { debugName: "itemLabel" } : /* istanbul ignore next */ {}), alias: 'label' });
|
|
2653
2739
|
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
2654
2740
|
resolvedLabel = signal('', ...(ngDevMode ? [{ debugName: "resolvedLabel" }] : /* istanbul ignore next */ []));
|
|
2741
|
+
lastItemStateKey = '';
|
|
2655
2742
|
label = computed(() => this.itemLabel() ?? this.resolvedLabel(), ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
2656
2743
|
visible = computed(() => this.root.itemVisible(this.label()), ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
|
|
2657
2744
|
constructor() {
|
|
@@ -2664,11 +2751,17 @@ class FrComboboxItem {
|
|
|
2664
2751
|
this.refreshResolvedLabel();
|
|
2665
2752
|
this.observeTextChanges();
|
|
2666
2753
|
});
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2754
|
+
}
|
|
2755
|
+
ngDoCheck() {
|
|
2756
|
+
const itemStateKey = `${this.label()}|${this.disabled()}|${this.root.isSelected(this.value())}`;
|
|
2757
|
+
if (itemStateKey === this.lastItemStateKey) {
|
|
2758
|
+
return;
|
|
2759
|
+
}
|
|
2760
|
+
this.lastItemStateKey = itemStateKey;
|
|
2761
|
+
this.root.refreshItems();
|
|
2762
|
+
if (this.root.isSelected(this.value())) {
|
|
2763
|
+
this.root.rememberItemLabel(this.value(), this.label());
|
|
2764
|
+
}
|
|
2672
2765
|
}
|
|
2673
2766
|
isVisible() {
|
|
2674
2767
|
return this.visible();
|
|
@@ -2695,11 +2788,13 @@ class FrComboboxItem {
|
|
|
2695
2788
|
}
|
|
2696
2789
|
refreshResolvedLabel() {
|
|
2697
2790
|
this.resolvedLabel.set(this.resolveLabel());
|
|
2791
|
+
this.root.refreshItems();
|
|
2698
2792
|
}
|
|
2699
2793
|
observeTextChanges() {
|
|
2700
2794
|
if (typeof MutationObserver === 'undefined' || this.itemLabel() !== null) {
|
|
2701
2795
|
return;
|
|
2702
2796
|
}
|
|
2797
|
+
// Items without explicit labels derive filtering text from projected content.
|
|
2703
2798
|
this.mutationObserver = new MutationObserver(() => this.refreshResolvedLabel());
|
|
2704
2799
|
this.mutationObserver.observe(this.elementRef.nativeElement, {
|
|
2705
2800
|
characterData: true,
|
|
@@ -2728,6 +2823,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2728
2823
|
},
|
|
2729
2824
|
}]
|
|
2730
2825
|
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], itemLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
|
|
2826
|
+
/** Indicator slot for combobox item. */
|
|
2731
2827
|
class FrComboboxItemIndicator {
|
|
2732
2828
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2733
2829
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxItemIndicator, isStandalone: true, selector: "[frComboboxItemIndicator]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-combobox__item-indicator" }, ngImport: i0 });
|
|
@@ -2743,6 +2839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2743
2839
|
}]
|
|
2744
2840
|
}] });
|
|
2745
2841
|
|
|
2842
|
+
/** Chip list for multi-value combobox selections. */
|
|
2746
2843
|
class FrComboboxChips {
|
|
2747
2844
|
root = inject(FrCombobox);
|
|
2748
2845
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxChips, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -2759,6 +2856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2759
2856
|
},
|
|
2760
2857
|
}]
|
|
2761
2858
|
}] });
|
|
2859
|
+
/** List slot for combobox value. */
|
|
2762
2860
|
class FrComboboxValueList {
|
|
2763
2861
|
root = inject(FrCombobox);
|
|
2764
2862
|
values() {
|
|
@@ -2777,6 +2875,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2777
2875
|
},
|
|
2778
2876
|
}]
|
|
2779
2877
|
}] });
|
|
2878
|
+
/** Selected value chip for combobox. */
|
|
2780
2879
|
class FrComboboxChip {
|
|
2781
2880
|
root = inject(FrCombobox);
|
|
2782
2881
|
elementRef = inject(ElementRef);
|
|
@@ -2824,6 +2923,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2824
2923
|
},
|
|
2825
2924
|
}]
|
|
2826
2925
|
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }] } });
|
|
2926
|
+
/** Remove control for a combobox chip. */
|
|
2827
2927
|
class FrComboboxChipRemove {
|
|
2828
2928
|
chip = inject(FrComboboxChip);
|
|
2829
2929
|
remove(event) {
|
|
@@ -2845,6 +2945,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2845
2945
|
},
|
|
2846
2946
|
}]
|
|
2847
2947
|
}] });
|
|
2948
|
+
/** Inline text input inside combobox chips. */
|
|
2848
2949
|
class FrComboboxChipsInput {
|
|
2849
2950
|
root = inject(FrCombobox);
|
|
2850
2951
|
handleInput(event) {
|
|
@@ -2887,6 +2988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2887
2988
|
},
|
|
2888
2989
|
}]
|
|
2889
2990
|
}] });
|
|
2991
|
+
/** Error slot for combobox. */
|
|
2890
2992
|
class FrComboboxError {
|
|
2891
2993
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2892
2994
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxError, isStandalone: true, selector: "[frComboboxError], frame-combobox-error", host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-combobox__error" }, ngImport: i0 });
|
|
@@ -2904,6 +3006,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2904
3006
|
|
|
2905
3007
|
const DEFAULT_PANEL_CLASS$2 = 'frame-command-dialog__overlay-pane';
|
|
2906
3008
|
const DEFAULT_BACKDROP_CLASS$2 = 'frame-command-dialog__backdrop';
|
|
3009
|
+
/** Template configuration for a command dialog. */
|
|
2907
3010
|
class FrCommandDialog {
|
|
2908
3011
|
templateRef = inject((TemplateRef));
|
|
2909
3012
|
ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -2956,6 +3059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2956
3059
|
standalone: true,
|
|
2957
3060
|
}]
|
|
2958
3061
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], backdropClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdropClass", required: false }] }], closeOnDestroy: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnDestroy", required: false }] }], closeOnNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnNavigation", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], disableClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableClose", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], minWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidth", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
|
|
3062
|
+
/** Trigger control for command dialog. */
|
|
2959
3063
|
class FrCommandDialogTrigger {
|
|
2960
3064
|
commandDialog = inject(FrCommandService);
|
|
2961
3065
|
destroyRef = inject(DestroyRef);
|
|
@@ -3005,6 +3109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3005
3109
|
},
|
|
3006
3110
|
}]
|
|
3007
3111
|
}], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "frCommandDialogTrigger", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
3112
|
+
/** Service for opening command dialogs. */
|
|
3008
3113
|
class FrCommandService {
|
|
3009
3114
|
dialog = inject(Dialog);
|
|
3010
3115
|
open(content, config = {}) {
|
|
@@ -3050,6 +3155,7 @@ function mergeClassList$2(classList, defaultClass) {
|
|
|
3050
3155
|
return Array.from(new Set([defaultClass, ...classes].filter(Boolean)));
|
|
3051
3156
|
}
|
|
3052
3157
|
|
|
3158
|
+
/** Footer slot for command. */
|
|
3053
3159
|
class FrCommandFooter {
|
|
3054
3160
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCommandFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3055
3161
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCommandFooter, isStandalone: true, selector: "[frCommandFooter]", host: { classAttribute: "frame-command__footer" }, ngImport: i0 });
|
|
@@ -3067,6 +3173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3067
3173
|
const FR_COMMAND = new InjectionToken('FrCommand');
|
|
3068
3174
|
const FR_COMMAND_GROUP = new InjectionToken('FrCommandGroup');
|
|
3069
3175
|
|
|
3176
|
+
/** Group slot for command. */
|
|
3070
3177
|
class FrCommandGroup {
|
|
3071
3178
|
items = new Set();
|
|
3072
3179
|
itemsVersion = signal(0, ...(ngDevMode ? [{ debugName: "itemsVersion" }] : /* istanbul ignore next */ []));
|
|
@@ -3105,6 +3212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3105
3212
|
},
|
|
3106
3213
|
}]
|
|
3107
3214
|
}], propDecorators: { forceMount: [{ type: i0.Input, args: [{ isSignal: true, alias: "forceMount", required: false }] }], heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }] } });
|
|
3215
|
+
/** Heading slot for a command group. */
|
|
3108
3216
|
class FrCommandGroupHeading {
|
|
3109
3217
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCommandGroupHeading, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3110
3218
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCommandGroupHeading, isStandalone: true, selector: "[frCommandGroupHeading]", host: { classAttribute: "frame-command__group-heading" }, ngImport: i0 });
|
|
@@ -3120,6 +3228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3120
3228
|
}]
|
|
3121
3229
|
}] });
|
|
3122
3230
|
|
|
3231
|
+
/** Command input component primitive. */
|
|
3123
3232
|
class FrCommandInput {
|
|
3124
3233
|
elementRef = inject(ElementRef);
|
|
3125
3234
|
command = inject(FR_COMMAND);
|
|
@@ -3150,6 +3259,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3150
3259
|
}]
|
|
3151
3260
|
}], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
|
|
3152
3261
|
|
|
3262
|
+
/** Item slot for command. */
|
|
3153
3263
|
class FrCommandItem {
|
|
3154
3264
|
destroyRef = inject(DestroyRef);
|
|
3155
3265
|
elementRef = inject(ElementRef);
|
|
@@ -3171,6 +3281,7 @@ class FrCommandItem {
|
|
|
3171
3281
|
}, ...(ngDevMode ? [{ debugName: "keywords" }] : /* istanbul ignore next */ []));
|
|
3172
3282
|
value = computed(() => this.valueInput() ?? this.label(), ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
3173
3283
|
visible = computed(() => this.command.filteredItemVisible(this.label(), this.keywords()), ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
|
|
3284
|
+
lastSearchKey = '';
|
|
3174
3285
|
constructor() {
|
|
3175
3286
|
this.command.registerItem(this);
|
|
3176
3287
|
this.group?.registerItem(this);
|
|
@@ -3183,11 +3294,14 @@ class FrCommandItem {
|
|
|
3183
3294
|
this.refreshResolvedLabel();
|
|
3184
3295
|
this.observeTextChanges();
|
|
3185
3296
|
});
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3297
|
+
}
|
|
3298
|
+
ngDoCheck() {
|
|
3299
|
+
const searchKey = `${this.label()}|${this.keywords().join('|')}|${this.disabled()}`;
|
|
3300
|
+
if (searchKey === this.lastSearchKey) {
|
|
3301
|
+
return;
|
|
3302
|
+
}
|
|
3303
|
+
this.lastSearchKey = searchKey;
|
|
3304
|
+
this.command.refreshItems();
|
|
3191
3305
|
}
|
|
3192
3306
|
isVisible() {
|
|
3193
3307
|
return this.visible();
|
|
@@ -3222,11 +3336,13 @@ class FrCommandItem {
|
|
|
3222
3336
|
}
|
|
3223
3337
|
refreshResolvedLabel() {
|
|
3224
3338
|
this.resolvedLabel.set(this.resolveLabel());
|
|
3339
|
+
this.command.refreshItems();
|
|
3225
3340
|
}
|
|
3226
3341
|
observeTextChanges() {
|
|
3227
3342
|
if (typeof MutationObserver === 'undefined' || this.itemLabel() !== null) {
|
|
3228
3343
|
return;
|
|
3229
3344
|
}
|
|
3345
|
+
// Items without explicit labels derive search text from projected content.
|
|
3230
3346
|
this.mutationObserver = new MutationObserver(() => this.refreshResolvedLabel());
|
|
3231
3347
|
this.mutationObserver.observe(this.elementRef.nativeElement, {
|
|
3232
3348
|
characterData: true,
|
|
@@ -3259,6 +3375,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3259
3375
|
},
|
|
3260
3376
|
}]
|
|
3261
3377
|
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], itemKeywords: [{ type: i0.Input, args: [{ isSignal: true, alias: "keywords", required: false }] }], itemLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], itemSelected: [{ type: i0.Output, args: ["selected"] }] } });
|
|
3378
|
+
/** Icon slot for command item. */
|
|
3262
3379
|
class FrCommandItemIcon {
|
|
3263
3380
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCommandItemIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3264
3381
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCommandItemIcon, isStandalone: true, selector: "[frCommandItemIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-command__item-icon" }, ngImport: i0 });
|
|
@@ -3274,6 +3391,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3274
3391
|
},
|
|
3275
3392
|
}]
|
|
3276
3393
|
}] });
|
|
3394
|
+
/** Shortcut slot for command. */
|
|
3277
3395
|
class FrCommandShortcut {
|
|
3278
3396
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCommandShortcut, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3279
3397
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCommandShortcut, isStandalone: true, selector: "[frCommandShortcut]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-command__shortcut" }, ngImport: i0 });
|
|
@@ -3290,6 +3408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3290
3408
|
}]
|
|
3291
3409
|
}] });
|
|
3292
3410
|
|
|
3411
|
+
/** List slot for command. */
|
|
3293
3412
|
class FrCommandList {
|
|
3294
3413
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCommandList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3295
3414
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCommandList, isStandalone: true, selector: "[frCommandList]", host: { attributes: { "role": "listbox" }, classAttribute: "frame-command__list" }, ngImport: i0 });
|
|
@@ -3305,6 +3424,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3305
3424
|
},
|
|
3306
3425
|
}]
|
|
3307
3426
|
}] });
|
|
3427
|
+
/** Empty-state slot for command results. */
|
|
3308
3428
|
class FrCommandEmpty {
|
|
3309
3429
|
command = inject(FR_COMMAND);
|
|
3310
3430
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCommandEmpty, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -3329,10 +3449,15 @@ const DEFAULT_FILTER = (query, label, keywords) => {
|
|
|
3329
3449
|
}
|
|
3330
3450
|
return [label, ...keywords].some((value) => value.toLowerCase().includes(normalizedQuery));
|
|
3331
3451
|
};
|
|
3452
|
+
/** Command menu root that coordinates filtering and selection. */
|
|
3332
3453
|
class FrCommand {
|
|
3333
3454
|
dialogRef = inject(DialogRef, { optional: true });
|
|
3334
3455
|
items = new Set();
|
|
3335
3456
|
itemsVersion = signal(0, ...(ngDevMode ? [{ debugName: "itemsVersion" }] : /* istanbul ignore next */ []));
|
|
3457
|
+
lastFilter = null;
|
|
3458
|
+
lastHighlightedIndex = 0;
|
|
3459
|
+
lastItemsVersion = -1;
|
|
3460
|
+
lastQuery = '';
|
|
3336
3461
|
closeOnSelect = input(false, { ...(ngDevMode ? { debugName: "closeOnSelect" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3337
3462
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3338
3463
|
filter = input(DEFAULT_FILTER, ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
|
|
@@ -3343,17 +3468,21 @@ class FrCommand {
|
|
|
3343
3468
|
query = signal('', ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
|
|
3344
3469
|
highlightedIndex = signal(0, ...(ngDevMode ? [{ debugName: "highlightedIndex" }] : /* istanbul ignore next */ []));
|
|
3345
3470
|
selectedValue = computed(() => this.value(), ...(ngDevMode ? [{ debugName: "selectedValue" }] : /* istanbul ignore next */ []));
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3471
|
+
ngDoCheck() {
|
|
3472
|
+
const filter = this.filter();
|
|
3473
|
+
const highlightedIndex = this.highlightedIndex();
|
|
3474
|
+
const itemsVersion = this.itemsVersion();
|
|
3475
|
+
const query = this.query();
|
|
3476
|
+
if (query !== this.lastQuery || itemsVersion !== this.lastItemsVersion || filter !== this.lastFilter) {
|
|
3350
3477
|
this.normalizeHighlight();
|
|
3351
|
-
}
|
|
3352
|
-
|
|
3353
|
-
this.highlightedIndex();
|
|
3354
|
-
this.itemsVersion();
|
|
3478
|
+
}
|
|
3479
|
+
if (highlightedIndex !== this.lastHighlightedIndex || itemsVersion !== this.lastItemsVersion) {
|
|
3355
3480
|
this.scrollHighlightedItemIntoView();
|
|
3356
|
-
}
|
|
3481
|
+
}
|
|
3482
|
+
this.lastFilter = filter;
|
|
3483
|
+
this.lastHighlightedIndex = this.highlightedIndex();
|
|
3484
|
+
this.lastItemsVersion = itemsVersion;
|
|
3485
|
+
this.lastQuery = query;
|
|
3357
3486
|
}
|
|
3358
3487
|
registerItem(item) {
|
|
3359
3488
|
this.items.add(item);
|
|
@@ -3363,6 +3492,9 @@ class FrCommand {
|
|
|
3363
3492
|
this.items.delete(item);
|
|
3364
3493
|
this.bumpItems();
|
|
3365
3494
|
}
|
|
3495
|
+
refreshItems() {
|
|
3496
|
+
this.bumpItems();
|
|
3497
|
+
}
|
|
3366
3498
|
visibleItems() {
|
|
3367
3499
|
this.itemsVersion();
|
|
3368
3500
|
return Array.from(this.items).filter((item) => item.isVisible() && !item.disabled());
|
|
@@ -3484,8 +3616,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3484
3616
|
'(keydown)': 'handleKeydown($event)',
|
|
3485
3617
|
},
|
|
3486
3618
|
}]
|
|
3487
|
-
}],
|
|
3619
|
+
}], propDecorators: { closeOnSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnSelect", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], itemSelected: [{ type: i0.Output, args: ["itemSelected"] }], queryChange: [{ type: i0.Output, args: ["queryChange"] }] } });
|
|
3488
3620
|
|
|
3621
|
+
/** Separator slot for command. */
|
|
3489
3622
|
class FrCommandSeparator {
|
|
3490
3623
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCommandSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3491
3624
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCommandSeparator, isStandalone: true, selector: "[frCommandSeparator]", host: { attributes: { "role": "separator" }, classAttribute: "frame-command__separator" }, ngImport: i0 });
|
|
@@ -3502,7 +3635,405 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3502
3635
|
}]
|
|
3503
3636
|
}] });
|
|
3504
3637
|
|
|
3638
|
+
let nextConfirmPopoverId = 0;
|
|
3639
|
+
/** Flexible confirmation popover trigger that can attach to any host element. */
|
|
3640
|
+
class FrConfirmPopover {
|
|
3641
|
+
destroyRef = inject(DestroyRef);
|
|
3642
|
+
elementRef = inject(ElementRef);
|
|
3643
|
+
overlay = inject(Overlay);
|
|
3644
|
+
platformId = inject(PLATFORM_ID);
|
|
3645
|
+
config = input({}, { ...(ngDevMode ? { debugName: "config" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopover' });
|
|
3646
|
+
align = input(undefined, { ...(ngDevMode ? { debugName: "align" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverAlign' });
|
|
3647
|
+
alignOffset = input(undefined, { ...(ngDevMode ? { debugName: "alignOffset" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverAlignOffset',
|
|
3648
|
+
transform: optionalNumberAttribute });
|
|
3649
|
+
buttonSize = input(undefined, { ...(ngDevMode ? { debugName: "buttonSize" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverButtonSize' });
|
|
3650
|
+
cancelAppearance = input(undefined, { ...(ngDevMode ? { debugName: "cancelAppearance" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverCancelAppearance' });
|
|
3651
|
+
cancelLabel = input(undefined, { ...(ngDevMode ? { debugName: "cancelLabel" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverCancelLabel' });
|
|
3652
|
+
confirmAppearance = input(undefined, { ...(ngDevMode ? { debugName: "confirmAppearance" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverConfirmAppearance' });
|
|
3653
|
+
confirmLabel = input(undefined, { ...(ngDevMode ? { debugName: "confirmLabel" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverConfirmLabel' });
|
|
3654
|
+
description = input(undefined, { ...(ngDevMode ? { debugName: "description" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverDescription' });
|
|
3655
|
+
disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverDisabled',
|
|
3656
|
+
transform: optionalBooleanAttribute });
|
|
3657
|
+
side = input(undefined, { ...(ngDevMode ? { debugName: "side" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverSide' });
|
|
3658
|
+
sideOffset = input(undefined, { ...(ngDevMode ? { debugName: "sideOffset" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverSideOffset',
|
|
3659
|
+
transform: optionalNumberAttribute });
|
|
3660
|
+
title = input(undefined, { ...(ngDevMode ? { debugName: "title" } : /* istanbul ignore next */ {}), alias: 'frConfirmPopoverTitle' });
|
|
3661
|
+
closed = output({ alias: 'frConfirmPopoverClosed' });
|
|
3662
|
+
cancelled = output({ alias: 'frConfirmPopoverCancelled' });
|
|
3663
|
+
confirmed = output({ alias: 'frConfirmPopoverConfirmed' });
|
|
3664
|
+
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
3665
|
+
overlayRef = null;
|
|
3666
|
+
panelRef = null;
|
|
3667
|
+
currentSide = 'bottom';
|
|
3668
|
+
constructor() {
|
|
3669
|
+
this.destroyRef.onDestroy(() => this.destroy());
|
|
3670
|
+
}
|
|
3671
|
+
open() {
|
|
3672
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
3673
|
+
return;
|
|
3674
|
+
}
|
|
3675
|
+
const config = this.resolvedConfig();
|
|
3676
|
+
if (config.disabled) {
|
|
3677
|
+
return;
|
|
3678
|
+
}
|
|
3679
|
+
if (!this.overlayRef) {
|
|
3680
|
+
this.overlayRef = this.createOverlay(config);
|
|
3681
|
+
}
|
|
3682
|
+
if (!this.overlayRef.hasAttached()) {
|
|
3683
|
+
this.panelRef = this.overlayRef.attach(new ComponentPortal(FrConfirmPopoverPanel));
|
|
3684
|
+
this.panelRef.instance.cancelled.subscribe(() => this.close('cancel'));
|
|
3685
|
+
this.panelRef.instance.confirmed.subscribe(() => this.close('confirm'));
|
|
3686
|
+
this.syncCustomPropertiesToOverlay();
|
|
3687
|
+
}
|
|
3688
|
+
this.updatePanelInputs(config);
|
|
3689
|
+
this.isOpen.set(true);
|
|
3690
|
+
}
|
|
3691
|
+
close(result) {
|
|
3692
|
+
this.detachPanel({ dispose: true });
|
|
3693
|
+
this.closed.emit(result);
|
|
3694
|
+
if (result === 'confirm') {
|
|
3695
|
+
this.confirmed.emit();
|
|
3696
|
+
return;
|
|
3697
|
+
}
|
|
3698
|
+
if (result === 'cancel') {
|
|
3699
|
+
this.cancelled.emit();
|
|
3700
|
+
}
|
|
3701
|
+
}
|
|
3702
|
+
toggle() {
|
|
3703
|
+
if (this.isOpen()) {
|
|
3704
|
+
this.close();
|
|
3705
|
+
return;
|
|
3706
|
+
}
|
|
3707
|
+
this.open();
|
|
3708
|
+
}
|
|
3709
|
+
handleClick(event) {
|
|
3710
|
+
event.preventDefault();
|
|
3711
|
+
this.toggle();
|
|
3712
|
+
}
|
|
3713
|
+
handleKeydown(event) {
|
|
3714
|
+
if (event.key === 'Escape') {
|
|
3715
|
+
event.preventDefault();
|
|
3716
|
+
this.close();
|
|
3717
|
+
return;
|
|
3718
|
+
}
|
|
3719
|
+
if (this.isNativeInteractiveElement()) {
|
|
3720
|
+
return;
|
|
3721
|
+
}
|
|
3722
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
3723
|
+
event.preventDefault();
|
|
3724
|
+
this.toggle();
|
|
3725
|
+
}
|
|
3726
|
+
}
|
|
3727
|
+
createOverlay(config) {
|
|
3728
|
+
this.currentSide = config.side;
|
|
3729
|
+
const positionStrategy = this.overlay
|
|
3730
|
+
.position()
|
|
3731
|
+
.flexibleConnectedTo(this.elementRef.nativeElement)
|
|
3732
|
+
.withPositions(buildConfirmPopoverPositions(config))
|
|
3733
|
+
.withPush(true)
|
|
3734
|
+
.withViewportMargin(12);
|
|
3735
|
+
positionStrategy.positionChanges.subscribe((event) => this.handlePositionChange(event));
|
|
3736
|
+
const overlayRef = this.overlay.create({
|
|
3737
|
+
hasBackdrop: true,
|
|
3738
|
+
backdropClass: 'frame-popover__backdrop',
|
|
3739
|
+
panelClass: [
|
|
3740
|
+
'frame-popover-overlay',
|
|
3741
|
+
'frame-confirm-popover-overlay',
|
|
3742
|
+
`frame-popover-overlay--${config.side}`,
|
|
3743
|
+
],
|
|
3744
|
+
positionStrategy,
|
|
3745
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
3746
|
+
});
|
|
3747
|
+
overlayRef.backdropClick().subscribe(() => this.close());
|
|
3748
|
+
overlayRef.keydownEvents().subscribe((event) => {
|
|
3749
|
+
if (event.key === 'Escape') {
|
|
3750
|
+
event.preventDefault();
|
|
3751
|
+
this.close();
|
|
3752
|
+
}
|
|
3753
|
+
});
|
|
3754
|
+
return overlayRef;
|
|
3755
|
+
}
|
|
3756
|
+
handlePositionChange(event) {
|
|
3757
|
+
const pair = event.connectionPair;
|
|
3758
|
+
const side = pair.overlayY === 'top'
|
|
3759
|
+
? 'bottom'
|
|
3760
|
+
: pair.overlayY === 'bottom'
|
|
3761
|
+
? 'top'
|
|
3762
|
+
: pair.overlayX === 'start'
|
|
3763
|
+
? 'right'
|
|
3764
|
+
: 'left';
|
|
3765
|
+
this.currentSide = side;
|
|
3766
|
+
this.panelRef?.setInput('side', side);
|
|
3767
|
+
this.overlayRef?.removePanelClass([
|
|
3768
|
+
'frame-popover-overlay--top',
|
|
3769
|
+
'frame-popover-overlay--right',
|
|
3770
|
+
'frame-popover-overlay--bottom',
|
|
3771
|
+
'frame-popover-overlay--left',
|
|
3772
|
+
]);
|
|
3773
|
+
this.overlayRef?.addPanelClass(`frame-popover-overlay--${side}`);
|
|
3774
|
+
}
|
|
3775
|
+
updatePanelInputs(config) {
|
|
3776
|
+
const panelRef = this.panelRef;
|
|
3777
|
+
if (!panelRef) {
|
|
3778
|
+
return;
|
|
3779
|
+
}
|
|
3780
|
+
const panelId = `frame-confirm-popover-${nextConfirmPopoverId++}`;
|
|
3781
|
+
panelRef.setInput('buttonSize', config.buttonSize);
|
|
3782
|
+
panelRef.setInput('cancelAppearance', config.cancelAppearance);
|
|
3783
|
+
panelRef.setInput('cancelLabel', config.cancelLabel);
|
|
3784
|
+
panelRef.setInput('confirmAppearance', config.confirmAppearance);
|
|
3785
|
+
panelRef.setInput('confirmLabel', config.confirmLabel);
|
|
3786
|
+
panelRef.setInput('description', config.description);
|
|
3787
|
+
panelRef.setInput('descriptionId', config.description ? `${panelId}-description` : null);
|
|
3788
|
+
panelRef.setInput('side', this.currentSide);
|
|
3789
|
+
panelRef.setInput('title', config.title);
|
|
3790
|
+
panelRef.setInput('titleId', `${panelId}-title`);
|
|
3791
|
+
}
|
|
3792
|
+
resolvedConfig() {
|
|
3793
|
+
const config = this.config();
|
|
3794
|
+
const baseConfig = typeof config === 'string' ? { title: config } : config;
|
|
3795
|
+
return {
|
|
3796
|
+
align: this.align() ?? baseConfig.align ?? 'center',
|
|
3797
|
+
alignOffset: this.alignOffset() ?? baseConfig.alignOffset ?? 0,
|
|
3798
|
+
buttonSize: this.buttonSize() ?? baseConfig.buttonSize ?? 'sm',
|
|
3799
|
+
cancelAppearance: this.cancelAppearance() ?? baseConfig.cancelAppearance ?? 'outline',
|
|
3800
|
+
cancelLabel: this.cancelLabel() ?? baseConfig.cancelLabel ?? 'Cancel',
|
|
3801
|
+
confirmAppearance: this.confirmAppearance() ?? baseConfig.confirmAppearance ?? 'primary',
|
|
3802
|
+
confirmLabel: this.confirmLabel() ?? baseConfig.confirmLabel ?? 'Confirm',
|
|
3803
|
+
description: this.description() ?? baseConfig.description,
|
|
3804
|
+
disabled: this.disabled() ?? baseConfig.disabled ?? false,
|
|
3805
|
+
side: this.side() ?? baseConfig.side ?? 'bottom',
|
|
3806
|
+
sideOffset: this.sideOffset() ?? baseConfig.sideOffset ?? 8,
|
|
3807
|
+
title: this.title() ?? baseConfig.title ?? 'Are you sure?',
|
|
3808
|
+
};
|
|
3809
|
+
}
|
|
3810
|
+
syncCustomPropertiesToOverlay() {
|
|
3811
|
+
const overlayPane = this.overlayRef?.overlayElement;
|
|
3812
|
+
const panel = overlayPane?.querySelector('.frame-confirm-popover__content');
|
|
3813
|
+
if (!overlayPane || !panel || typeof getComputedStyle === 'undefined') {
|
|
3814
|
+
return;
|
|
3815
|
+
}
|
|
3816
|
+
const sourceStyles = getComputedStyle(this.elementRef.nativeElement);
|
|
3817
|
+
// Overlay content is portaled, so copy popover-compatible token overrides from the trigger.
|
|
3818
|
+
for (let index = 0; index < sourceStyles.length; index += 1) {
|
|
3819
|
+
const propertyName = sourceStyles.item(index);
|
|
3820
|
+
if (!propertyName.startsWith('--frame-popover-') && !propertyName.startsWith('--frame-confirm-popover-')) {
|
|
3821
|
+
continue;
|
|
3822
|
+
}
|
|
3823
|
+
const propertyValue = sourceStyles.getPropertyValue(propertyName);
|
|
3824
|
+
overlayPane.style.setProperty(propertyName, propertyValue);
|
|
3825
|
+
panel.style.setProperty(propertyName, propertyValue);
|
|
3826
|
+
}
|
|
3827
|
+
}
|
|
3828
|
+
isNativeInteractiveElement() {
|
|
3829
|
+
const tagName = this.elementRef.nativeElement.tagName.toLowerCase();
|
|
3830
|
+
return ['a', 'button', 'input', 'select', 'textarea'].includes(tagName);
|
|
3831
|
+
}
|
|
3832
|
+
destroy() {
|
|
3833
|
+
this.detachPanel({ dispose: true });
|
|
3834
|
+
}
|
|
3835
|
+
detachPanel(options = {}) {
|
|
3836
|
+
this.overlayRef?.detach();
|
|
3837
|
+
this.panelRef = null;
|
|
3838
|
+
this.isOpen.set(false);
|
|
3839
|
+
if (options.dispose) {
|
|
3840
|
+
this.overlayRef?.dispose();
|
|
3841
|
+
this.overlayRef = null;
|
|
3842
|
+
}
|
|
3843
|
+
}
|
|
3844
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrConfirmPopover, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3845
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrConfirmPopover, isStandalone: true, selector: "\n [frConfirmPopover],\n [frConfirmPopoverAlign],\n [frConfirmPopoverAlignOffset],\n [frConfirmPopoverButtonSize],\n [frConfirmPopoverCancelAppearance],\n [frConfirmPopoverCancelLabel],\n [frConfirmPopoverConfirmAppearance],\n [frConfirmPopoverConfirmLabel],\n [frConfirmPopoverDescription],\n [frConfirmPopoverDisabled],\n [frConfirmPopoverSide],\n [frConfirmPopoverSideOffset],\n [frConfirmPopoverTitle]\n ", inputs: { config: { classPropertyName: "config", publicName: "frConfirmPopover", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "frConfirmPopoverAlign", isSignal: true, isRequired: false, transformFunction: null }, alignOffset: { classPropertyName: "alignOffset", publicName: "frConfirmPopoverAlignOffset", isSignal: true, isRequired: false, transformFunction: null }, buttonSize: { classPropertyName: "buttonSize", publicName: "frConfirmPopoverButtonSize", isSignal: true, isRequired: false, transformFunction: null }, cancelAppearance: { classPropertyName: "cancelAppearance", publicName: "frConfirmPopoverCancelAppearance", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "frConfirmPopoverCancelLabel", isSignal: true, isRequired: false, transformFunction: null }, confirmAppearance: { classPropertyName: "confirmAppearance", publicName: "frConfirmPopoverConfirmAppearance", isSignal: true, isRequired: false, transformFunction: null }, confirmLabel: { classPropertyName: "confirmLabel", publicName: "frConfirmPopoverConfirmLabel", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "frConfirmPopoverDescription", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "frConfirmPopoverDisabled", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "frConfirmPopoverSide", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "frConfirmPopoverSideOffset", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "frConfirmPopoverTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "frConfirmPopoverClosed", cancelled: "frConfirmPopoverCancelled", confirmed: "frConfirmPopoverConfirmed" }, host: { listeners: { "click": "handleClick($event)", "keydown": "handleKeydown($event)" }, properties: { "attr.aria-expanded": "isOpen()", "attr.aria-haspopup": "\"dialog\"", "attr.data-state": "isOpen() ? \"open\" : \"closed\"" }, classAttribute: "frame-confirm-popover__trigger" }, exportAs: ["frConfirmPopover"], ngImport: i0 });
|
|
3846
|
+
}
|
|
3847
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrConfirmPopover, decorators: [{
|
|
3848
|
+
type: Directive,
|
|
3849
|
+
args: [{
|
|
3850
|
+
selector: `
|
|
3851
|
+
[frConfirmPopover],
|
|
3852
|
+
[frConfirmPopoverAlign],
|
|
3853
|
+
[frConfirmPopoverAlignOffset],
|
|
3854
|
+
[frConfirmPopoverButtonSize],
|
|
3855
|
+
[frConfirmPopoverCancelAppearance],
|
|
3856
|
+
[frConfirmPopoverCancelLabel],
|
|
3857
|
+
[frConfirmPopoverConfirmAppearance],
|
|
3858
|
+
[frConfirmPopoverConfirmLabel],
|
|
3859
|
+
[frConfirmPopoverDescription],
|
|
3860
|
+
[frConfirmPopoverDisabled],
|
|
3861
|
+
[frConfirmPopoverSide],
|
|
3862
|
+
[frConfirmPopoverSideOffset],
|
|
3863
|
+
[frConfirmPopoverTitle]
|
|
3864
|
+
`,
|
|
3865
|
+
exportAs: 'frConfirmPopover',
|
|
3866
|
+
host: {
|
|
3867
|
+
class: 'frame-confirm-popover__trigger',
|
|
3868
|
+
'[attr.aria-expanded]': 'isOpen()',
|
|
3869
|
+
'[attr.aria-haspopup]': '"dialog"',
|
|
3870
|
+
'[attr.data-state]': 'isOpen() ? "open" : "closed"',
|
|
3871
|
+
'(click)': 'handleClick($event)',
|
|
3872
|
+
'(keydown)': 'handleKeydown($event)',
|
|
3873
|
+
},
|
|
3874
|
+
}]
|
|
3875
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopover", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverAlign", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverAlignOffset", required: false }] }], buttonSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverButtonSize", required: false }] }], cancelAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverCancelAppearance", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverCancelLabel", required: false }] }], confirmAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverConfirmAppearance", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverConfirmLabel", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverDescription", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverDisabled", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverSide", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverSideOffset", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "frConfirmPopoverTitle", required: false }] }], closed: [{ type: i0.Output, args: ["frConfirmPopoverClosed"] }], cancelled: [{ type: i0.Output, args: ["frConfirmPopoverCancelled"] }], confirmed: [{ type: i0.Output, args: ["frConfirmPopoverConfirmed"] }] } });
|
|
3876
|
+
class FrConfirmPopoverPanel {
|
|
3877
|
+
buttonSize = input('sm', ...(ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []));
|
|
3878
|
+
cancelAppearance = input('outline', ...(ngDevMode ? [{ debugName: "cancelAppearance" }] : /* istanbul ignore next */ []));
|
|
3879
|
+
cancelLabel = input('Cancel', ...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
|
|
3880
|
+
confirmAppearance = input('primary', ...(ngDevMode ? [{ debugName: "confirmAppearance" }] : /* istanbul ignore next */ []));
|
|
3881
|
+
confirmLabel = input('Confirm', ...(ngDevMode ? [{ debugName: "confirmLabel" }] : /* istanbul ignore next */ []));
|
|
3882
|
+
description = input(undefined, ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
|
|
3883
|
+
descriptionId = input(null, ...(ngDevMode ? [{ debugName: "descriptionId" }] : /* istanbul ignore next */ []));
|
|
3884
|
+
side = input('bottom', ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
3885
|
+
title = input('Are you sure?', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
3886
|
+
titleId = input.required(...(ngDevMode ? [{ debugName: "titleId" }] : /* istanbul ignore next */ []));
|
|
3887
|
+
cancelled = output();
|
|
3888
|
+
confirmed = output();
|
|
3889
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrConfirmPopoverPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3890
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrConfirmPopoverPanel, isStandalone: true, selector: "frame-confirm-popover-panel", inputs: { buttonSize: { classPropertyName: "buttonSize", publicName: "buttonSize", isSignal: true, isRequired: false, transformFunction: null }, cancelAppearance: { classPropertyName: "cancelAppearance", publicName: "cancelAppearance", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, confirmAppearance: { classPropertyName: "confirmAppearance", publicName: "confirmAppearance", isSignal: true, isRequired: false, transformFunction: null }, confirmLabel: { classPropertyName: "confirmLabel", publicName: "confirmLabel", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, descriptionId: { classPropertyName: "descriptionId", publicName: "descriptionId", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleId: { classPropertyName: "titleId", publicName: "titleId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { cancelled: "cancelled", confirmed: "confirmed" }, ngImport: i0, template: `
|
|
3891
|
+
<div
|
|
3892
|
+
class="frame-popover__content frame-confirm-popover__content"
|
|
3893
|
+
role="alertdialog"
|
|
3894
|
+
[attr.aria-describedby]="descriptionId()"
|
|
3895
|
+
[attr.aria-labelledby]="titleId()"
|
|
3896
|
+
[attr.data-side]="side()"
|
|
3897
|
+
>
|
|
3898
|
+
<div class="frame-popover__header frame-confirm-popover__header">
|
|
3899
|
+
<h3 class="frame-popover__title frame-confirm-popover__title" [id]="titleId()">
|
|
3900
|
+
{{ title() }}
|
|
3901
|
+
</h3>
|
|
3902
|
+
|
|
3903
|
+
@if (description()) {
|
|
3904
|
+
<p class="frame-popover__description frame-confirm-popover__description" [id]="descriptionId()">
|
|
3905
|
+
{{ description() }}
|
|
3906
|
+
</p>
|
|
3907
|
+
}
|
|
3908
|
+
</div>
|
|
3909
|
+
|
|
3910
|
+
<div class="frame-popover__footer frame-confirm-popover__footer">
|
|
3911
|
+
<button
|
|
3912
|
+
frButton
|
|
3913
|
+
type="button"
|
|
3914
|
+
[appearance]="cancelAppearance()"
|
|
3915
|
+
[size]="buttonSize()"
|
|
3916
|
+
(click)="cancelled.emit()"
|
|
3917
|
+
>
|
|
3918
|
+
<span frButtonLabel>{{ cancelLabel() }}</span>
|
|
3919
|
+
</button>
|
|
3920
|
+
<button
|
|
3921
|
+
frButton
|
|
3922
|
+
type="button"
|
|
3923
|
+
[appearance]="confirmAppearance()"
|
|
3924
|
+
[size]="buttonSize()"
|
|
3925
|
+
(click)="confirmed.emit()"
|
|
3926
|
+
>
|
|
3927
|
+
<span frButtonLabel>{{ confirmLabel() }}</span>
|
|
3928
|
+
</button>
|
|
3929
|
+
</div>
|
|
3930
|
+
</div>
|
|
3931
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: FrButton$1, selector: "a[frButton], button[frButton]", inputs: ["appearance", "disabled", "loading", "loadingDisplay", "radius", "size"] }, { kind: "directive", type: FrButtonLabel$1, selector: "[frButtonLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3932
|
+
}
|
|
3933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrConfirmPopoverPanel, decorators: [{
|
|
3934
|
+
type: Component,
|
|
3935
|
+
args: [{
|
|
3936
|
+
selector: 'frame-confirm-popover-panel',
|
|
3937
|
+
imports: [FrButton$1, FrButtonLabel$1],
|
|
3938
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3939
|
+
template: `
|
|
3940
|
+
<div
|
|
3941
|
+
class="frame-popover__content frame-confirm-popover__content"
|
|
3942
|
+
role="alertdialog"
|
|
3943
|
+
[attr.aria-describedby]="descriptionId()"
|
|
3944
|
+
[attr.aria-labelledby]="titleId()"
|
|
3945
|
+
[attr.data-side]="side()"
|
|
3946
|
+
>
|
|
3947
|
+
<div class="frame-popover__header frame-confirm-popover__header">
|
|
3948
|
+
<h3 class="frame-popover__title frame-confirm-popover__title" [id]="titleId()">
|
|
3949
|
+
{{ title() }}
|
|
3950
|
+
</h3>
|
|
3951
|
+
|
|
3952
|
+
@if (description()) {
|
|
3953
|
+
<p class="frame-popover__description frame-confirm-popover__description" [id]="descriptionId()">
|
|
3954
|
+
{{ description() }}
|
|
3955
|
+
</p>
|
|
3956
|
+
}
|
|
3957
|
+
</div>
|
|
3958
|
+
|
|
3959
|
+
<div class="frame-popover__footer frame-confirm-popover__footer">
|
|
3960
|
+
<button
|
|
3961
|
+
frButton
|
|
3962
|
+
type="button"
|
|
3963
|
+
[appearance]="cancelAppearance()"
|
|
3964
|
+
[size]="buttonSize()"
|
|
3965
|
+
(click)="cancelled.emit()"
|
|
3966
|
+
>
|
|
3967
|
+
<span frButtonLabel>{{ cancelLabel() }}</span>
|
|
3968
|
+
</button>
|
|
3969
|
+
<button
|
|
3970
|
+
frButton
|
|
3971
|
+
type="button"
|
|
3972
|
+
[appearance]="confirmAppearance()"
|
|
3973
|
+
[size]="buttonSize()"
|
|
3974
|
+
(click)="confirmed.emit()"
|
|
3975
|
+
>
|
|
3976
|
+
<span frButtonLabel>{{ confirmLabel() }}</span>
|
|
3977
|
+
</button>
|
|
3978
|
+
</div>
|
|
3979
|
+
</div>
|
|
3980
|
+
`,
|
|
3981
|
+
}]
|
|
3982
|
+
}], propDecorators: { buttonSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonSize", required: false }] }], cancelAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelAppearance", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], confirmAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmAppearance", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmLabel", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], descriptionId: [{ type: i0.Input, args: [{ isSignal: true, alias: "descriptionId", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], titleId: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleId", required: true }] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }], confirmed: [{ type: i0.Output, args: ["confirmed"] }] } });
|
|
3983
|
+
function buildConfirmPopoverPositions(options) {
|
|
3984
|
+
const primary = buildPosition$2(options.side, options);
|
|
3985
|
+
const fallback = buildPosition$2(oppositeSide$2(options.side), options);
|
|
3986
|
+
return [primary, fallback];
|
|
3987
|
+
}
|
|
3988
|
+
function buildPosition$2(side, options) {
|
|
3989
|
+
if (side === 'top' || side === 'bottom') {
|
|
3990
|
+
const isBottom = side === 'bottom';
|
|
3991
|
+
return {
|
|
3992
|
+
originX: options.align,
|
|
3993
|
+
originY: isBottom ? 'bottom' : 'top',
|
|
3994
|
+
overlayX: options.align,
|
|
3995
|
+
overlayY: isBottom ? 'top' : 'bottom',
|
|
3996
|
+
offsetX: options.alignOffset,
|
|
3997
|
+
offsetY: isBottom ? options.sideOffset : -options.sideOffset,
|
|
3998
|
+
};
|
|
3999
|
+
}
|
|
4000
|
+
const isRight = side === 'right';
|
|
4001
|
+
return {
|
|
4002
|
+
originX: isRight ? 'end' : 'start',
|
|
4003
|
+
originY: verticalPosition(options.align),
|
|
4004
|
+
overlayX: isRight ? 'start' : 'end',
|
|
4005
|
+
overlayY: verticalPosition(options.align),
|
|
4006
|
+
offsetX: isRight ? options.sideOffset : -options.sideOffset,
|
|
4007
|
+
offsetY: options.alignOffset,
|
|
4008
|
+
};
|
|
4009
|
+
}
|
|
4010
|
+
function verticalPosition(align) {
|
|
4011
|
+
if (align === 'center') {
|
|
4012
|
+
return 'center';
|
|
4013
|
+
}
|
|
4014
|
+
return align === 'start' ? 'top' : 'bottom';
|
|
4015
|
+
}
|
|
4016
|
+
function oppositeSide$2(side) {
|
|
4017
|
+
if (side === 'top') {
|
|
4018
|
+
return 'bottom';
|
|
4019
|
+
}
|
|
4020
|
+
if (side === 'bottom') {
|
|
4021
|
+
return 'top';
|
|
4022
|
+
}
|
|
4023
|
+
if (side === 'left') {
|
|
4024
|
+
return 'right';
|
|
4025
|
+
}
|
|
4026
|
+
return 'left';
|
|
4027
|
+
}
|
|
4028
|
+
function optionalBooleanAttribute(value) {
|
|
4029
|
+
return value == null ? undefined : booleanAttribute(value);
|
|
4030
|
+
}
|
|
4031
|
+
function optionalNumberAttribute(value) {
|
|
4032
|
+
return value == null ? undefined : numberAttribute(value);
|
|
4033
|
+
}
|
|
4034
|
+
|
|
3505
4035
|
const FR_CONTEXT_MENU_CONTENT = new InjectionToken('FrContextMenuContent');
|
|
4036
|
+
/** Content slot for context menu. */
|
|
3506
4037
|
class FrContextMenuContent {
|
|
3507
4038
|
templateRef = inject((TemplateRef));
|
|
3508
4039
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
@@ -3551,6 +4082,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3551
4082
|
],
|
|
3552
4083
|
}]
|
|
3553
4084
|
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }] } });
|
|
4085
|
+
/** Panel slot for context menu. */
|
|
3554
4086
|
class FrContextMenuPanel {
|
|
3555
4087
|
side = inject(FR_CONTEXT_MENU_CONTENT).side;
|
|
3556
4088
|
tree = inject(FrDropdownMenuTree$1);
|
|
@@ -3579,6 +4111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3579
4111
|
}]
|
|
3580
4112
|
}] });
|
|
3581
4113
|
|
|
4114
|
+
/** Item slot for context menu. */
|
|
3582
4115
|
class FrContextMenuItem {
|
|
3583
4116
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3584
4117
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
@@ -3597,16 +4130,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3597
4130
|
},
|
|
3598
4131
|
}]
|
|
3599
4132
|
}], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
4133
|
+
/** Item slot for context menu checkbox. */
|
|
3600
4134
|
class FrContextMenuCheckboxItem {
|
|
3601
4135
|
checkboxItem = inject(CdkMenuItemCheckbox);
|
|
4136
|
+
lastChecked = false;
|
|
3602
4137
|
checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
|
|
3603
4138
|
transform: booleanAttribute });
|
|
3604
4139
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3605
4140
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
4141
|
+
ngDoCheck() {
|
|
4142
|
+
const checked = this.checked();
|
|
4143
|
+
if (checked === this.lastChecked) {
|
|
4144
|
+
return;
|
|
4145
|
+
}
|
|
4146
|
+
this.lastChecked = checked;
|
|
4147
|
+
this.checkboxItem.checked = checked;
|
|
3610
4148
|
}
|
|
3611
4149
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuCheckboxItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3612
4150
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrContextMenuCheckboxItem, isStandalone: true, selector: "button[frContextMenuCheckboxItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "checkboxItem.checked ? \"\" : null", "attr.data-inset": "inset() ? \"\" : null", "attr.data-variant": "variant()" }, classAttribute: "frame-context-menu__item frame-context-menu__checkbox-item frame-dropdown-menu__item frame-dropdown-menu__checkbox-item" }, hostDirectives: [{ directive: i1$2.CdkMenuItemCheckbox }], ngImport: i0 });
|
|
@@ -3623,7 +4161,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3623
4161
|
'[attr.data-variant]': 'variant()',
|
|
3624
4162
|
},
|
|
3625
4163
|
}]
|
|
3626
|
-
}],
|
|
4164
|
+
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
4165
|
+
/** Group slot for context menu radio. */
|
|
3627
4166
|
class FrContextMenuRadioGroup {
|
|
3628
4167
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3629
4168
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuRadioGroup, isStandalone: true, selector: "[frContextMenuRadioGroup]", host: { classAttribute: "frame-context-menu__radio-group frame-dropdown-menu__radio-group" }, hostDirectives: [{ directive: i1$2.CdkMenuGroup }], ngImport: i0 });
|
|
@@ -3638,16 +4177,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3638
4177
|
},
|
|
3639
4178
|
}]
|
|
3640
4179
|
}] });
|
|
4180
|
+
/** Item slot for context menu radio. */
|
|
3641
4181
|
class FrContextMenuRadioItem {
|
|
3642
4182
|
radioItem = inject(CdkMenuItemRadio);
|
|
4183
|
+
lastChecked = false;
|
|
3643
4184
|
checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
|
|
3644
4185
|
transform: booleanAttribute });
|
|
3645
4186
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3646
4187
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
4188
|
+
ngDoCheck() {
|
|
4189
|
+
const checked = this.checked();
|
|
4190
|
+
if (checked === this.lastChecked) {
|
|
4191
|
+
return;
|
|
4192
|
+
}
|
|
4193
|
+
this.lastChecked = checked;
|
|
4194
|
+
this.radioItem.checked = checked;
|
|
3651
4195
|
}
|
|
3652
4196
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuRadioItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3653
4197
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrContextMenuRadioItem, isStandalone: true, selector: "button[frContextMenuRadioItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "radioItem.checked ? \"\" : null", "attr.data-inset": "inset() ? \"\" : null", "attr.data-variant": "variant()" }, classAttribute: "frame-context-menu__item frame-context-menu__radio-item frame-dropdown-menu__item frame-dropdown-menu__radio-item" }, hostDirectives: [{ directive: i1$2.CdkMenuItemRadio }], ngImport: i0 });
|
|
@@ -3664,7 +4208,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3664
4208
|
'[attr.data-variant]': 'variant()',
|
|
3665
4209
|
},
|
|
3666
4210
|
}]
|
|
3667
|
-
}],
|
|
4211
|
+
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
4212
|
+
/** Label slot for context menu. */
|
|
3668
4213
|
class FrContextMenuLabel {
|
|
3669
4214
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3670
4215
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -3680,6 +4225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3680
4225
|
},
|
|
3681
4226
|
}]
|
|
3682
4227
|
}], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }] } });
|
|
4228
|
+
/** Separator slot for context menu. */
|
|
3683
4229
|
class FrContextMenuSeparator {
|
|
3684
4230
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3685
4231
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuSeparator, isStandalone: true, selector: "[frContextMenuSeparator]", host: { attributes: { "role": "separator" }, classAttribute: "frame-context-menu__separator frame-dropdown-menu__separator" }, ngImport: i0 });
|
|
@@ -3694,6 +4240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3694
4240
|
},
|
|
3695
4241
|
}]
|
|
3696
4242
|
}] });
|
|
4243
|
+
/** Shortcut slot for context menu. */
|
|
3697
4244
|
class FrContextMenuShortcut {
|
|
3698
4245
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuShortcut, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3699
4246
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuShortcut, isStandalone: true, selector: "[frContextMenuShortcut]", host: { classAttribute: "frame-context-menu__shortcut frame-dropdown-menu__shortcut" }, ngImport: i0 });
|
|
@@ -3707,6 +4254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3707
4254
|
},
|
|
3708
4255
|
}]
|
|
3709
4256
|
}] });
|
|
4257
|
+
/** Indicator slot for context menu item. */
|
|
3710
4258
|
class FrContextMenuItemIndicator {
|
|
3711
4259
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3712
4260
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuItemIndicator, isStandalone: true, selector: "[frContextMenuItemIndicator]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-context-menu__indicator frame-dropdown-menu__indicator" }, ngImport: i0 });
|
|
@@ -3722,6 +4270,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3722
4270
|
}]
|
|
3723
4271
|
}] });
|
|
3724
4272
|
|
|
4273
|
+
/** Root controller for context menu interactions. */
|
|
3725
4274
|
class FrContextMenu {
|
|
3726
4275
|
closeDelay = input(140, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
3727
4276
|
triggerMode = input('both', ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
@@ -3750,18 +4299,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3750
4299
|
},
|
|
3751
4300
|
}]
|
|
3752
4301
|
}], propDecorators: { closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
4302
|
+
/** Nested submenu controller for context menu. */
|
|
3753
4303
|
class FrContextMenuSub {
|
|
3754
4304
|
parent = inject(FR_DROPDOWN_MENU_PARENT$1, { skipSelf: true });
|
|
3755
4305
|
closeDelayInput = input(null, { ...(ngDevMode ? { debugName: "closeDelayInput" } : /* istanbul ignore next */ {}), alias: 'closeDelay' });
|
|
3756
4306
|
triggerModeInput = input(null, { ...(ngDevMode ? { debugName: "triggerModeInput" } : /* istanbul ignore next */ {}), alias: 'triggerMode' });
|
|
3757
|
-
closeDelay =
|
|
3758
|
-
triggerMode =
|
|
3759
|
-
constructor() {
|
|
3760
|
-
effect(() => {
|
|
3761
|
-
this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());
|
|
3762
|
-
this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());
|
|
3763
|
-
});
|
|
3764
|
-
}
|
|
4307
|
+
closeDelay = computed(() => this.closeDelayInput() ?? this.parent.closeDelay(), ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
4308
|
+
triggerMode = computed(() => this.triggerModeInput() ?? this.parent.triggerMode(), ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
3765
4309
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuSub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3766
4310
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrContextMenuSub, isStandalone: true, selector: "[frContextMenuSub]", inputs: { closeDelayInput: { classPropertyName: "closeDelayInput", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, triggerModeInput: { classPropertyName: "triggerModeInput", publicName: "triggerMode", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "frame-context-menu-sub frame-dropdown-menu-sub" }, providers: [
|
|
3767
4311
|
{
|
|
@@ -3784,8 +4328,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3784
4328
|
class: 'frame-context-menu-sub frame-dropdown-menu-sub',
|
|
3785
4329
|
},
|
|
3786
4330
|
}]
|
|
3787
|
-
}],
|
|
4331
|
+
}], propDecorators: { closeDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
3788
4332
|
|
|
4333
|
+
/** Trigger control for context menu sub. */
|
|
3789
4334
|
class FrContextMenuSubTrigger {
|
|
3790
4335
|
cdkMenuTrigger = inject(CdkMenuTrigger);
|
|
3791
4336
|
destroyRef = inject(DestroyRef);
|
|
@@ -3798,18 +4343,7 @@ class FrContextMenuSubTrigger {
|
|
|
3798
4343
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
3799
4344
|
constructor() {
|
|
3800
4345
|
this.tree.register(this);
|
|
3801
|
-
|
|
3802
|
-
const content = this.menuContent();
|
|
3803
|
-
this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
3804
|
-
this.cdkMenuTrigger.menuPosition = this.resolvePositions();
|
|
3805
|
-
if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
|
|
3806
|
-
queueMicrotask(() => {
|
|
3807
|
-
if (!this.cdkMenuTrigger.isOpen()) {
|
|
3808
|
-
this.cdkMenuTrigger.open();
|
|
3809
|
-
}
|
|
3810
|
-
});
|
|
3811
|
-
}
|
|
3812
|
-
});
|
|
4346
|
+
queueMicrotask(() => this.syncCdkTrigger());
|
|
3813
4347
|
this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
3814
4348
|
this.tree.cancelClose();
|
|
3815
4349
|
this.isOpen.set(true);
|
|
@@ -3826,6 +4360,21 @@ class FrContextMenuSubTrigger {
|
|
|
3826
4360
|
this.isOpen.set(false);
|
|
3827
4361
|
});
|
|
3828
4362
|
}
|
|
4363
|
+
ngDoCheck() {
|
|
4364
|
+
this.syncCdkTrigger();
|
|
4365
|
+
}
|
|
4366
|
+
syncCdkTrigger() {
|
|
4367
|
+
const content = this.menuContent();
|
|
4368
|
+
this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
4369
|
+
this.cdkMenuTrigger.menuPosition = this.resolvePositions();
|
|
4370
|
+
if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
|
|
4371
|
+
queueMicrotask(() => {
|
|
4372
|
+
if (!this.cdkMenuTrigger.isOpen()) {
|
|
4373
|
+
this.cdkMenuTrigger.open();
|
|
4374
|
+
}
|
|
4375
|
+
});
|
|
4376
|
+
}
|
|
4377
|
+
}
|
|
3829
4378
|
close() {
|
|
3830
4379
|
if (this.menuContent()?.isDebugVisible()) {
|
|
3831
4380
|
return;
|
|
@@ -3879,6 +4428,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3879
4428
|
}]
|
|
3880
4429
|
}], ctorParameters: () => [], propDecorators: { menuContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "frContextMenuSubTrigger", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
3881
4430
|
|
|
4431
|
+
/** Trigger control for context menu. */
|
|
3882
4432
|
class FrContextMenuTrigger {
|
|
3883
4433
|
static CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';
|
|
3884
4434
|
cdkContextMenuTrigger = inject(CdkContextMenuTrigger);
|
|
@@ -3892,19 +4442,7 @@ class FrContextMenuTrigger {
|
|
|
3892
4442
|
closed = output();
|
|
3893
4443
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
3894
4444
|
constructor() {
|
|
3895
|
-
|
|
3896
|
-
const content = this.menuContent();
|
|
3897
|
-
this.cdkContextMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
3898
|
-
this.cdkContextMenuTrigger.menuPosition = this.resolvePositions();
|
|
3899
|
-
this.cdkContextMenuTrigger.disabled = this.disabled();
|
|
3900
|
-
if (content?.isDebugVisible() && !this.cdkContextMenuTrigger.isOpen()) {
|
|
3901
|
-
queueMicrotask(() => {
|
|
3902
|
-
if (!this.cdkContextMenuTrigger.isOpen()) {
|
|
3903
|
-
this.openAtCenter();
|
|
3904
|
-
}
|
|
3905
|
-
});
|
|
3906
|
-
}
|
|
3907
|
-
});
|
|
4445
|
+
queueMicrotask(() => this.syncCdkTrigger());
|
|
3908
4446
|
this.cdkContextMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
3909
4447
|
this.isOpen.set(true);
|
|
3910
4448
|
this.opened.emit();
|
|
@@ -3925,6 +4463,22 @@ class FrContextMenuTrigger {
|
|
|
3925
4463
|
this.closed.emit();
|
|
3926
4464
|
});
|
|
3927
4465
|
}
|
|
4466
|
+
ngDoCheck() {
|
|
4467
|
+
this.syncCdkTrigger();
|
|
4468
|
+
}
|
|
4469
|
+
syncCdkTrigger() {
|
|
4470
|
+
const content = this.menuContent();
|
|
4471
|
+
this.cdkContextMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
4472
|
+
this.cdkContextMenuTrigger.menuPosition = this.resolvePositions();
|
|
4473
|
+
this.cdkContextMenuTrigger.disabled = this.disabled();
|
|
4474
|
+
if (content?.isDebugVisible() && !this.cdkContextMenuTrigger.isOpen()) {
|
|
4475
|
+
queueMicrotask(() => {
|
|
4476
|
+
if (!this.cdkContextMenuTrigger.isOpen()) {
|
|
4477
|
+
this.openAtCenter();
|
|
4478
|
+
}
|
|
4479
|
+
});
|
|
4480
|
+
}
|
|
4481
|
+
}
|
|
3928
4482
|
openAt(coordinates) {
|
|
3929
4483
|
if (this.disabled() || !this.menuContent()) {
|
|
3930
4484
|
return;
|
|
@@ -3939,6 +4493,7 @@ class FrContextMenuTrigger {
|
|
|
3939
4493
|
return;
|
|
3940
4494
|
}
|
|
3941
4495
|
this.clearLongPress();
|
|
4496
|
+
// Touch and pen users need a delayed open because they do not have a native contextmenu gesture.
|
|
3942
4497
|
this.longPressTimeoutId = setTimeout(() => {
|
|
3943
4498
|
event.preventDefault();
|
|
3944
4499
|
this.openAt({ x: event.clientX, y: event.clientY });
|
|
@@ -3969,6 +4524,7 @@ class FrContextMenuTrigger {
|
|
|
3969
4524
|
}
|
|
3970
4525
|
const menuPanel = overlayElement.querySelector('.frame-dropdown-menu__content') ?? overlayElement;
|
|
3971
4526
|
const sourceStyles = getComputedStyle(this.elementRef.nativeElement);
|
|
4527
|
+
// CDK portals the menu, so trigger-scoped CSS variables must be mirrored manually.
|
|
3972
4528
|
for (let index = 0; index < sourceStyles.length; index += 1) {
|
|
3973
4529
|
const propertyName = sourceStyles.item(index);
|
|
3974
4530
|
if (!propertyName.startsWith(FrContextMenuTrigger.CUSTOM_PROPERTY_PREFIX)) {
|
|
@@ -4015,6 +4571,7 @@ const POSITIONS = [
|
|
|
4015
4571
|
offsetY: -8,
|
|
4016
4572
|
},
|
|
4017
4573
|
];
|
|
4574
|
+
/** Date picker control backed by the calendar primitive. */
|
|
4018
4575
|
class FrDatePicker extends FrControlValueAccessor$1 {
|
|
4019
4576
|
mode = input('single', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
4020
4577
|
captionLayout = input('label', ...(ngDevMode ? [{ debugName: "captionLayout" }] : /* istanbul ignore next */ []));
|
|
@@ -4116,6 +4673,7 @@ class FrDatePicker extends FrControlValueAccessor$1 {
|
|
|
4116
4673
|
}
|
|
4117
4674
|
selectCalendarValue(value) {
|
|
4118
4675
|
const previous = this.singleDate();
|
|
4676
|
+
// Preserve the existing time when a calendar click only changes the date portion.
|
|
4119
4677
|
const next = this.showTime() && value instanceof Date && previous ? mergeTime(value, previous) : value;
|
|
4120
4678
|
this.commitValue(normalizeValue(next, this.mode()));
|
|
4121
4679
|
if (this.closeOnSelect() && isCompleteValue(this.value(), this.mode())) {
|
|
@@ -4427,6 +4985,7 @@ function normalizeValue(value, mode) {
|
|
|
4427
4985
|
if (!value) {
|
|
4428
4986
|
return mode === 'range' ? { from: null, to: null } : null;
|
|
4429
4987
|
}
|
|
4988
|
+
// Normalize across modes so form writes, presets, and calendar selections share one shape.
|
|
4430
4989
|
if (mode === 'range') {
|
|
4431
4990
|
if (isRange(value)) {
|
|
4432
4991
|
return {
|
|
@@ -4597,6 +5156,7 @@ function horizontalOverlayY(align) {
|
|
|
4597
5156
|
}
|
|
4598
5157
|
|
|
4599
5158
|
const FR_DROPDOWN_MENU_PARENT = new InjectionToken('FrDropdownMenuParent');
|
|
5159
|
+
/** Shared registry for nested dropdown menu state. */
|
|
4600
5160
|
class FrDropdownMenuTree {
|
|
4601
5161
|
triggers = new Set();
|
|
4602
5162
|
closeTimeoutId = null;
|
|
@@ -4641,6 +5201,7 @@ class FrDropdownMenuTree {
|
|
|
4641
5201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuTree, decorators: [{
|
|
4642
5202
|
type: Injectable
|
|
4643
5203
|
}] });
|
|
5204
|
+
/** Root controller for dropdown menu interactions. */
|
|
4644
5205
|
class FrDropdownMenu {
|
|
4645
5206
|
closeDelay = input(140, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
4646
5207
|
triggerMode = input('click', ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
@@ -4669,18 +5230,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4669
5230
|
},
|
|
4670
5231
|
}]
|
|
4671
5232
|
}], propDecorators: { closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
5233
|
+
/** Nested submenu controller for dropdown menu. */
|
|
4672
5234
|
class FrDropdownMenuSub {
|
|
4673
5235
|
parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });
|
|
4674
5236
|
closeDelayInput = input(null, { ...(ngDevMode ? { debugName: "closeDelayInput" } : /* istanbul ignore next */ {}), alias: 'closeDelay' });
|
|
4675
5237
|
triggerModeInput = input(null, { ...(ngDevMode ? { debugName: "triggerModeInput" } : /* istanbul ignore next */ {}), alias: 'triggerMode' });
|
|
4676
|
-
closeDelay =
|
|
4677
|
-
triggerMode =
|
|
4678
|
-
constructor() {
|
|
4679
|
-
effect(() => {
|
|
4680
|
-
this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());
|
|
4681
|
-
this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());
|
|
4682
|
-
});
|
|
4683
|
-
}
|
|
5238
|
+
closeDelay = computed(() => this.closeDelayInput() ?? this.parent.closeDelay(), ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
5239
|
+
triggerMode = computed(() => this.triggerModeInput() ?? this.parent.triggerMode(), ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
4684
5240
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuSub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4685
5241
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrDropdownMenuSub, isStandalone: true, selector: "[frDropdownMenuSub]", inputs: { closeDelayInput: { classPropertyName: "closeDelayInput", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, triggerModeInput: { classPropertyName: "triggerModeInput", publicName: "triggerMode", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "frame-dropdown-menu-sub" }, providers: [
|
|
4686
5242
|
{
|
|
@@ -4703,9 +5259,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4703
5259
|
class: 'frame-dropdown-menu-sub',
|
|
4704
5260
|
},
|
|
4705
5261
|
}]
|
|
4706
|
-
}],
|
|
5262
|
+
}], propDecorators: { closeDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
4707
5263
|
|
|
4708
5264
|
const FR_DROPDOWN_MENU_CONTENT = new InjectionToken('FrDropdownMenuContent');
|
|
5265
|
+
/** Content slot for dropdown menu. */
|
|
4709
5266
|
class FrDropdownMenuContent {
|
|
4710
5267
|
templateRef = inject((TemplateRef));
|
|
4711
5268
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
@@ -4746,6 +5303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4746
5303
|
],
|
|
4747
5304
|
}]
|
|
4748
5305
|
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }] } });
|
|
5306
|
+
/** Panel slot for dropdown menu. */
|
|
4749
5307
|
class FrDropdownMenuPanel {
|
|
4750
5308
|
side = inject(FR_DROPDOWN_MENU_CONTENT).side;
|
|
4751
5309
|
tree = inject(FrDropdownMenuTree);
|
|
@@ -4774,6 +5332,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4774
5332
|
}]
|
|
4775
5333
|
}] });
|
|
4776
5334
|
|
|
5335
|
+
/** Item slot for dropdown menu. */
|
|
4777
5336
|
class FrDropdownMenuItem {
|
|
4778
5337
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4779
5338
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
@@ -4792,16 +5351,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4792
5351
|
},
|
|
4793
5352
|
}]
|
|
4794
5353
|
}], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
5354
|
+
/** Item slot for dropdown menu checkbox. */
|
|
4795
5355
|
class FrDropdownMenuCheckboxItem {
|
|
4796
5356
|
checkboxItem = inject(CdkMenuItemCheckbox);
|
|
5357
|
+
lastChecked = false;
|
|
4797
5358
|
checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
|
|
4798
5359
|
transform: booleanAttribute });
|
|
4799
5360
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4800
5361
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
5362
|
+
ngDoCheck() {
|
|
5363
|
+
const checked = this.checked();
|
|
5364
|
+
if (checked === this.lastChecked) {
|
|
5365
|
+
return;
|
|
5366
|
+
}
|
|
5367
|
+
this.lastChecked = checked;
|
|
5368
|
+
this.checkboxItem.checked = checked;
|
|
4805
5369
|
}
|
|
4806
5370
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuCheckboxItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4807
5371
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrDropdownMenuCheckboxItem, isStandalone: true, selector: "button[frDropdownMenuCheckboxItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "checkboxItem.checked ? \"\" : null", "attr.data-inset": "inset() ? \"\" : null", "attr.data-variant": "variant()" }, classAttribute: "frame-dropdown-menu__item frame-dropdown-menu__checkbox-item" }, hostDirectives: [{ directive: i1$2.CdkMenuItemCheckbox }], ngImport: i0 });
|
|
@@ -4818,7 +5382,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4818
5382
|
'[attr.data-variant]': 'variant()',
|
|
4819
5383
|
},
|
|
4820
5384
|
}]
|
|
4821
|
-
}],
|
|
5385
|
+
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
5386
|
+
/** Group slot for dropdown menu radio. */
|
|
4822
5387
|
class FrDropdownMenuRadioGroup {
|
|
4823
5388
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4824
5389
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuRadioGroup, isStandalone: true, selector: "[frDropdownMenuRadioGroup]", host: { classAttribute: "frame-dropdown-menu__radio-group" }, hostDirectives: [{ directive: i1$2.CdkMenuGroup }], ngImport: i0 });
|
|
@@ -4833,16 +5398,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4833
5398
|
},
|
|
4834
5399
|
}]
|
|
4835
5400
|
}] });
|
|
5401
|
+
/** Item slot for dropdown menu radio. */
|
|
4836
5402
|
class FrDropdownMenuRadioItem {
|
|
4837
5403
|
radioItem = inject(CdkMenuItemRadio);
|
|
5404
|
+
lastChecked = false;
|
|
4838
5405
|
checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
|
|
4839
5406
|
transform: booleanAttribute });
|
|
4840
5407
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4841
5408
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
4842
|
-
|
|
4843
|
-
|
|
4844
|
-
|
|
4845
|
-
|
|
5409
|
+
ngDoCheck() {
|
|
5410
|
+
const checked = this.checked();
|
|
5411
|
+
if (checked === this.lastChecked) {
|
|
5412
|
+
return;
|
|
5413
|
+
}
|
|
5414
|
+
this.lastChecked = checked;
|
|
5415
|
+
this.radioItem.checked = checked;
|
|
4846
5416
|
}
|
|
4847
5417
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuRadioItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4848
5418
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrDropdownMenuRadioItem, isStandalone: true, selector: "button[frDropdownMenuRadioItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "radioItem.checked ? \"\" : null", "attr.data-inset": "inset() ? \"\" : null", "attr.data-variant": "variant()" }, classAttribute: "frame-dropdown-menu__item frame-dropdown-menu__radio-item" }, hostDirectives: [{ directive: i1$2.CdkMenuItemRadio }], ngImport: i0 });
|
|
@@ -4859,7 +5429,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4859
5429
|
'[attr.data-variant]': 'variant()',
|
|
4860
5430
|
},
|
|
4861
5431
|
}]
|
|
4862
|
-
}],
|
|
5432
|
+
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
5433
|
+
/** Label slot for dropdown menu. */
|
|
4863
5434
|
class FrDropdownMenuLabel {
|
|
4864
5435
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4865
5436
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -4875,6 +5446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4875
5446
|
},
|
|
4876
5447
|
}]
|
|
4877
5448
|
}], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }] } });
|
|
5449
|
+
/** Separator slot for dropdown menu. */
|
|
4878
5450
|
class FrDropdownMenuSeparator {
|
|
4879
5451
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4880
5452
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuSeparator, isStandalone: true, selector: "[frDropdownMenuSeparator]", host: { attributes: { "role": "separator" }, classAttribute: "frame-dropdown-menu__separator" }, ngImport: i0 });
|
|
@@ -4889,6 +5461,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4889
5461
|
},
|
|
4890
5462
|
}]
|
|
4891
5463
|
}] });
|
|
5464
|
+
/** Shortcut slot for dropdown menu. */
|
|
4892
5465
|
class FrDropdownMenuShortcut {
|
|
4893
5466
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuShortcut, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4894
5467
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuShortcut, isStandalone: true, selector: "[frDropdownMenuShortcut]", host: { classAttribute: "frame-dropdown-menu__shortcut" }, ngImport: i0 });
|
|
@@ -4902,6 +5475,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4902
5475
|
},
|
|
4903
5476
|
}]
|
|
4904
5477
|
}] });
|
|
5478
|
+
/** Indicator slot for dropdown menu item. */
|
|
4905
5479
|
class FrDropdownMenuItemIndicator {
|
|
4906
5480
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4907
5481
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuItemIndicator, isStandalone: true, selector: "[frDropdownMenuItemIndicator]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-dropdown-menu__indicator" }, ngImport: i0 });
|
|
@@ -4917,6 +5491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4917
5491
|
}]
|
|
4918
5492
|
}] });
|
|
4919
5493
|
|
|
5494
|
+
/** Shared trigger behavior for root and nested dropdown menus. */
|
|
4920
5495
|
class FrDropdownMenuTriggerBase {
|
|
4921
5496
|
static CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';
|
|
4922
5497
|
cdkMenuTrigger = inject(CdkMenuTrigger);
|
|
@@ -4925,20 +5500,10 @@ class FrDropdownMenuTriggerBase {
|
|
|
4925
5500
|
tree = inject(FrDropdownMenuTree);
|
|
4926
5501
|
parent = inject(FR_DROPDOWN_MENU_PARENT);
|
|
4927
5502
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
5503
|
+
menuContentOverride;
|
|
4928
5504
|
constructor() {
|
|
4929
5505
|
this.tree.register(this);
|
|
4930
|
-
|
|
4931
|
-
const content = this.menuContent();
|
|
4932
|
-
this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
4933
|
-
this.cdkMenuTrigger.menuPosition = this.resolvePositions();
|
|
4934
|
-
if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
|
|
4935
|
-
queueMicrotask(() => {
|
|
4936
|
-
if (!this.cdkMenuTrigger.isOpen()) {
|
|
4937
|
-
this.cdkMenuTrigger.open();
|
|
4938
|
-
}
|
|
4939
|
-
});
|
|
4940
|
-
}
|
|
4941
|
-
});
|
|
5506
|
+
queueMicrotask(() => this.syncCdkTrigger());
|
|
4942
5507
|
this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
4943
5508
|
this.tree.cancelClose();
|
|
4944
5509
|
this.isOpen.set(true);
|
|
@@ -4947,7 +5512,7 @@ class FrDropdownMenuTriggerBase {
|
|
|
4947
5512
|
});
|
|
4948
5513
|
});
|
|
4949
5514
|
this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
4950
|
-
if (this.
|
|
5515
|
+
if (this.currentMenuContent()?.isDebugVisible()) {
|
|
4951
5516
|
queueMicrotask(() => {
|
|
4952
5517
|
if (!this.cdkMenuTrigger.isOpen()) {
|
|
4953
5518
|
this.cdkMenuTrigger.open();
|
|
@@ -4958,6 +5523,9 @@ class FrDropdownMenuTriggerBase {
|
|
|
4958
5523
|
this.isOpen.set(false);
|
|
4959
5524
|
});
|
|
4960
5525
|
}
|
|
5526
|
+
ngDoCheck() {
|
|
5527
|
+
this.syncCdkTrigger();
|
|
5528
|
+
}
|
|
4961
5529
|
get triggerMode() {
|
|
4962
5530
|
return this.triggerModeInput() ?? this.parent.triggerMode();
|
|
4963
5531
|
}
|
|
@@ -4965,9 +5533,24 @@ class FrDropdownMenuTriggerBase {
|
|
|
4965
5533
|
return this.parent.closeDelay();
|
|
4966
5534
|
}
|
|
4967
5535
|
resolvePositions() {
|
|
4968
|
-
return (this.
|
|
5536
|
+
return (this.currentMenuContent()?.getPositions(this.isSubmenuTrigger) ??
|
|
4969
5537
|
defaultPositions(this.isSubmenuTrigger));
|
|
4970
5538
|
}
|
|
5539
|
+
syncCdkTrigger() {
|
|
5540
|
+
const content = this.currentMenuContent();
|
|
5541
|
+
this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
5542
|
+
this.cdkMenuTrigger.menuPosition = this.resolvePositions();
|
|
5543
|
+
if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
|
|
5544
|
+
queueMicrotask(() => {
|
|
5545
|
+
if (!this.cdkMenuTrigger.isOpen()) {
|
|
5546
|
+
this.cdkMenuTrigger.open();
|
|
5547
|
+
}
|
|
5548
|
+
});
|
|
5549
|
+
}
|
|
5550
|
+
}
|
|
5551
|
+
currentMenuContent() {
|
|
5552
|
+
return this.menuContentOverride !== undefined ? this.menuContentOverride : this.menuContent();
|
|
5553
|
+
}
|
|
4971
5554
|
openFromHover() {
|
|
4972
5555
|
if (this.triggerMode === 'hover' || this.triggerMode === 'both') {
|
|
4973
5556
|
this.tree.cancelClose();
|
|
@@ -4981,7 +5564,7 @@ class FrDropdownMenuTriggerBase {
|
|
|
4981
5564
|
this.openFromHover();
|
|
4982
5565
|
}
|
|
4983
5566
|
handleMouseLeave() {
|
|
4984
|
-
if (this.
|
|
5567
|
+
if (this.currentMenuContent()?.isDebugVisible()) {
|
|
4985
5568
|
return;
|
|
4986
5569
|
}
|
|
4987
5570
|
if (this.triggerMode === 'hover' || this.triggerMode === 'both') {
|
|
@@ -4989,13 +5572,23 @@ class FrDropdownMenuTriggerBase {
|
|
|
4989
5572
|
}
|
|
4990
5573
|
}
|
|
4991
5574
|
close() {
|
|
4992
|
-
if (this.
|
|
5575
|
+
if (this.currentMenuContent()?.isDebugVisible()) {
|
|
4993
5576
|
return;
|
|
4994
5577
|
}
|
|
4995
5578
|
if (this.cdkMenuTrigger.isOpen()) {
|
|
4996
5579
|
this.cdkMenuTrigger.close();
|
|
4997
5580
|
}
|
|
4998
5581
|
}
|
|
5582
|
+
open() {
|
|
5583
|
+
this.syncCdkTrigger();
|
|
5584
|
+
if (!this.cdkMenuTrigger.isOpen()) {
|
|
5585
|
+
this.cdkMenuTrigger.open();
|
|
5586
|
+
}
|
|
5587
|
+
}
|
|
5588
|
+
setMenuContentOverride(content) {
|
|
5589
|
+
this.menuContentOverride = content;
|
|
5590
|
+
this.syncCdkTrigger();
|
|
5591
|
+
}
|
|
4999
5592
|
ngOnDestroy() {
|
|
5000
5593
|
this.tree.unregister(this);
|
|
5001
5594
|
}
|
|
@@ -5008,6 +5601,7 @@ class FrDropdownMenuTriggerBase {
|
|
|
5008
5601
|
}
|
|
5009
5602
|
const menuPanel = overlayElement.querySelector('.frame-dropdown-menu__content') ?? overlayElement;
|
|
5010
5603
|
const sourceStyles = getComputedStyle(this.elementRef.nativeElement);
|
|
5604
|
+
// CDK portals the menu, so trigger-scoped CSS variables must be mirrored manually.
|
|
5011
5605
|
for (let index = 0; index < sourceStyles.length; index += 1) {
|
|
5012
5606
|
const propertyName = sourceStyles.item(index);
|
|
5013
5607
|
if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {
|
|
@@ -5030,6 +5624,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5030
5624
|
},
|
|
5031
5625
|
}]
|
|
5032
5626
|
}], ctorParameters: () => [] });
|
|
5627
|
+
/** Trigger control for dropdown menu. */
|
|
5033
5628
|
class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {
|
|
5034
5629
|
menuContent = input(null, { ...(ngDevMode ? { debugName: "menuContent" } : /* istanbul ignore next */ {}), alias: 'frDropdownMenuTrigger' });
|
|
5035
5630
|
triggerModeInput = input(null, { ...(ngDevMode ? { debugName: "triggerModeInput" } : /* istanbul ignore next */ {}), alias: 'triggerMode' });
|
|
@@ -5048,6 +5643,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5048
5643
|
},
|
|
5049
5644
|
}]
|
|
5050
5645
|
}], propDecorators: { menuContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "frDropdownMenuTrigger", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
5646
|
+
/** Trigger control for dropdown menu sub. */
|
|
5051
5647
|
class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {
|
|
5052
5648
|
menuContent = input(null, { ...(ngDevMode ? { debugName: "menuContent" } : /* istanbul ignore next */ {}), alias: 'frDropdownMenuSubTrigger' });
|
|
5053
5649
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -5079,6 +5675,7 @@ const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'];
|
|
|
5079
5675
|
const FR_EMPTY_MEDIA_VARIANTS = ['default', 'icon'];
|
|
5080
5676
|
const FR_EMPTY_ORIENTATIONS = ['vertical', 'horizontal'];
|
|
5081
5677
|
const FR_EMPTY_VARIANTS = ['default', 'outline', 'soft'];
|
|
5678
|
+
/** Empty-state container with orientation and variant controls. */
|
|
5082
5679
|
class FrEmpty {
|
|
5083
5680
|
orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
5084
5681
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
@@ -5096,6 +5693,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5096
5693
|
},
|
|
5097
5694
|
}]
|
|
5098
5695
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
5696
|
+
/** Header slot for empty. */
|
|
5099
5697
|
class FrEmptyHeader {
|
|
5100
5698
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5101
5699
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyHeader, isStandalone: true, selector: "[frEmptyHeader], frame-empty-header", host: { classAttribute: "frame-empty__header" }, ngImport: i0 });
|
|
@@ -5109,6 +5707,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5109
5707
|
},
|
|
5110
5708
|
}]
|
|
5111
5709
|
}] });
|
|
5710
|
+
/** Media slot for empty. */
|
|
5112
5711
|
class FrEmptyMedia {
|
|
5113
5712
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
5114
5713
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyMedia, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -5124,6 +5723,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5124
5723
|
},
|
|
5125
5724
|
}]
|
|
5126
5725
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
5726
|
+
/** Title slot for empty. */
|
|
5127
5727
|
class FrEmptyTitle {
|
|
5128
5728
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5129
5729
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyTitle, isStandalone: true, selector: "[frEmptyTitle], frame-empty-title", host: { classAttribute: "frame-empty__title" }, ngImport: i0 });
|
|
@@ -5137,6 +5737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5137
5737
|
},
|
|
5138
5738
|
}]
|
|
5139
5739
|
}] });
|
|
5740
|
+
/** Description slot for empty. */
|
|
5140
5741
|
class FrEmptyDescription {
|
|
5141
5742
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5142
5743
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyDescription, isStandalone: true, selector: "[frEmptyDescription], frame-empty-description", host: { classAttribute: "frame-empty__description" }, ngImport: i0 });
|
|
@@ -5150,6 +5751,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5150
5751
|
},
|
|
5151
5752
|
}]
|
|
5152
5753
|
}] });
|
|
5754
|
+
/** Content slot for empty. */
|
|
5153
5755
|
class FrEmptyContent {
|
|
5154
5756
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5155
5757
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyContent, isStandalone: true, selector: "[frEmptyContent], frame-empty-content", host: { classAttribute: "frame-empty__content" }, ngImport: i0 });
|
|
@@ -5166,6 +5768,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5166
5768
|
|
|
5167
5769
|
const FR_FIELD_LEGEND_VARIANTS = ['legend', 'label'];
|
|
5168
5770
|
const FR_FIELD_ORIENTATIONS = ['vertical', 'horizontal'];
|
|
5771
|
+
/** Fieldset wrapper for related form fields. */
|
|
5169
5772
|
class FrFieldSet {
|
|
5170
5773
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldSet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5171
5774
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldSet, isStandalone: true, selector: "fieldset[frFieldSet], frame-field-set", host: { classAttribute: "frame-field-set" }, ngImport: i0 });
|
|
@@ -5179,6 +5782,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5179
5782
|
},
|
|
5180
5783
|
}]
|
|
5181
5784
|
}] });
|
|
5785
|
+
/** Legend slot for field. */
|
|
5182
5786
|
class FrFieldLegend {
|
|
5183
5787
|
variant = input('legend', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
5184
5788
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldLegend, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -5194,6 +5798,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5194
5798
|
},
|
|
5195
5799
|
}]
|
|
5196
5800
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
5801
|
+
/** Group slot for field. */
|
|
5197
5802
|
class FrFieldGroup {
|
|
5198
5803
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5199
5804
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldGroup, isStandalone: true, selector: "[frFieldGroup], frame-field-group", host: { classAttribute: "frame-field-group" }, ngImport: i0 });
|
|
@@ -5207,6 +5812,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5207
5812
|
},
|
|
5208
5813
|
}]
|
|
5209
5814
|
}] });
|
|
5815
|
+
/** Form field row with orientation and responsive layout. */
|
|
5210
5816
|
class FrField {
|
|
5211
5817
|
orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
5212
5818
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -5227,6 +5833,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5227
5833
|
},
|
|
5228
5834
|
}]
|
|
5229
5835
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
|
|
5836
|
+
/** Content slot for field. */
|
|
5230
5837
|
class FrFieldContent {
|
|
5231
5838
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5232
5839
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldContent, isStandalone: true, selector: "[frFieldContent], frame-field-content", host: { classAttribute: "frame-field-content" }, ngImport: i0 });
|
|
@@ -5240,6 +5847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5240
5847
|
},
|
|
5241
5848
|
}]
|
|
5242
5849
|
}] });
|
|
5850
|
+
/** Label slot for field. */
|
|
5243
5851
|
class FrFieldLabel {
|
|
5244
5852
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5245
5853
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldLabel, isStandalone: true, selector: "[frFieldLabel], frame-field-label", host: { classAttribute: "frame-field-label" }, ngImport: i0 });
|
|
@@ -5253,6 +5861,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5253
5861
|
},
|
|
5254
5862
|
}]
|
|
5255
5863
|
}] });
|
|
5864
|
+
/** Description slot for field. */
|
|
5256
5865
|
class FrFieldDescription {
|
|
5257
5866
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5258
5867
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldDescription, isStandalone: true, selector: "[frFieldDescription], frame-field-description", host: { classAttribute: "frame-field-description" }, ngImport: i0 });
|
|
@@ -5266,6 +5875,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5266
5875
|
},
|
|
5267
5876
|
}]
|
|
5268
5877
|
}] });
|
|
5878
|
+
/** Separator slot for field. */
|
|
5269
5879
|
class FrFieldSeparator {
|
|
5270
5880
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5271
5881
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldSeparator, isStandalone: true, selector: "[frFieldSeparator], frame-field-separator", host: { attributes: { "role": "separator" }, classAttribute: "frame-field-separator" }, ngImport: i0 });
|
|
@@ -5280,6 +5890,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5280
5890
|
},
|
|
5281
5891
|
}]
|
|
5282
5892
|
}] });
|
|
5893
|
+
/** Error slot for field. */
|
|
5283
5894
|
class FrFieldError {
|
|
5284
5895
|
errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
5285
5896
|
message() {
|
|
@@ -5290,12 +5901,12 @@ class FrFieldError {
|
|
|
5290
5901
|
return error?.message ?? '';
|
|
5291
5902
|
}
|
|
5292
5903
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldError, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5293
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrFieldError, isStandalone: true, selector: "[frFieldError], frame-field-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-field-error" }, ngImport: i0, template: `
|
|
5294
|
-
@if (message()) {
|
|
5295
|
-
<span>{{ message() }}</span>
|
|
5296
|
-
} @else {
|
|
5297
|
-
<ng-content />
|
|
5298
|
-
}
|
|
5904
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrFieldError, isStandalone: true, selector: "[frFieldError], frame-field-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-field-error" }, ngImport: i0, template: `
|
|
5905
|
+
@if (message()) {
|
|
5906
|
+
<span>{{ message() }}</span>
|
|
5907
|
+
} @else {
|
|
5908
|
+
<ng-content />
|
|
5909
|
+
}
|
|
5299
5910
|
`, isInline: true });
|
|
5300
5911
|
}
|
|
5301
5912
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldError, decorators: [{
|
|
@@ -5306,12 +5917,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5306
5917
|
class: 'frame-field-error',
|
|
5307
5918
|
'aria-live': 'polite',
|
|
5308
5919
|
},
|
|
5309
|
-
template: `
|
|
5310
|
-
@if (message()) {
|
|
5311
|
-
<span>{{ message() }}</span>
|
|
5312
|
-
} @else {
|
|
5313
|
-
<ng-content />
|
|
5314
|
-
}
|
|
5920
|
+
template: `
|
|
5921
|
+
@if (message()) {
|
|
5922
|
+
<span>{{ message() }}</span>
|
|
5923
|
+
} @else {
|
|
5924
|
+
<ng-content />
|
|
5925
|
+
}
|
|
5315
5926
|
`,
|
|
5316
5927
|
}]
|
|
5317
5928
|
}], propDecorators: { errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }] } });
|
|
@@ -5323,6 +5934,7 @@ function provideDsValueAccessor(type) {
|
|
|
5323
5934
|
multi: true,
|
|
5324
5935
|
};
|
|
5325
5936
|
}
|
|
5937
|
+
/** Base ControlValueAccessor implementation for FrameUI form controls. */
|
|
5326
5938
|
class FrControlValueAccessor {
|
|
5327
5939
|
injector = inject(Injector);
|
|
5328
5940
|
FrControlDestroyRef = inject(DestroyRef);
|
|
@@ -5448,6 +6060,7 @@ function oppositeSide$1(side) {
|
|
|
5448
6060
|
|
|
5449
6061
|
const FR_HOVER_CARD_CONTROLLER = new InjectionToken('FrHoverCardController');
|
|
5450
6062
|
|
|
6063
|
+
/** Content slot for hover card. */
|
|
5451
6064
|
class FrHoverCardContent {
|
|
5452
6065
|
templateRef = inject((TemplateRef));
|
|
5453
6066
|
align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
@@ -5473,6 +6086,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5473
6086
|
exportAs: 'frHoverCardContent',
|
|
5474
6087
|
}]
|
|
5475
6088
|
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }] } });
|
|
6089
|
+
/** Panel slot for hover card. */
|
|
5476
6090
|
class FrHoverCardPanel {
|
|
5477
6091
|
content = inject(FrHoverCardContent);
|
|
5478
6092
|
root = inject(FR_HOVER_CARD_CONTROLLER);
|
|
@@ -5504,6 +6118,7 @@ const DEFAULT_POSITIONS$1 = buildHoverCardPositions({
|
|
|
5504
6118
|
side: 'bottom',
|
|
5505
6119
|
sideOffset: 8,
|
|
5506
6120
|
});
|
|
6121
|
+
/** Root controller for hover card. */
|
|
5507
6122
|
class FrHoverCardRoot {
|
|
5508
6123
|
openDelay = input(700, ...(ngDevMode ? [{ debugName: "openDelay" }] : /* istanbul ignore next */ []));
|
|
5509
6124
|
closeDelay = input(300, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
@@ -5637,24 +6252,24 @@ class FrHoverCardRoot {
|
|
|
5637
6252
|
provide: FR_HOVER_CARD_CONTROLLER,
|
|
5638
6253
|
useExisting: FrHoverCardRoot,
|
|
5639
6254
|
},
|
|
5640
|
-
], exportAs: ["frHoverCard"], ngImport: i0, template: `
|
|
5641
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
5642
|
-
<ng-content />
|
|
5643
|
-
</span>
|
|
5644
|
-
|
|
5645
|
-
<ng-template
|
|
5646
|
-
cdkConnectedOverlay
|
|
5647
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
5648
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
5649
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
5650
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
5651
|
-
[cdkConnectedOverlayPush]="true"
|
|
5652
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
5653
|
-
(detach)="close()"
|
|
5654
|
-
(positionChange)="handlePositionChange($event)"
|
|
5655
|
-
>
|
|
5656
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
5657
|
-
</ng-template>
|
|
6255
|
+
], exportAs: ["frHoverCard"], ngImport: i0, template: `
|
|
6256
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
6257
|
+
<ng-content />
|
|
6258
|
+
</span>
|
|
6259
|
+
|
|
6260
|
+
<ng-template
|
|
6261
|
+
cdkConnectedOverlay
|
|
6262
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
6263
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
6264
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
6265
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
6266
|
+
[cdkConnectedOverlayPush]="true"
|
|
6267
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
6268
|
+
(detach)="close()"
|
|
6269
|
+
(positionChange)="handlePositionChange($event)"
|
|
6270
|
+
>
|
|
6271
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
6272
|
+
</ng-template>
|
|
5658
6273
|
`, isInline: true, dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5659
6274
|
}
|
|
5660
6275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrHoverCardRoot, decorators: [{
|
|
@@ -5674,40 +6289,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5674
6289
|
class: 'frame-hover-card',
|
|
5675
6290
|
'[attr.data-state]': 'isOpen() ? "open" : "closed"',
|
|
5676
6291
|
},
|
|
5677
|
-
template: `
|
|
5678
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
5679
|
-
<ng-content />
|
|
5680
|
-
</span>
|
|
5681
|
-
|
|
5682
|
-
<ng-template
|
|
5683
|
-
cdkConnectedOverlay
|
|
5684
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
5685
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
5686
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
5687
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
5688
|
-
[cdkConnectedOverlayPush]="true"
|
|
5689
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
5690
|
-
(detach)="close()"
|
|
5691
|
-
(positionChange)="handlePositionChange($event)"
|
|
5692
|
-
>
|
|
5693
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
5694
|
-
</ng-template>
|
|
6292
|
+
template: `
|
|
6293
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
6294
|
+
<ng-content />
|
|
6295
|
+
</span>
|
|
6296
|
+
|
|
6297
|
+
<ng-template
|
|
6298
|
+
cdkConnectedOverlay
|
|
6299
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
6300
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
6301
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
6302
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
6303
|
+
[cdkConnectedOverlayPush]="true"
|
|
6304
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
6305
|
+
(detach)="close()"
|
|
6306
|
+
(positionChange)="handlePositionChange($event)"
|
|
6307
|
+
>
|
|
6308
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
6309
|
+
</ng-template>
|
|
5695
6310
|
`,
|
|
5696
6311
|
}]
|
|
5697
6312
|
}], ctorParameters: () => [], propDecorators: { openDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "openDelay", required: false }] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
|
|
5698
6313
|
|
|
6314
|
+
/** Trigger control for hover card. */
|
|
5699
6315
|
class FrHoverCardTrigger {
|
|
5700
6316
|
content = input(null, { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'frHoverCardTrigger' });
|
|
5701
6317
|
root = inject(FR_HOVER_CARD_CONTROLLER);
|
|
5702
6318
|
elementRef = inject(ElementRef);
|
|
6319
|
+
lastContent = null;
|
|
5703
6320
|
constructor() {
|
|
5704
6321
|
this.root.registerTrigger(this.elementRef.nativeElement);
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
}
|
|
6322
|
+
}
|
|
6323
|
+
ngDoCheck() {
|
|
6324
|
+
const content = this.content();
|
|
6325
|
+
if (content && content !== this.lastContent) {
|
|
6326
|
+
this.root.setContent(content);
|
|
6327
|
+
}
|
|
6328
|
+
this.lastContent = content;
|
|
5711
6329
|
}
|
|
5712
6330
|
handleMouseEnter() {
|
|
5713
6331
|
this.root.setContent(this.content());
|
|
@@ -5753,6 +6371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5753
6371
|
const FR_HOVER_CARD_ALIGNMENTS = ['start', 'center', 'end'];
|
|
5754
6372
|
const FR_HOVER_CARD_SIDES = ['top', 'right', 'bottom', 'left'];
|
|
5755
6373
|
|
|
6374
|
+
/** Input wrapper for labels, controls, and validation text. */
|
|
5756
6375
|
class FrInput {
|
|
5757
6376
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5758
6377
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInput, isStandalone: true, selector: "input[frInput]", host: { classAttribute: "frame-input" }, ngImport: i0 });
|
|
@@ -5766,6 +6385,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5766
6385
|
},
|
|
5767
6386
|
}]
|
|
5768
6387
|
}] });
|
|
6388
|
+
/** Field slot for input. */
|
|
5769
6389
|
class FrInputField {
|
|
5770
6390
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5771
6391
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputField, isStandalone: true, selector: "[frInputField], frame-input-field", host: { classAttribute: "frame-input-field" }, ngImport: i0 });
|
|
@@ -5779,6 +6399,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5779
6399
|
},
|
|
5780
6400
|
}]
|
|
5781
6401
|
}] });
|
|
6402
|
+
/** Header slot for input. */
|
|
5782
6403
|
class FrInputHeader {
|
|
5783
6404
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5784
6405
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputHeader, isStandalone: true, selector: "[frInputHeader], frame-input-header", host: { classAttribute: "frame-input-header" }, ngImport: i0 });
|
|
@@ -5792,6 +6413,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5792
6413
|
},
|
|
5793
6414
|
}]
|
|
5794
6415
|
}] });
|
|
6416
|
+
/** Control slot for input. */
|
|
5795
6417
|
class FrInputControl {
|
|
5796
6418
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5797
6419
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputControl, isStandalone: true, selector: "[frInputControl], frame-input-control", host: { classAttribute: "frame-input-control" }, ngImport: i0 });
|
|
@@ -5805,6 +6427,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5805
6427
|
},
|
|
5806
6428
|
}]
|
|
5807
6429
|
}] });
|
|
6430
|
+
/** Group slot for input field. */
|
|
5808
6431
|
class FrInputFieldGroup {
|
|
5809
6432
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputFieldGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5810
6433
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputFieldGroup, isStandalone: true, selector: "[frInputFieldGroup], frame-input-field-group", host: { classAttribute: "frame-input-field-group" }, ngImport: i0 });
|
|
@@ -5818,6 +6441,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5818
6441
|
},
|
|
5819
6442
|
}]
|
|
5820
6443
|
}] });
|
|
6444
|
+
/** Label slot for input. */
|
|
5821
6445
|
class FrInputLabel {
|
|
5822
6446
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5823
6447
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputLabel, isStandalone: true, selector: "[frInputLabel], frame-input-label", host: { classAttribute: "frame-input-label" }, ngImport: i0 });
|
|
@@ -5831,6 +6455,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5831
6455
|
},
|
|
5832
6456
|
}]
|
|
5833
6457
|
}] });
|
|
6458
|
+
/** Description slot for input. */
|
|
5834
6459
|
class FrInputDescription {
|
|
5835
6460
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5836
6461
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputDescription, isStandalone: true, selector: "[frInputDescription], frame-input-description", host: { classAttribute: "frame-input-description" }, ngImport: i0 });
|
|
@@ -5844,6 +6469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5844
6469
|
},
|
|
5845
6470
|
}]
|
|
5846
6471
|
}] });
|
|
6472
|
+
/** Error slot for input. */
|
|
5847
6473
|
class FrInputError {
|
|
5848
6474
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5849
6475
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputError, isStandalone: true, selector: "[frInputError], frame-input-error", host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-input-error" }, ngImport: i0 });
|
|
@@ -5858,6 +6484,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5858
6484
|
},
|
|
5859
6485
|
}]
|
|
5860
6486
|
}] });
|
|
6487
|
+
/** Badge slot for input. */
|
|
5861
6488
|
class FrInputBadge {
|
|
5862
6489
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputBadge, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5863
6490
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputBadge, isStandalone: true, selector: "[frInputBadge], frame-input-badge", host: { classAttribute: "frame-input-badge" }, ngImport: i0 });
|
|
@@ -5874,6 +6501,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5874
6501
|
|
|
5875
6502
|
const FR_INPUT_GROUP_ADDON_ALIGNS = ['inline-start', 'inline-end'];
|
|
5876
6503
|
const FR_INPUT_GROUP_ADDON_VARIANTS = ['default', 'ghost'];
|
|
6504
|
+
/** Group slot for input. */
|
|
5877
6505
|
class FrInputGroup {
|
|
5878
6506
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5879
6507
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputGroup, isStandalone: true, selector: "[frInputGroup], frame-input-group", host: { classAttribute: "frame-input-group" }, ngImport: i0 });
|
|
@@ -5887,6 +6515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5887
6515
|
},
|
|
5888
6516
|
}]
|
|
5889
6517
|
}] });
|
|
6518
|
+
/** Addon slot for grouped inputs. */
|
|
5890
6519
|
class FrInputGroupAddon {
|
|
5891
6520
|
align = input('inline-start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
5892
6521
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
@@ -5904,6 +6533,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5904
6533
|
},
|
|
5905
6534
|
}]
|
|
5906
6535
|
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
6536
|
+
/** Text slot for grouped inputs. */
|
|
5907
6537
|
class FrInputGroupText {
|
|
5908
6538
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputGroupText, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5909
6539
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputGroupText, isStandalone: true, selector: "[frInputGroupText], frame-input-group-text", host: { classAttribute: "frame-input-group__text" }, ngImport: i0 });
|
|
@@ -5917,6 +6547,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5917
6547
|
},
|
|
5918
6548
|
}]
|
|
5919
6549
|
}] });
|
|
6550
|
+
/** Input control slot inside an input group. */
|
|
5920
6551
|
class FrInputGroupInput {
|
|
5921
6552
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputGroupInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5922
6553
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputGroupInput, isStandalone: true, selector: "input[frInputGroupInput]", host: { classAttribute: "frame-input-group__input" }, hostDirectives: [{ directive: FrInput }], ngImport: i0 });
|
|
@@ -5935,6 +6566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5935
6566
|
const FR_INPUT_OTP_PATTERN_DIGITS = /^[0-9]$/;
|
|
5936
6567
|
const FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS = /^[a-zA-Z0-9]$/;
|
|
5937
6568
|
const FR_INPUT_OTP_CONTROLLER = new InjectionToken('FrInputOtpController');
|
|
6569
|
+
/** One-time-code input with grouped slots. */
|
|
5938
6570
|
class FrInputOtp extends FrControlValueAccessor$1 {
|
|
5939
6571
|
nativeInput = viewChild('nativeInput', ...(ngDevMode ? [{ debugName: "nativeInput" }] : /* istanbul ignore next */ []));
|
|
5940
6572
|
maxLength = input(6, { ...(ngDevMode ? { debugName: "maxLength" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
@@ -6037,6 +6669,7 @@ class FrInputOtp extends FrControlValueAccessor$1 {
|
|
|
6037
6669
|
replaceFrom(index, text) {
|
|
6038
6670
|
const value = this.value();
|
|
6039
6671
|
const start = clampNumber(index, 0, this.maxLength());
|
|
6672
|
+
// The hidden input is the source of truth; visual slots are projections of this string.
|
|
6040
6673
|
const next = `${value.slice(0, start)}${text}${value.slice(start + text.length)}`;
|
|
6041
6674
|
return this.sanitize(next);
|
|
6042
6675
|
}
|
|
@@ -6134,6 +6767,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6134
6767
|
`,
|
|
6135
6768
|
}]
|
|
6136
6769
|
}], propDecorators: { nativeInput: [{ type: i0.ViewChild, args: ['nativeInput', { isSignal: true }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], complete: [{ type: i0.Output, args: ["complete"] }] } });
|
|
6770
|
+
/** Group slot for input otp. */
|
|
6137
6771
|
class FrInputOtpGroup {
|
|
6138
6772
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6139
6773
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputOtpGroup, isStandalone: true, selector: "[frInputOtpGroup], frame-input-otp-group", host: { classAttribute: "frame-input-otp__group" }, ngImport: i0 });
|
|
@@ -6147,6 +6781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6147
6781
|
},
|
|
6148
6782
|
}]
|
|
6149
6783
|
}] });
|
|
6784
|
+
/** Input slot for one OTP character. */
|
|
6150
6785
|
class FrInputOtpSlot {
|
|
6151
6786
|
root = inject(FR_INPUT_OTP_CONTROLLER);
|
|
6152
6787
|
index = input.required(...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
|
|
@@ -6183,6 +6818,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6183
6818
|
`,
|
|
6184
6819
|
}]
|
|
6185
6820
|
}], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
|
|
6821
|
+
/** Separator slot for input otp. */
|
|
6186
6822
|
class FrInputOtpSeparator {
|
|
6187
6823
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6188
6824
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputOtpSeparator, isStandalone: true, selector: "[frInputOtpSeparator], frame-input-otp-separator", host: { attributes: { "role": "separator", "aria-hidden": "true" }, classAttribute: "frame-input-otp__separator" }, ngImport: i0 });
|
|
@@ -6215,6 +6851,7 @@ function toMatcher(pattern) {
|
|
|
6215
6851
|
const FR_ITEM_VARIANTS = ['default', 'outline', 'muted'];
|
|
6216
6852
|
const FR_ITEM_SIZES = ['default', 'sm', 'xs'];
|
|
6217
6853
|
const FR_ITEM_MEDIA_VARIANTS = ['default', 'icon', 'image', 'avatar'];
|
|
6854
|
+
/** Composable item row for lists and menus. */
|
|
6218
6855
|
class FrItem {
|
|
6219
6856
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6220
6857
|
interactive = input(false, { ...(ngDevMode ? { debugName: "interactive" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -6236,6 +6873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6236
6873
|
},
|
|
6237
6874
|
}]
|
|
6238
6875
|
}], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
6876
|
+
/** Group slot for item. */
|
|
6239
6877
|
class FrItemGroup {
|
|
6240
6878
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6241
6879
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemGroup, isStandalone: true, selector: "[frItemGroup], frame-item-group", host: { classAttribute: "frame-item-group" }, ngImport: i0 });
|
|
@@ -6249,6 +6887,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6249
6887
|
},
|
|
6250
6888
|
}]
|
|
6251
6889
|
}] });
|
|
6890
|
+
/** Separator slot for item. */
|
|
6252
6891
|
class FrItemSeparator {
|
|
6253
6892
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6254
6893
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemSeparator, isStandalone: true, selector: "[frItemSeparator], frame-item-separator", host: { attributes: { "role": "separator" }, classAttribute: "frame-item-separator" }, ngImport: i0 });
|
|
@@ -6263,6 +6902,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6263
6902
|
},
|
|
6264
6903
|
}]
|
|
6265
6904
|
}] });
|
|
6905
|
+
/** Header slot for item. */
|
|
6266
6906
|
class FrItemHeader {
|
|
6267
6907
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6268
6908
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemHeader, isStandalone: true, selector: "[frItemHeader], frame-item-header", host: { classAttribute: "frame-item__header" }, ngImport: i0 });
|
|
@@ -6276,6 +6916,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6276
6916
|
},
|
|
6277
6917
|
}]
|
|
6278
6918
|
}] });
|
|
6919
|
+
/** Media slot for item. */
|
|
6279
6920
|
class FrItemMedia {
|
|
6280
6921
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
6281
6922
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemMedia, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -6291,6 +6932,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6291
6932
|
},
|
|
6292
6933
|
}]
|
|
6293
6934
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
6935
|
+
/** Content slot for item. */
|
|
6294
6936
|
class FrItemContent {
|
|
6295
6937
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6296
6938
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemContent, isStandalone: true, selector: "[frItemContent], frame-item-content", host: { classAttribute: "frame-item__content" }, ngImport: i0 });
|
|
@@ -6304,6 +6946,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6304
6946
|
},
|
|
6305
6947
|
}]
|
|
6306
6948
|
}] });
|
|
6949
|
+
/** Title slot for item. */
|
|
6307
6950
|
class FrItemTitle {
|
|
6308
6951
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6309
6952
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemTitle, isStandalone: true, selector: "[frItemTitle], frame-item-title", host: { classAttribute: "frame-item__title" }, ngImport: i0 });
|
|
@@ -6317,6 +6960,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6317
6960
|
},
|
|
6318
6961
|
}]
|
|
6319
6962
|
}] });
|
|
6963
|
+
/** Description slot for item. */
|
|
6320
6964
|
class FrItemDescription {
|
|
6321
6965
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6322
6966
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemDescription, isStandalone: true, selector: "[frItemDescription], frame-item-description", host: { classAttribute: "frame-item__description" }, ngImport: i0 });
|
|
@@ -6330,6 +6974,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6330
6974
|
},
|
|
6331
6975
|
}]
|
|
6332
6976
|
}] });
|
|
6977
|
+
/** Actions slot for item. */
|
|
6333
6978
|
class FrItemActions {
|
|
6334
6979
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6335
6980
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemActions, isStandalone: true, selector: "[frItemActions], frame-item-actions", host: { classAttribute: "frame-item__actions" }, ngImport: i0 });
|
|
@@ -6343,6 +6988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6343
6988
|
},
|
|
6344
6989
|
}]
|
|
6345
6990
|
}] });
|
|
6991
|
+
/** Footer slot for item. */
|
|
6346
6992
|
class FrItemFooter {
|
|
6347
6993
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrItemFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6348
6994
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrItemFooter, isStandalone: true, selector: "[frItemFooter], frame-item-footer", host: { classAttribute: "frame-item__footer" }, ngImport: i0 });
|
|
@@ -6358,6 +7004,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6358
7004
|
}] });
|
|
6359
7005
|
|
|
6360
7006
|
const FR_MENUBAR_PARENT = new InjectionToken('FrMenuBarParent');
|
|
7007
|
+
/** Menubar root for top-level menu interactions. */
|
|
6361
7008
|
class FrMenuBar {
|
|
6362
7009
|
closeDelay = input(140, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
6363
7010
|
triggerMode = input('both', ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
@@ -6395,6 +7042,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6395
7042
|
},
|
|
6396
7043
|
}]
|
|
6397
7044
|
}], propDecorators: { closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
7045
|
+
/** Top-level menu scope inside a menubar. */
|
|
6398
7046
|
class FrMenuBarMenu {
|
|
6399
7047
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6400
7048
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarMenu, isStandalone: true, selector: "[frMenuBarMenu], frame-menubar-menu", host: { attributes: { "role": "none" }, classAttribute: "frame-menubar__menu" }, ngImport: i0 });
|
|
@@ -6409,6 +7057,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6409
7057
|
},
|
|
6410
7058
|
}]
|
|
6411
7059
|
}] });
|
|
7060
|
+
/** Trigger control for menu bar. */
|
|
6412
7061
|
class FrMenuBarTrigger {
|
|
6413
7062
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6414
7063
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarTrigger, isStandalone: true, selector: "[frMenuBarTrigger]", host: { attributes: { "role": "menuitem" }, classAttribute: "frame-menubar__trigger" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuTrigger, inputs: ["frDropdownMenuTrigger", "frMenuBarTrigger", "triggerMode", "triggerMode"] }], ngImport: i0 });
|
|
@@ -6429,6 +7078,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6429
7078
|
},
|
|
6430
7079
|
}]
|
|
6431
7080
|
}] });
|
|
7081
|
+
/** Content slot for menu bar. */
|
|
6432
7082
|
class FrMenuBarContent extends FrDropdownMenuContent$1 {
|
|
6433
7083
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarContent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
6434
7084
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarContent, isStandalone: true, selector: "ng-template[frMenuBarContent], ng-template[frMenuBarSubContent]", providers: [
|
|
@@ -6459,6 +7109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6459
7109
|
],
|
|
6460
7110
|
}]
|
|
6461
7111
|
}] });
|
|
7112
|
+
/** Panel slot for menu bar. */
|
|
6462
7113
|
class FrMenuBarPanel {
|
|
6463
7114
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6464
7115
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarPanel, isStandalone: true, selector: "[frMenuBarPanel]", host: { classAttribute: "frame-menubar__content" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuPanel }], ngImport: i0 });
|
|
@@ -6473,6 +7124,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6473
7124
|
},
|
|
6474
7125
|
}]
|
|
6475
7126
|
}] });
|
|
7127
|
+
/** Item slot for menu bar. */
|
|
6476
7128
|
class FrMenuBarItem {
|
|
6477
7129
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6478
7130
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarItem, isStandalone: true, selector: "[frMenuBarItem]", host: { classAttribute: "frame-menubar__item" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuItem, inputs: ["inset", "inset", "variant", "variant"] }], ngImport: i0 });
|
|
@@ -6492,6 +7144,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6492
7144
|
},
|
|
6493
7145
|
}]
|
|
6494
7146
|
}] });
|
|
7147
|
+
/** Item slot for menu bar checkbox. */
|
|
6495
7148
|
class FrMenuBarCheckboxItem {
|
|
6496
7149
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarCheckboxItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6497
7150
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarCheckboxItem, isStandalone: true, selector: "button[frMenuBarCheckboxItem]", host: { classAttribute: "frame-menubar__checkbox-item" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuCheckboxItem, inputs: ["checked", "checked", "inset", "inset", "variant", "variant"] }], ngImport: i0 });
|
|
@@ -6511,6 +7164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6511
7164
|
},
|
|
6512
7165
|
}]
|
|
6513
7166
|
}] });
|
|
7167
|
+
/** Group slot for menu bar radio. */
|
|
6514
7168
|
class FrMenuBarRadioGroup {
|
|
6515
7169
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6516
7170
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarRadioGroup, isStandalone: true, selector: "[frMenuBarRadioGroup]", host: { classAttribute: "frame-menubar__radio-group" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuRadioGroup }], ngImport: i0 });
|
|
@@ -6525,6 +7179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6525
7179
|
},
|
|
6526
7180
|
}]
|
|
6527
7181
|
}] });
|
|
7182
|
+
/** Item slot for menu bar radio. */
|
|
6528
7183
|
class FrMenuBarRadioItem {
|
|
6529
7184
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarRadioItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6530
7185
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarRadioItem, isStandalone: true, selector: "button[frMenuBarRadioItem]", host: { classAttribute: "frame-menubar__radio-item" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuRadioItem, inputs: ["checked", "checked", "inset", "inset", "variant", "variant"] }], ngImport: i0 });
|
|
@@ -6544,6 +7199,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6544
7199
|
},
|
|
6545
7200
|
}]
|
|
6546
7201
|
}] });
|
|
7202
|
+
/** Label slot for menu bar. */
|
|
6547
7203
|
class FrMenuBarLabel {
|
|
6548
7204
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6549
7205
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarLabel, isStandalone: true, selector: "[frMenuBarLabel]", host: { classAttribute: "frame-menubar__label" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuLabel, inputs: ["inset", "inset"] }], ngImport: i0 });
|
|
@@ -6563,6 +7219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6563
7219
|
},
|
|
6564
7220
|
}]
|
|
6565
7221
|
}] });
|
|
7222
|
+
/** Separator slot for menu bar. */
|
|
6566
7223
|
class FrMenuBarSeparator {
|
|
6567
7224
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6568
7225
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarSeparator, isStandalone: true, selector: "[frMenuBarSeparator]", host: { classAttribute: "frame-menubar__separator" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuSeparator }], ngImport: i0 });
|
|
@@ -6577,6 +7234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6577
7234
|
},
|
|
6578
7235
|
}]
|
|
6579
7236
|
}] });
|
|
7237
|
+
/** Shortcut slot for menu bar. */
|
|
6580
7238
|
class FrMenuBarShortcut {
|
|
6581
7239
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarShortcut, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6582
7240
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarShortcut, isStandalone: true, selector: "[frMenuBarShortcut]", host: { classAttribute: "frame-menubar__shortcut" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuShortcut }], ngImport: i0 });
|
|
@@ -6591,6 +7249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6591
7249
|
},
|
|
6592
7250
|
}]
|
|
6593
7251
|
}] });
|
|
7252
|
+
/** Indicator slot for menu bar item. */
|
|
6594
7253
|
class FrMenuBarItemIndicator {
|
|
6595
7254
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6596
7255
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarItemIndicator, isStandalone: true, selector: "[frMenuBarItemIndicator]", host: { classAttribute: "frame-menubar__indicator" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuItemIndicator }], ngImport: i0 });
|
|
@@ -6605,6 +7264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6605
7264
|
},
|
|
6606
7265
|
}]
|
|
6607
7266
|
}] });
|
|
7267
|
+
/** Nested submenu scope inside a menubar. */
|
|
6608
7268
|
class FrMenuBarSub {
|
|
6609
7269
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarSub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6610
7270
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarSub, isStandalone: true, selector: "[frMenuBarSub]", host: { classAttribute: "frame-menubar__sub" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuSub, inputs: ["closeDelay", "closeDelay", "triggerMode", "triggerMode"] }], ngImport: i0 });
|
|
@@ -6624,6 +7284,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6624
7284
|
},
|
|
6625
7285
|
}]
|
|
6626
7286
|
}] });
|
|
7287
|
+
/** Trigger control for menu bar sub. */
|
|
6627
7288
|
class FrMenuBarSubTrigger {
|
|
6628
7289
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrMenuBarSubTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6629
7290
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrMenuBarSubTrigger, isStandalone: true, selector: "[frMenuBarSubTrigger]", host: { classAttribute: "frame-menubar__sub-trigger" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuSubTrigger, inputs: ["frDropdownMenuSubTrigger", "frMenuBarSubTrigger", "inset", "inset", "triggerMode", "triggerMode", "variant", "variant"] }], ngImport: i0 });
|
|
@@ -6644,6 +7305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6644
7305
|
}]
|
|
6645
7306
|
}] });
|
|
6646
7307
|
|
|
7308
|
+
/** Content slot for modal. */
|
|
6647
7309
|
class FrModalContent {
|
|
6648
7310
|
templateRef = inject((TemplateRef));
|
|
6649
7311
|
ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -6696,6 +7358,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6696
7358
|
}]
|
|
6697
7359
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], backdropClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdropClass", required: false }] }], closeOnDestroy: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnDestroy", required: false }] }], closeOnNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnNavigation", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], disableClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableClose", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], minWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidth", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
|
|
6698
7360
|
|
|
7361
|
+
/** Close control for modal. */
|
|
6699
7362
|
class FrModalClose {
|
|
6700
7363
|
dialogRef = inject(DialogRef, { optional: true });
|
|
6701
7364
|
result = input(undefined, { ...(ngDevMode ? { debugName: "result" } : /* istanbul ignore next */ {}), alias: 'frModalClose' });
|
|
@@ -6715,24 +7378,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6715
7378
|
},
|
|
6716
7379
|
}]
|
|
6717
7380
|
}], propDecorators: { result: [{ type: i0.Input, args: [{ isSignal: true, alias: "frModalClose", required: false }] }] } });
|
|
7381
|
+
/** Panel slot for modal. */
|
|
6718
7382
|
class FrModalPanel {
|
|
6719
7383
|
scrollable = input(false, { ...(ngDevMode ? { debugName: "scrollable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6720
7384
|
showCloseButton = input(true, { ...(ngDevMode ? { debugName: "showCloseButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6721
7385
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
6722
7386
|
stickyFooter = input(false, { ...(ngDevMode ? { debugName: "stickyFooter" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6723
7387
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6724
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrModalPanel, isStandalone: true, selector: "[frModalPanel], frame-modal-panel", inputs: { scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, stickyFooter: { classPropertyName: "stickyFooter", publicName: "stickyFooter", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-scrollable": "scrollable() ? \"\" : null", "attr.data-sticky-footer": "stickyFooter() ? \"\" : null", "attr.data-size": "size()" }, classAttribute: "frame-modal__panel" }, ngImport: i0, template: `
|
|
6725
|
-
<ng-content />
|
|
6726
|
-
@if (showCloseButton()) {
|
|
6727
|
-
<button
|
|
6728
|
-
class="frame-modal__close"
|
|
6729
|
-
frModalClose
|
|
6730
|
-
type="button"
|
|
6731
|
-
aria-label="Close dialog"
|
|
6732
|
-
>
|
|
6733
|
-
<span aria-hidden="true">×</span>
|
|
6734
|
-
</button>
|
|
6735
|
-
}
|
|
7388
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrModalPanel, isStandalone: true, selector: "[frModalPanel], frame-modal-panel", inputs: { scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, stickyFooter: { classPropertyName: "stickyFooter", publicName: "stickyFooter", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-scrollable": "scrollable() ? \"\" : null", "attr.data-sticky-footer": "stickyFooter() ? \"\" : null", "attr.data-size": "size()" }, classAttribute: "frame-modal__panel" }, ngImport: i0, template: `
|
|
7389
|
+
<ng-content />
|
|
7390
|
+
@if (showCloseButton()) {
|
|
7391
|
+
<button
|
|
7392
|
+
class="frame-modal__close"
|
|
7393
|
+
frModalClose
|
|
7394
|
+
type="button"
|
|
7395
|
+
aria-label="Close dialog"
|
|
7396
|
+
>
|
|
7397
|
+
<span aria-hidden="true">×</span>
|
|
7398
|
+
</button>
|
|
7399
|
+
}
|
|
6736
7400
|
`, isInline: true, dependencies: [{ kind: "directive", type: FrModalClose, selector: "[frModalClose]", inputs: ["frModalClose"] }] });
|
|
6737
7401
|
}
|
|
6738
7402
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalPanel, decorators: [{
|
|
@@ -6745,22 +7409,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6745
7409
|
'[attr.data-sticky-footer]': 'stickyFooter() ? "" : null',
|
|
6746
7410
|
'[attr.data-size]': 'size()',
|
|
6747
7411
|
},
|
|
6748
|
-
template: `
|
|
6749
|
-
<ng-content />
|
|
6750
|
-
@if (showCloseButton()) {
|
|
6751
|
-
<button
|
|
6752
|
-
class="frame-modal__close"
|
|
6753
|
-
frModalClose
|
|
6754
|
-
type="button"
|
|
6755
|
-
aria-label="Close dialog"
|
|
6756
|
-
>
|
|
6757
|
-
<span aria-hidden="true">×</span>
|
|
6758
|
-
</button>
|
|
6759
|
-
}
|
|
7412
|
+
template: `
|
|
7413
|
+
<ng-content />
|
|
7414
|
+
@if (showCloseButton()) {
|
|
7415
|
+
<button
|
|
7416
|
+
class="frame-modal__close"
|
|
7417
|
+
frModalClose
|
|
7418
|
+
type="button"
|
|
7419
|
+
aria-label="Close dialog"
|
|
7420
|
+
>
|
|
7421
|
+
<span aria-hidden="true">×</span>
|
|
7422
|
+
</button>
|
|
7423
|
+
}
|
|
6760
7424
|
`,
|
|
6761
7425
|
imports: [FrModalClose],
|
|
6762
7426
|
}]
|
|
6763
7427
|
}], propDecorators: { scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], stickyFooter: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyFooter", required: false }] }] } });
|
|
7428
|
+
/** Header slot for modal. */
|
|
6764
7429
|
class FrModalHeader {
|
|
6765
7430
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6766
7431
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrModalHeader, isStandalone: true, selector: "[frModalHeader], frame-modal-header", host: { classAttribute: "frame-modal__header" }, ngImport: i0 });
|
|
@@ -6774,6 +7439,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6774
7439
|
},
|
|
6775
7440
|
}]
|
|
6776
7441
|
}] });
|
|
7442
|
+
/** Body slot for modal. */
|
|
6777
7443
|
class FrModalBody {
|
|
6778
7444
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6779
7445
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrModalBody, isStandalone: true, selector: "[frModalBody], frame-modal-body", host: { classAttribute: "frame-modal__body" }, ngImport: i0 });
|
|
@@ -6787,6 +7453,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6787
7453
|
},
|
|
6788
7454
|
}]
|
|
6789
7455
|
}] });
|
|
7456
|
+
/** Footer slot for modal. */
|
|
6790
7457
|
class FrModalFooter {
|
|
6791
7458
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6792
7459
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrModalFooter, isStandalone: true, selector: "[frModalFooter], frame-modal-footer", host: { classAttribute: "frame-modal__footer" }, ngImport: i0 });
|
|
@@ -6800,6 +7467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6800
7467
|
},
|
|
6801
7468
|
}]
|
|
6802
7469
|
}] });
|
|
7470
|
+
/** Title slot for modal. */
|
|
6803
7471
|
class FrModalTitle {
|
|
6804
7472
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6805
7473
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrModalTitle, isStandalone: true, selector: "[frModalTitle], frame-modal-title", host: { classAttribute: "frame-modal__title" }, ngImport: i0 });
|
|
@@ -6813,6 +7481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6813
7481
|
},
|
|
6814
7482
|
}]
|
|
6815
7483
|
}] });
|
|
7484
|
+
/** Description slot for modal. */
|
|
6816
7485
|
class FrModalDescription {
|
|
6817
7486
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6818
7487
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrModalDescription, isStandalone: true, selector: "[frModalDescription], frame-modal-description", host: { classAttribute: "frame-modal__description" }, ngImport: i0 });
|
|
@@ -6827,12 +7496,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6827
7496
|
}]
|
|
6828
7497
|
}] });
|
|
6829
7498
|
|
|
7499
|
+
/** Reference handle for an opened modal. */
|
|
6830
7500
|
class FrModalRef extends DialogRef {
|
|
6831
7501
|
}
|
|
6832
7502
|
|
|
6833
7503
|
const FR_MODAL_DATA = DIALOG_DATA;
|
|
6834
7504
|
const FR_MODAL_REF = FrModalRef;
|
|
6835
7505
|
|
|
7506
|
+
/** Default shell for modal content, title, and footer actions. */
|
|
6836
7507
|
class FrModalShell {
|
|
6837
7508
|
dialogRef = inject((DialogRef));
|
|
6838
7509
|
injector = inject(Injector);
|
|
@@ -6852,51 +7523,51 @@ class FrModalShell {
|
|
|
6852
7523
|
}
|
|
6853
7524
|
}
|
|
6854
7525
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalShell, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6855
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrModalShell, isStandalone: true, selector: "frame-modal-shell", ngImport: i0, template: `
|
|
6856
|
-
<div
|
|
6857
|
-
frModalPanel
|
|
6858
|
-
[size]="options.size ?? 'md'"
|
|
6859
|
-
[showCloseButton]="options.showCloseButton ?? true"
|
|
6860
|
-
[scrollable]="options.scrollable ?? false"
|
|
6861
|
-
[stickyFooter]="options.stickyFooter ?? false"
|
|
6862
|
-
>
|
|
6863
|
-
@if (options.title || options.description) {
|
|
6864
|
-
<div frModalHeader>
|
|
6865
|
-
@if (options.title) {
|
|
6866
|
-
<h2 frModalTitle>{{ options.title }}</h2>
|
|
6867
|
-
}
|
|
6868
|
-
|
|
6869
|
-
@if (options.description) {
|
|
6870
|
-
<p frModalDescription>{{ options.description }}</p>
|
|
6871
|
-
}
|
|
6872
|
-
</div>
|
|
6873
|
-
}
|
|
6874
|
-
|
|
6875
|
-
<div frModalBody>
|
|
6876
|
-
<ng-container
|
|
6877
|
-
[ngComponentOutlet]="options.bodyComponent"
|
|
6878
|
-
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
6879
|
-
[ngComponentOutletInjector]="bodyInjector"
|
|
6880
|
-
/>
|
|
6881
|
-
</div>
|
|
6882
|
-
|
|
6883
|
-
@if (options.footerActions?.length) {
|
|
6884
|
-
<div frModalFooter>
|
|
6885
|
-
@for (action of options.footerActions; track action.label) {
|
|
6886
|
-
<button
|
|
6887
|
-
frButton
|
|
6888
|
-
type="button"
|
|
6889
|
-
[appearance]="action.appearance ?? 'primary'"
|
|
6890
|
-
[disabled]="action.disabled ?? false"
|
|
6891
|
-
[attr.aria-label]="action.ariaLabel ?? null"
|
|
6892
|
-
(click)="handleAction(action)"
|
|
6893
|
-
>
|
|
6894
|
-
<span frButtonLabel>{{ action.label }}</span>
|
|
6895
|
-
</button>
|
|
6896
|
-
}
|
|
6897
|
-
</div>
|
|
6898
|
-
}
|
|
6899
|
-
</div>
|
|
7526
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrModalShell, isStandalone: true, selector: "frame-modal-shell", ngImport: i0, template: `
|
|
7527
|
+
<div
|
|
7528
|
+
frModalPanel
|
|
7529
|
+
[size]="options.size ?? 'md'"
|
|
7530
|
+
[showCloseButton]="options.showCloseButton ?? true"
|
|
7531
|
+
[scrollable]="options.scrollable ?? false"
|
|
7532
|
+
[stickyFooter]="options.stickyFooter ?? false"
|
|
7533
|
+
>
|
|
7534
|
+
@if (options.title || options.description) {
|
|
7535
|
+
<div frModalHeader>
|
|
7536
|
+
@if (options.title) {
|
|
7537
|
+
<h2 frModalTitle>{{ options.title }}</h2>
|
|
7538
|
+
}
|
|
7539
|
+
|
|
7540
|
+
@if (options.description) {
|
|
7541
|
+
<p frModalDescription>{{ options.description }}</p>
|
|
7542
|
+
}
|
|
7543
|
+
</div>
|
|
7544
|
+
}
|
|
7545
|
+
|
|
7546
|
+
<div frModalBody>
|
|
7547
|
+
<ng-container
|
|
7548
|
+
[ngComponentOutlet]="options.bodyComponent"
|
|
7549
|
+
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
7550
|
+
[ngComponentOutletInjector]="bodyInjector"
|
|
7551
|
+
/>
|
|
7552
|
+
</div>
|
|
7553
|
+
|
|
7554
|
+
@if (options.footerActions?.length) {
|
|
7555
|
+
<div frModalFooter>
|
|
7556
|
+
@for (action of options.footerActions; track action.label) {
|
|
7557
|
+
<button
|
|
7558
|
+
frButton
|
|
7559
|
+
type="button"
|
|
7560
|
+
[appearance]="action.appearance ?? 'primary'"
|
|
7561
|
+
[disabled]="action.disabled ?? false"
|
|
7562
|
+
[attr.aria-label]="action.ariaLabel ?? null"
|
|
7563
|
+
(click)="handleAction(action)"
|
|
7564
|
+
>
|
|
7565
|
+
<span frButtonLabel>{{ action.label }}</span>
|
|
7566
|
+
</button>
|
|
7567
|
+
}
|
|
7568
|
+
</div>
|
|
7569
|
+
}
|
|
7570
|
+
</div>
|
|
6900
7571
|
`, isInline: true, dependencies: [{ kind: "directive", type: FrButton$1, selector: "a[frButton], button[frButton]", inputs: ["appearance", "disabled", "loading", "loadingDisplay", "radius", "size"] }, { kind: "directive", type: FrButtonLabel$1, selector: "[frButtonLabel]" }, { kind: "directive", type: FrModalBody, selector: "[frModalBody], frame-modal-body" }, { kind: "directive", type: FrModalDescription, selector: "[frModalDescription], frame-modal-description" }, { kind: "directive", type: FrModalFooter, selector: "[frModalFooter], frame-modal-footer" }, { kind: "directive", type: FrModalHeader, selector: "[frModalHeader], frame-modal-header" }, { kind: "component", type: FrModalPanel, selector: "[frModalPanel], frame-modal-panel", inputs: ["scrollable", "showCloseButton", "size", "stickyFooter"] }, { kind: "directive", type: FrModalTitle, selector: "[frModalTitle], frame-modal-title" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }] });
|
|
6901
7572
|
}
|
|
6902
7573
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalShell, decorators: [{
|
|
@@ -6914,57 +7585,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6914
7585
|
FrModalTitle,
|
|
6915
7586
|
NgComponentOutlet,
|
|
6916
7587
|
],
|
|
6917
|
-
template: `
|
|
6918
|
-
<div
|
|
6919
|
-
frModalPanel
|
|
6920
|
-
[size]="options.size ?? 'md'"
|
|
6921
|
-
[showCloseButton]="options.showCloseButton ?? true"
|
|
6922
|
-
[scrollable]="options.scrollable ?? false"
|
|
6923
|
-
[stickyFooter]="options.stickyFooter ?? false"
|
|
6924
|
-
>
|
|
6925
|
-
@if (options.title || options.description) {
|
|
6926
|
-
<div frModalHeader>
|
|
6927
|
-
@if (options.title) {
|
|
6928
|
-
<h2 frModalTitle>{{ options.title }}</h2>
|
|
6929
|
-
}
|
|
6930
|
-
|
|
6931
|
-
@if (options.description) {
|
|
6932
|
-
<p frModalDescription>{{ options.description }}</p>
|
|
6933
|
-
}
|
|
6934
|
-
</div>
|
|
6935
|
-
}
|
|
6936
|
-
|
|
6937
|
-
<div frModalBody>
|
|
6938
|
-
<ng-container
|
|
6939
|
-
[ngComponentOutlet]="options.bodyComponent"
|
|
6940
|
-
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
6941
|
-
[ngComponentOutletInjector]="bodyInjector"
|
|
6942
|
-
/>
|
|
6943
|
-
</div>
|
|
6944
|
-
|
|
6945
|
-
@if (options.footerActions?.length) {
|
|
6946
|
-
<div frModalFooter>
|
|
6947
|
-
@for (action of options.footerActions; track action.label) {
|
|
6948
|
-
<button
|
|
6949
|
-
frButton
|
|
6950
|
-
type="button"
|
|
6951
|
-
[appearance]="action.appearance ?? 'primary'"
|
|
6952
|
-
[disabled]="action.disabled ?? false"
|
|
6953
|
-
[attr.aria-label]="action.ariaLabel ?? null"
|
|
6954
|
-
(click)="handleAction(action)"
|
|
6955
|
-
>
|
|
6956
|
-
<span frButtonLabel>{{ action.label }}</span>
|
|
6957
|
-
</button>
|
|
6958
|
-
}
|
|
6959
|
-
</div>
|
|
6960
|
-
}
|
|
6961
|
-
</div>
|
|
7588
|
+
template: `
|
|
7589
|
+
<div
|
|
7590
|
+
frModalPanel
|
|
7591
|
+
[size]="options.size ?? 'md'"
|
|
7592
|
+
[showCloseButton]="options.showCloseButton ?? true"
|
|
7593
|
+
[scrollable]="options.scrollable ?? false"
|
|
7594
|
+
[stickyFooter]="options.stickyFooter ?? false"
|
|
7595
|
+
>
|
|
7596
|
+
@if (options.title || options.description) {
|
|
7597
|
+
<div frModalHeader>
|
|
7598
|
+
@if (options.title) {
|
|
7599
|
+
<h2 frModalTitle>{{ options.title }}</h2>
|
|
7600
|
+
}
|
|
7601
|
+
|
|
7602
|
+
@if (options.description) {
|
|
7603
|
+
<p frModalDescription>{{ options.description }}</p>
|
|
7604
|
+
}
|
|
7605
|
+
</div>
|
|
7606
|
+
}
|
|
7607
|
+
|
|
7608
|
+
<div frModalBody>
|
|
7609
|
+
<ng-container
|
|
7610
|
+
[ngComponentOutlet]="options.bodyComponent"
|
|
7611
|
+
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
7612
|
+
[ngComponentOutletInjector]="bodyInjector"
|
|
7613
|
+
/>
|
|
7614
|
+
</div>
|
|
7615
|
+
|
|
7616
|
+
@if (options.footerActions?.length) {
|
|
7617
|
+
<div frModalFooter>
|
|
7618
|
+
@for (action of options.footerActions; track action.label) {
|
|
7619
|
+
<button
|
|
7620
|
+
frButton
|
|
7621
|
+
type="button"
|
|
7622
|
+
[appearance]="action.appearance ?? 'primary'"
|
|
7623
|
+
[disabled]="action.disabled ?? false"
|
|
7624
|
+
[attr.aria-label]="action.ariaLabel ?? null"
|
|
7625
|
+
(click)="handleAction(action)"
|
|
7626
|
+
>
|
|
7627
|
+
<span frButtonLabel>{{ action.label }}</span>
|
|
7628
|
+
</button>
|
|
7629
|
+
}
|
|
7630
|
+
</div>
|
|
7631
|
+
}
|
|
7632
|
+
</div>
|
|
6962
7633
|
`,
|
|
6963
7634
|
}]
|
|
6964
7635
|
}] });
|
|
6965
7636
|
|
|
6966
7637
|
const DEFAULT_PANEL_CLASS$1 = 'frame-modal__overlay-pane';
|
|
6967
7638
|
const DEFAULT_BACKDROP_CLASS$1 = 'frame-modal__backdrop';
|
|
7639
|
+
/** Service for opening modal dialogs. */
|
|
6968
7640
|
class FrModalService {
|
|
6969
7641
|
dialog = inject(Dialog);
|
|
6970
7642
|
open(content, dataOrConfig, config) {
|
|
@@ -7036,6 +7708,7 @@ function resolveOpenConfig(content, dataOrConfig, config) {
|
|
|
7036
7708
|
if (!isComponentType$1(content)) {
|
|
7037
7709
|
return (dataOrConfig ?? {});
|
|
7038
7710
|
}
|
|
7711
|
+
// Component opens support the shorthand `open(Component, data, config)` shape.
|
|
7039
7712
|
if (config) {
|
|
7040
7713
|
return {
|
|
7041
7714
|
...config,
|
|
@@ -7045,6 +7718,7 @@ function resolveOpenConfig(content, dataOrConfig, config) {
|
|
|
7045
7718
|
if (dataOrConfig === undefined) {
|
|
7046
7719
|
return {};
|
|
7047
7720
|
}
|
|
7721
|
+
// Without a third argument, distinguish raw data from a full modal config by known keys.
|
|
7048
7722
|
if (isModalConfig(dataOrConfig)) {
|
|
7049
7723
|
return dataOrConfig;
|
|
7050
7724
|
}
|
|
@@ -7112,6 +7786,7 @@ function withModalRefProvider(providers) {
|
|
|
7112
7786
|
return [modalRefProvider, ...(providers ?? [])];
|
|
7113
7787
|
}
|
|
7114
7788
|
|
|
7789
|
+
/** Trigger control for modal. */
|
|
7115
7790
|
class FrModalTrigger {
|
|
7116
7791
|
static CUSTOM_PROPERTY_PREFIX = '--frame-modal-';
|
|
7117
7792
|
destroyRef = inject(DestroyRef);
|
|
@@ -7182,6 +7857,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7182
7857
|
}], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "frModalTrigger", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
7183
7858
|
|
|
7184
7859
|
const FR_NAVIGATION_MENU_PARENT = new InjectionToken('FrNavigationMenuParent');
|
|
7860
|
+
/** Navigation menu root for hover and focus interactions. */
|
|
7185
7861
|
class FrNavigationMenu {
|
|
7186
7862
|
closeDelay = input(140, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
7187
7863
|
triggerMode = input('both', ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
@@ -7219,6 +7895,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7219
7895
|
},
|
|
7220
7896
|
}]
|
|
7221
7897
|
}], propDecorators: { closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
7898
|
+
/** List slot for navigation menu. */
|
|
7222
7899
|
class FrNavigationMenuList {
|
|
7223
7900
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7224
7901
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuList, isStandalone: true, selector: "[frNavigationMenuList], frame-navigation-menu-list", host: { attributes: { "role": "list" }, classAttribute: "frame-navigation-menu__list" }, ngImport: i0 });
|
|
@@ -7233,6 +7910,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7233
7910
|
},
|
|
7234
7911
|
}]
|
|
7235
7912
|
}] });
|
|
7913
|
+
/** Item slot for navigation menu. */
|
|
7236
7914
|
class FrNavigationMenuItem {
|
|
7237
7915
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7238
7916
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuItem, isStandalone: true, selector: "[frNavigationMenuItem], frame-navigation-menu-item", host: { attributes: { "role": "listitem" }, classAttribute: "frame-navigation-menu__item" }, ngImport: i0 });
|
|
@@ -7247,6 +7925,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7247
7925
|
},
|
|
7248
7926
|
}]
|
|
7249
7927
|
}] });
|
|
7928
|
+
/** Trigger control for navigation menu. */
|
|
7250
7929
|
class FrNavigationMenuTrigger {
|
|
7251
7930
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7252
7931
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuTrigger, isStandalone: true, selector: "[frNavigationMenuTrigger]", host: { attributes: { "type": "button" }, classAttribute: "frame-navigation-menu__trigger" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuTrigger, inputs: ["frDropdownMenuTrigger", "frNavigationMenuTrigger", "triggerMode", "triggerMode"] }], ngImport: i0 });
|
|
@@ -7267,6 +7946,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7267
7946
|
},
|
|
7268
7947
|
}]
|
|
7269
7948
|
}] });
|
|
7949
|
+
/** Content slot for navigation menu. */
|
|
7270
7950
|
class FrNavigationMenuContent extends FrDropdownMenuContent$1 {
|
|
7271
7951
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuContent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7272
7952
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuContent, isStandalone: true, selector: "ng-template[frNavigationMenuContent]", providers: [
|
|
@@ -7297,6 +7977,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7297
7977
|
],
|
|
7298
7978
|
}]
|
|
7299
7979
|
}] });
|
|
7980
|
+
/** Panel slot for navigation menu. */
|
|
7300
7981
|
class FrNavigationMenuPanel {
|
|
7301
7982
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7302
7983
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuPanel, isStandalone: true, selector: "[frNavigationMenuPanel]", host: { classAttribute: "frame-navigation-menu__content" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuPanel }], ngImport: i0 });
|
|
@@ -7311,6 +7992,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7311
7992
|
},
|
|
7312
7993
|
}]
|
|
7313
7994
|
}] });
|
|
7995
|
+
/** Link primitive inside a navigation menu panel. */
|
|
7314
7996
|
class FrNavigationMenuLink {
|
|
7315
7997
|
active = input(false, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
7316
7998
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -7326,6 +8008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7326
8008
|
},
|
|
7327
8009
|
}]
|
|
7328
8010
|
}], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }] } });
|
|
8011
|
+
/** Grid layout helper for navigation menu content. */
|
|
7329
8012
|
class FrNavigationMenuGrid {
|
|
7330
8013
|
columns = input(1, ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
7331
8014
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuGrid, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -7341,6 +8024,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7341
8024
|
},
|
|
7342
8025
|
}]
|
|
7343
8026
|
}], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }] } });
|
|
8027
|
+
/** Featured content slot inside navigation menu panels. */
|
|
7344
8028
|
class FrNavigationMenuFeature {
|
|
7345
8029
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuFeature, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7346
8030
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuFeature, isStandalone: true, selector: "[frNavigationMenuFeature]", host: { classAttribute: "frame-navigation-menu__feature" }, ngImport: i0 });
|
|
@@ -7354,6 +8038,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7354
8038
|
},
|
|
7355
8039
|
}]
|
|
7356
8040
|
}] });
|
|
8041
|
+
/** Title slot for navigation menu link. */
|
|
7357
8042
|
class FrNavigationMenuLinkTitle {
|
|
7358
8043
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuLinkTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7359
8044
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuLinkTitle, isStandalone: true, selector: "[frNavigationMenuLinkTitle]", host: { classAttribute: "frame-navigation-menu__link-title" }, ngImport: i0 });
|
|
@@ -7367,6 +8052,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7367
8052
|
},
|
|
7368
8053
|
}]
|
|
7369
8054
|
}] });
|
|
8055
|
+
/** Description slot for navigation menu link. */
|
|
7370
8056
|
class FrNavigationMenuLinkDescription {
|
|
7371
8057
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuLinkDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7372
8058
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuLinkDescription, isStandalone: true, selector: "[frNavigationMenuLinkDescription]", host: { classAttribute: "frame-navigation-menu__link-description" }, ngImport: i0 });
|
|
@@ -7380,6 +8066,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7380
8066
|
},
|
|
7381
8067
|
}]
|
|
7382
8068
|
}] });
|
|
8069
|
+
/** Separator slot for navigation link. */
|
|
7383
8070
|
class FrNavigationLinkSeparator {
|
|
7384
8071
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationLinkSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7385
8072
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationLinkSeparator, isStandalone: true, selector: "[frNavigationLinkSeparator]", host: { attributes: { "role": "separator", "aria-hidden": "true" }, classAttribute: "frame-navigation-menu__link-separator" }, ngImport: i0 });
|
|
@@ -7395,6 +8082,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7395
8082
|
},
|
|
7396
8083
|
}]
|
|
7397
8084
|
}] });
|
|
8085
|
+
/** Indicator slot for navigation menu. */
|
|
7398
8086
|
class FrNavigationMenuIndicator {
|
|
7399
8087
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7400
8088
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuIndicator, isStandalone: true, selector: "[frNavigationMenuIndicator], frame-navigation-menu-indicator", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-navigation-menu__indicator" }, ngImport: i0 });
|
|
@@ -7409,6 +8097,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7409
8097
|
},
|
|
7410
8098
|
}]
|
|
7411
8099
|
}] });
|
|
8100
|
+
/** Viewport slot for navigation menu. */
|
|
7412
8101
|
class FrNavigationMenuViewport {
|
|
7413
8102
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrNavigationMenuViewport, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7414
8103
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrNavigationMenuViewport, isStandalone: true, selector: "[frNavigationMenuViewport], frame-navigation-menu-viewport", host: { classAttribute: "frame-navigation-menu__viewport" }, ngImport: i0 });
|
|
@@ -7423,6 +8112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7423
8112
|
}]
|
|
7424
8113
|
}] });
|
|
7425
8114
|
|
|
8115
|
+
/** Pagination navigation container. */
|
|
7426
8116
|
class FrPagination {
|
|
7427
8117
|
ariaLabel = input('pagination', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
7428
8118
|
boundaryCount = input(1, ...(ngDevMode ? [{ debugName: "boundaryCount" }] : /* istanbul ignore next */ []));
|
|
@@ -7488,6 +8178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7488
8178
|
},
|
|
7489
8179
|
}]
|
|
7490
8180
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], boundaryCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "boundaryCount", required: false }] }], page: [{ type: i0.Input, args: [{ isSignal: true, alias: "page", required: false }] }, { type: i0.Output, args: ["pageChange"] }], siblingCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "siblingCount", required: false }] }], totalPages: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPages", required: false }] }] } });
|
|
8181
|
+
/** Content slot for pagination. */
|
|
7491
8182
|
class FrPaginationContent {
|
|
7492
8183
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7493
8184
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPaginationContent, isStandalone: true, selector: "ul[frPaginationContent], ol[frPaginationContent], [frPaginationContent]", host: { classAttribute: "frame-pagination__content" }, ngImport: i0 });
|
|
@@ -7501,6 +8192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7501
8192
|
},
|
|
7502
8193
|
}]
|
|
7503
8194
|
}] });
|
|
8195
|
+
/** Item slot for pagination. */
|
|
7504
8196
|
class FrPaginationItem {
|
|
7505
8197
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7506
8198
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPaginationItem, isStandalone: true, selector: "li[frPaginationItem], [frPaginationItem]", host: { classAttribute: "frame-pagination__item" }, ngImport: i0 });
|
|
@@ -7514,6 +8206,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7514
8206
|
},
|
|
7515
8207
|
}]
|
|
7516
8208
|
}] });
|
|
8209
|
+
/** Page link with active and disabled states. */
|
|
7517
8210
|
class FrPaginationLink {
|
|
7518
8211
|
pagination = inject(FrPagination, { optional: true });
|
|
7519
8212
|
active = input(false, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -7555,6 +8248,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7555
8248
|
},
|
|
7556
8249
|
}]
|
|
7557
8250
|
}], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], page: [{ type: i0.Input, args: [{ isSignal: true, alias: "page", required: false }] }] } });
|
|
8251
|
+
/** Icon slot for pagination. */
|
|
7558
8252
|
class FrPaginationIcon {
|
|
7559
8253
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7560
8254
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPaginationIcon, isStandalone: true, selector: "[frPaginationIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-pagination__projected-icon" }, ngImport: i0 });
|
|
@@ -7569,6 +8263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7569
8263
|
},
|
|
7570
8264
|
}]
|
|
7571
8265
|
}] });
|
|
8266
|
+
/** Previous-page pagination control. */
|
|
7572
8267
|
class FrPaginationPrevious {
|
|
7573
8268
|
pagination = inject(FrPagination, { optional: true });
|
|
7574
8269
|
ariaLabel = input('Go to previous page', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -7621,6 +8316,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7621
8316
|
`,
|
|
7622
8317
|
}]
|
|
7623
8318
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }] } });
|
|
8319
|
+
/** Next-page pagination control. */
|
|
7624
8320
|
class FrPaginationNext {
|
|
7625
8321
|
pagination = inject(FrPagination, { optional: true });
|
|
7626
8322
|
ariaLabel = input('Go to next page', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -7673,6 +8369,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7673
8369
|
`,
|
|
7674
8370
|
}]
|
|
7675
8371
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }] } });
|
|
8372
|
+
/** Ellipsis slot for pagination. */
|
|
7676
8373
|
class FrPaginationEllipsis {
|
|
7677
8374
|
label = input('More pages', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
7678
8375
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationEllipsis, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -7746,6 +8443,7 @@ function oppositeSide(side) {
|
|
|
7746
8443
|
|
|
7747
8444
|
const FR_POPOVER_CONTROLLER = new InjectionToken('FrPopoverController');
|
|
7748
8445
|
|
|
8446
|
+
/** Content slot for popover. */
|
|
7749
8447
|
class FrPopoverContent {
|
|
7750
8448
|
templateRef = inject((TemplateRef));
|
|
7751
8449
|
align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
@@ -7771,6 +8469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7771
8469
|
exportAs: 'frPopoverContent',
|
|
7772
8470
|
}]
|
|
7773
8471
|
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }] } });
|
|
8472
|
+
/** Panel slot for popover. */
|
|
7774
8473
|
class FrPopoverPanel {
|
|
7775
8474
|
content = inject(FrPopoverContent);
|
|
7776
8475
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -7788,6 +8487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7788
8487
|
},
|
|
7789
8488
|
}]
|
|
7790
8489
|
}] });
|
|
8490
|
+
/** Header slot for popover. */
|
|
7791
8491
|
class FrPopoverHeader {
|
|
7792
8492
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7793
8493
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverHeader, isStandalone: true, selector: "[frPopoverHeader]", host: { classAttribute: "frame-popover__header" }, ngImport: i0 });
|
|
@@ -7801,6 +8501,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7801
8501
|
},
|
|
7802
8502
|
}]
|
|
7803
8503
|
}] });
|
|
8504
|
+
/** Title slot for popover. */
|
|
7804
8505
|
class FrPopoverTitle {
|
|
7805
8506
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7806
8507
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverTitle, isStandalone: true, selector: "[frPopoverTitle]", host: { classAttribute: "frame-popover__title" }, ngImport: i0 });
|
|
@@ -7814,6 +8515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7814
8515
|
},
|
|
7815
8516
|
}]
|
|
7816
8517
|
}] });
|
|
8518
|
+
/** Description slot for popover. */
|
|
7817
8519
|
class FrPopoverDescription {
|
|
7818
8520
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7819
8521
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverDescription, isStandalone: true, selector: "[frPopoverDescription]", host: { classAttribute: "frame-popover__description" }, ngImport: i0 });
|
|
@@ -7827,6 +8529,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7827
8529
|
},
|
|
7828
8530
|
}]
|
|
7829
8531
|
}] });
|
|
8532
|
+
/** Body slot for popover. */
|
|
7830
8533
|
class FrPopoverBody {
|
|
7831
8534
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7832
8535
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverBody, isStandalone: true, selector: "[frPopoverBody]", host: { classAttribute: "frame-popover__body" }, ngImport: i0 });
|
|
@@ -7840,6 +8543,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7840
8543
|
},
|
|
7841
8544
|
}]
|
|
7842
8545
|
}] });
|
|
8546
|
+
/** Footer slot for popover. */
|
|
7843
8547
|
class FrPopoverFooter {
|
|
7844
8548
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7845
8549
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverFooter, isStandalone: true, selector: "[frPopoverFooter]", host: { classAttribute: "frame-popover__footer" }, ngImport: i0 });
|
|
@@ -7853,6 +8557,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7853
8557
|
},
|
|
7854
8558
|
}]
|
|
7855
8559
|
}] });
|
|
8560
|
+
/** Close control for popover. */
|
|
7856
8561
|
class FrPopoverClose {
|
|
7857
8562
|
root = inject(FR_POPOVER_CONTROLLER);
|
|
7858
8563
|
handleClick(event) {
|
|
@@ -7879,6 +8584,7 @@ const DEFAULT_POSITIONS = buildPopoverPositions({
|
|
|
7879
8584
|
side: 'bottom',
|
|
7880
8585
|
sideOffset: 8,
|
|
7881
8586
|
});
|
|
8587
|
+
/** Root controller for popover. */
|
|
7882
8588
|
class FrPopoverRoot {
|
|
7883
8589
|
defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
7884
8590
|
debugVisible = input(false, { ...(ngDevMode ? { debugName: "debugVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -7969,28 +8675,28 @@ class FrPopoverRoot {
|
|
|
7969
8675
|
provide: FR_POPOVER_CONTROLLER,
|
|
7970
8676
|
useExisting: FrPopoverRoot,
|
|
7971
8677
|
},
|
|
7972
|
-
], exportAs: ["frPopover"], ngImport: i0, template: `
|
|
7973
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
7974
|
-
<ng-content />
|
|
7975
|
-
</span>
|
|
7976
|
-
|
|
7977
|
-
<ng-template
|
|
7978
|
-
cdkConnectedOverlay
|
|
7979
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
7980
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
7981
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
7982
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
7983
|
-
[cdkConnectedOverlayPush]="true"
|
|
7984
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
7985
|
-
[cdkConnectedOverlayHasBackdrop]="true"
|
|
7986
|
-
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
7987
|
-
(backdropClick)="close()"
|
|
7988
|
-
(detach)="close()"
|
|
7989
|
-
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
7990
|
-
(positionChange)="handlePositionChange($event)"
|
|
7991
|
-
>
|
|
7992
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
7993
|
-
</ng-template>
|
|
8678
|
+
], exportAs: ["frPopover"], ngImport: i0, template: `
|
|
8679
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
8680
|
+
<ng-content />
|
|
8681
|
+
</span>
|
|
8682
|
+
|
|
8683
|
+
<ng-template
|
|
8684
|
+
cdkConnectedOverlay
|
|
8685
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
8686
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
8687
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
8688
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
8689
|
+
[cdkConnectedOverlayPush]="true"
|
|
8690
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
8691
|
+
[cdkConnectedOverlayHasBackdrop]="true"
|
|
8692
|
+
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
8693
|
+
(backdropClick)="close()"
|
|
8694
|
+
(detach)="close()"
|
|
8695
|
+
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
8696
|
+
(positionChange)="handlePositionChange($event)"
|
|
8697
|
+
>
|
|
8698
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
8699
|
+
</ng-template>
|
|
7994
8700
|
`, isInline: true, dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7995
8701
|
}
|
|
7996
8702
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverRoot, decorators: [{
|
|
@@ -8010,44 +8716,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8010
8716
|
class: 'frame-popover',
|
|
8011
8717
|
'[attr.data-state]': 'isOpen() ? "open" : "closed"',
|
|
8012
8718
|
},
|
|
8013
|
-
template: `
|
|
8014
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
8015
|
-
<ng-content />
|
|
8016
|
-
</span>
|
|
8017
|
-
|
|
8018
|
-
<ng-template
|
|
8019
|
-
cdkConnectedOverlay
|
|
8020
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
8021
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
8022
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
8023
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
8024
|
-
[cdkConnectedOverlayPush]="true"
|
|
8025
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
8026
|
-
[cdkConnectedOverlayHasBackdrop]="true"
|
|
8027
|
-
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
8028
|
-
(backdropClick)="close()"
|
|
8029
|
-
(detach)="close()"
|
|
8030
|
-
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
8031
|
-
(positionChange)="handlePositionChange($event)"
|
|
8032
|
-
>
|
|
8033
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
8034
|
-
</ng-template>
|
|
8719
|
+
template: `
|
|
8720
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
8721
|
+
<ng-content />
|
|
8722
|
+
</span>
|
|
8723
|
+
|
|
8724
|
+
<ng-template
|
|
8725
|
+
cdkConnectedOverlay
|
|
8726
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
8727
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
8728
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
8729
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
8730
|
+
[cdkConnectedOverlayPush]="true"
|
|
8731
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
8732
|
+
[cdkConnectedOverlayHasBackdrop]="true"
|
|
8733
|
+
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
8734
|
+
(backdropClick)="close()"
|
|
8735
|
+
(detach)="close()"
|
|
8736
|
+
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
8737
|
+
(positionChange)="handlePositionChange($event)"
|
|
8738
|
+
>
|
|
8739
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
8740
|
+
</ng-template>
|
|
8035
8741
|
`,
|
|
8036
8742
|
}]
|
|
8037
8743
|
}], ctorParameters: () => [], propDecorators: { defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }] } });
|
|
8038
8744
|
|
|
8745
|
+
/** Trigger control for popover. */
|
|
8039
8746
|
class FrPopoverTrigger {
|
|
8040
8747
|
content = input(null, { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'frPopoverTrigger' });
|
|
8041
8748
|
root = inject(FR_POPOVER_CONTROLLER);
|
|
8042
8749
|
elementRef = inject(ElementRef);
|
|
8750
|
+
lastContent = null;
|
|
8043
8751
|
constructor() {
|
|
8044
8752
|
this.root.registerTrigger(this.elementRef.nativeElement);
|
|
8045
|
-
|
|
8046
|
-
|
|
8047
|
-
|
|
8048
|
-
|
|
8049
|
-
|
|
8050
|
-
}
|
|
8753
|
+
}
|
|
8754
|
+
ngDoCheck() {
|
|
8755
|
+
const content = this.content();
|
|
8756
|
+
if (content && content !== this.lastContent) {
|
|
8757
|
+
this.root.setContent(content);
|
|
8758
|
+
}
|
|
8759
|
+
this.lastContent = content;
|
|
8051
8760
|
}
|
|
8052
8761
|
handleClick(event) {
|
|
8053
8762
|
event.preventDefault();
|
|
@@ -8097,6 +8806,7 @@ function coerceProgressMax(value) {
|
|
|
8097
8806
|
const parsed = Number(value);
|
|
8098
8807
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;
|
|
8099
8808
|
}
|
|
8809
|
+
/** Progress bar host with value and max state. */
|
|
8100
8810
|
class FrProgress {
|
|
8101
8811
|
value = input(0, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: coerceProgressValue });
|
|
8102
8812
|
max = input(100, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: coerceProgressMax });
|
|
@@ -8138,6 +8848,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8138
8848
|
},
|
|
8139
8849
|
}]
|
|
8140
8850
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
|
|
8851
|
+
/** Indicator slot for progress. */
|
|
8141
8852
|
class FrProgressIndicator {
|
|
8142
8853
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrProgressIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8143
8854
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrProgressIndicator, isStandalone: true, selector: "[frProgressIndicator], frame-progress-indicator", host: { classAttribute: "frame-progress__indicator" }, ngImport: i0 });
|
|
@@ -8154,6 +8865,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8154
8865
|
|
|
8155
8866
|
const FR_RADIO_GROUP_ORIENTATIONS = ['vertical', 'horizontal'];
|
|
8156
8867
|
const FR_RADIO_GROUP_VARIANTS = ['default', 'cards'];
|
|
8868
|
+
/** Radio group host with orientation and variant controls. */
|
|
8157
8869
|
class FrRadioGroup {
|
|
8158
8870
|
orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
8159
8871
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
@@ -8175,6 +8887,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8175
8887
|
},
|
|
8176
8888
|
}]
|
|
8177
8889
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
8890
|
+
/** Item slot for radio group. */
|
|
8178
8891
|
class FrRadioGroupItem {
|
|
8179
8892
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8180
8893
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrRadioGroupItem, isStandalone: true, selector: "input[type=radio][frRadioGroupItem]", host: { classAttribute: "frame-radio-group__item" }, ngImport: i0 });
|
|
@@ -8188,6 +8901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8188
8901
|
},
|
|
8189
8902
|
}]
|
|
8190
8903
|
}] });
|
|
8904
|
+
/** Field slot for radio group. */
|
|
8191
8905
|
class FrRadioGroupField {
|
|
8192
8906
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
8193
8907
|
invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -8207,6 +8921,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8207
8921
|
},
|
|
8208
8922
|
}]
|
|
8209
8923
|
}], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
|
|
8924
|
+
/** Card layout option for radio group choices. */
|
|
8210
8925
|
class FrRadioGroupCard {
|
|
8211
8926
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8212
8927
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrRadioGroupCard, isStandalone: true, selector: "label[frRadioGroupCard]", host: { classAttribute: "frame-radio-group__card" }, ngImport: i0 });
|
|
@@ -8220,6 +8935,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8220
8935
|
},
|
|
8221
8936
|
}]
|
|
8222
8937
|
}] });
|
|
8938
|
+
/** Meta slot for radio group card. */
|
|
8223
8939
|
class FrRadioGroupCardMeta {
|
|
8224
8940
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupCardMeta, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8225
8941
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrRadioGroupCardMeta, isStandalone: true, selector: "[frRadioGroupCardMeta]", host: { classAttribute: "frame-radio-group__card-meta" }, ngImport: i0 });
|
|
@@ -8236,6 +8952,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8236
8952
|
|
|
8237
8953
|
const FR_RESIZABLE_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
8238
8954
|
let nextResizableId = 0;
|
|
8955
|
+
/** Resizable panel group that coordinates pane sizes. */
|
|
8239
8956
|
class FrResizablePanelGroup {
|
|
8240
8957
|
elementRef = inject((ElementRef));
|
|
8241
8958
|
groupId = `frame-resizable-${++nextResizableId}`;
|
|
@@ -8301,6 +9018,7 @@ class FrResizablePanelGroup {
|
|
|
8301
9018
|
const startPrevious = this.panelSize(previousPanel) ?? 0;
|
|
8302
9019
|
const startNext = this.panelSize(nextPanel) ?? 0;
|
|
8303
9020
|
const pairTotal = startPrevious + startNext;
|
|
9021
|
+
// Keep pair resizing local so adjacent panels trade space without changing total layout.
|
|
8304
9022
|
const rtlMultiplier = this.orientation() === 'horizontal' && getComputedStyle(this.elementRef.nativeElement).direction === 'rtl'
|
|
8305
9023
|
? -1
|
|
8306
9024
|
: 1;
|
|
@@ -8363,6 +9081,7 @@ class FrResizablePanelGroup {
|
|
|
8363
9081
|
}
|
|
8364
9082
|
}
|
|
8365
9083
|
resizePair(previousPanel, nextPanel, pairTotal, requestedPreviousSize) {
|
|
9084
|
+
// Clamp the previous panel first; the next panel receives the remaining pair size.
|
|
8366
9085
|
const previousMin = this.minSize(previousPanel);
|
|
8367
9086
|
const previousMax = Math.min(this.maxSize(previousPanel), pairTotal - this.minSize(nextPanel));
|
|
8368
9087
|
const previousSize = clampNumber(requestedPreviousSize, previousMin, previousMax);
|
|
@@ -8375,6 +9094,7 @@ class FrResizablePanelGroup {
|
|
|
8375
9094
|
applyPanelSize(panel, size) {
|
|
8376
9095
|
const normalizedSize = Math.max(size, 0);
|
|
8377
9096
|
const collapsedThreshold = this.collapsible(panel) ? this.collapsedSize(panel) : 0;
|
|
9097
|
+
// Collapsible panels snap to their collapsed size instead of shrinking below it.
|
|
8378
9098
|
const collapsed = normalizedSize <= collapsedThreshold;
|
|
8379
9099
|
const appliedSize = collapsed ? collapsedThreshold : normalizedSize;
|
|
8380
9100
|
panel.style.flexBasis = `${appliedSize}%`;
|
|
@@ -8454,6 +9174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8454
9174
|
},
|
|
8455
9175
|
}]
|
|
8456
9176
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], layoutChange: [{ type: i0.Output, args: ["layoutChange"] }] } });
|
|
9177
|
+
/** Panel slot for resizable. */
|
|
8457
9178
|
class FrResizablePanel {
|
|
8458
9179
|
defaultSize = input(0, { ...(ngDevMode ? { debugName: "defaultSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
8459
9180
|
minSize = input(0, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
@@ -8477,6 +9198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8477
9198
|
},
|
|
8478
9199
|
}]
|
|
8479
9200
|
}], propDecorators: { defaultSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSize", required: false }] }], minSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "minSize", required: false }] }], maxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSize", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], collapsedSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsedSize", required: false }] }] } });
|
|
9201
|
+
/** Resize handle between adjacent resizable panels. */
|
|
8480
9202
|
class FrResizableHandle {
|
|
8481
9203
|
group = inject(FrResizablePanelGroup);
|
|
8482
9204
|
elementRef = inject((ElementRef));
|
|
@@ -8515,6 +9237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8515
9237
|
}], propDecorators: { withHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "withHandle", required: false }] }] } });
|
|
8516
9238
|
|
|
8517
9239
|
const FR_SELECT_POSITIONS = ['item-aligned', 'popper'];
|
|
9240
|
+
/** Content slot for select. */
|
|
8518
9241
|
class FrSelectContent extends FrDropdownMenuContent$1 {
|
|
8519
9242
|
destroyRef = inject(DestroyRef);
|
|
8520
9243
|
viewContainerRef = inject(ViewContainerRef);
|
|
@@ -8542,10 +9265,12 @@ class FrSelectContent extends FrDropdownMenuContent$1 {
|
|
|
8542
9265
|
if (this.registrationView) {
|
|
8543
9266
|
return;
|
|
8544
9267
|
}
|
|
9268
|
+
// Render once offscreen so projected items can register before the menu opens.
|
|
8545
9269
|
this.registrationView = this.viewContainerRef.createEmbeddedView(this.templateRef);
|
|
8546
9270
|
this.registrationView.detectChanges();
|
|
8547
9271
|
const index = this.viewContainerRef.indexOf(this.registrationView);
|
|
8548
9272
|
if (index >= 0) {
|
|
9273
|
+
// Keep registrations alive without inserting the template into the DOM twice.
|
|
8549
9274
|
this.viewContainerRef.detach(index);
|
|
8550
9275
|
}
|
|
8551
9276
|
}
|
|
@@ -8604,6 +9329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8604
9329
|
],
|
|
8605
9330
|
}]
|
|
8606
9331
|
}], ctorParameters: () => [], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
|
|
9332
|
+
/** Panel slot for select. */
|
|
8607
9333
|
class FrSelectPanel {
|
|
8608
9334
|
content = inject(FrSelectContent);
|
|
8609
9335
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -8623,14 +9349,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8623
9349
|
}] });
|
|
8624
9350
|
|
|
8625
9351
|
const FR_SELECT_INDICATOR_POSITIONS = ['start', 'end'];
|
|
9352
|
+
/** Select control backed by dropdown menu primitives. */
|
|
8626
9353
|
class FrSelect extends FrControlValueAccessor$1 {
|
|
8627
9354
|
destroyRef = inject(DestroyRef);
|
|
8628
9355
|
dropdownTrigger = inject(FrDropdownMenuTrigger$1);
|
|
8629
9356
|
elementRef = inject(ElementRef);
|
|
8630
9357
|
selectedLabel = signal(null, ...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
|
|
8631
9358
|
labels = new Map();
|
|
9359
|
+
lastContent = null;
|
|
9360
|
+
lastContentDebugVisible = false;
|
|
9361
|
+
lastDebugVisible = false;
|
|
9362
|
+
lastTriggerWidth = 0;
|
|
8632
9363
|
resizeObserver = null;
|
|
8633
9364
|
value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
9365
|
+
menuContent = input(null, { ...(ngDevMode ? { debugName: "menuContent" } : /* istanbul ignore next */ {}), alias: 'frSelect' });
|
|
8634
9366
|
debugVisible = input(false, { ...(ngDevMode ? { debugName: "debugVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
8635
9367
|
disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled', transform: booleanAttribute });
|
|
8636
9368
|
indicatorPosition = input('start', ...(ngDevMode ? [{ debugName: "indicatorPosition" }] : /* istanbul ignore next */ []));
|
|
@@ -8646,22 +9378,21 @@ class FrSelect extends FrControlValueAccessor$1 {
|
|
|
8646
9378
|
}, ...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
|
|
8647
9379
|
constructor() {
|
|
8648
9380
|
super();
|
|
8649
|
-
|
|
8650
|
-
const content = this.dropdownTrigger.menuContent();
|
|
8651
|
-
if (content) {
|
|
8652
|
-
content.select = this;
|
|
8653
|
-
content.setDebugVisibleOverride(this.debugVisible() ? true : null);
|
|
8654
|
-
content.setTriggerWidth(this.elementRef.nativeElement.offsetWidth);
|
|
8655
|
-
content.ensureItemsRegistered();
|
|
8656
|
-
}
|
|
8657
|
-
});
|
|
9381
|
+
afterNextRender(() => this.syncContent());
|
|
8658
9382
|
queueMicrotask(() => {
|
|
9383
|
+
this.syncContent();
|
|
8659
9384
|
this.attachResizeObserver();
|
|
8660
9385
|
});
|
|
8661
9386
|
this.destroyRef.onDestroy(() => {
|
|
8662
9387
|
this.resizeObserver?.disconnect();
|
|
8663
9388
|
});
|
|
8664
9389
|
}
|
|
9390
|
+
ngDoCheck() {
|
|
9391
|
+
this.syncContent();
|
|
9392
|
+
}
|
|
9393
|
+
ngAfterViewChecked() {
|
|
9394
|
+
this.syncContent();
|
|
9395
|
+
}
|
|
8665
9396
|
registerItem(value, label) {
|
|
8666
9397
|
this.labels.set(value, label);
|
|
8667
9398
|
if (this.value() === value) {
|
|
@@ -8689,13 +9420,45 @@ class FrSelect extends FrControlValueAccessor$1 {
|
|
|
8689
9420
|
}
|
|
8690
9421
|
const element = this.elementRef.nativeElement;
|
|
8691
9422
|
this.resizeObserver = new ResizeObserver(() => {
|
|
8692
|
-
const content = this.
|
|
9423
|
+
const content = this.resolveContent();
|
|
8693
9424
|
content?.setTriggerWidth(element.offsetWidth);
|
|
8694
9425
|
});
|
|
8695
9426
|
this.resizeObserver.observe(element);
|
|
8696
9427
|
}
|
|
9428
|
+
syncContent() {
|
|
9429
|
+
const content = this.resolveContent();
|
|
9430
|
+
if (!content) {
|
|
9431
|
+
this.lastContent = null;
|
|
9432
|
+
this.dropdownTrigger.setMenuContentOverride(null);
|
|
9433
|
+
return;
|
|
9434
|
+
}
|
|
9435
|
+
const debugVisible = this.debugVisible();
|
|
9436
|
+
const contentDebugVisible = debugVisible || content.debugVisible();
|
|
9437
|
+
const triggerWidth = this.elementRef.nativeElement.offsetWidth;
|
|
9438
|
+
if (content === this.lastContent &&
|
|
9439
|
+
debugVisible === this.lastDebugVisible &&
|
|
9440
|
+
contentDebugVisible === this.lastContentDebugVisible &&
|
|
9441
|
+
triggerWidth === this.lastTriggerWidth) {
|
|
9442
|
+
return;
|
|
9443
|
+
}
|
|
9444
|
+
content.select = this;
|
|
9445
|
+
content.setDebugVisibleOverride(debugVisible ? true : null);
|
|
9446
|
+
content.setTriggerWidth(triggerWidth);
|
|
9447
|
+
content.ensureItemsRegistered();
|
|
9448
|
+
this.dropdownTrigger.setMenuContentOverride(content);
|
|
9449
|
+
if (content.isDebugVisible()) {
|
|
9450
|
+
queueMicrotask(() => this.dropdownTrigger.open());
|
|
9451
|
+
}
|
|
9452
|
+
this.lastContent = content;
|
|
9453
|
+
this.lastContentDebugVisible = contentDebugVisible;
|
|
9454
|
+
this.lastDebugVisible = debugVisible;
|
|
9455
|
+
this.lastTriggerWidth = triggerWidth;
|
|
9456
|
+
}
|
|
9457
|
+
resolveContent() {
|
|
9458
|
+
return this.menuContent() ?? this.dropdownTrigger.menuContent();
|
|
9459
|
+
}
|
|
8697
9460
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8698
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSelect, isStandalone: true, selector: "button[frSelect]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, debugVisible: { classPropertyName: "debugVisible", publicName: "debugVisible", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, indicatorPosition: { classPropertyName: "indicatorPosition", publicName: "indicatorPosition", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { attributes: { "aria-autocomplete": "none", "aria-haspopup": "listbox", "type": "button", "role": "combobox" }, properties: { "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-invalid": "invalid() ? \"true\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.disabled": "disabled() ? \"\" : null" }, classAttribute: "frame-select__trigger" }, providers: [provideDsValueAccessor$1(FrSelect)], usesInheritance: true, hostDirectives: [{ directive: i1$3.FrDropdownMenu, inputs: ["closeDelay", "closeDelay", "triggerMode", "triggerMode"] }, { directive: i1$3.FrDropdownMenuTrigger
|
|
9461
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSelect, isStandalone: true, selector: "button[frSelect]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, menuContent: { classPropertyName: "menuContent", publicName: "frSelect", isSignal: true, isRequired: false, transformFunction: null }, debugVisible: { classPropertyName: "debugVisible", publicName: "debugVisible", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, indicatorPosition: { classPropertyName: "indicatorPosition", publicName: "indicatorPosition", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { attributes: { "aria-autocomplete": "none", "aria-haspopup": "listbox", "type": "button", "role": "combobox" }, properties: { "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-invalid": "invalid() ? \"true\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.disabled": "disabled() ? \"\" : null" }, classAttribute: "frame-select__trigger" }, providers: [provideDsValueAccessor$1(FrSelect)], usesInheritance: true, hostDirectives: [{ directive: i1$3.FrDropdownMenu, inputs: ["closeDelay", "closeDelay", "triggerMode", "triggerMode"] }, { directive: i1$3.FrDropdownMenuTrigger }], ngImport: i0 });
|
|
8699
9462
|
}
|
|
8700
9463
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelect, decorators: [{
|
|
8701
9464
|
type: Directive,
|
|
@@ -8708,7 +9471,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8708
9471
|
},
|
|
8709
9472
|
{
|
|
8710
9473
|
directive: FrDropdownMenuTrigger$1,
|
|
8711
|
-
inputs: ['frDropdownMenuTrigger: frSelect'],
|
|
8712
9474
|
},
|
|
8713
9475
|
],
|
|
8714
9476
|
providers: [provideDsValueAccessor$1(FrSelect)],
|
|
@@ -8725,9 +9487,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8725
9487
|
role: 'combobox',
|
|
8726
9488
|
},
|
|
8727
9489
|
}]
|
|
8728
|
-
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indicatorPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "indicatorPosition", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
|
|
9490
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], menuContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "frSelect", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indicatorPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "indicatorPosition", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
|
|
8729
9491
|
|
|
8730
9492
|
const FR_SELECT_ICON_POSITIONS = ['leading', 'trailing'];
|
|
9493
|
+
/** Value slot for select. */
|
|
8731
9494
|
class FrSelectValue {
|
|
8732
9495
|
select = inject(FrSelect);
|
|
8733
9496
|
placeholder = input('Select an option', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
@@ -8747,6 +9510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8747
9510
|
},
|
|
8748
9511
|
}]
|
|
8749
9512
|
}], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
|
|
9513
|
+
/** Indicator slot for select item. */
|
|
8750
9514
|
class FrSelectItemIndicator {
|
|
8751
9515
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8752
9516
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSelectItemIndicator, isStandalone: true, selector: "[frSelectItemIndicator], frame-select-item-indicator", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-select__item-indicator" }, ngImport: i0 });
|
|
@@ -8761,6 +9525,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8761
9525
|
},
|
|
8762
9526
|
}]
|
|
8763
9527
|
}] });
|
|
9528
|
+
/** Icon slot for select. */
|
|
8764
9529
|
class FrSelectIcon {
|
|
8765
9530
|
position = input('trailing', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
8766
9531
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -8777,6 +9542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8777
9542
|
},
|
|
8778
9543
|
}]
|
|
8779
9544
|
}], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
|
|
9545
|
+
/** Error slot for select. */
|
|
8780
9546
|
class FrSelectError {
|
|
8781
9547
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8782
9548
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSelectError, isStandalone: true, selector: "[frSelectError], frame-select-error", host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-select__error" }, ngImport: i0 });
|
|
@@ -8792,6 +9558,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8792
9558
|
}]
|
|
8793
9559
|
}] });
|
|
8794
9560
|
|
|
9561
|
+
/** Group slot for select. */
|
|
8795
9562
|
class FrSelectGroup {
|
|
8796
9563
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8797
9564
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSelectGroup, isStandalone: true, selector: "[frSelectGroup], frame-select-group", host: { classAttribute: "frame-select__group" }, ngImport: i0 });
|
|
@@ -8805,6 +9572,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8805
9572
|
},
|
|
8806
9573
|
}]
|
|
8807
9574
|
}] });
|
|
9575
|
+
/** Label slot for select. */
|
|
8808
9576
|
class FrSelectLabel {
|
|
8809
9577
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8810
9578
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSelectLabel, isStandalone: true, selector: "[frSelectLabel], frame-select-label", host: { classAttribute: "frame-select__label" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuLabel }], ngImport: i0 });
|
|
@@ -8819,6 +9587,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8819
9587
|
},
|
|
8820
9588
|
}]
|
|
8821
9589
|
}] });
|
|
9590
|
+
/** Separator slot for select. */
|
|
8822
9591
|
class FrSelectSeparator {
|
|
8823
9592
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8824
9593
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSelectSeparator, isStandalone: true, selector: "[frSelectSeparator], frame-select-separator", host: { classAttribute: "frame-select__separator" }, hostDirectives: [{ directive: i1$3.FrDropdownMenuSeparator }], ngImport: i0 });
|
|
@@ -8833,6 +9602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8833
9602
|
},
|
|
8834
9603
|
}]
|
|
8835
9604
|
}] });
|
|
9605
|
+
/** Item slot for select. */
|
|
8836
9606
|
class FrSelectItem {
|
|
8837
9607
|
elementRef = inject((ElementRef));
|
|
8838
9608
|
content = inject(FrSelectContent);
|
|
@@ -8895,10 +9665,12 @@ function coerceValue(value) {
|
|
|
8895
9665
|
}
|
|
8896
9666
|
return [coerceNumber(value, 0)];
|
|
8897
9667
|
}
|
|
9668
|
+
/** Slider control with single and range value support. */
|
|
8898
9669
|
class FrSlider extends FrControlValueAccessor$1 {
|
|
8899
9670
|
elementRef = inject(ElementRef);
|
|
8900
9671
|
document = inject(DOCUMENT);
|
|
8901
9672
|
controlledByInput = false;
|
|
9673
|
+
lastInputKey = '';
|
|
8902
9674
|
min = input(0, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
8903
9675
|
max = input(100, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
8904
9676
|
step = input(1, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
@@ -8924,19 +9696,28 @@ class FrSlider extends FrControlValueAccessor$1 {
|
|
|
8924
9696
|
const values = this.values();
|
|
8925
9697
|
return this.percentForValue(values.at(-1) ?? this.min());
|
|
8926
9698
|
}, ...(ngDevMode ? [{ debugName: "rangeEndPercent" }] : /* istanbul ignore next */ []));
|
|
8927
|
-
|
|
8928
|
-
|
|
8929
|
-
|
|
8930
|
-
|
|
8931
|
-
|
|
8932
|
-
|
|
8933
|
-
|
|
8934
|
-
|
|
8935
|
-
|
|
8936
|
-
|
|
8937
|
-
|
|
8938
|
-
|
|
8939
|
-
|
|
9699
|
+
ngDoCheck() {
|
|
9700
|
+
const inputKey = [
|
|
9701
|
+
this.valueInput(),
|
|
9702
|
+
this.defaultValue(),
|
|
9703
|
+
this.min(),
|
|
9704
|
+
this.max(),
|
|
9705
|
+
this.step(),
|
|
9706
|
+
this.minStepsBetweenThumbs(),
|
|
9707
|
+
].map((value) => (Array.isArray(value) ? value.join(',') : String(value))).join('|');
|
|
9708
|
+
if (inputKey === this.lastInputKey) {
|
|
9709
|
+
return;
|
|
9710
|
+
}
|
|
9711
|
+
this.lastInputKey = inputKey;
|
|
9712
|
+
const controlledValue = this.valueInput();
|
|
9713
|
+
if (controlledValue !== null) {
|
|
9714
|
+
this.controlledByInput = true;
|
|
9715
|
+
this.values.set(this.normalizeValues(coerceValue(controlledValue)));
|
|
9716
|
+
return;
|
|
9717
|
+
}
|
|
9718
|
+
if (!this.controlledByInput) {
|
|
9719
|
+
this.values.set(this.normalizeValues(coerceValue(this.defaultValue())));
|
|
9720
|
+
}
|
|
8940
9721
|
}
|
|
8941
9722
|
setViewValue(value) {
|
|
8942
9723
|
if (value === null || value === undefined) {
|
|
@@ -9016,6 +9797,7 @@ class FrSlider extends FrControlValueAccessor$1 {
|
|
|
9016
9797
|
const step = Math.max(this.step(), 0.000001);
|
|
9017
9798
|
const minDistance = Math.max(this.minStepsBetweenThumbs(), 0) * step;
|
|
9018
9799
|
const normalized = values.length ? values : [min];
|
|
9800
|
+
// Only the active thumb is bounded by neighbors; passive thumbs keep their full range.
|
|
9019
9801
|
return normalized.map((value, index) => {
|
|
9020
9802
|
const previous = index > 0 ? normalized[index - 1] + minDistance : min;
|
|
9021
9803
|
const next = index < normalized.length - 1 ? normalized[index + 1] - minDistance : max;
|
|
@@ -9038,6 +9820,7 @@ class FrSlider extends FrControlValueAccessor$1 {
|
|
|
9038
9820
|
const offset = horizontal ? event.clientX - rect.left : rect.bottom - event.clientY;
|
|
9039
9821
|
const direction = horizontal && this.isRtl() ? -1 : 1;
|
|
9040
9822
|
let percent = size > 0 ? offset / size : 0;
|
|
9823
|
+
// Convert visual position into logical value direction for RTL and inverted sliders.
|
|
9041
9824
|
if (direction === -1) {
|
|
9042
9825
|
percent = 1 - percent;
|
|
9043
9826
|
}
|
|
@@ -9056,7 +9839,7 @@ class FrSlider extends FrControlValueAccessor$1 {
|
|
|
9056
9839
|
isRtl() {
|
|
9057
9840
|
return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl';
|
|
9058
9841
|
}
|
|
9059
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, deps:
|
|
9842
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
9060
9843
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSlider, isStandalone: true, selector: "frame-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, formatValue: { classPropertyName: "formatValue", publicName: "formatValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { listeners: { "pointerdown": "handlePointerDown($event)" }, properties: { "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-inverted": "inverted() ? \"\" : null", "style.--frame-slider-start-percent": "rangeStartPercent() + \"%\"", "style.--frame-slider-end-percent": "rangeEndPercent() + \"%\"" }, classAttribute: "frame-slider" }, providers: [provideDsValueAccessor$1(FrSlider)], exportAs: ["frSlider"], usesInheritance: true, ngImport: i0, template: `
|
|
9061
9844
|
<span class="frame-slider__track">
|
|
9062
9845
|
<span class="frame-slider__range"></span>
|
|
@@ -9128,12 +9911,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9128
9911
|
}
|
|
9129
9912
|
`,
|
|
9130
9913
|
}]
|
|
9131
|
-
}],
|
|
9914
|
+
}], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], minStepsBetweenThumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "minStepsBetweenThumbs", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], formatValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
9132
9915
|
|
|
9133
9916
|
const FR_SEPARATOR_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
9134
9917
|
function coerceSeparatorOrientation(value) {
|
|
9135
9918
|
return value === 'vertical' ? 'vertical' : 'horizontal';
|
|
9136
9919
|
}
|
|
9920
|
+
/** Visual or semantic separator with orientation support. */
|
|
9137
9921
|
class FrSeparator {
|
|
9138
9922
|
orientation = input('horizontal', { ...(ngDevMode ? { debugName: "orientation" } : /* istanbul ignore next */ {}), transform: coerceSeparatorOrientation });
|
|
9139
9923
|
decorative = input(true, { ...(ngDevMode ? { debugName: "decorative" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -9155,6 +9939,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9155
9939
|
}]
|
|
9156
9940
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }] } });
|
|
9157
9941
|
|
|
9942
|
+
/** Content slot for sheet. */
|
|
9158
9943
|
class FrSheetContent {
|
|
9159
9944
|
templateRef = inject((TemplateRef));
|
|
9160
9945
|
ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -9211,6 +9996,7 @@ const FR_SHEET_SIDES = ['top', 'right', 'bottom', 'left'];
|
|
|
9211
9996
|
function coerceSheetSide(value) {
|
|
9212
9997
|
return value === 'top' || value === 'bottom' || value === 'left' ? value : 'right';
|
|
9213
9998
|
}
|
|
9999
|
+
/** Close control for sheet. */
|
|
9214
10000
|
class FrSheetClose {
|
|
9215
10001
|
dialogRef = inject(DialogRef, { optional: true });
|
|
9216
10002
|
result = input(undefined, { ...(ngDevMode ? { debugName: "result" } : /* istanbul ignore next */ {}), alias: 'frSheetClose' });
|
|
@@ -9230,6 +10016,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9230
10016
|
},
|
|
9231
10017
|
}]
|
|
9232
10018
|
}], propDecorators: { result: [{ type: i0.Input, args: [{ isSignal: true, alias: "frSheetClose", required: false }] }] } });
|
|
10019
|
+
/** Panel slot for sheet. */
|
|
9233
10020
|
class FrSheetPanel {
|
|
9234
10021
|
dialogRef = inject(DialogRef, { optional: true });
|
|
9235
10022
|
scrollable = input(false, { ...(ngDevMode ? { debugName: "scrollable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -9267,6 +10054,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9267
10054
|
`,
|
|
9268
10055
|
}]
|
|
9269
10056
|
}], propDecorators: { scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }] } });
|
|
10057
|
+
/** Header slot for sheet. */
|
|
9270
10058
|
class FrSheetHeader {
|
|
9271
10059
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9272
10060
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetHeader, isStandalone: true, selector: "[frSheetHeader], frame-sheet-header", host: { classAttribute: "frame-sheet__header" }, ngImport: i0 });
|
|
@@ -9280,6 +10068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9280
10068
|
},
|
|
9281
10069
|
}]
|
|
9282
10070
|
}] });
|
|
10071
|
+
/** Body slot for sheet. */
|
|
9283
10072
|
class FrSheetBody {
|
|
9284
10073
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9285
10074
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetBody, isStandalone: true, selector: "[frSheetBody], frame-sheet-body", host: { classAttribute: "frame-sheet__body" }, ngImport: i0 });
|
|
@@ -9293,6 +10082,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9293
10082
|
},
|
|
9294
10083
|
}]
|
|
9295
10084
|
}] });
|
|
10085
|
+
/** Footer slot for sheet. */
|
|
9296
10086
|
class FrSheetFooter {
|
|
9297
10087
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9298
10088
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetFooter, isStandalone: true, selector: "[frSheetFooter], frame-sheet-footer", host: { classAttribute: "frame-sheet__footer" }, ngImport: i0 });
|
|
@@ -9306,6 +10096,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9306
10096
|
},
|
|
9307
10097
|
}]
|
|
9308
10098
|
}] });
|
|
10099
|
+
/** Title slot for sheet. */
|
|
9309
10100
|
class FrSheetTitle {
|
|
9310
10101
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9311
10102
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetTitle, isStandalone: true, selector: "[frSheetTitle], frame-sheet-title", host: { classAttribute: "frame-sheet__title" }, ngImport: i0 });
|
|
@@ -9319,6 +10110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9319
10110
|
},
|
|
9320
10111
|
}]
|
|
9321
10112
|
}] });
|
|
10113
|
+
/** Description slot for sheet. */
|
|
9322
10114
|
class FrSheetDescription {
|
|
9323
10115
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9324
10116
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetDescription, isStandalone: true, selector: "[frSheetDescription], frame-sheet-description", host: { classAttribute: "frame-sheet__description" }, ngImport: i0 });
|
|
@@ -9335,6 +10127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9335
10127
|
|
|
9336
10128
|
const FR_SHEET_DATA = DIALOG_DATA;
|
|
9337
10129
|
|
|
10130
|
+
/** Default shell for sheet content, title, and footer actions. */
|
|
9338
10131
|
class FrSheetShell {
|
|
9339
10132
|
dialogRef = inject((DialogRef));
|
|
9340
10133
|
injector = inject(Injector);
|
|
@@ -9354,50 +10147,50 @@ class FrSheetShell {
|
|
|
9354
10147
|
}
|
|
9355
10148
|
}
|
|
9356
10149
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetShell, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9357
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSheetShell, isStandalone: true, selector: "frame-sheet-shell", ngImport: i0, template: `
|
|
9358
|
-
<div
|
|
9359
|
-
frSheetPanel
|
|
9360
|
-
[side]="options.side ?? 'right'"
|
|
9361
|
-
[showCloseButton]="options.showCloseButton ?? true"
|
|
9362
|
-
[scrollable]="options.scrollable ?? false"
|
|
9363
|
-
>
|
|
9364
|
-
@if (options.title || options.description) {
|
|
9365
|
-
<div frSheetHeader>
|
|
9366
|
-
@if (options.title) {
|
|
9367
|
-
<h2 frSheetTitle>{{ options.title }}</h2>
|
|
9368
|
-
}
|
|
9369
|
-
|
|
9370
|
-
@if (options.description) {
|
|
9371
|
-
<p frSheetDescription>{{ options.description }}</p>
|
|
9372
|
-
}
|
|
9373
|
-
</div>
|
|
9374
|
-
}
|
|
9375
|
-
|
|
9376
|
-
<div frSheetBody>
|
|
9377
|
-
<ng-container
|
|
9378
|
-
[ngComponentOutlet]="options.bodyComponent"
|
|
9379
|
-
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
9380
|
-
[ngComponentOutletInjector]="bodyInjector"
|
|
9381
|
-
/>
|
|
9382
|
-
</div>
|
|
9383
|
-
|
|
9384
|
-
@if (options.footerActions?.length) {
|
|
9385
|
-
<div frSheetFooter>
|
|
9386
|
-
@for (action of options.footerActions; track action.label) {
|
|
9387
|
-
<button
|
|
9388
|
-
frButton
|
|
9389
|
-
type="button"
|
|
9390
|
-
[appearance]="action.appearance ?? 'primary'"
|
|
9391
|
-
[disabled]="action.disabled ?? false"
|
|
9392
|
-
[attr.aria-label]="action.ariaLabel ?? null"
|
|
9393
|
-
(click)="handleAction(action)"
|
|
9394
|
-
>
|
|
9395
|
-
<span frButtonLabel>{{ action.label }}</span>
|
|
9396
|
-
</button>
|
|
9397
|
-
}
|
|
9398
|
-
</div>
|
|
9399
|
-
}
|
|
9400
|
-
</div>
|
|
10150
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSheetShell, isStandalone: true, selector: "frame-sheet-shell", ngImport: i0, template: `
|
|
10151
|
+
<div
|
|
10152
|
+
frSheetPanel
|
|
10153
|
+
[side]="options.side ?? 'right'"
|
|
10154
|
+
[showCloseButton]="options.showCloseButton ?? true"
|
|
10155
|
+
[scrollable]="options.scrollable ?? false"
|
|
10156
|
+
>
|
|
10157
|
+
@if (options.title || options.description) {
|
|
10158
|
+
<div frSheetHeader>
|
|
10159
|
+
@if (options.title) {
|
|
10160
|
+
<h2 frSheetTitle>{{ options.title }}</h2>
|
|
10161
|
+
}
|
|
10162
|
+
|
|
10163
|
+
@if (options.description) {
|
|
10164
|
+
<p frSheetDescription>{{ options.description }}</p>
|
|
10165
|
+
}
|
|
10166
|
+
</div>
|
|
10167
|
+
}
|
|
10168
|
+
|
|
10169
|
+
<div frSheetBody>
|
|
10170
|
+
<ng-container
|
|
10171
|
+
[ngComponentOutlet]="options.bodyComponent"
|
|
10172
|
+
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
10173
|
+
[ngComponentOutletInjector]="bodyInjector"
|
|
10174
|
+
/>
|
|
10175
|
+
</div>
|
|
10176
|
+
|
|
10177
|
+
@if (options.footerActions?.length) {
|
|
10178
|
+
<div frSheetFooter>
|
|
10179
|
+
@for (action of options.footerActions; track action.label) {
|
|
10180
|
+
<button
|
|
10181
|
+
frButton
|
|
10182
|
+
type="button"
|
|
10183
|
+
[appearance]="action.appearance ?? 'primary'"
|
|
10184
|
+
[disabled]="action.disabled ?? false"
|
|
10185
|
+
[attr.aria-label]="action.ariaLabel ?? null"
|
|
10186
|
+
(click)="handleAction(action)"
|
|
10187
|
+
>
|
|
10188
|
+
<span frButtonLabel>{{ action.label }}</span>
|
|
10189
|
+
</button>
|
|
10190
|
+
}
|
|
10191
|
+
</div>
|
|
10192
|
+
}
|
|
10193
|
+
</div>
|
|
9401
10194
|
`, isInline: true, dependencies: [{ kind: "directive", type: FrButton$1, selector: "a[frButton], button[frButton]", inputs: ["appearance", "disabled", "loading", "loadingDisplay", "radius", "size"] }, { kind: "directive", type: FrButtonLabel$1, selector: "[frButtonLabel]" }, { kind: "directive", type: FrSheetBody, selector: "[frSheetBody], frame-sheet-body" }, { kind: "directive", type: FrSheetDescription, selector: "[frSheetDescription], frame-sheet-description" }, { kind: "directive", type: FrSheetFooter, selector: "[frSheetFooter], frame-sheet-footer" }, { kind: "directive", type: FrSheetHeader, selector: "[frSheetHeader], frame-sheet-header" }, { kind: "component", type: FrSheetPanel, selector: "[frSheetPanel], frame-sheet-panel", inputs: ["scrollable", "showCloseButton", "side"] }, { kind: "directive", type: FrSheetTitle, selector: "[frSheetTitle], frame-sheet-title" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }] });
|
|
9402
10195
|
}
|
|
9403
10196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetShell, decorators: [{
|
|
@@ -9415,56 +10208,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9415
10208
|
FrSheetTitle,
|
|
9416
10209
|
NgComponentOutlet,
|
|
9417
10210
|
],
|
|
9418
|
-
template: `
|
|
9419
|
-
<div
|
|
9420
|
-
frSheetPanel
|
|
9421
|
-
[side]="options.side ?? 'right'"
|
|
9422
|
-
[showCloseButton]="options.showCloseButton ?? true"
|
|
9423
|
-
[scrollable]="options.scrollable ?? false"
|
|
9424
|
-
>
|
|
9425
|
-
@if (options.title || options.description) {
|
|
9426
|
-
<div frSheetHeader>
|
|
9427
|
-
@if (options.title) {
|
|
9428
|
-
<h2 frSheetTitle>{{ options.title }}</h2>
|
|
9429
|
-
}
|
|
9430
|
-
|
|
9431
|
-
@if (options.description) {
|
|
9432
|
-
<p frSheetDescription>{{ options.description }}</p>
|
|
9433
|
-
}
|
|
9434
|
-
</div>
|
|
9435
|
-
}
|
|
9436
|
-
|
|
9437
|
-
<div frSheetBody>
|
|
9438
|
-
<ng-container
|
|
9439
|
-
[ngComponentOutlet]="options.bodyComponent"
|
|
9440
|
-
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
9441
|
-
[ngComponentOutletInjector]="bodyInjector"
|
|
9442
|
-
/>
|
|
9443
|
-
</div>
|
|
9444
|
-
|
|
9445
|
-
@if (options.footerActions?.length) {
|
|
9446
|
-
<div frSheetFooter>
|
|
9447
|
-
@for (action of options.footerActions; track action.label) {
|
|
9448
|
-
<button
|
|
9449
|
-
frButton
|
|
9450
|
-
type="button"
|
|
9451
|
-
[appearance]="action.appearance ?? 'primary'"
|
|
9452
|
-
[disabled]="action.disabled ?? false"
|
|
9453
|
-
[attr.aria-label]="action.ariaLabel ?? null"
|
|
9454
|
-
(click)="handleAction(action)"
|
|
9455
|
-
>
|
|
9456
|
-
<span frButtonLabel>{{ action.label }}</span>
|
|
9457
|
-
</button>
|
|
9458
|
-
}
|
|
9459
|
-
</div>
|
|
9460
|
-
}
|
|
9461
|
-
</div>
|
|
10211
|
+
template: `
|
|
10212
|
+
<div
|
|
10213
|
+
frSheetPanel
|
|
10214
|
+
[side]="options.side ?? 'right'"
|
|
10215
|
+
[showCloseButton]="options.showCloseButton ?? true"
|
|
10216
|
+
[scrollable]="options.scrollable ?? false"
|
|
10217
|
+
>
|
|
10218
|
+
@if (options.title || options.description) {
|
|
10219
|
+
<div frSheetHeader>
|
|
10220
|
+
@if (options.title) {
|
|
10221
|
+
<h2 frSheetTitle>{{ options.title }}</h2>
|
|
10222
|
+
}
|
|
10223
|
+
|
|
10224
|
+
@if (options.description) {
|
|
10225
|
+
<p frSheetDescription>{{ options.description }}</p>
|
|
10226
|
+
}
|
|
10227
|
+
</div>
|
|
10228
|
+
}
|
|
10229
|
+
|
|
10230
|
+
<div frSheetBody>
|
|
10231
|
+
<ng-container
|
|
10232
|
+
[ngComponentOutlet]="options.bodyComponent"
|
|
10233
|
+
[ngComponentOutletInputs]="options.bodyInputs ?? {}"
|
|
10234
|
+
[ngComponentOutletInjector]="bodyInjector"
|
|
10235
|
+
/>
|
|
10236
|
+
</div>
|
|
10237
|
+
|
|
10238
|
+
@if (options.footerActions?.length) {
|
|
10239
|
+
<div frSheetFooter>
|
|
10240
|
+
@for (action of options.footerActions; track action.label) {
|
|
10241
|
+
<button
|
|
10242
|
+
frButton
|
|
10243
|
+
type="button"
|
|
10244
|
+
[appearance]="action.appearance ?? 'primary'"
|
|
10245
|
+
[disabled]="action.disabled ?? false"
|
|
10246
|
+
[attr.aria-label]="action.ariaLabel ?? null"
|
|
10247
|
+
(click)="handleAction(action)"
|
|
10248
|
+
>
|
|
10249
|
+
<span frButtonLabel>{{ action.label }}</span>
|
|
10250
|
+
</button>
|
|
10251
|
+
}
|
|
10252
|
+
</div>
|
|
10253
|
+
}
|
|
10254
|
+
</div>
|
|
9462
10255
|
`,
|
|
9463
10256
|
}]
|
|
9464
10257
|
}] });
|
|
9465
10258
|
|
|
9466
10259
|
const DEFAULT_PANEL_CLASS = 'frame-sheet__overlay-pane';
|
|
9467
10260
|
const DEFAULT_BACKDROP_CLASS = 'frame-sheet__backdrop';
|
|
10261
|
+
/** Service for opening sheet dialogs. */
|
|
9468
10262
|
class FrSheetService {
|
|
9469
10263
|
dialog = inject(Dialog);
|
|
9470
10264
|
open(content, config = {}) {
|
|
@@ -9537,6 +10331,7 @@ function mergeClassList(classList, defaultClass) {
|
|
|
9537
10331
|
return Array.from(new Set([defaultClass, ...classes].filter(Boolean)));
|
|
9538
10332
|
}
|
|
9539
10333
|
|
|
10334
|
+
/** Trigger control for sheet. */
|
|
9540
10335
|
class FrSheetTrigger {
|
|
9541
10336
|
static CUSTOM_PROPERTY_PREFIX = '--frame-sheet-';
|
|
9542
10337
|
destroyRef = inject(DestroyRef);
|
|
@@ -9634,10 +10429,11 @@ function coerceOptionalNumber(value) {
|
|
|
9634
10429
|
const coerced = numberAttribute(value, Number.NaN);
|
|
9635
10430
|
return Number.isFinite(coerced) ? coerced : null;
|
|
9636
10431
|
}
|
|
10432
|
+
/** Shared state provider for sidebar. */
|
|
9637
10433
|
class FrSidebarProvider {
|
|
9638
10434
|
document = inject(DOCUMENT);
|
|
9639
10435
|
elementRef = inject(ElementRef);
|
|
9640
|
-
internalOpen =
|
|
10436
|
+
internalOpen = linkedSignal(() => this.defaultOpen(), ...(ngDevMode ? [{ debugName: "internalOpen" }] : /* istanbul ignore next */ []));
|
|
9641
10437
|
internalOpenMobile = signal(false, ...(ngDevMode ? [{ debugName: "internalOpenMobile" }] : /* istanbul ignore next */ []));
|
|
9642
10438
|
resizing = signal(false, ...(ngDevMode ? [{ debugName: "resizing" }] : /* istanbul ignore next */ []));
|
|
9643
10439
|
defaultOpen = input(true, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -9651,15 +10447,6 @@ class FrSidebarProvider {
|
|
|
9651
10447
|
openMobile = computed(() => this.internalOpenMobile(), ...(ngDevMode ? [{ debugName: "openMobile" }] : /* istanbul ignore next */ []));
|
|
9652
10448
|
state = computed(() => (this.open() ? 'expanded' : 'collapsed'), ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
9653
10449
|
constructor() {
|
|
9654
|
-
this.internalOpen.set(this.defaultOpen());
|
|
9655
|
-
effect(() => {
|
|
9656
|
-
if (this.openInput() === null) {
|
|
9657
|
-
this.internalOpen.set(this.defaultOpen());
|
|
9658
|
-
}
|
|
9659
|
-
});
|
|
9660
|
-
effect(() => {
|
|
9661
|
-
this.elementRef.nativeElement.style.setProperty('--frame-sidebar-state', this.state());
|
|
9662
|
-
});
|
|
9663
10450
|
const defaultView = this.document.defaultView;
|
|
9664
10451
|
if (!defaultView?.matchMedia) {
|
|
9665
10452
|
return;
|
|
@@ -9704,7 +10491,7 @@ class FrSidebarProvider {
|
|
|
9704
10491
|
this.toggleSidebar();
|
|
9705
10492
|
}
|
|
9706
10493
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9707
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebarProvider, isStandalone: true, selector: "[frSidebarProvider], frame-sidebar-provider", inputs: { defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, openInput: { classPropertyName: "openInput", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null }, keyboardShortcut: { classPropertyName: "keyboardShortcut", publicName: "keyboardShortcut", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange", openMobileChange: "openMobileChange" }, host: { listeners: { "document:keydown": "handleKeydown($event)" }, properties: { "attr.data-state": "state()", "attr.data-open": "open()", "attr.data-mobile-open": "openMobile()", "attr.data-mobile": "isMobile() ? \"\" : null", "attr.data-resizing": "resizing() ? \"\" : null" }, classAttribute: "frame-sidebar-provider" }, providers: [
|
|
10494
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebarProvider, isStandalone: true, selector: "[frSidebarProvider], frame-sidebar-provider", inputs: { defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, openInput: { classPropertyName: "openInput", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null }, keyboardShortcut: { classPropertyName: "keyboardShortcut", publicName: "keyboardShortcut", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange", openMobileChange: "openMobileChange" }, host: { listeners: { "document:keydown": "handleKeydown($event)" }, properties: { "attr.data-state": "state()", "attr.data-open": "open()", "attr.data-mobile-open": "openMobile()", "attr.data-mobile": "isMobile() ? \"\" : null", "attr.data-resizing": "resizing() ? \"\" : null", "style.--frame-sidebar-state": "state()" }, classAttribute: "frame-sidebar-provider" }, providers: [
|
|
9708
10495
|
{
|
|
9709
10496
|
provide: FR_SIDEBAR_PROVIDER,
|
|
9710
10497
|
useExisting: FrSidebarProvider,
|
|
@@ -9729,10 +10516,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9729
10516
|
'[attr.data-mobile-open]': 'openMobile()',
|
|
9730
10517
|
'[attr.data-mobile]': 'isMobile() ? "" : null',
|
|
9731
10518
|
'[attr.data-resizing]': 'resizing() ? "" : null',
|
|
10519
|
+
'[style.--frame-sidebar-state]': 'state()',
|
|
9732
10520
|
'(document:keydown)': 'handleKeydown($event)',
|
|
9733
10521
|
},
|
|
9734
10522
|
}]
|
|
9735
10523
|
}], ctorParameters: () => [], propDecorators: { defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], openInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }], openMobileChange: [{ type: i0.Output, args: ["openMobileChange"] }], shortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortcut", required: false }] }], keyboardShortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboardShortcut", required: false }] }] } });
|
|
10524
|
+
/** Sidebar root driven by provider state. */
|
|
9736
10525
|
class FrSidebar {
|
|
9737
10526
|
elementRef = inject(ElementRef);
|
|
9738
10527
|
provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
|
|
@@ -9760,6 +10549,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9760
10549
|
},
|
|
9761
10550
|
}]
|
|
9762
10551
|
}], propDecorators: { side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], minSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "minSize", required: false }] }], maxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSize", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }] } });
|
|
10552
|
+
/** Trigger control for sidebar. */
|
|
9763
10553
|
class FrSidebarTrigger {
|
|
9764
10554
|
provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
|
|
9765
10555
|
ariaLabel = input('Toggle sidebar', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -9782,6 +10572,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9782
10572
|
},
|
|
9783
10573
|
}]
|
|
9784
10574
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }] } });
|
|
10575
|
+
/** Rail slot for sidebar. */
|
|
9785
10576
|
class FrSidebarRail {
|
|
9786
10577
|
document = inject(DOCUMENT);
|
|
9787
10578
|
sidebar = inject(FrSidebar, { optional: true });
|
|
@@ -9851,6 +10642,7 @@ class FrSidebarRail {
|
|
|
9851
10642
|
if (this.frameId !== -1) {
|
|
9852
10643
|
return;
|
|
9853
10644
|
}
|
|
10645
|
+
// Batch rapid pointer moves into one width write per animation frame.
|
|
9854
10646
|
this.frameId = requestAnimationFrame(() => {
|
|
9855
10647
|
this.provider?.setSidebarWidth(this.pendingWidth);
|
|
9856
10648
|
this.frameId = -1;
|
|
@@ -9878,6 +10670,7 @@ class FrSidebarRail {
|
|
|
9878
10670
|
if (!this.sidebar) {
|
|
9879
10671
|
return 192;
|
|
9880
10672
|
}
|
|
10673
|
+
// Use rendered child width as a fallback min-size when consumers do not provide one.
|
|
9881
10674
|
const sidebarElement = this.sidebar.elementRef.nativeElement;
|
|
9882
10675
|
const sidebarRect = sidebarElement.getBoundingClientRect();
|
|
9883
10676
|
let measuredWidth = 0;
|
|
@@ -9911,6 +10704,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9911
10704
|
},
|
|
9912
10705
|
}]
|
|
9913
10706
|
}] });
|
|
10707
|
+
/** Inset slot for sidebar. */
|
|
9914
10708
|
class FrSidebarInset {
|
|
9915
10709
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarInset, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9916
10710
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarInset, isStandalone: true, selector: "[frSidebarInset], frame-sidebar-inset", host: { classAttribute: "frame-sidebar-inset" }, ngImport: i0 });
|
|
@@ -9924,6 +10718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9924
10718
|
},
|
|
9925
10719
|
}]
|
|
9926
10720
|
}] });
|
|
10721
|
+
/** Header slot for sidebar. */
|
|
9927
10722
|
class FrSidebarHeader {
|
|
9928
10723
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9929
10724
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarHeader, isStandalone: true, selector: "[frSidebarHeader], frame-sidebar-header", host: { classAttribute: "frame-sidebar__header" }, ngImport: i0 });
|
|
@@ -9937,6 +10732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9937
10732
|
},
|
|
9938
10733
|
}]
|
|
9939
10734
|
}] });
|
|
10735
|
+
/** Footer slot for sidebar. */
|
|
9940
10736
|
class FrSidebarFooter {
|
|
9941
10737
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9942
10738
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarFooter, isStandalone: true, selector: "[frSidebarFooter], frame-sidebar-footer", host: { classAttribute: "frame-sidebar__footer" }, ngImport: i0 });
|
|
@@ -9950,6 +10746,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9950
10746
|
},
|
|
9951
10747
|
}]
|
|
9952
10748
|
}] });
|
|
10749
|
+
/** Content slot for sidebar. */
|
|
9953
10750
|
class FrSidebarContent {
|
|
9954
10751
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9955
10752
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarContent, isStandalone: true, selector: "[frSidebarContent], frame-sidebar-content", host: { classAttribute: "frame-sidebar__content" }, ngImport: i0 });
|
|
@@ -9963,6 +10760,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9963
10760
|
},
|
|
9964
10761
|
}]
|
|
9965
10762
|
}] });
|
|
10763
|
+
/** Group slot for sidebar. */
|
|
9966
10764
|
class FrSidebarGroup {
|
|
9967
10765
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9968
10766
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroup, isStandalone: true, selector: "[frSidebarGroup], frame-sidebar-group", host: { classAttribute: "frame-sidebar__group" }, ngImport: i0 });
|
|
@@ -9976,6 +10774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9976
10774
|
},
|
|
9977
10775
|
}]
|
|
9978
10776
|
}] });
|
|
10777
|
+
/** Label slot for sidebar group. */
|
|
9979
10778
|
class FrSidebarGroupLabel {
|
|
9980
10779
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroupLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9981
10780
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroupLabel, isStandalone: true, selector: "[frSidebarGroupLabel], frame-sidebar-group-label", host: { classAttribute: "frame-sidebar__group-label" }, ngImport: i0 });
|
|
@@ -9989,6 +10788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9989
10788
|
},
|
|
9990
10789
|
}]
|
|
9991
10790
|
}] });
|
|
10791
|
+
/** Action slot for sidebar group. */
|
|
9992
10792
|
class FrSidebarGroupAction {
|
|
9993
10793
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroupAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9994
10794
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroupAction, isStandalone: true, selector: "[frSidebarGroupAction], frame-sidebar-group-action", host: { attributes: { "type": "button" }, classAttribute: "frame-sidebar__group-action" }, ngImport: i0 });
|
|
@@ -10003,6 +10803,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10003
10803
|
},
|
|
10004
10804
|
}]
|
|
10005
10805
|
}] });
|
|
10806
|
+
/** Content slot for sidebar group. */
|
|
10006
10807
|
class FrSidebarGroupContent {
|
|
10007
10808
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroupContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10008
10809
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroupContent, isStandalone: true, selector: "[frSidebarGroupContent], frame-sidebar-group-content", host: { classAttribute: "frame-sidebar__group-content" }, ngImport: i0 });
|
|
@@ -10016,6 +10817,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10016
10817
|
},
|
|
10017
10818
|
}]
|
|
10018
10819
|
}] });
|
|
10820
|
+
/** Menu list inside sidebar navigation. */
|
|
10019
10821
|
class FrSidebarMenu {
|
|
10020
10822
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10021
10823
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenu, isStandalone: true, selector: "[frSidebarMenu], frame-sidebar-menu", host: { attributes: { "role": "list" }, classAttribute: "frame-sidebar__menu" }, ngImport: i0 });
|
|
@@ -10030,6 +10832,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10030
10832
|
},
|
|
10031
10833
|
}]
|
|
10032
10834
|
}] });
|
|
10835
|
+
/** Item slot for sidebar menu. */
|
|
10033
10836
|
class FrSidebarMenuItem {
|
|
10034
10837
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10035
10838
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuItem, isStandalone: true, selector: "[frSidebarMenuItem], frame-sidebar-menu-item", host: { attributes: { "role": "listitem" }, classAttribute: "frame-sidebar__menu-item" }, ngImport: i0 });
|
|
@@ -10044,6 +10847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10044
10847
|
},
|
|
10045
10848
|
}]
|
|
10046
10849
|
}] });
|
|
10850
|
+
/** Interactive button or link inside a sidebar menu item. */
|
|
10047
10851
|
class FrSidebarMenuButton {
|
|
10048
10852
|
active = input(false, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
10049
10853
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -10075,6 +10879,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10075
10879
|
},
|
|
10076
10880
|
}]
|
|
10077
10881
|
}], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }] } });
|
|
10882
|
+
/** Action slot for sidebar menu. */
|
|
10078
10883
|
class FrSidebarMenuAction {
|
|
10079
10884
|
showOnHover = input(false, { ...(ngDevMode ? { debugName: "showOnHover" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
10080
10885
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -10091,6 +10896,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10091
10896
|
},
|
|
10092
10897
|
}]
|
|
10093
10898
|
}], propDecorators: { showOnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "showOnHover", required: false }] }] } });
|
|
10899
|
+
/** Badge slot for sidebar menu. */
|
|
10094
10900
|
class FrSidebarMenuBadge {
|
|
10095
10901
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuBadge, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10096
10902
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuBadge, isStandalone: true, selector: "[frSidebarMenuBadge], frame-sidebar-menu-badge", host: { classAttribute: "frame-sidebar__menu-badge" }, ngImport: i0 });
|
|
@@ -10104,6 +10910,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10104
10910
|
},
|
|
10105
10911
|
}]
|
|
10106
10912
|
}] });
|
|
10913
|
+
/** Nested menu list inside sidebar navigation. */
|
|
10107
10914
|
class FrSidebarMenuSub {
|
|
10108
10915
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuSub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10109
10916
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuSub, isStandalone: true, selector: "[frSidebarMenuSub], frame-sidebar-menu-sub", host: { attributes: { "role": "list" }, classAttribute: "frame-sidebar__menu-sub" }, ngImport: i0 });
|
|
@@ -10118,6 +10925,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10118
10925
|
},
|
|
10119
10926
|
}]
|
|
10120
10927
|
}] });
|
|
10928
|
+
/** Item slot for sidebar menu sub. */
|
|
10121
10929
|
class FrSidebarMenuSubItem {
|
|
10122
10930
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuSubItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10123
10931
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuSubItem, isStandalone: true, selector: "[frSidebarMenuSubItem], frame-sidebar-menu-sub-item", host: { attributes: { "role": "listitem" }, classAttribute: "frame-sidebar__menu-sub-item" }, ngImport: i0 });
|
|
@@ -10132,6 +10940,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10132
10940
|
},
|
|
10133
10941
|
}]
|
|
10134
10942
|
}] });
|
|
10943
|
+
/** Interactive button or link inside a sidebar submenu. */
|
|
10135
10944
|
class FrSidebarMenuSubButton {
|
|
10136
10945
|
active = input(false, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
10137
10946
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -10157,6 +10966,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10157
10966
|
},
|
|
10158
10967
|
}]
|
|
10159
10968
|
}], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
10969
|
+
/** Skeleton slot for sidebar menu. */
|
|
10160
10970
|
class FrSidebarMenuSkeleton {
|
|
10161
10971
|
showIcon = input(false, { ...(ngDevMode ? { debugName: "showIcon" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
10162
10972
|
width = input('72%', ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
@@ -10176,6 +10986,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10176
10986
|
}], propDecorators: { showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
|
|
10177
10987
|
|
|
10178
10988
|
const FR_SWITCH_SIZES = ['sm', 'default'];
|
|
10989
|
+
/** Switch input styled as a FrameUI control. */
|
|
10179
10990
|
class FrSwitch {
|
|
10180
10991
|
size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
10181
10992
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -10192,6 +11003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10192
11003
|
},
|
|
10193
11004
|
}]
|
|
10194
11005
|
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
11006
|
+
/** Field slot for switch. */
|
|
10195
11007
|
class FrSwitchField {
|
|
10196
11008
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSwitchField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10197
11009
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSwitchField, isStandalone: true, selector: "[frSwitchField], frame-switch-field", host: { classAttribute: "frame-switch-field" }, ngImport: i0 });
|
|
@@ -10205,6 +11017,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10205
11017
|
},
|
|
10206
11018
|
}]
|
|
10207
11019
|
}] });
|
|
11020
|
+
/** Content slot for switch. */
|
|
10208
11021
|
class FrSwitchContent {
|
|
10209
11022
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSwitchContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10210
11023
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSwitchContent, isStandalone: true, selector: "[frSwitchContent], frame-switch-content", host: { classAttribute: "frame-switch-content" }, ngImport: i0 });
|
|
@@ -10218,6 +11031,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10218
11031
|
},
|
|
10219
11032
|
}]
|
|
10220
11033
|
}] });
|
|
11034
|
+
/** Label slot for switch. */
|
|
10221
11035
|
class FrSwitchLabel {
|
|
10222
11036
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSwitchLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10223
11037
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSwitchLabel, isStandalone: true, selector: "[frSwitchLabel], frame-switch-label", host: { classAttribute: "frame-switch-label" }, ngImport: i0 });
|
|
@@ -10231,6 +11045,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10231
11045
|
},
|
|
10232
11046
|
}]
|
|
10233
11047
|
}] });
|
|
11048
|
+
/** Description slot for switch. */
|
|
10234
11049
|
class FrSwitchDescription {
|
|
10235
11050
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSwitchDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10236
11051
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSwitchDescription, isStandalone: true, selector: "[frSwitchDescription], frame-switch-description", host: { classAttribute: "frame-switch-description" }, ngImport: i0 });
|
|
@@ -10244,6 +11059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10244
11059
|
},
|
|
10245
11060
|
}]
|
|
10246
11061
|
}] });
|
|
11062
|
+
/** Error slot for switch. */
|
|
10247
11063
|
class FrSwitchError {
|
|
10248
11064
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSwitchError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10249
11065
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSwitchError, isStandalone: true, selector: "[frSwitchError], frame-switch-error", host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-switch-error" }, ngImport: i0 });
|
|
@@ -10259,6 +11075,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10259
11075
|
}]
|
|
10260
11076
|
}] });
|
|
10261
11077
|
|
|
11078
|
+
/** Textarea control with FrameUI field styling. */
|
|
10262
11079
|
class FrTextarea {
|
|
10263
11080
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrTextarea, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10264
11081
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrTextarea, isStandalone: true, selector: "textarea[frTextarea]", host: { classAttribute: "frame-textarea" }, ngImport: i0 });
|
|
@@ -10316,6 +11133,7 @@ function calculateScrollOffsetForIndex(index, alignment, itemSize, viewportSize,
|
|
|
10316
11133
|
}
|
|
10317
11134
|
}
|
|
10318
11135
|
|
|
11136
|
+
/** Viewport controller for virtual scrolling. */
|
|
10319
11137
|
class FrVirtualViewport {
|
|
10320
11138
|
destroyRef = inject(DestroyRef);
|
|
10321
11139
|
elementRef = inject(ElementRef);
|
|
@@ -10359,6 +11177,7 @@ class FrVirtualViewport {
|
|
|
10359
11177
|
}
|
|
10360
11178
|
scrollToIndex(index, alignment = 'auto') {
|
|
10361
11179
|
const element = this.elementRef.nativeElement;
|
|
11180
|
+
// Virtual scrolling assumes fixed item heights, so index math can stay O(1).
|
|
10362
11181
|
const nextScrollTop = calculateScrollOffsetForIndex(index, alignment, this.itemSize(), element.clientHeight, this.totalCount(), element.scrollTop);
|
|
10363
11182
|
element.scrollTop = nextScrollTop;
|
|
10364
11183
|
this.scrollTop.set(nextScrollTop);
|
|
@@ -10392,6 +11211,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10392
11211
|
}]
|
|
10393
11212
|
}], ctorParameters: () => [], propDecorators: { itemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemSize", required: true }] }], overscan: [{ type: i0.Input, args: [{ isSignal: true, alias: "overscan", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }] } });
|
|
10394
11213
|
|
|
11214
|
+
/** Measured content wrapper for virtual scrolling. */
|
|
10395
11215
|
class FrVirtualContent {
|
|
10396
11216
|
viewport = inject(FrVirtualViewport);
|
|
10397
11217
|
before = computed(() => this.viewport.before(), ...(ngDevMode ? [{ debugName: "before" }] : /* istanbul ignore next */ []));
|
|
@@ -10411,6 +11231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10411
11231
|
}]
|
|
10412
11232
|
}] });
|
|
10413
11233
|
|
|
11234
|
+
/** Structural directive for rendering virtualized ranges. */
|
|
10414
11235
|
class FrVirtualFor {
|
|
10415
11236
|
templateRef = inject(TemplateRef);
|
|
10416
11237
|
viewContainerRef = inject(ViewContainerRef);
|
|
@@ -10418,6 +11239,7 @@ class FrVirtualFor {
|
|
|
10418
11239
|
views = [];
|
|
10419
11240
|
frVirtualForOf = input.required(...(ngDevMode ? [{ debugName: "frVirtualForOf" }] : /* istanbul ignore next */ []));
|
|
10420
11241
|
frVirtualForTrackBy = input(null, ...(ngDevMode ? [{ debugName: "frVirtualForTrackBy" }] : /* istanbul ignore next */ []));
|
|
11242
|
+
lastRenderKey = '';
|
|
10421
11243
|
slice = computed(() => {
|
|
10422
11244
|
const items = this.frVirtualForOf();
|
|
10423
11245
|
const start = this.viewport.startIndex();
|
|
@@ -10428,12 +11250,21 @@ class FrVirtualFor {
|
|
|
10428
11250
|
visible: items.slice(start, end),
|
|
10429
11251
|
};
|
|
10430
11252
|
}, ...(ngDevMode ? [{ debugName: "slice" }] : /* istanbul ignore next */ []));
|
|
10431
|
-
|
|
10432
|
-
|
|
10433
|
-
|
|
10434
|
-
|
|
10435
|
-
|
|
10436
|
-
|
|
11253
|
+
ngDoCheck() {
|
|
11254
|
+
const items = this.frVirtualForOf();
|
|
11255
|
+
const renderKey = [
|
|
11256
|
+
items,
|
|
11257
|
+
items.length,
|
|
11258
|
+
this.viewport.startIndex(),
|
|
11259
|
+
this.viewport.endIndex(),
|
|
11260
|
+
this.frVirtualForTrackBy(),
|
|
11261
|
+
].map(String).join('|');
|
|
11262
|
+
this.viewport.setTotalCount(items.length);
|
|
11263
|
+
if (renderKey === this.lastRenderKey) {
|
|
11264
|
+
return;
|
|
11265
|
+
}
|
|
11266
|
+
this.lastRenderKey = renderKey;
|
|
11267
|
+
this.render();
|
|
10437
11268
|
}
|
|
10438
11269
|
static ngTemplateContextGuard(_directive, _context) {
|
|
10439
11270
|
return true;
|
|
@@ -10486,8 +11317,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10486
11317
|
args: [{
|
|
10487
11318
|
selector: '[frVirtualFor][frVirtualForOf]',
|
|
10488
11319
|
}]
|
|
10489
|
-
}],
|
|
11320
|
+
}], propDecorators: { frVirtualForOf: [{ type: i0.Input, args: [{ isSignal: true, alias: "frVirtualForOf", required: true }] }], frVirtualForTrackBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "frVirtualForTrackBy", required: false }] }] } });
|
|
10490
11321
|
|
|
11322
|
+
/** List wrapper for virtualized items. */
|
|
10491
11323
|
class FrVirtualList {
|
|
10492
11324
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrVirtualList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10493
11325
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrVirtualList, isStandalone: true, selector: "[frVirtualList], frame-virtual-list", host: { classAttribute: "frame-virtual-scroll__list" }, ngImport: i0 });
|
|
@@ -10501,6 +11333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10501
11333
|
},
|
|
10502
11334
|
}]
|
|
10503
11335
|
}] });
|
|
11336
|
+
/** Panel wrapper for virtualized content. */
|
|
10504
11337
|
class FrVirtualPanel {
|
|
10505
11338
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrVirtualPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10506
11339
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrVirtualPanel, isStandalone: true, selector: "[frVirtualPanel], frame-virtual-panel", host: { classAttribute: "frame-virtual-scroll__panel" }, ngImport: i0 });
|
|
@@ -10514,6 +11347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10514
11347
|
},
|
|
10515
11348
|
}]
|
|
10516
11349
|
}] });
|
|
11350
|
+
/** Item wrapper for virtualized rows. */
|
|
10517
11351
|
class FrVirtualItem {
|
|
10518
11352
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrVirtualItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10519
11353
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrVirtualItem, isStandalone: true, selector: "[frVirtualItem], frame-virtual-item", host: { classAttribute: "frame-virtual-scroll__item" }, ngImport: i0 });
|
|
@@ -10527,6 +11361,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10527
11361
|
},
|
|
10528
11362
|
}]
|
|
10529
11363
|
}] });
|
|
11364
|
+
/** Meta slot for virtual item. */
|
|
10530
11365
|
class FrVirtualItemMeta {
|
|
10531
11366
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrVirtualItemMeta, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10532
11367
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrVirtualItemMeta, isStandalone: true, selector: "[frVirtualItemMeta], frame-virtual-item-meta", host: { classAttribute: "frame-virtual-scroll__item-meta" }, ngImport: i0 });
|
|
@@ -10545,5 +11380,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10545
11380
|
* Generated bundle index. Do not edit.
|
|
10546
11381
|
*/
|
|
10547
11382
|
|
|
10548
|
-
export { FR_ACCORDION_TYPES, FR_ALERT_VARIANTS, FR_AVATAR_SIZES, FR_BADGE_ICON_POSITIONS, FR_BADGE_VARIANTS, FR_BUTTON_APPEARANCES, FR_BUTTON_GROUP_ORIENTATIONS, FR_BUTTON_LOADING_DISPLAYS, FR_BUTTON_RADII, FR_BUTTON_SIZES, FR_CARD_FOOTER_ALIGNS, FR_CARD_SIZES, FR_CARD_SPACINGS, FR_CAROUSEL_ALIGNS, FR_CAROUSEL_DIRECTIONS, FR_CAROUSEL_ORIENTATIONS, FR_CONTEXT_MENU_CONTENT, FR_DROPDOWN_MENU_ALIGNMENTS, FR_DROPDOWN_MENU_CONTENT, FR_DROPDOWN_MENU_ITEM_VARIANTS, FR_DROPDOWN_MENU_PARENT, FR_DROPDOWN_MENU_SIDES, FR_DROPDOWN_MENU_TRIGGER_MODES, FR_EMPTY_MEDIA_VARIANTS, FR_EMPTY_ORIENTATIONS, FR_EMPTY_VARIANTS, FR_FIELD_LEGEND_VARIANTS, FR_FIELD_ORIENTATIONS, FR_HOVER_CARD_ALIGNMENTS, FR_HOVER_CARD_SIDES, FR_INPUT_GROUP_ADDON_ALIGNS, FR_INPUT_GROUP_ADDON_VARIANTS, FR_INPUT_OTP_PATTERN_DIGITS, FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS, FR_ITEM_MEDIA_VARIANTS, FR_ITEM_SIZES, FR_ITEM_VARIANTS, FR_MENUBAR_PARENT, FR_MODAL_DATA, FR_MODAL_REF, FR_NAVIGATION_MENU_PARENT, FR_POPOVER_ALIGNMENTS, FR_POPOVER_SIDES, FR_RADIO_GROUP_ORIENTATIONS, FR_RADIO_GROUP_VARIANTS, FR_RESIZABLE_ORIENTATIONS, FR_SELECT_ICON_POSITIONS, FR_SELECT_INDICATOR_POSITIONS, FR_SELECT_POSITIONS, FR_SEPARATOR_ORIENTATIONS, FR_SHEET_DATA, FR_SHEET_SIDES, FR_SIDEBAR_COLLAPSIBLES, FR_SIDEBAR_MENU_BUTTON_SIZES, FR_SIDEBAR_MENU_BUTTON_VARIANTS, FR_SIDEBAR_PROVIDER, FR_SIDEBAR_SIDES, FR_SIDEBAR_VARIANTS, FR_SLIDER_ORIENTATIONS, FR_SWITCH_SIZES, FrAccordion, FrAccordionContent, FrAccordionIcon, FrAccordionItem, FrAccordionTrigger, FrAlert, FrAlertDescription, FrAlertIcon, FrAlertTitle, FrAvatar, FrAvatarBadge, FrAvatarFallback, FrAvatarGroup, FrAvatarGroupCount, FrAvatarIcon, FrAvatarImage, FrBadge, FrBadgeIcon, FrBadgeLabel, FrBadgeSpinner, FrBreadcrumb, FrBreadcrumbEllipsis, FrBreadcrumbItem, FrBreadcrumbLink, FrBreadcrumbList, FrBreadcrumbPage, FrBreadcrumbSeparator, FrButton, FrButtonGroup, FrButtonIcon, FrButtonLabel, FrButtonLoading, FrCalendar, FrCard, FrCardAction, FrCardContent, FrCardDescription, FrCardFooter, FrCardHeader, FrCardTitle, FrCarousel, FrCarouselContent, FrCarouselItem, FrCarouselNext, FrCarouselPrevious, FrCheckbox, FrCheckboxField, FrCheckboxLabel, FrCollapsible, FrCollapsibleContent, FrCollapsibleTrigger, FrCombobox, FrComboboxChip, FrComboboxChipRemove, FrComboboxChips, FrComboboxChipsInput, FrComboboxClear, FrComboboxCollection, FrComboboxContent, FrComboboxEmpty, FrComboboxError, FrComboboxGroup, FrComboboxInput, FrComboboxItem, FrComboboxItemIndicator, FrComboboxLabel, FrComboboxList, FrComboboxPanel, FrComboboxRootLookup, FrComboboxSeparator, FrComboboxTrigger, FrComboboxValueList, FrCommand, FrCommandDialog, FrCommandDialogTrigger, FrCommandEmpty, FrCommandFooter, FrCommandGroup, FrCommandGroupHeading, FrCommandInput, FrCommandItem, FrCommandItemIcon, FrCommandList, FrCommandSeparator, FrCommandService, FrCommandShortcut, FrContextMenu, FrContextMenuCheckboxItem, FrContextMenuContent, FrContextMenuItem, FrContextMenuItemIndicator, FrContextMenuLabel, FrContextMenuPanel, FrContextMenuRadioGroup, FrContextMenuRadioItem, FrContextMenuSeparator, FrContextMenuShortcut, FrContextMenuSub, FrContextMenuSubTrigger, FrContextMenuTrigger, FrControlValueAccessor, FrDatePicker, FrDropdownMenu, FrDropdownMenuCheckboxItem, FrDropdownMenuContent, FrDropdownMenuItem, FrDropdownMenuItemIndicator, FrDropdownMenuLabel, FrDropdownMenuPanel, FrDropdownMenuRadioGroup, FrDropdownMenuRadioItem, FrDropdownMenuSeparator, FrDropdownMenuShortcut, FrDropdownMenuSub, FrDropdownMenuSubTrigger, FrDropdownMenuTree, FrDropdownMenuTrigger, FrEmpty, FrEmptyContent, FrEmptyDescription, FrEmptyHeader, FrEmptyMedia, FrEmptyTitle, FrField, FrFieldContent, FrFieldDescription, FrFieldError, FrFieldGroup, FrFieldLabel, FrFieldLegend, FrFieldSeparator, FrFieldSet, FrHoverCardRoot as FrHoverCard, FrHoverCardContent, FrHoverCardPanel, FrHoverCardTrigger, FrIconButton, FrInput, FrInputBadge, FrInputControl, FrInputDescription, FrInputError, FrInputField, FrInputFieldGroup, FrInputGroup, FrInputGroupAddon, FrInputGroupInput, FrInputGroupText, FrInputHeader, FrInputLabel, FrInputOtp, FrInputOtpGroup, FrInputOtpSeparator, FrInputOtpSlot, FrItem, FrItemActions, FrItemContent, FrItemDescription, FrItemFooter, FrItemGroup, FrItemHeader, FrItemMedia, FrItemSeparator, FrItemTitle, FrMenuBar, FrMenuBarCheckboxItem, FrMenuBarContent, FrMenuBarItem, FrMenuBarItemIndicator, FrMenuBarLabel, FrMenuBarMenu, FrMenuBarPanel, FrMenuBarRadioGroup, FrMenuBarRadioItem, FrMenuBarSeparator, FrMenuBarShortcut, FrMenuBarSub, FrMenuBarSubTrigger, FrMenuBarTrigger, FrModalBody, FrModalClose, FrModalContent, FrModalDescription, FrModalFooter, FrModalHeader, FrModalPanel, FrModalRef, FrModalService, FrModalShell, FrModalTitle, FrModalTrigger, FrNavigationLinkSeparator, FrNavigationMenu, FrNavigationMenuContent, FrNavigationMenuFeature, FrNavigationMenuGrid, FrNavigationMenuIndicator, FrNavigationMenuItem, FrNavigationMenuLink, FrNavigationMenuLinkDescription, FrNavigationMenuLinkTitle, FrNavigationMenuList, FrNavigationMenuPanel, FrNavigationMenuTrigger, FrNavigationMenuViewport, FrPagination, FrPaginationContent, FrPaginationEllipsis, FrPaginationIcon, FrPaginationItem, FrPaginationLink, FrPaginationNext, FrPaginationPrevious, FrPopoverRoot as FrPopover, FrPopoverBody, FrPopoverClose, FrPopoverContent, FrPopoverDescription, FrPopoverFooter, FrPopoverHeader, FrPopoverPanel, FrPopoverTitle, FrPopoverTrigger, FrProgress, FrProgressIndicator, FrRadioGroup, FrRadioGroupCard, FrRadioGroupCardMeta, FrRadioGroupField, FrRadioGroupItem, FrResizableHandle, FrResizablePanel, FrResizablePanelGroup, FrSelect, FrSelectContent, FrSelectError, FrSelectGroup, FrSelectIcon, FrSelectItem, FrSelectItemIndicator, FrSelectLabel, FrSelectPanel, FrSelectSeparator, FrSelectValue, FrSeparator, FrSheetBody, FrSheetClose, FrSheetContent, FrSheetDescription, FrSheetFooter, FrSheetHeader, FrSheetPanel, FrSheetService, FrSheetShell, FrSheetTitle, FrSheetTrigger, FrSidebar, FrSidebarContent, FrSidebarFooter, FrSidebarGroup, FrSidebarGroupAction, FrSidebarGroupContent, FrSidebarGroupLabel, FrSidebarHeader, FrSidebarInset, FrSidebarMenu, FrSidebarMenuAction, FrSidebarMenuBadge, FrSidebarMenuButton, FrSidebarMenuItem, FrSidebarMenuSkeleton, FrSidebarMenuSub, FrSidebarMenuSubButton, FrSidebarMenuSubItem, FrSidebarProvider, FrSidebarRail, FrSidebarTrigger, FrSlider, FrSwitch, FrSwitchContent, FrSwitchDescription, FrSwitchError, FrSwitchField, FrSwitchLabel, FrTextarea, FrVirtualContent, FrVirtualFor, FrVirtualItem, FrVirtualItemMeta, FrVirtualList, FrVirtualPanel, FrVirtualViewport, buildConnectedPositions, calculateScrollOffsetForIndex, calculateVirtualRange, defaultPositions, provideDsValueAccessor };
|
|
11383
|
+
export { FR_ACCORDION_TYPES, FR_ALERT_VARIANTS, FR_AVATAR_SIZES, FR_BADGE_ICON_POSITIONS, FR_BADGE_VARIANTS, FR_BUTTON_APPEARANCES, FR_BUTTON_GROUP_ORIENTATIONS, FR_BUTTON_LOADING_DISPLAYS, FR_BUTTON_RADII, FR_BUTTON_SIZES, FR_CARD_FOOTER_ALIGNS, FR_CARD_SIZES, FR_CARD_SPACINGS, FR_CAROUSEL_ALIGNS, FR_CAROUSEL_DIRECTIONS, FR_CAROUSEL_ORIENTATIONS, FR_CONTEXT_MENU_CONTENT, FR_DROPDOWN_MENU_ALIGNMENTS, FR_DROPDOWN_MENU_CONTENT, FR_DROPDOWN_MENU_ITEM_VARIANTS, FR_DROPDOWN_MENU_PARENT, FR_DROPDOWN_MENU_SIDES, FR_DROPDOWN_MENU_TRIGGER_MODES, FR_EMPTY_MEDIA_VARIANTS, FR_EMPTY_ORIENTATIONS, FR_EMPTY_VARIANTS, FR_FIELD_LEGEND_VARIANTS, FR_FIELD_ORIENTATIONS, FR_HOVER_CARD_ALIGNMENTS, FR_HOVER_CARD_SIDES, FR_INPUT_GROUP_ADDON_ALIGNS, FR_INPUT_GROUP_ADDON_VARIANTS, FR_INPUT_OTP_PATTERN_DIGITS, FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS, FR_ITEM_MEDIA_VARIANTS, FR_ITEM_SIZES, FR_ITEM_VARIANTS, FR_MENUBAR_PARENT, FR_MODAL_DATA, FR_MODAL_REF, FR_NAVIGATION_MENU_PARENT, FR_POPOVER_ALIGNMENTS, FR_POPOVER_SIDES, FR_RADIO_GROUP_ORIENTATIONS, FR_RADIO_GROUP_VARIANTS, FR_RESIZABLE_ORIENTATIONS, FR_SELECT_ICON_POSITIONS, FR_SELECT_INDICATOR_POSITIONS, FR_SELECT_POSITIONS, FR_SEPARATOR_ORIENTATIONS, FR_SHEET_DATA, FR_SHEET_SIDES, FR_SIDEBAR_COLLAPSIBLES, FR_SIDEBAR_MENU_BUTTON_SIZES, FR_SIDEBAR_MENU_BUTTON_VARIANTS, FR_SIDEBAR_PROVIDER, FR_SIDEBAR_SIDES, FR_SIDEBAR_VARIANTS, FR_SLIDER_ORIENTATIONS, FR_SWITCH_SIZES, FrAccordion, FrAccordionContent, FrAccordionIcon, FrAccordionItem, FrAccordionTrigger, FrAlert, FrAlertDescription, FrAlertIcon, FrAlertTitle, FrAvatar, FrAvatarBadge, FrAvatarFallback, FrAvatarGroup, FrAvatarGroupCount, FrAvatarIcon, FrAvatarImage, FrBadge, FrBadgeIcon, FrBadgeLabel, FrBadgeSpinner, FrBreadcrumb, FrBreadcrumbEllipsis, FrBreadcrumbItem, FrBreadcrumbLink, FrBreadcrumbList, FrBreadcrumbPage, FrBreadcrumbSeparator, FrButton, FrButtonGroup, FrButtonIcon, FrButtonLabel, FrButtonLoading, FrCalendar, FrCard, FrCardAction, FrCardContent, FrCardDescription, FrCardFooter, FrCardHeader, FrCardTitle, FrCarousel, FrCarouselContent, FrCarouselItem, FrCarouselNext, FrCarouselPrevious, FrCheckbox, FrCheckboxField, FrCheckboxLabel, FrCollapsible, FrCollapsibleContent, FrCollapsibleTrigger, FrCombobox, FrComboboxChip, FrComboboxChipRemove, FrComboboxChips, FrComboboxChipsInput, FrComboboxClear, FrComboboxCollection, FrComboboxContent, FrComboboxEmpty, FrComboboxError, FrComboboxGroup, FrComboboxInput, FrComboboxItem, FrComboboxItemIndicator, FrComboboxLabel, FrComboboxList, FrComboboxPanel, FrComboboxRootLookup, FrComboboxSeparator, FrComboboxTrigger, FrComboboxValueList, FrCommand, FrCommandDialog, FrCommandDialogTrigger, FrCommandEmpty, FrCommandFooter, FrCommandGroup, FrCommandGroupHeading, FrCommandInput, FrCommandItem, FrCommandItemIcon, FrCommandList, FrCommandSeparator, FrCommandService, FrCommandShortcut, FrConfirmPopover, FrConfirmPopoverPanel, FrContextMenu, FrContextMenuCheckboxItem, FrContextMenuContent, FrContextMenuItem, FrContextMenuItemIndicator, FrContextMenuLabel, FrContextMenuPanel, FrContextMenuRadioGroup, FrContextMenuRadioItem, FrContextMenuSeparator, FrContextMenuShortcut, FrContextMenuSub, FrContextMenuSubTrigger, FrContextMenuTrigger, FrControlValueAccessor, FrDatePicker, FrDropdownMenu, FrDropdownMenuCheckboxItem, FrDropdownMenuContent, FrDropdownMenuItem, FrDropdownMenuItemIndicator, FrDropdownMenuLabel, FrDropdownMenuPanel, FrDropdownMenuRadioGroup, FrDropdownMenuRadioItem, FrDropdownMenuSeparator, FrDropdownMenuShortcut, FrDropdownMenuSub, FrDropdownMenuSubTrigger, FrDropdownMenuTree, FrDropdownMenuTrigger, FrEmpty, FrEmptyContent, FrEmptyDescription, FrEmptyHeader, FrEmptyMedia, FrEmptyTitle, FrField, FrFieldContent, FrFieldDescription, FrFieldError, FrFieldGroup, FrFieldLabel, FrFieldLegend, FrFieldSeparator, FrFieldSet, FrHoverCardRoot as FrHoverCard, FrHoverCardContent, FrHoverCardPanel, FrHoverCardTrigger, FrIconButton, FrInput, FrInputBadge, FrInputControl, FrInputDescription, FrInputError, FrInputField, FrInputFieldGroup, FrInputGroup, FrInputGroupAddon, FrInputGroupInput, FrInputGroupText, FrInputHeader, FrInputLabel, FrInputOtp, FrInputOtpGroup, FrInputOtpSeparator, FrInputOtpSlot, FrItem, FrItemActions, FrItemContent, FrItemDescription, FrItemFooter, FrItemGroup, FrItemHeader, FrItemMedia, FrItemSeparator, FrItemTitle, FrMenuBar, FrMenuBarCheckboxItem, FrMenuBarContent, FrMenuBarItem, FrMenuBarItemIndicator, FrMenuBarLabel, FrMenuBarMenu, FrMenuBarPanel, FrMenuBarRadioGroup, FrMenuBarRadioItem, FrMenuBarSeparator, FrMenuBarShortcut, FrMenuBarSub, FrMenuBarSubTrigger, FrMenuBarTrigger, FrModalBody, FrModalClose, FrModalContent, FrModalDescription, FrModalFooter, FrModalHeader, FrModalPanel, FrModalRef, FrModalService, FrModalShell, FrModalTitle, FrModalTrigger, FrNavigationLinkSeparator, FrNavigationMenu, FrNavigationMenuContent, FrNavigationMenuFeature, FrNavigationMenuGrid, FrNavigationMenuIndicator, FrNavigationMenuItem, FrNavigationMenuLink, FrNavigationMenuLinkDescription, FrNavigationMenuLinkTitle, FrNavigationMenuList, FrNavigationMenuPanel, FrNavigationMenuTrigger, FrNavigationMenuViewport, FrPagination, FrPaginationContent, FrPaginationEllipsis, FrPaginationIcon, FrPaginationItem, FrPaginationLink, FrPaginationNext, FrPaginationPrevious, FrPopoverRoot as FrPopover, FrPopoverBody, FrPopoverClose, FrPopoverContent, FrPopoverDescription, FrPopoverFooter, FrPopoverHeader, FrPopoverPanel, FrPopoverTitle, FrPopoverTrigger, FrProgress, FrProgressIndicator, FrRadioGroup, FrRadioGroupCard, FrRadioGroupCardMeta, FrRadioGroupField, FrRadioGroupItem, FrResizableHandle, FrResizablePanel, FrResizablePanelGroup, FrSelect, FrSelectContent, FrSelectError, FrSelectGroup, FrSelectIcon, FrSelectItem, FrSelectItemIndicator, FrSelectLabel, FrSelectPanel, FrSelectSeparator, FrSelectValue, FrSeparator, FrSheetBody, FrSheetClose, FrSheetContent, FrSheetDescription, FrSheetFooter, FrSheetHeader, FrSheetPanel, FrSheetService, FrSheetShell, FrSheetTitle, FrSheetTrigger, FrSidebar, FrSidebarContent, FrSidebarFooter, FrSidebarGroup, FrSidebarGroupAction, FrSidebarGroupContent, FrSidebarGroupLabel, FrSidebarHeader, FrSidebarInset, FrSidebarMenu, FrSidebarMenuAction, FrSidebarMenuBadge, FrSidebarMenuButton, FrSidebarMenuItem, FrSidebarMenuSkeleton, FrSidebarMenuSub, FrSidebarMenuSubButton, FrSidebarMenuSubItem, FrSidebarProvider, FrSidebarRail, FrSidebarTrigger, FrSlider, FrSwitch, FrSwitchContent, FrSwitchDescription, FrSwitchError, FrSwitchField, FrSwitchLabel, FrTextarea, FrVirtualContent, FrVirtualFor, FrVirtualItem, FrVirtualItemMeta, FrVirtualList, FrVirtualPanel, FrVirtualViewport, buildConnectedPositions, calculateScrollOffsetForIndex, calculateVirtualRange, defaultPositions, provideDsValueAccessor };
|
|
10549
11384
|
//# sourceMappingURL=frame-ui-ng-components.mjs.map
|