@frame-ui-ng/components 0.4.0-beta.0 → 0.4.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/src/styles/_vars.css +4 -0
- package/calendar/src/styles/calendar.css +29 -5
- package/confirm-popover/src/styles/confirm-popover.css +20 -0
- package/date-picker/src/styles/date-picker.css +27 -1
- 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 +24 -1
- 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 +167 -128
- 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-utils.mjs +5 -1
- package/fesm2022/frame-ui-ng-components-utils.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 +1449 -571
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/package.json +10 -2
- package/popover/src/styles/popover.css +106 -101
- package/select/src/styles/select-content.css +27 -19
- 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 +2 -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 +27 -4
- 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-utils.d.ts +3 -1
- package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
- package/types/frame-ui-ng-components.d.ts +507 -80
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive, model, signal, computed, afterNextRender, ChangeDetectionStrategy, Component, ElementRef,
|
|
2
|
+
import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive, model, signal, computed, afterNextRender, ChangeDetectionStrategy, Component, ElementRef, NgModule } from '@angular/core';
|
|
3
3
|
import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
4
4
|
import { NgTemplateOutlet } from '@angular/common';
|
|
5
5
|
|
|
@@ -53,6 +53,7 @@ function oppositeSide(side) {
|
|
|
53
53
|
|
|
54
54
|
const FR_POPOVER_CONTROLLER = new InjectionToken('FrPopoverController');
|
|
55
55
|
|
|
56
|
+
/** Content slot for popover. */
|
|
56
57
|
class FrPopoverContent {
|
|
57
58
|
templateRef = inject((TemplateRef));
|
|
58
59
|
align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
@@ -78,6 +79,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
78
79
|
exportAs: 'frPopoverContent',
|
|
79
80
|
}]
|
|
80
81
|
}], 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 }] }] } });
|
|
82
|
+
/** Panel slot for popover. */
|
|
81
83
|
class FrPopoverPanel {
|
|
82
84
|
content = inject(FrPopoverContent);
|
|
83
85
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -95,6 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
95
97
|
},
|
|
96
98
|
}]
|
|
97
99
|
}] });
|
|
100
|
+
/** Header slot for popover. */
|
|
98
101
|
class FrPopoverHeader {
|
|
99
102
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
100
103
|
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 });
|
|
@@ -108,6 +111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
108
111
|
},
|
|
109
112
|
}]
|
|
110
113
|
}] });
|
|
114
|
+
/** Title slot for popover. */
|
|
111
115
|
class FrPopoverTitle {
|
|
112
116
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
113
117
|
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 });
|
|
@@ -121,6 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
121
125
|
},
|
|
122
126
|
}]
|
|
123
127
|
}] });
|
|
128
|
+
/** Description slot for popover. */
|
|
124
129
|
class FrPopoverDescription {
|
|
125
130
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
126
131
|
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 });
|
|
@@ -134,6 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
134
139
|
},
|
|
135
140
|
}]
|
|
136
141
|
}] });
|
|
142
|
+
/** Body slot for popover. */
|
|
137
143
|
class FrPopoverBody {
|
|
138
144
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
139
145
|
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 });
|
|
@@ -147,6 +153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
147
153
|
},
|
|
148
154
|
}]
|
|
149
155
|
}] });
|
|
156
|
+
/** Footer slot for popover. */
|
|
150
157
|
class FrPopoverFooter {
|
|
151
158
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
152
159
|
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 });
|
|
@@ -160,6 +167,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
160
167
|
},
|
|
161
168
|
}]
|
|
162
169
|
}] });
|
|
170
|
+
/** Close control for popover. */
|
|
163
171
|
class FrPopoverClose {
|
|
164
172
|
root = inject(FR_POPOVER_CONTROLLER);
|
|
165
173
|
handleClick(event) {
|
|
@@ -186,6 +194,7 @@ const DEFAULT_POSITIONS = buildPopoverPositions({
|
|
|
186
194
|
side: 'bottom',
|
|
187
195
|
sideOffset: 8,
|
|
188
196
|
});
|
|
197
|
+
/** Root controller for popover. */
|
|
189
198
|
class FrPopoverRoot {
|
|
190
199
|
defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
191
200
|
debugVisible = input(false, { ...(ngDevMode ? { debugName: "debugVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -276,28 +285,28 @@ class FrPopoverRoot {
|
|
|
276
285
|
provide: FR_POPOVER_CONTROLLER,
|
|
277
286
|
useExisting: FrPopoverRoot,
|
|
278
287
|
},
|
|
279
|
-
], exportAs: ["frPopover"], ngImport: i0, template: `
|
|
280
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
281
|
-
<ng-content />
|
|
282
|
-
</span>
|
|
283
|
-
|
|
284
|
-
<ng-template
|
|
285
|
-
cdkConnectedOverlay
|
|
286
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
287
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
288
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
289
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
290
|
-
[cdkConnectedOverlayPush]="true"
|
|
291
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
292
|
-
[cdkConnectedOverlayHasBackdrop]="true"
|
|
293
|
-
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
294
|
-
(backdropClick)="close()"
|
|
295
|
-
(detach)="close()"
|
|
296
|
-
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
297
|
-
(positionChange)="handlePositionChange($event)"
|
|
298
|
-
>
|
|
299
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
300
|
-
</ng-template>
|
|
288
|
+
], exportAs: ["frPopover"], ngImport: i0, template: `
|
|
289
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
290
|
+
<ng-content />
|
|
291
|
+
</span>
|
|
292
|
+
|
|
293
|
+
<ng-template
|
|
294
|
+
cdkConnectedOverlay
|
|
295
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
296
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
297
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
298
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
299
|
+
[cdkConnectedOverlayPush]="true"
|
|
300
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
301
|
+
[cdkConnectedOverlayHasBackdrop]="true"
|
|
302
|
+
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
303
|
+
(backdropClick)="close()"
|
|
304
|
+
(detach)="close()"
|
|
305
|
+
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
306
|
+
(positionChange)="handlePositionChange($event)"
|
|
307
|
+
>
|
|
308
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
309
|
+
</ng-template>
|
|
301
310
|
`, 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 });
|
|
302
311
|
}
|
|
303
312
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverRoot, decorators: [{
|
|
@@ -317,44 +326,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
317
326
|
class: 'frame-popover',
|
|
318
327
|
'[attr.data-state]': 'isOpen() ? "open" : "closed"',
|
|
319
328
|
},
|
|
320
|
-
template: `
|
|
321
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
322
|
-
<ng-content />
|
|
323
|
-
</span>
|
|
324
|
-
|
|
325
|
-
<ng-template
|
|
326
|
-
cdkConnectedOverlay
|
|
327
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
328
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
329
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
330
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
331
|
-
[cdkConnectedOverlayPush]="true"
|
|
332
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
333
|
-
[cdkConnectedOverlayHasBackdrop]="true"
|
|
334
|
-
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
335
|
-
(backdropClick)="close()"
|
|
336
|
-
(detach)="close()"
|
|
337
|
-
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
338
|
-
(positionChange)="handlePositionChange($event)"
|
|
339
|
-
>
|
|
340
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
341
|
-
</ng-template>
|
|
329
|
+
template: `
|
|
330
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
|
|
331
|
+
<ng-content />
|
|
332
|
+
</span>
|
|
333
|
+
|
|
334
|
+
<ng-template
|
|
335
|
+
cdkConnectedOverlay
|
|
336
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
337
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
338
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
339
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
340
|
+
[cdkConnectedOverlayPush]="true"
|
|
341
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
342
|
+
[cdkConnectedOverlayHasBackdrop]="true"
|
|
343
|
+
[cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
|
|
344
|
+
(backdropClick)="close()"
|
|
345
|
+
(detach)="close()"
|
|
346
|
+
(overlayKeydown)="handleOverlayKeydown($event)"
|
|
347
|
+
(positionChange)="handlePositionChange($event)"
|
|
348
|
+
>
|
|
349
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
350
|
+
</ng-template>
|
|
342
351
|
`,
|
|
343
352
|
}]
|
|
344
353
|
}], 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"] }] } });
|
|
345
354
|
|
|
355
|
+
/** Trigger control for popover. */
|
|
346
356
|
class FrPopoverTrigger {
|
|
347
357
|
content = input(null, { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'frPopoverTrigger' });
|
|
348
358
|
root = inject(FR_POPOVER_CONTROLLER);
|
|
349
359
|
elementRef = inject(ElementRef);
|
|
360
|
+
lastContent = null;
|
|
350
361
|
constructor() {
|
|
351
362
|
this.root.registerTrigger(this.elementRef.nativeElement);
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}
|
|
363
|
+
}
|
|
364
|
+
ngDoCheck() {
|
|
365
|
+
const content = this.content();
|
|
366
|
+
if (content && content !== this.lastContent) {
|
|
367
|
+
this.root.setContent(content);
|
|
368
|
+
}
|
|
369
|
+
this.lastContent = content;
|
|
358
370
|
}
|
|
359
371
|
handleClick(event) {
|
|
360
372
|
event.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-popover.mjs","sources":["../../../projects/components/popover/src/popover.position.ts","../../../projects/components/popover/src/popover.tokens.ts","../../../projects/components/popover/src/popover.content.ts","../../../projects/components/popover/src/popover.root.ts","../../../projects/components/popover/src/popover.trigger.ts","../../../projects/components/popover/src/popover.types.ts","../../../projects/components/popover/popover.module.ts","../../../projects/components/popover/frame-ui-ng-components-popover.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\n\nexport function buildPopoverPositions(options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n side: FrPopoverSide;\n sideOffset: number;\n}): ConnectedPosition[] {\n const primary = buildPosition(options.side, options);\n const opposite = oppositeSide(options.side);\n const fallback = buildPosition(opposite, {\n align: options.align,\n alignOffset: options.alignOffset,\n sideOffset: options.sideOffset,\n });\n\n return [primary, fallback];\n}\n\nfunction buildPosition(\n side: FrPopoverSide,\n options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n sideOffset: number;\n },\n): ConnectedPosition {\n if (side === 'top' || side === 'bottom') {\n const isBottom = side === 'bottom';\n\n return {\n originX: options.align,\n originY: isBottom ? 'bottom' : 'top',\n overlayX: options.align,\n overlayY: isBottom ? 'top' : 'bottom',\n offsetX: options.alignOffset,\n offsetY: isBottom ? options.sideOffset : -options.sideOffset,\n };\n }\n\n const isRight = side === 'right';\n\n return {\n originX: isRight ? 'end' : 'start',\n originY: verticalAlign(options.align),\n overlayX: isRight ? 'start' : 'end',\n overlayY: verticalAlign(options.align),\n offsetX: isRight ? options.sideOffset : -options.sideOffset,\n offsetY: options.alignOffset,\n };\n}\n\nfunction verticalAlign(align: FrPopoverAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction oppositeSide(side: FrPopoverSide): FrPopoverSide {\n if (side === 'top') {\n return 'bottom';\n }\n\n if (side === 'bottom') {\n return 'top';\n }\n\n return side === 'left' ? 'right' : 'left';\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { FrPopoverRoot } from './popover.root';\n\nexport const FR_POPOVER_CONTROLLER = new InjectionToken<FrPopoverRoot>(\n 'FrPopoverController',\n);\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { Directive, TemplateRef, booleanAttribute, inject, input } from '@angular/core';\n\nimport { buildPopoverPositions } from './popover.position';\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\n\n@Directive({\n selector: 'ng-template[frPopoverContent]',\n exportAs: 'frPopoverContent',\n})\nexport class FrPopoverContent {\n readonly templateRef = inject(TemplateRef<unknown>);\n\n readonly align = input<FrPopoverAlignment>('center');\n readonly alignOffset = input(0);\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly side = input<FrPopoverSide>('bottom');\n readonly sideOffset = input(8);\n\n getPositions(): ConnectedPosition[] {\n return buildPopoverPositions({\n align: this.align(),\n alignOffset: this.alignOffset(),\n side: this.side(),\n sideOffset: this.sideOffset(),\n });\n }\n}\n\n@Directive({\n selector: '[frPopoverPanel]',\n host: {\n class: 'frame-popover__content',\n '[attr.data-side]': 'content.side()',\n role: 'dialog',\n tabindex: '-1',\n },\n})\nexport class FrPopoverPanel {\n protected readonly content = inject(FrPopoverContent);\n}\n\n@Directive({\n selector: '[frPopoverHeader]',\n host: {\n class: 'frame-popover__header',\n },\n})\nexport class FrPopoverHeader {}\n\n@Directive({\n selector: '[frPopoverTitle]',\n host: {\n class: 'frame-popover__title',\n },\n})\nexport class FrPopoverTitle {}\n\n@Directive({\n selector: '[frPopoverDescription]',\n host: {\n class: 'frame-popover__description',\n },\n})\nexport class FrPopoverDescription {}\n\n@Directive({\n selector: '[frPopoverBody]',\n host: {\n class: 'frame-popover__body',\n },\n})\nexport class FrPopoverBody {}\n\n@Directive({\n selector: '[frPopoverFooter]',\n host: {\n class: 'frame-popover__footer',\n },\n})\nexport class FrPopoverFooter {}\n\n@Directive({\n selector: '[frPopoverClose]',\n host: {\n class: 'frame-popover__close',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrPopoverClose {\n private readonly root = inject(FR_POPOVER_CONTROLLER);\n\n protected handleClick(event: Event): void {\n event.preventDefault();\n this.root.close();\n }\n}\n","import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedOverlayPositionChange,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n afterNextRender,\n booleanAttribute,\n computed,\n input,\n model,\n signal,\n} from '@angular/core';\n\nimport { FrPopoverContent } from './popover.content';\nimport { buildPopoverPositions } from './popover.position';\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\n\nconst DEFAULT_POSITIONS: ConnectedPosition[] = buildPopoverPositions({\n align: 'center',\n alignOffset: 0,\n side: 'bottom',\n sideOffset: 8,\n});\n\n@Component({\n selector: 'frame-popover',\n exportAs: 'frPopover',\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\n providers: [\n {\n provide: FR_POPOVER_CONTROLLER,\n useExisting: FrPopoverRoot,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'frame-popover',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n template: `\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-popover__anchor\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"12\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'frame-popover__backdrop'\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n (overlayKeydown)=\"handleOverlayKeydown($event)\"\n (positionChange)=\"handlePositionChange($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content()?.templateRef ?? null\" />\n </ng-template>\n `,\n})\nexport class FrPopoverRoot {\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly open = model(false);\n\n readonly content = signal<FrPopoverContent | null>(null);\n readonly overlaySide = signal('bottom');\n\n private triggerElement: HTMLElement | null = null;\n\n readonly isOpen = computed(() => this.open() || this.debugVisible());\n readonly positions = computed(() => this.content()?.getPositions() ?? DEFAULT_POSITIONS);\n\n constructor() {\n afterNextRender(() => {\n if (this.defaultOpen() || this.debugVisible()) {\n this.open.set(true);\n }\n });\n }\n\n registerTrigger(trigger: HTMLElement): void {\n this.triggerElement = trigger;\n }\n\n setContent(content: unknown | null): void {\n this.content.set(content instanceof FrPopoverContent ? content : null);\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n return;\n }\n\n this.openPopover();\n }\n\n openPopover(): void {\n if (!this.content()) {\n return;\n }\n\n this.open.set(true);\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\n }\n\n close(): void {\n if (this.debugVisible()) {\n return;\n }\n\n this.open.set(false);\n }\n\n handleOverlayKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n }\n\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\n const pair = event.connectionPair;\n\n if (pair.overlayY === 'top') {\n this.overlaySide.set('bottom');\n return;\n }\n\n if (pair.overlayY === 'bottom') {\n this.overlaySide.set('top');\n return;\n }\n\n this.overlaySide.set(pair.overlayX === 'start' ? 'right' : 'left');\n }\n\n overlayPanelClasses(): string[] {\n return ['frame-popover-overlay', `frame-popover-overlay--${this.overlaySide()}`];\n }\n\n private syncCustomPropertiesToOverlay(): void {\n if (typeof getComputedStyle === 'undefined') {\n return;\n }\n\n const triggerElement = this.triggerElement;\n const overlayPane = document.querySelector<HTMLElement>('.cdk-overlay-pane.frame-popover-overlay');\n const panel = overlayPane?.querySelector<HTMLElement>('.frame-popover__content');\n\n if (!triggerElement || !overlayPane || !panel) {\n return;\n }\n\n const sourceStyles = getComputedStyle(triggerElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith('--frame-popover-')) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n overlayPane.style.setProperty(propertyName, propertyValue);\n panel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n","import { Directive, ElementRef, effect, inject, input } from '@angular/core';\n\nimport { FrPopoverContent } from './popover.content';\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\n\n@Directive({\n selector: '[frPopoverTrigger]',\n host: {\n class: 'frame-popover__trigger',\n '[attr.aria-expanded]': 'root.isOpen()',\n '[attr.data-state]': 'root.isOpen() ? \"open\" : \"closed\"',\n '(click)': 'handleClick($event)',\n '(keydown)': 'handleKeydown($event)',\n },\n})\nexport class FrPopoverTrigger {\n readonly content = input<FrPopoverContent | null>(null, {\n alias: 'frPopoverTrigger',\n });\n\n protected readonly root = inject(FR_POPOVER_CONTROLLER);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n this.root.registerTrigger(this.elementRef.nativeElement);\n\n effect(() => {\n const content = this.content();\n\n if (content) {\n this.root.setContent(content);\n }\n });\n }\n\n protected handleClick(event: Event): void {\n event.preventDefault();\n this.root.setContent(this.content());\n this.root.toggle();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.root.close();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.root.setContent(this.content());\n this.root.toggle();\n }\n }\n}\n","export const FR_POPOVER_ALIGNMENTS = ['start', 'center', 'end'] as const;\nexport const FR_POPOVER_SIDES = ['top', 'right', 'bottom', 'left'] as const;\n\nexport type FrPopoverAlignment = (typeof FR_POPOVER_ALIGNMENTS)[number];\nexport type FrPopoverSide = (typeof FR_POPOVER_SIDES)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n} from './src/popover';\n\n@NgModule({\n imports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n exports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n})\nexport class FrPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FrPopover"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-popover.mjs","sources":["../../../projects/components/popover/src/popover.position.ts","../../../projects/components/popover/src/popover.tokens.ts","../../../projects/components/popover/src/popover.content.ts","../../../projects/components/popover/src/popover.root.ts","../../../projects/components/popover/src/popover.trigger.ts","../../../projects/components/popover/src/popover.types.ts","../../../projects/components/popover/popover.module.ts","../../../projects/components/popover/frame-ui-ng-components-popover.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\n\nexport function buildPopoverPositions(options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n side: FrPopoverSide;\n sideOffset: number;\n}): ConnectedPosition[] {\n const primary = buildPosition(options.side, options);\n const opposite = oppositeSide(options.side);\n const fallback = buildPosition(opposite, {\n align: options.align,\n alignOffset: options.alignOffset,\n sideOffset: options.sideOffset,\n });\n\n return [primary, fallback];\n}\n\nfunction buildPosition(\n side: FrPopoverSide,\n options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n sideOffset: number;\n },\n): ConnectedPosition {\n if (side === 'top' || side === 'bottom') {\n const isBottom = side === 'bottom';\n\n return {\n originX: options.align,\n originY: isBottom ? 'bottom' : 'top',\n overlayX: options.align,\n overlayY: isBottom ? 'top' : 'bottom',\n offsetX: options.alignOffset,\n offsetY: isBottom ? options.sideOffset : -options.sideOffset,\n };\n }\n\n const isRight = side === 'right';\n\n return {\n originX: isRight ? 'end' : 'start',\n originY: verticalAlign(options.align),\n overlayX: isRight ? 'start' : 'end',\n overlayY: verticalAlign(options.align),\n offsetX: isRight ? options.sideOffset : -options.sideOffset,\n offsetY: options.alignOffset,\n };\n}\n\nfunction verticalAlign(align: FrPopoverAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction oppositeSide(side: FrPopoverSide): FrPopoverSide {\n if (side === 'top') {\n return 'bottom';\n }\n\n if (side === 'bottom') {\n return 'top';\n }\n\n return side === 'left' ? 'right' : 'left';\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { FrPopoverRoot } from './popover.root';\n\nexport const FR_POPOVER_CONTROLLER = new InjectionToken<FrPopoverRoot>(\n 'FrPopoverController',\n);\n","import { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { Directive, TemplateRef, booleanAttribute, inject, input } from '@angular/core';\r\n\r\nimport { buildPopoverPositions } from './popover.position';\r\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\r\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\r\n\r\n/** Content slot for popover. */\r\n@Directive({\r\n selector: 'ng-template[frPopoverContent]',\r\n exportAs: 'frPopoverContent',\r\n})\r\nexport class FrPopoverContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrPopoverAlignment>('center');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrPopoverSide>('bottom');\r\n readonly sideOffset = input(8);\r\n\r\n getPositions(): ConnectedPosition[] {\r\n return buildPopoverPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n/** Panel slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverPanel]',\r\n host: {\r\n class: 'frame-popover__content',\r\n '[attr.data-side]': 'content.side()',\r\n role: 'dialog',\r\n tabindex: '-1',\r\n },\r\n})\r\nexport class FrPopoverPanel {\r\n protected readonly content = inject(FrPopoverContent);\r\n}\r\n\r\n/** Header slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverHeader]',\r\n host: {\r\n class: 'frame-popover__header',\r\n },\r\n})\r\nexport class FrPopoverHeader {}\r\n\r\n/** Title slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverTitle]',\r\n host: {\r\n class: 'frame-popover__title',\r\n },\r\n})\r\nexport class FrPopoverTitle {}\r\n\r\n/** Description slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverDescription]',\r\n host: {\r\n class: 'frame-popover__description',\r\n },\r\n})\r\nexport class FrPopoverDescription {}\r\n\r\n/** Body slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverBody]',\r\n host: {\r\n class: 'frame-popover__body',\r\n },\r\n})\r\nexport class FrPopoverBody {}\r\n\r\n/** Footer slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverFooter]',\r\n host: {\r\n class: 'frame-popover__footer',\r\n },\r\n})\r\nexport class FrPopoverFooter {}\r\n\r\n/** Close control for popover. */\r\n@Directive({\r\n selector: '[frPopoverClose]',\r\n host: {\r\n class: 'frame-popover__close',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrPopoverClose {\r\n private readonly root = inject(FR_POPOVER_CONTROLLER);\r\n\r\n protected handleClick(event: Event): void {\r\n event.preventDefault();\r\n this.root.close();\r\n }\r\n}\r\n","import {\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n ConnectedOverlayPositionChange,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n input,\r\n model,\r\n signal,\r\n} from '@angular/core';\r\n\r\nimport { FrPopoverContent } from './popover.content';\r\nimport { buildPopoverPositions } from './popover.position';\r\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\r\n\r\nconst DEFAULT_POSITIONS: ConnectedPosition[] = buildPopoverPositions({\r\n align: 'center',\r\n alignOffset: 0,\r\n side: 'bottom',\r\n sideOffset: 8,\r\n});\r\n\r\n/** Root controller for popover. */\r\n@Component({\r\n selector: 'frame-popover',\r\n exportAs: 'frPopover',\r\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\r\n providers: [\r\n {\r\n provide: FR_POPOVER_CONTROLLER,\r\n useExisting: FrPopoverRoot,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-popover',\r\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\r\n },\r\n template: `\r\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-popover__anchor\">\r\n <ng-content />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayPositions]=\"positions()\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayViewportMargin]=\"12\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n [cdkConnectedOverlayBackdropClass]=\"'frame-popover__backdrop'\"\r\n (backdropClick)=\"close()\"\r\n (detach)=\"close()\"\r\n (overlayKeydown)=\"handleOverlayKeydown($event)\"\r\n (positionChange)=\"handlePositionChange($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"content()?.templateRef ?? null\" />\r\n </ng-template>\r\n `,\r\n})\r\nexport class FrPopoverRoot {\r\n readonly defaultOpen = input(false, { transform: booleanAttribute });\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly open = model(false);\r\n\r\n readonly content = signal<FrPopoverContent | null>(null);\r\n readonly overlaySide = signal('bottom');\r\n\r\n private triggerElement: HTMLElement | null = null;\r\n\r\n readonly isOpen = computed(() => this.open() || this.debugVisible());\r\n readonly positions = computed(() => this.content()?.getPositions() ?? DEFAULT_POSITIONS);\r\n\r\n constructor() {\r\n afterNextRender(() => {\r\n if (this.defaultOpen() || this.debugVisible()) {\r\n this.open.set(true);\r\n }\r\n });\r\n }\r\n\r\n registerTrigger(trigger: HTMLElement): void {\r\n this.triggerElement = trigger;\r\n }\r\n\r\n setContent(content: unknown | null): void {\r\n this.content.set(content instanceof FrPopoverContent ? content : null);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n\r\n this.openPopover();\r\n }\r\n\r\n openPopover(): void {\r\n if (!this.content()) {\r\n return;\r\n }\r\n\r\n this.open.set(true);\r\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\r\n }\r\n\r\n close(): void {\r\n if (this.debugVisible()) {\r\n return;\r\n }\r\n\r\n this.open.set(false);\r\n }\r\n\r\n handleOverlayKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.close();\r\n }\r\n }\r\n\r\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\r\n const pair = event.connectionPair;\r\n\r\n if (pair.overlayY === 'top') {\r\n this.overlaySide.set('bottom');\r\n return;\r\n }\r\n\r\n if (pair.overlayY === 'bottom') {\r\n this.overlaySide.set('top');\r\n return;\r\n }\r\n\r\n this.overlaySide.set(pair.overlayX === 'start' ? 'right' : 'left');\r\n }\r\n\r\n overlayPanelClasses(): string[] {\r\n return ['frame-popover-overlay', `frame-popover-overlay--${this.overlaySide()}`];\r\n }\r\n\r\n private syncCustomPropertiesToOverlay(): void {\r\n if (typeof getComputedStyle === 'undefined') {\r\n return;\r\n }\r\n\r\n const triggerElement = this.triggerElement;\r\n const overlayPane = document.querySelector<HTMLElement>('.cdk-overlay-pane.frame-popover-overlay');\r\n const panel = overlayPane?.querySelector<HTMLElement>('.frame-popover__content');\r\n\r\n if (!triggerElement || !overlayPane || !panel) {\r\n return;\r\n }\r\n\r\n const sourceStyles = getComputedStyle(triggerElement);\r\n\r\n for (let index = 0; index < sourceStyles.length; index += 1) {\r\n const propertyName = sourceStyles.item(index);\r\n\r\n if (!propertyName.startsWith('--frame-popover-')) {\r\n continue;\r\n }\r\n\r\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\r\n overlayPane.style.setProperty(propertyName, propertyValue);\r\n panel.style.setProperty(propertyName, propertyValue);\r\n }\r\n }\r\n}\r\n","import { Directive, DoCheck, ElementRef, inject, input } from '@angular/core';\r\n\r\nimport { FrPopoverContent } from './popover.content';\r\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\r\n\r\n/** Trigger control for popover. */\r\n@Directive({\r\n selector: '[frPopoverTrigger]',\r\n host: {\r\n class: 'frame-popover__trigger',\r\n '[attr.aria-expanded]': 'root.isOpen()',\r\n '[attr.data-state]': 'root.isOpen() ? \"open\" : \"closed\"',\r\n '(click)': 'handleClick($event)',\r\n '(keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrPopoverTrigger implements DoCheck {\r\n readonly content = input<FrPopoverContent | null>(null, {\r\n alias: 'frPopoverTrigger',\r\n });\r\n\r\n protected readonly root = inject(FR_POPOVER_CONTROLLER);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private lastContent: FrPopoverContent | null = null;\r\n\r\n constructor() {\r\n this.root.registerTrigger(this.elementRef.nativeElement);\r\n }\r\n\r\n ngDoCheck(): void {\r\n const content = this.content();\r\n\r\n if (content && content !== this.lastContent) {\r\n this.root.setContent(content);\r\n }\r\n\r\n this.lastContent = content;\r\n }\r\n\r\n protected handleClick(event: Event): void {\r\n event.preventDefault();\r\n this.root.setContent(this.content());\r\n this.root.toggle();\r\n }\r\n\r\n protected handleKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.root.close();\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.root.setContent(this.content());\r\n this.root.toggle();\r\n }\r\n }\r\n}\r\n","export const FR_POPOVER_ALIGNMENTS = ['start', 'center', 'end'] as const;\nexport const FR_POPOVER_SIDES = ['top', 'right', 'bottom', 'left'] as const;\n\nexport type FrPopoverAlignment = (typeof FR_POPOVER_ALIGNMENTS)[number];\nexport type FrPopoverSide = (typeof FR_POPOVER_SIDES)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n} from './src/popover';\n\n@NgModule({\n imports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n exports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n})\nexport class FrPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FrPopover"],"mappings":";;;;;AAIM,SAAU,qBAAqB,CAAC,OAKrC,EAAA;IACC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;IACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3C,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,KAAA,CAAC;AAEF,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC5B;AAEA,SAAS,aAAa,CACpB,IAAmB,EACnB,OAIC,EAAA;IAED,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,QAAQ;QAElC,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK;YACpC,QAAQ,EAAE,OAAO,CAAC,KAAK;YACvB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ;YACrC,OAAO,EAAE,OAAO,CAAC,WAAW;AAC5B,YAAA,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU;SAC7D;IACH;AAEA,IAAA,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO;IAEhC,OAAO;QACL,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO;AAClC,QAAA,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK;AACnC,QAAA,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;AACtC,QAAA,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU;QAC3D,OAAO,EAAE,OAAO,CAAC,WAAW;KAC7B;AACH;AAEA,SAAS,aAAa,CAAC,KAAyB,EAAA;AAC9C,IAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,QAAA,OAAO,QAAQ;IACjB;IAEA,OAAO,KAAK,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK;AAC3C;AAEA,SAAS,YAAY,CAAC,IAAmB,EAAA;AACvC,IAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,QAAA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM;AAC3C;;ACpEO,MAAM,qBAAqB,GAAG,IAAI,cAAc,CACrD,qBAAqB,CACtB;;ACCD;MAKa,gBAAgB,CAAA;AAClB,IAAA,WAAW,GAAG,MAAM,EAAC,WAAoB,EAAC;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAqB,QAAQ,4EAAC;AAC3C,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,kFAAC;IACtB,YAAY,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC5D,IAAA,IAAI,GAAG,KAAK,CAAgB,QAAQ,2EAAC;AACrC,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,iFAAC;IAE9B,YAAY,GAAA;AACV,QAAA,OAAO,qBAAqB,CAAC;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC;IACJ;wGAhBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;AAoBD;MAUa,cAAc,CAAA;AACN,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;wGAD1C,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,IAAI;AACf,qBAAA;AACF,iBAAA;;AAKD;MAOa,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;AAGD;MAOa,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;AACF,iBAAA;;AAGD;MAOa,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACpC,qBAAA;AACF,iBAAA;;AAGD;MAOa,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACF,iBAAA;;AAGD;MAOa,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;AAGD;MAQa,cAAc,CAAA;AACR,IAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE3C,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACnB;wGANW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACF,iBAAA;;;AC3ED,MAAM,iBAAiB,GAAwB,qBAAqB,CAAC;AACnE,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,UAAU,EAAE,CAAC;AACd,CAAA,CAAC;AAEF;MAwCa,aAAa,CAAA;IACf,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC3D,YAAY,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC5D,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AAEnB,IAAA,OAAO,GAAG,MAAM,CAA0B,IAAI,8EAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAC,QAAQ,kFAAC;IAE/B,cAAc,GAAuB,IAAI;AAExC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,6EAAC;AAC3D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,iBAAiB,gFAAC;AAExF,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AAC7C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,OAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;IAC/B;AAEA,IAAA,UAAU,CAAC,OAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,gBAAgB,GAAG,OAAO,GAAG,IAAI,CAAC;IACxE;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,cAAc,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;IAC5D;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEA,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAqC,EAAA;AACxD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc;AAEjC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACpE;IAEA,mBAAmB,GAAA;QACjB,OAAO,CAAC,uBAAuB,EAAE,CAAA,uBAAA,EAA0B,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC;IAClF;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;YAC3C;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;QAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAc,yCAAyC,CAAC;QAClG,MAAM,KAAK,GAAG,WAAW,EAAE,aAAa,CAAc,yBAAyB,CAAC;QAEhF,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE;YAC7C;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAAC;AAErD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;YAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAE7C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;gBAChD;YACF;YAEA,MAAM,aAAa,GAAG,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC;YACjE,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC;YAC1D,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC;QACtD;IACF;wGA5GW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAnCb;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,WAAW,EAAE,aAAa;AAC3B,aAAA;SACF,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAMS,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlCS,mBAAmB,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAoCtD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAvCzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AAClE,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,WAAW,EAAA,aAAe;AAC3B,yBAAA;AACF,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,mBAAmB,EAAE,8BAA8B;AACpD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACF,iBAAA;;;AC/DD;MAWa,gBAAgB,CAAA;IAClB,OAAO,GAAG,KAAK,CAA0B,IAAI,+EACpD,KAAK,EAAE,kBAAkB,EAAA,CACzB;AAEiB,IAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACtC,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IACjE,WAAW,GAA4B,IAAI;AAEnD,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IAC1D;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAE9B,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO;IAC5B;AAEU,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IACpB;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACpB;IACF;wGAzCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uCAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,mBAAmB,EAAE,mCAAmC;AACxD,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,WAAW,EAAE,uBAAuB;AACrC,qBAAA;AACF,iBAAA;;;ACfM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK;AACvD,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;;MCuCpD,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAxBxBA,aAAS;YACT,aAAa;YACb,cAAc;YACd,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,eAAe;YACf,cAAc;YACd,cAAc;AACd,YAAA,gBAAgB,aAGhBA,aAAS;YACT,aAAa;YACb,cAAc;YACd,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,eAAe;YACf,cAAc;YACd,cAAc;YACd,gBAAgB,CAAA,EAAA,CAAA;yGAGP,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBA1B3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACPA,aAAS;wBACT,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,oBAAoB;wBACpB,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACPA,aAAS;wBACT,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,oBAAoB;wBACpB,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;ACvCD;;AAEG;;;;"}
|
|
@@ -13,6 +13,7 @@ function coerceProgressMax(value) {
|
|
|
13
13
|
const parsed = Number(value);
|
|
14
14
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;
|
|
15
15
|
}
|
|
16
|
+
/** Progress bar host with value and max state. */
|
|
16
17
|
class FrProgress {
|
|
17
18
|
value = input(0, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: coerceProgressValue });
|
|
18
19
|
max = input(100, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: coerceProgressMax });
|
|
@@ -54,6 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
54
55
|
},
|
|
55
56
|
}]
|
|
56
57
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
|
|
58
|
+
/** Indicator slot for progress. */
|
|
57
59
|
class FrProgressIndicator {
|
|
58
60
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrProgressIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
59
61
|
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 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-progress.mjs","sources":["../../../projects/components/progress/src/progress.ts","../../../projects/components/progress/progress.module.ts","../../../projects/components/progress/frame-ui-ng-components-progress.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nfunction coerceProgressValue(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : null;\r\n}\r\n\r\nfunction coerceProgressMax(value: unknown): number {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;\r\n}\r\n\r\n@Directive({\r\n selector: '[frProgress], frame-progress',\r\n exportAs: 'frProgress',\r\n host: {\r\n class: 'frame-progress',\r\n role: 'progressbar',\r\n '[attr.aria-valuemin]': 'isIndeterminate() ? null : 0',\r\n '[attr.aria-valuemax]': 'isIndeterminate() ? null : max()',\r\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-state]': 'state()',\r\n '[attr.data-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[style.--frame-progress-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-percent]': 'isIndeterminate() ? null : percentage() + \"%\"',\r\n },\r\n})\r\nexport class FrProgress {\r\n readonly value = input<number | null, unknown>(0, { transform: coerceProgressValue });\r\n readonly max = input<number, unknown>(100, { transform: coerceProgressMax });\r\n\r\n readonly isIndeterminate = computed(() => this.value() === null);\r\n\r\n readonly normalizedValue = computed(() => {\r\n const value = this.value();\r\n\r\n if (value === null) {\r\n return 0;\r\n }\r\n\r\n return clampNumber(value, 0, this.max());\r\n });\r\n\r\n readonly percentage = computed(() => (this.normalizedValue() / this.max()) * 100);\r\n\r\n readonly state = computed(() => {\r\n if (this.isIndeterminate()) {\r\n return 'indeterminate';\r\n }\r\n\r\n return this.normalizedValue() >= this.max() ? 'complete' : 'loading';\r\n });\r\n}\r\n\r\n@Directive({\r\n selector: '[frProgressIndicator], frame-progress-indicator',\r\n host: {\r\n class: 'frame-progress__indicator',\r\n },\r\n})\r\nexport class FrProgressIndicator {}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrProgress,\n FrProgressIndicator,\n} from './src/progress';\n\n@NgModule({\n imports: [\n FrProgress,\n FrProgressIndicator,\n ],\n exports: [\n FrProgress,\n FrProgressIndicator,\n ],\n})\nexport class FrProgressModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGA,SAAS,mBAAmB,CAAC,KAAc,EAAA;AACzC,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI;AAChD;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG;AAC7D;
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-progress.mjs","sources":["../../../projects/components/progress/src/progress.ts","../../../projects/components/progress/progress.module.ts","../../../projects/components/progress/frame-ui-ng-components-progress.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nfunction coerceProgressValue(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : null;\r\n}\r\n\r\nfunction coerceProgressMax(value: unknown): number {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;\r\n}\r\n\r\n/** Progress bar host with value and max state. */\r\n@Directive({\r\n selector: '[frProgress], frame-progress',\r\n exportAs: 'frProgress',\r\n host: {\r\n class: 'frame-progress',\r\n role: 'progressbar',\r\n '[attr.aria-valuemin]': 'isIndeterminate() ? null : 0',\r\n '[attr.aria-valuemax]': 'isIndeterminate() ? null : max()',\r\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-state]': 'state()',\r\n '[attr.data-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[style.--frame-progress-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-percent]': 'isIndeterminate() ? null : percentage() + \"%\"',\r\n },\r\n})\r\nexport class FrProgress {\r\n readonly value = input<number | null, unknown>(0, { transform: coerceProgressValue });\r\n readonly max = input<number, unknown>(100, { transform: coerceProgressMax });\r\n\r\n readonly isIndeterminate = computed(() => this.value() === null);\r\n\r\n readonly normalizedValue = computed(() => {\r\n const value = this.value();\r\n\r\n if (value === null) {\r\n return 0;\r\n }\r\n\r\n return clampNumber(value, 0, this.max());\r\n });\r\n\r\n readonly percentage = computed(() => (this.normalizedValue() / this.max()) * 100);\r\n\r\n readonly state = computed(() => {\r\n if (this.isIndeterminate()) {\r\n return 'indeterminate';\r\n }\r\n\r\n return this.normalizedValue() >= this.max() ? 'complete' : 'loading';\r\n });\r\n}\r\n\r\n/** Indicator slot for progress. */\r\n@Directive({\r\n selector: '[frProgressIndicator], frame-progress-indicator',\r\n host: {\r\n class: 'frame-progress__indicator',\r\n },\r\n})\r\nexport class FrProgressIndicator {}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrProgress,\n FrProgressIndicator,\n} from './src/progress';\n\n@NgModule({\n imports: [\n FrProgress,\n FrProgressIndicator,\n ],\n exports: [\n FrProgress,\n FrProgressIndicator,\n ],\n})\nexport class FrProgressModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { input, booleanAttribute, Directive, NgModule } from '@angular/core';
|
|
|
3
3
|
|
|
4
4
|
const FR_RADIO_GROUP_ORIENTATIONS = ['vertical', 'horizontal'];
|
|
5
5
|
const FR_RADIO_GROUP_VARIANTS = ['default', 'cards'];
|
|
6
|
+
/** Radio group host with orientation and variant controls. */
|
|
6
7
|
class FrRadioGroup {
|
|
7
8
|
orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
8
9
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
@@ -24,6 +25,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
24
25
|
},
|
|
25
26
|
}]
|
|
26
27
|
}], 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 }] }] } });
|
|
28
|
+
/** Item slot for radio group. */
|
|
27
29
|
class FrRadioGroupItem {
|
|
28
30
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
29
31
|
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 });
|
|
@@ -37,6 +39,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
37
39
|
},
|
|
38
40
|
}]
|
|
39
41
|
}] });
|
|
42
|
+
/** Field slot for radio group. */
|
|
40
43
|
class FrRadioGroupField {
|
|
41
44
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
42
45
|
invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -56,6 +59,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
56
59
|
},
|
|
57
60
|
}]
|
|
58
61
|
}], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
|
|
62
|
+
/** Card layout option for radio group choices. */
|
|
59
63
|
class FrRadioGroupCard {
|
|
60
64
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
61
65
|
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 });
|
|
@@ -69,6 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
69
73
|
},
|
|
70
74
|
}]
|
|
71
75
|
}] });
|
|
76
|
+
/** Meta slot for radio group card. */
|
|
72
77
|
class FrRadioGroupCardMeta {
|
|
73
78
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupCardMeta, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
74
79
|
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 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-radio-group.mjs","sources":["../../../projects/components/radio-group/src/radio-group.ts","../../../projects/components/radio-group/radio-group.module.ts","../../../projects/components/radio-group/frame-ui-ng-components-radio-group.ts"],"sourcesContent":["import { Directive, booleanAttribute, input } from '@angular/core';\n\nexport const FR_RADIO_GROUP_ORIENTATIONS = ['vertical', 'horizontal'] as const;\nexport const FR_RADIO_GROUP_VARIANTS = ['default', 'cards'] as const;\n\nexport type FrRadioGroupOrientation = (typeof FR_RADIO_GROUP_ORIENTATIONS)[number];\nexport type FrRadioGroupVariant = (typeof FR_RADIO_GROUP_VARIANTS)[number];\n\n@Directive({\n selector: '[frRadioGroup], frame-radio-group',\n exportAs: 'frRadioGroup',\n host: {\n class: 'frame-radio-group',\n role: 'radiogroup',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class FrRadioGroup {\n readonly orientation = input<FrRadioGroupOrientation>('vertical');\n readonly variant = input<FrRadioGroupVariant>('default');\n readonly disabled = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: 'input[type=radio][frRadioGroupItem]',\n host: {\n class: 'frame-radio-group__item',\n },\n})\nexport class FrRadioGroupItem {}\n\n@Directive({\n selector: 'label[frRadioGroupField]',\n host: {\n class: 'frame-field frame-radio-group__field',\n 'data-orientation': 'horizontal',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n role: 'group',\n },\n})\nexport class FrRadioGroupField {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: 'label[frRadioGroupCard]',\n host: {\n class: 'frame-radio-group__card',\n },\n})\nexport class FrRadioGroupCard {}\n\n@Directive({\n selector: '[frRadioGroupCardMeta]',\n host: {\n class: 'frame-radio-group__card-meta',\n },\n})\nexport class FrRadioGroupCardMeta {}\n","import { NgModule } from '@angular/core';\nimport {\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n} from './src/radio-group';\n\n@NgModule({\n imports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n exports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n})\nexport class FrRadioGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,2BAA2B,GAAG,CAAC,UAAU,EAAE,YAAY;MACvD,uBAAuB,GAAG,CAAC,SAAS,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-radio-group.mjs","sources":["../../../projects/components/radio-group/src/radio-group.ts","../../../projects/components/radio-group/radio-group.module.ts","../../../projects/components/radio-group/frame-ui-ng-components-radio-group.ts"],"sourcesContent":["import { Directive, booleanAttribute, input } from '@angular/core';\r\n\r\nexport const FR_RADIO_GROUP_ORIENTATIONS = ['vertical', 'horizontal'] as const;\r\nexport const FR_RADIO_GROUP_VARIANTS = ['default', 'cards'] as const;\r\n\r\nexport type FrRadioGroupOrientation = (typeof FR_RADIO_GROUP_ORIENTATIONS)[number];\r\nexport type FrRadioGroupVariant = (typeof FR_RADIO_GROUP_VARIANTS)[number];\r\n\r\n/** Radio group host with orientation and variant controls. */\r\n@Directive({\r\n selector: '[frRadioGroup], frame-radio-group',\r\n exportAs: 'frRadioGroup',\r\n host: {\r\n class: 'frame-radio-group',\r\n role: 'radiogroup',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n },\r\n})\r\nexport class FrRadioGroup {\r\n readonly orientation = input<FrRadioGroupOrientation>('vertical');\r\n readonly variant = input<FrRadioGroupVariant>('default');\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Item slot for radio group. */\r\n@Directive({\r\n selector: 'input[type=radio][frRadioGroupItem]',\r\n host: {\r\n class: 'frame-radio-group__item',\r\n },\r\n})\r\nexport class FrRadioGroupItem {}\r\n\r\n/** Field slot for radio group. */\r\n@Directive({\r\n selector: 'label[frRadioGroupField]',\r\n host: {\r\n class: 'frame-field frame-radio-group__field',\r\n 'data-orientation': 'horizontal',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\r\n role: 'group',\r\n },\r\n})\r\nexport class FrRadioGroupField {\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly invalid = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Card layout option for radio group choices. */\r\n@Directive({\r\n selector: 'label[frRadioGroupCard]',\r\n host: {\r\n class: 'frame-radio-group__card',\r\n },\r\n})\r\nexport class FrRadioGroupCard {}\r\n\r\n/** Meta slot for radio group card. */\r\n@Directive({\r\n selector: '[frRadioGroupCardMeta]',\r\n host: {\r\n class: 'frame-radio-group__card-meta',\r\n },\r\n})\r\nexport class FrRadioGroupCardMeta {}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n} from './src/radio-group';\n\n@NgModule({\n imports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n exports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n})\nexport class FrRadioGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,2BAA2B,GAAG,CAAC,UAAU,EAAE,YAAY;MACvD,uBAAuB,GAAG,CAAC,SAAS,EAAE,OAAO;AAK1D;MAYa,YAAY,CAAA;AACd,IAAA,WAAW,GAAG,KAAK,CAA0B,UAAU,kFAAC;AACxD,IAAA,OAAO,GAAG,KAAK,CAAsB,SAAS,8EAAC;IAC/C,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGAHtD,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,wBAAwB;AACjD,qBAAA;AACF,iBAAA;;AAOD;MAOa,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AACjC,qBAAA;AACF,iBAAA;;AAGD;MAWa,iBAAiB,CAAA;IACnB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGAFrD,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,EAAA,cAAA,EAAA,sCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sCAAsC;AAC7C,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA;AACF,iBAAA;;AAMD;MAOa,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AACjC,qBAAA;AACF,iBAAA;;AAGD;MAOa,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACtC,qBAAA;AACF,iBAAA;;;MCzCY,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAd3B,YAAY;YACZ,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;AACjB,YAAA,gBAAgB,aAGhB,YAAY;YACZ,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;YACjB,gBAAgB,CAAA,EAAA,CAAA;yGAGP,kBAAkB,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,oBAAoB;wBACpB,iBAAiB;wBACjB,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,oBAAoB;wBACpB,iBAAiB;wBACjB,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;ACxBD;;AAEG;;;;"}
|
|
@@ -4,6 +4,7 @@ import { clampNumber, coerceNumber } from '@frame-ui-ng/components/utils';
|
|
|
4
4
|
|
|
5
5
|
const FR_RESIZABLE_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
6
6
|
let nextResizableId = 0;
|
|
7
|
+
/** Resizable panel group that coordinates pane sizes. */
|
|
7
8
|
class FrResizablePanelGroup {
|
|
8
9
|
elementRef = inject((ElementRef));
|
|
9
10
|
groupId = `frame-resizable-${++nextResizableId}`;
|
|
@@ -69,6 +70,7 @@ class FrResizablePanelGroup {
|
|
|
69
70
|
const startPrevious = this.panelSize(previousPanel) ?? 0;
|
|
70
71
|
const startNext = this.panelSize(nextPanel) ?? 0;
|
|
71
72
|
const pairTotal = startPrevious + startNext;
|
|
73
|
+
// Keep pair resizing local so adjacent panels trade space without changing total layout.
|
|
72
74
|
const rtlMultiplier = this.orientation() === 'horizontal' && getComputedStyle(this.elementRef.nativeElement).direction === 'rtl'
|
|
73
75
|
? -1
|
|
74
76
|
: 1;
|
|
@@ -131,6 +133,7 @@ class FrResizablePanelGroup {
|
|
|
131
133
|
}
|
|
132
134
|
}
|
|
133
135
|
resizePair(previousPanel, nextPanel, pairTotal, requestedPreviousSize) {
|
|
136
|
+
// Clamp the previous panel first; the next panel receives the remaining pair size.
|
|
134
137
|
const previousMin = this.minSize(previousPanel);
|
|
135
138
|
const previousMax = Math.min(this.maxSize(previousPanel), pairTotal - this.minSize(nextPanel));
|
|
136
139
|
const previousSize = clampNumber(requestedPreviousSize, previousMin, previousMax);
|
|
@@ -143,6 +146,7 @@ class FrResizablePanelGroup {
|
|
|
143
146
|
applyPanelSize(panel, size) {
|
|
144
147
|
const normalizedSize = Math.max(size, 0);
|
|
145
148
|
const collapsedThreshold = this.collapsible(panel) ? this.collapsedSize(panel) : 0;
|
|
149
|
+
// Collapsible panels snap to their collapsed size instead of shrinking below it.
|
|
146
150
|
const collapsed = normalizedSize <= collapsedThreshold;
|
|
147
151
|
const appliedSize = collapsed ? collapsedThreshold : normalizedSize;
|
|
148
152
|
panel.style.flexBasis = `${appliedSize}%`;
|
|
@@ -222,6 +226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
222
226
|
},
|
|
223
227
|
}]
|
|
224
228
|
}], 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"] }] } });
|
|
229
|
+
/** Panel slot for resizable. */
|
|
225
230
|
class FrResizablePanel {
|
|
226
231
|
defaultSize = input(0, { ...(ngDevMode ? { debugName: "defaultSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
227
232
|
minSize = input(0, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
@@ -245,6 +250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
245
250
|
},
|
|
246
251
|
}]
|
|
247
252
|
}], 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 }] }] } });
|
|
253
|
+
/** Resize handle between adjacent resizable panels. */
|
|
248
254
|
class FrResizableHandle {
|
|
249
255
|
group = inject(FrResizablePanelGroup);
|
|
250
256
|
elementRef = inject((ElementRef));
|