@frame-ui-ng/components 0.2.0-beta.0 → 0.4.0-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/button/src/styles/button.css +20 -4
- package/button-group/src/styles/button-group.css +6 -0
- package/dropdown-menu/src/styles/_vars.css +1 -1
- package/dropdown-menu/src/styles/dropdown-menu-item.css +87 -87
- package/fesm2022/frame-ui-ng-components-calendar.mjs +369 -263
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-combobox.mjs +48 -51
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +162 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-date-picker.mjs +232 -226
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +45 -22
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +64 -69
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input.mjs +6 -3
- package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +93 -15
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +37 -36
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +16 -26
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-select.mjs +6 -3
- package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +19 -16
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +59 -10
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +53 -59
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +307 -254
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-utils.mjs +20 -0
- package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +10 -12
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +1047 -806
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/input/src/styles/input-group.css +50 -0
- package/item/src/styles/item.css +188 -187
- package/modal/src/styles/modal.css +10 -1
- package/package.json +10 -2
- package/select/src/styles/select-trigger.css +7 -36
- package/sidebar/src/styles/sidebar.css +10 -4
- package/src/styles/blueprint.css +102 -11
- package/src/styles/components.css +4 -4
- package/styles/blueprint.css +102 -11
- package/styles/components.css +4 -4
- package/styles.css +4 -4
- package/tooltip/src/styles/tooltip.css +7 -13
- package/types/frame-ui-ng-components-calendar.d.ts +14 -0
- package/types/frame-ui-ng-components-combobox.d.ts +1 -1
- package/types/frame-ui-ng-components-confirm-modal.d.ts +48 -0
- package/types/frame-ui-ng-components-context-menu.d.ts +2 -2
- package/types/frame-ui-ng-components-date-picker.d.ts +3 -1
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +3 -3
- package/types/frame-ui-ng-components-input-otp.d.ts +1 -1
- package/types/frame-ui-ng-components-input.d.ts +6 -3
- package/types/frame-ui-ng-components-modal.d.ts +18 -7
- package/types/frame-ui-ng-components-select.d.ts +6 -3
- package/types/frame-ui-ng-components-sheet.d.ts +2 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +8 -1
- package/types/frame-ui-ng-components-tooltip.d.ts +48 -73
- package/types/frame-ui-ng-components-utils.d.ts +5 -0
- package/types/frame-ui-ng-components.d.ts +87 -45
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, ElementRef, effect, Directive, input, booleanAttribute, computed, output, signal, Component, contentChild, forwardRef, ChangeDetectionStrategy, Renderer2, RendererStyleFlags2, DestroyRef, TemplateRef, model, afterNextRender,
|
|
2
|
+
import { InjectionToken, inject, ElementRef, effect, Directive, input, booleanAttribute, computed, output, signal, Component, contentChild, forwardRef, ChangeDetectionStrategy, Renderer2, RendererStyleFlags2, DestroyRef, TemplateRef, viewChild, model, afterNextRender, ViewContainerRef, Injectable, Injector, numberAttribute } 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
5
|
import { NgTemplateOutlet, NgClass, NgComponentOutlet, DOCUMENT } from '@angular/common';
|
|
@@ -8,7 +8,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 {
|
|
11
|
+
import { CdkOverlayOrigin, CdkConnectedOverlay } 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
14
|
import * as i1$2 from '@angular/cdk/menu';
|
|
@@ -17,6 +17,7 @@ import * as i1$3 from '@frame-ui-ng/components/dropdown-menu';
|
|
|
17
17
|
import { buildConnectedPositions as buildConnectedPositions$1, FR_DROPDOWN_MENU_CONTENT as FR_DROPDOWN_MENU_CONTENT$1, FrDropdownMenuTree as FrDropdownMenuTree$1, FR_DROPDOWN_MENU_PARENT as FR_DROPDOWN_MENU_PARENT$1, defaultPositions as defaultPositions$1, FrDropdownMenuTrigger as FrDropdownMenuTrigger$1, FrDropdownMenuContent as FrDropdownMenuContent$1, FrDropdownMenuPanel as FrDropdownMenuPanel$1, FrDropdownMenuItem as FrDropdownMenuItem$1, FrDropdownMenuCheckboxItem as FrDropdownMenuCheckboxItem$1, FrDropdownMenuRadioGroup as FrDropdownMenuRadioGroup$1, FrDropdownMenuRadioItem as FrDropdownMenuRadioItem$1, FrDropdownMenuLabel as FrDropdownMenuLabel$1, FrDropdownMenuSeparator as FrDropdownMenuSeparator$1, FrDropdownMenuShortcut as FrDropdownMenuShortcut$1, FrDropdownMenuItemIndicator as FrDropdownMenuItemIndicator$1, FrDropdownMenuSub as FrDropdownMenuSub$1, FrDropdownMenuSubTrigger as FrDropdownMenuSubTrigger$1, FrDropdownMenu as FrDropdownMenu$1 } from '@frame-ui-ng/components/dropdown-menu';
|
|
18
18
|
import { FrCalendar as FrCalendar$1 } from '@frame-ui-ng/components/calendar';
|
|
19
19
|
import { FrInput as FrInput$1 } from '@frame-ui-ng/components/input';
|
|
20
|
+
import { clampNumber, coerceNumber } from '@frame-ui-ng/components/utils';
|
|
20
21
|
|
|
21
22
|
const ACCORDION_ROOT = new InjectionToken('FrAccordion');
|
|
22
23
|
const ACCORDION_ITEM = new InjectionToken('FrAccordionItem');
|
|
@@ -812,9 +813,11 @@ class FrCalendar {
|
|
|
812
813
|
selected = input(undefined, ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
|
|
813
814
|
selectedChange = output();
|
|
814
815
|
monthChange = output();
|
|
816
|
+
focusedDate = signal(null, ...(ngDevMode ? [{ debugName: "focusedDate" }] : /* istanbul ignore next */ []));
|
|
815
817
|
navigatedMonth = signal(null, ...(ngDevMode ? [{ debugName: "navigatedMonth" }] : /* istanbul ignore next */ []));
|
|
816
818
|
internalValue = signal(null, ...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
|
|
817
819
|
cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
|
|
820
|
+
host = inject((ElementRef));
|
|
818
821
|
currentMonth = computed(() => startOfMonth(this.navigatedMonth() ?? this.month() ?? new Date()), ...(ngDevMode ? [{ debugName: "currentMonth" }] : /* istanbul ignore next */ []));
|
|
819
822
|
isDisabled = computed(() => this.disabled() || this.cvaDisabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
820
823
|
value = computed(() => {
|
|
@@ -831,6 +834,7 @@ class FrCalendar {
|
|
|
831
834
|
})), ...(ngDevMode ? [{ debugName: "monthOptions" }] : /* istanbul ignore next */ []));
|
|
832
835
|
yearOptions = computed(() => Array.from({ length: Math.max(0, this.toYear() - this.fromYear() + 1) }, (_, index) => this.fromYear() + index), ...(ngDevMode ? [{ debugName: "yearOptions" }] : /* istanbul ignore next */ []));
|
|
833
836
|
months = computed(() => Array.from({ length: Math.max(1, this.numberOfMonths()) }, (_, index) => this.buildMonth(addMonths(this.currentMonth(), index))), ...(ngDevMode ? [{ debugName: "months" }] : /* istanbul ignore next */ []));
|
|
837
|
+
activeDate = computed(() => this.resolveActiveDate(), ...(ngDevMode ? [{ debugName: "activeDate" }] : /* istanbul ignore next */ []));
|
|
834
838
|
onTouched = () => undefined;
|
|
835
839
|
onChange = () => undefined;
|
|
836
840
|
writeValue(value) {
|
|
@@ -875,6 +879,25 @@ class FrCalendar {
|
|
|
875
879
|
this.onChange(nextValue);
|
|
876
880
|
this.selectedChange.emit(nextValue);
|
|
877
881
|
}
|
|
882
|
+
handleDayKeydown(event, day) {
|
|
883
|
+
const offset = this.navigationOffset(event.key);
|
|
884
|
+
if (offset === null || this.isDisabled()) {
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
event.preventDefault();
|
|
888
|
+
const next = addDays(day.date, offset);
|
|
889
|
+
this.focusedDate.set(next);
|
|
890
|
+
if (!this.isDateVisible(next)) {
|
|
891
|
+
this.updateMonth(startOfMonth(next));
|
|
892
|
+
}
|
|
893
|
+
this.focusDay(next);
|
|
894
|
+
}
|
|
895
|
+
dayTabIndex(day) {
|
|
896
|
+
return sameDate(day.date, this.activeDate()) ? 0 : -1;
|
|
897
|
+
}
|
|
898
|
+
focusActiveDate() {
|
|
899
|
+
this.focusDay(this.activeDate());
|
|
900
|
+
}
|
|
878
901
|
monthLabel(date) {
|
|
879
902
|
return new Intl.DateTimeFormat(this.locale(), {
|
|
880
903
|
month: 'long',
|
|
@@ -891,6 +914,78 @@ class FrCalendar {
|
|
|
891
914
|
weekNumber(date) {
|
|
892
915
|
return isoWeekNumber(date).toString().padStart(2, '0');
|
|
893
916
|
}
|
|
917
|
+
navigationOffset(key) {
|
|
918
|
+
switch (key) {
|
|
919
|
+
case 'ArrowLeft':
|
|
920
|
+
return this.dir() === 'rtl' ? 1 : -1;
|
|
921
|
+
case 'ArrowRight':
|
|
922
|
+
return this.dir() === 'rtl' ? -1 : 1;
|
|
923
|
+
case 'ArrowUp':
|
|
924
|
+
return -7;
|
|
925
|
+
case 'ArrowDown':
|
|
926
|
+
return 7;
|
|
927
|
+
default:
|
|
928
|
+
return null;
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
resolveActiveDate() {
|
|
932
|
+
const focused = this.focusedDate();
|
|
933
|
+
if (focused && this.findDay(focused) && !this.isDayDisabled(focused)) {
|
|
934
|
+
return cloneDate(focused);
|
|
935
|
+
}
|
|
936
|
+
const selected = this.selectedDate();
|
|
937
|
+
if (selected && this.findDay(selected) && !this.isDayDisabled(selected)) {
|
|
938
|
+
return cloneDate(selected);
|
|
939
|
+
}
|
|
940
|
+
const today = new Date();
|
|
941
|
+
if (this.findDay(today) && !this.isDayDisabled(today)) {
|
|
942
|
+
return cloneDate(today);
|
|
943
|
+
}
|
|
944
|
+
const firstEnabled = this.months()
|
|
945
|
+
.flatMap((month) => month.weeks.flat())
|
|
946
|
+
.find((day) => !day.disabled);
|
|
947
|
+
return firstEnabled ? cloneDate(firstEnabled.date) : cloneDate(this.currentMonth());
|
|
948
|
+
}
|
|
949
|
+
selectedDate() {
|
|
950
|
+
const value = this.value();
|
|
951
|
+
if (value instanceof Date) {
|
|
952
|
+
return value;
|
|
953
|
+
}
|
|
954
|
+
if (isRange$1(value)) {
|
|
955
|
+
return value.from ?? value.to;
|
|
956
|
+
}
|
|
957
|
+
return null;
|
|
958
|
+
}
|
|
959
|
+
isDateVisible(date) {
|
|
960
|
+
return this.months().some((month) => month.weeks.some((week) => week.some((day) => sameDate(day.date, date))));
|
|
961
|
+
}
|
|
962
|
+
findDay(date) {
|
|
963
|
+
for (const month of this.months()) {
|
|
964
|
+
for (const week of month.weeks) {
|
|
965
|
+
const day = week.find((item) => sameDate(item.date, date));
|
|
966
|
+
if (day) {
|
|
967
|
+
return day;
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
return null;
|
|
972
|
+
}
|
|
973
|
+
isDayDisabled(date) {
|
|
974
|
+
return this.findDay(date)?.disabled ?? true;
|
|
975
|
+
}
|
|
976
|
+
focusDay(date) {
|
|
977
|
+
if (this.focusDayElement(date)) {
|
|
978
|
+
return;
|
|
979
|
+
}
|
|
980
|
+
setTimeout(() => {
|
|
981
|
+
this.focusDayElement(date);
|
|
982
|
+
});
|
|
983
|
+
}
|
|
984
|
+
focusDayElement(date) {
|
|
985
|
+
const button = this.host.nativeElement.querySelector(`.frame-calendar__day[data-date="${dateKey(date)}"]`);
|
|
986
|
+
button?.focus();
|
|
987
|
+
return !!button;
|
|
988
|
+
}
|
|
894
989
|
updateMonth(month) {
|
|
895
990
|
const next = startOfMonth(month);
|
|
896
991
|
this.navigatedMonth.set(next);
|
|
@@ -933,137 +1028,143 @@ class FrCalendar {
|
|
|
933
1028
|
};
|
|
934
1029
|
}
|
|
935
1030
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
936
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrCalendar, isStandalone: true, selector: "frame-calendar", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null }, numberOfMonths: { classPropertyName: "numberOfMonths", publicName: "numberOfMonths", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, fromYear: { classPropertyName: "fromYear", publicName: "fromYear", isSignal: true, isRequired: false, transformFunction: null }, toYear: { classPropertyName: "toYear", publicName: "toYear", isSignal: true, isRequired: false, transformFunction: null }, showOutsideDays: { classPropertyName: "showOutsideDays", publicName: "showOutsideDays", isSignal: true, isRequired: false, transformFunction: null }, showWeekNumber: { classPropertyName: "showWeekNumber", publicName: "showWeekNumber", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, dateLabels: { classPropertyName: "dateLabels", publicName: "dateLabels", isSignal: true, isRequired: false, transformFunction: null }, disabledMatcher: { classPropertyName: "disabledMatcher", publicName: "disabledMatcher", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthTemplate: { classPropertyName: "previousMonthTemplate", publicName: "previousMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, nextMonthTemplate: { classPropertyName: "nextMonthTemplate", publicName: "nextMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthIcon: { classPropertyName: "previousMonthIcon", publicName: "previousMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, nextMonthIcon: { classPropertyName: "nextMonthIcon", publicName: "nextMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, previousMonthLabel: { classPropertyName: "previousMonthLabel", publicName: "previousMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, nextMonthLabel: { classPropertyName: "nextMonthLabel", publicName: "nextMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, month: { classPropertyName: "month", publicName: "month", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange", monthChange: "monthChange" }, host: { properties: { "attr.data-mode": "mode()", "attr.data-caption-layout": "captionLayout()", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.dir": "dir()" }, classAttribute: "frame-calendar" }, providers: [VALUE_ACCESSOR], ngImport: i0, template: `
|
|
937
|
-
<div class="frame-calendar__header">
|
|
938
|
-
<button
|
|
939
|
-
class="frame-calendar__nav-button"
|
|
940
|
-
type="button"
|
|
941
|
-
[disabled]="isDisabled()"
|
|
942
|
-
(click)="previousMonth()"
|
|
943
|
-
[attr.aria-label]="previousMonthLabel()"
|
|
944
|
-
>
|
|
945
|
-
@if (previousMonthTemplate(); as template) {
|
|
946
|
-
<ng-container [ngTemplateOutlet]="template" />
|
|
947
|
-
} @else {
|
|
948
|
-
{{ previousMonthIcon() }}
|
|
949
|
-
}
|
|
950
|
-
</button>
|
|
951
|
-
|
|
952
|
-
@if (captionLayout() === 'dropdown') {
|
|
953
|
-
<div class="frame-calendar__caption-controls">
|
|
954
|
-
<select
|
|
955
|
-
class="frame-calendar__select"
|
|
956
|
-
[disabled]="isDisabled()"
|
|
957
|
-
[value]="currentMonth().getMonth()"
|
|
958
|
-
aria-label="Month"
|
|
959
|
-
(change)="setMonth($any($event.target).value)"
|
|
960
|
-
>
|
|
961
|
-
@for (month of monthOptions(); track month.value) {
|
|
962
|
-
<option [value]="month.value" [selected]="month.value === currentMonth().getMonth()">
|
|
963
|
-
{{ month.label }}
|
|
964
|
-
</option>
|
|
965
|
-
}
|
|
966
|
-
</select>
|
|
967
|
-
|
|
968
|
-
<select
|
|
969
|
-
class="frame-calendar__select"
|
|
970
|
-
[disabled]="isDisabled()"
|
|
971
|
-
[value]="currentMonth().getFullYear()"
|
|
972
|
-
aria-label="Year"
|
|
973
|
-
(change)="setYear($any($event.target).value)"
|
|
974
|
-
>
|
|
975
|
-
@for (year of yearOptions(); track year) {
|
|
976
|
-
<option [value]="year" [selected]="year === currentMonth().getFullYear()">
|
|
977
|
-
{{ year }}
|
|
978
|
-
</option>
|
|
979
|
-
}
|
|
980
|
-
</select>
|
|
981
|
-
</div>
|
|
982
|
-
} @else {
|
|
983
|
-
<div class="frame-calendar__caption" aria-live="polite">
|
|
984
|
-
{{ monthLabel(currentMonth()) }}
|
|
985
|
-
</div>
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
<button
|
|
989
|
-
class="frame-calendar__nav-button"
|
|
990
|
-
type="button"
|
|
991
|
-
[disabled]="isDisabled()"
|
|
992
|
-
(click)="nextMonth()"
|
|
993
|
-
[attr.aria-label]="nextMonthLabel()"
|
|
994
|
-
>
|
|
995
|
-
@if (nextMonthTemplate(); as template) {
|
|
996
|
-
<ng-container [ngTemplateOutlet]="template" />
|
|
997
|
-
} @else {
|
|
998
|
-
{{ nextMonthIcon() }}
|
|
999
|
-
}
|
|
1000
|
-
</button>
|
|
1001
|
-
</div>
|
|
1002
|
-
|
|
1003
|
-
<div class="frame-calendar__months">
|
|
1004
|
-
@for (month of months(); track month.key) {
|
|
1005
|
-
<section class="frame-calendar__month" [attr.aria-label]="month.label">
|
|
1006
|
-
@if (numberOfMonths() > 1 || captionLayout() === 'dropdown') {
|
|
1007
|
-
<h3 class="frame-calendar__month-caption">{{ month.label }}</h3>
|
|
1008
|
-
}
|
|
1009
|
-
|
|
1010
|
-
<table class="frame-calendar__table">
|
|
1011
|
-
<thead>
|
|
1012
|
-
<tr>
|
|
1013
|
-
@if (showWeekNumber()) {
|
|
1014
|
-
<th class="frame-calendar__week-number-header" scope="col">Wk</th>
|
|
1015
|
-
}
|
|
1016
|
-
@for (weekday of weekdayLabels(); track weekday) {
|
|
1017
|
-
<th class="frame-calendar__weekday" scope="col">{{ weekday }}</th>
|
|
1018
|
-
}
|
|
1019
|
-
</tr>
|
|
1020
|
-
</thead>
|
|
1021
|
-
<tbody>
|
|
1022
|
-
@for (week of month.weeks; track week[0].key) {
|
|
1023
|
-
<tr>
|
|
1024
|
-
@if (showWeekNumber()) {
|
|
1025
|
-
<td class="frame-calendar__week-number">{{ weekNumber(week[0].date) }}</td>
|
|
1026
|
-
}
|
|
1027
|
-
@for (day of week; track day.key) {
|
|
1028
|
-
<td
|
|
1029
|
-
class="frame-calendar__cell"
|
|
1030
|
-
[attr.data-outside]="day.outside ? '' : null"
|
|
1031
|
-
[attr.data-selected]="day.selected ? '' : null"
|
|
1032
|
-
[attr.data-range-start]="day.rangeStart ? '' : null"
|
|
1033
|
-
[attr.data-range-middle]="day.rangeMiddle ? '' : null"
|
|
1034
|
-
[attr.data-range-end]="day.rangeEnd ? '' : null"
|
|
1035
|
-
[attr.data-today]="day.today ? '' : null"
|
|
1036
|
-
[attr.data-disabled-date]="day.disabledDate ? '' : null"
|
|
1037
|
-
>
|
|
1038
|
-
<button
|
|
1039
|
-
class="frame-calendar__day"
|
|
1040
|
-
type="button"
|
|
1041
|
-
[disabled]="isDisabled() || day.disabled"
|
|
1042
|
-
[attr.
|
|
1043
|
-
[attr.
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1031
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrCalendar, isStandalone: true, selector: "frame-calendar", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null }, numberOfMonths: { classPropertyName: "numberOfMonths", publicName: "numberOfMonths", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, fromYear: { classPropertyName: "fromYear", publicName: "fromYear", isSignal: true, isRequired: false, transformFunction: null }, toYear: { classPropertyName: "toYear", publicName: "toYear", isSignal: true, isRequired: false, transformFunction: null }, showOutsideDays: { classPropertyName: "showOutsideDays", publicName: "showOutsideDays", isSignal: true, isRequired: false, transformFunction: null }, showWeekNumber: { classPropertyName: "showWeekNumber", publicName: "showWeekNumber", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, dateLabels: { classPropertyName: "dateLabels", publicName: "dateLabels", isSignal: true, isRequired: false, transformFunction: null }, disabledMatcher: { classPropertyName: "disabledMatcher", publicName: "disabledMatcher", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthTemplate: { classPropertyName: "previousMonthTemplate", publicName: "previousMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, nextMonthTemplate: { classPropertyName: "nextMonthTemplate", publicName: "nextMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthIcon: { classPropertyName: "previousMonthIcon", publicName: "previousMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, nextMonthIcon: { classPropertyName: "nextMonthIcon", publicName: "nextMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, previousMonthLabel: { classPropertyName: "previousMonthLabel", publicName: "previousMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, nextMonthLabel: { classPropertyName: "nextMonthLabel", publicName: "nextMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, month: { classPropertyName: "month", publicName: "month", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange", monthChange: "monthChange" }, host: { properties: { "attr.data-mode": "mode()", "attr.data-caption-layout": "captionLayout()", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.dir": "dir()" }, classAttribute: "frame-calendar" }, providers: [VALUE_ACCESSOR], ngImport: i0, template: `
|
|
1032
|
+
<div class="frame-calendar__header">
|
|
1033
|
+
<button
|
|
1034
|
+
class="frame-calendar__nav-button"
|
|
1035
|
+
type="button"
|
|
1036
|
+
[disabled]="isDisabled()"
|
|
1037
|
+
(click)="previousMonth()"
|
|
1038
|
+
[attr.aria-label]="previousMonthLabel()"
|
|
1039
|
+
>
|
|
1040
|
+
@if (previousMonthTemplate(); as template) {
|
|
1041
|
+
<ng-container [ngTemplateOutlet]="template" />
|
|
1042
|
+
} @else {
|
|
1043
|
+
{{ previousMonthIcon() }}
|
|
1044
|
+
}
|
|
1045
|
+
</button>
|
|
1046
|
+
|
|
1047
|
+
@if (captionLayout() === 'dropdown') {
|
|
1048
|
+
<div class="frame-calendar__caption-controls">
|
|
1049
|
+
<select
|
|
1050
|
+
class="frame-calendar__select"
|
|
1051
|
+
[disabled]="isDisabled()"
|
|
1052
|
+
[value]="currentMonth().getMonth()"
|
|
1053
|
+
aria-label="Month"
|
|
1054
|
+
(change)="setMonth($any($event.target).value)"
|
|
1055
|
+
>
|
|
1056
|
+
@for (month of monthOptions(); track month.value) {
|
|
1057
|
+
<option [value]="month.value" [selected]="month.value === currentMonth().getMonth()">
|
|
1058
|
+
{{ month.label }}
|
|
1059
|
+
</option>
|
|
1060
|
+
}
|
|
1061
|
+
</select>
|
|
1062
|
+
|
|
1063
|
+
<select
|
|
1064
|
+
class="frame-calendar__select"
|
|
1065
|
+
[disabled]="isDisabled()"
|
|
1066
|
+
[value]="currentMonth().getFullYear()"
|
|
1067
|
+
aria-label="Year"
|
|
1068
|
+
(change)="setYear($any($event.target).value)"
|
|
1069
|
+
>
|
|
1070
|
+
@for (year of yearOptions(); track year) {
|
|
1071
|
+
<option [value]="year" [selected]="year === currentMonth().getFullYear()">
|
|
1072
|
+
{{ year }}
|
|
1073
|
+
</option>
|
|
1074
|
+
}
|
|
1075
|
+
</select>
|
|
1076
|
+
</div>
|
|
1077
|
+
} @else {
|
|
1078
|
+
<div class="frame-calendar__caption" aria-live="polite">
|
|
1079
|
+
{{ monthLabel(currentMonth()) }}
|
|
1080
|
+
</div>
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
<button
|
|
1084
|
+
class="frame-calendar__nav-button"
|
|
1085
|
+
type="button"
|
|
1086
|
+
[disabled]="isDisabled()"
|
|
1087
|
+
(click)="nextMonth()"
|
|
1088
|
+
[attr.aria-label]="nextMonthLabel()"
|
|
1089
|
+
>
|
|
1090
|
+
@if (nextMonthTemplate(); as template) {
|
|
1091
|
+
<ng-container [ngTemplateOutlet]="template" />
|
|
1092
|
+
} @else {
|
|
1093
|
+
{{ nextMonthIcon() }}
|
|
1094
|
+
}
|
|
1095
|
+
</button>
|
|
1096
|
+
</div>
|
|
1097
|
+
|
|
1098
|
+
<div class="frame-calendar__months">
|
|
1099
|
+
@for (month of months(); track month.key) {
|
|
1100
|
+
<section class="frame-calendar__month" [attr.aria-label]="month.label">
|
|
1101
|
+
@if (numberOfMonths() > 1 || captionLayout() === 'dropdown') {
|
|
1102
|
+
<h3 class="frame-calendar__month-caption">{{ month.label }}</h3>
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
<table class="frame-calendar__table" role="grid" [attr.aria-readonly]="true">
|
|
1106
|
+
<thead>
|
|
1107
|
+
<tr>
|
|
1108
|
+
@if (showWeekNumber()) {
|
|
1109
|
+
<th class="frame-calendar__week-number-header" scope="col">Wk</th>
|
|
1110
|
+
}
|
|
1111
|
+
@for (weekday of weekdayLabels(); track weekday) {
|
|
1112
|
+
<th class="frame-calendar__weekday" scope="col">{{ weekday }}</th>
|
|
1113
|
+
}
|
|
1114
|
+
</tr>
|
|
1115
|
+
</thead>
|
|
1116
|
+
<tbody>
|
|
1117
|
+
@for (week of month.weeks; track week[0].key) {
|
|
1118
|
+
<tr>
|
|
1119
|
+
@if (showWeekNumber()) {
|
|
1120
|
+
<td class="frame-calendar__week-number">{{ weekNumber(week[0].date) }}</td>
|
|
1121
|
+
}
|
|
1122
|
+
@for (day of week; track day.key) {
|
|
1123
|
+
<td
|
|
1124
|
+
class="frame-calendar__cell"
|
|
1125
|
+
[attr.data-outside]="day.outside ? '' : null"
|
|
1126
|
+
[attr.data-selected]="day.selected ? '' : null"
|
|
1127
|
+
[attr.data-range-start]="day.rangeStart ? '' : null"
|
|
1128
|
+
[attr.data-range-middle]="day.rangeMiddle ? '' : null"
|
|
1129
|
+
[attr.data-range-end]="day.rangeEnd ? '' : null"
|
|
1130
|
+
[attr.data-today]="day.today ? '' : null"
|
|
1131
|
+
[attr.data-disabled-date]="day.disabledDate ? '' : null"
|
|
1132
|
+
>
|
|
1133
|
+
<button
|
|
1134
|
+
class="frame-calendar__day"
|
|
1135
|
+
type="button"
|
|
1136
|
+
[disabled]="isDisabled() || day.disabled"
|
|
1137
|
+
[attr.data-date]="day.key"
|
|
1138
|
+
[attr.tabindex]="dayTabIndex(day)"
|
|
1139
|
+
[attr.aria-label]="dayLabel(day.date)"
|
|
1140
|
+
[attr.aria-pressed]="day.selected ? 'true' : 'false'"
|
|
1141
|
+
[attr.aria-selected]="day.selected ? 'true' : 'false'"
|
|
1142
|
+
[attr.aria-current]="day.today ? 'date' : null"
|
|
1143
|
+
(click)="selectDay(day)"
|
|
1144
|
+
(focus)="focusedDate.set(day.date)"
|
|
1145
|
+
(keydown)="handleDayKeydown($event, day)"
|
|
1146
|
+
>
|
|
1147
|
+
@if (cellTemplate(); as template) {
|
|
1148
|
+
<ng-container
|
|
1149
|
+
[ngTemplateOutlet]="template"
|
|
1150
|
+
[ngTemplateOutletContext]="day"
|
|
1151
|
+
/>
|
|
1152
|
+
} @else {
|
|
1153
|
+
<span class="frame-calendar__day-number">{{ day.day }}</span>
|
|
1154
|
+
@if (day.dateLabel) {
|
|
1155
|
+
<span class="frame-calendar__day-meta">{{ day.dateLabel }}</span>
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
</button>
|
|
1159
|
+
</td>
|
|
1160
|
+
}
|
|
1161
|
+
</tr>
|
|
1162
|
+
}
|
|
1163
|
+
</tbody>
|
|
1164
|
+
</table>
|
|
1165
|
+
</section>
|
|
1166
|
+
}
|
|
1167
|
+
</div>
|
|
1067
1168
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1068
1169
|
}
|
|
1069
1170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCalendar, decorators: [{
|
|
@@ -1080,137 +1181,143 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
1080
1181
|
'[attr.data-disabled]': 'isDisabled() ? "" : null',
|
|
1081
1182
|
'[attr.dir]': 'dir()',
|
|
1082
1183
|
},
|
|
1083
|
-
template: `
|
|
1084
|
-
<div class="frame-calendar__header">
|
|
1085
|
-
<button
|
|
1086
|
-
class="frame-calendar__nav-button"
|
|
1087
|
-
type="button"
|
|
1088
|
-
[disabled]="isDisabled()"
|
|
1089
|
-
(click)="previousMonth()"
|
|
1090
|
-
[attr.aria-label]="previousMonthLabel()"
|
|
1091
|
-
>
|
|
1092
|
-
@if (previousMonthTemplate(); as template) {
|
|
1093
|
-
<ng-container [ngTemplateOutlet]="template" />
|
|
1094
|
-
} @else {
|
|
1095
|
-
{{ previousMonthIcon() }}
|
|
1096
|
-
}
|
|
1097
|
-
</button>
|
|
1098
|
-
|
|
1099
|
-
@if (captionLayout() === 'dropdown') {
|
|
1100
|
-
<div class="frame-calendar__caption-controls">
|
|
1101
|
-
<select
|
|
1102
|
-
class="frame-calendar__select"
|
|
1103
|
-
[disabled]="isDisabled()"
|
|
1104
|
-
[value]="currentMonth().getMonth()"
|
|
1105
|
-
aria-label="Month"
|
|
1106
|
-
(change)="setMonth($any($event.target).value)"
|
|
1107
|
-
>
|
|
1108
|
-
@for (month of monthOptions(); track month.value) {
|
|
1109
|
-
<option [value]="month.value" [selected]="month.value === currentMonth().getMonth()">
|
|
1110
|
-
{{ month.label }}
|
|
1111
|
-
</option>
|
|
1112
|
-
}
|
|
1113
|
-
</select>
|
|
1114
|
-
|
|
1115
|
-
<select
|
|
1116
|
-
class="frame-calendar__select"
|
|
1117
|
-
[disabled]="isDisabled()"
|
|
1118
|
-
[value]="currentMonth().getFullYear()"
|
|
1119
|
-
aria-label="Year"
|
|
1120
|
-
(change)="setYear($any($event.target).value)"
|
|
1121
|
-
>
|
|
1122
|
-
@for (year of yearOptions(); track year) {
|
|
1123
|
-
<option [value]="year" [selected]="year === currentMonth().getFullYear()">
|
|
1124
|
-
{{ year }}
|
|
1125
|
-
</option>
|
|
1126
|
-
}
|
|
1127
|
-
</select>
|
|
1128
|
-
</div>
|
|
1129
|
-
} @else {
|
|
1130
|
-
<div class="frame-calendar__caption" aria-live="polite">
|
|
1131
|
-
{{ monthLabel(currentMonth()) }}
|
|
1132
|
-
</div>
|
|
1133
|
-
}
|
|
1134
|
-
|
|
1135
|
-
<button
|
|
1136
|
-
class="frame-calendar__nav-button"
|
|
1137
|
-
type="button"
|
|
1138
|
-
[disabled]="isDisabled()"
|
|
1139
|
-
(click)="nextMonth()"
|
|
1140
|
-
[attr.aria-label]="nextMonthLabel()"
|
|
1141
|
-
>
|
|
1142
|
-
@if (nextMonthTemplate(); as template) {
|
|
1143
|
-
<ng-container [ngTemplateOutlet]="template" />
|
|
1144
|
-
} @else {
|
|
1145
|
-
{{ nextMonthIcon() }}
|
|
1146
|
-
}
|
|
1147
|
-
</button>
|
|
1148
|
-
</div>
|
|
1149
|
-
|
|
1150
|
-
<div class="frame-calendar__months">
|
|
1151
|
-
@for (month of months(); track month.key) {
|
|
1152
|
-
<section class="frame-calendar__month" [attr.aria-label]="month.label">
|
|
1153
|
-
@if (numberOfMonths() > 1 || captionLayout() === 'dropdown') {
|
|
1154
|
-
<h3 class="frame-calendar__month-caption">{{ month.label }}</h3>
|
|
1155
|
-
}
|
|
1156
|
-
|
|
1157
|
-
<table class="frame-calendar__table">
|
|
1158
|
-
<thead>
|
|
1159
|
-
<tr>
|
|
1160
|
-
@if (showWeekNumber()) {
|
|
1161
|
-
<th class="frame-calendar__week-number-header" scope="col">Wk</th>
|
|
1162
|
-
}
|
|
1163
|
-
@for (weekday of weekdayLabels(); track weekday) {
|
|
1164
|
-
<th class="frame-calendar__weekday" scope="col">{{ weekday }}</th>
|
|
1165
|
-
}
|
|
1166
|
-
</tr>
|
|
1167
|
-
</thead>
|
|
1168
|
-
<tbody>
|
|
1169
|
-
@for (week of month.weeks; track week[0].key) {
|
|
1170
|
-
<tr>
|
|
1171
|
-
@if (showWeekNumber()) {
|
|
1172
|
-
<td class="frame-calendar__week-number">{{ weekNumber(week[0].date) }}</td>
|
|
1173
|
-
}
|
|
1174
|
-
@for (day of week; track day.key) {
|
|
1175
|
-
<td
|
|
1176
|
-
class="frame-calendar__cell"
|
|
1177
|
-
[attr.data-outside]="day.outside ? '' : null"
|
|
1178
|
-
[attr.data-selected]="day.selected ? '' : null"
|
|
1179
|
-
[attr.data-range-start]="day.rangeStart ? '' : null"
|
|
1180
|
-
[attr.data-range-middle]="day.rangeMiddle ? '' : null"
|
|
1181
|
-
[attr.data-range-end]="day.rangeEnd ? '' : null"
|
|
1182
|
-
[attr.data-today]="day.today ? '' : null"
|
|
1183
|
-
[attr.data-disabled-date]="day.disabledDate ? '' : null"
|
|
1184
|
-
>
|
|
1185
|
-
<button
|
|
1186
|
-
class="frame-calendar__day"
|
|
1187
|
-
type="button"
|
|
1188
|
-
[disabled]="isDisabled() || day.disabled"
|
|
1189
|
-
[attr.
|
|
1190
|
-
[attr.
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1184
|
+
template: `
|
|
1185
|
+
<div class="frame-calendar__header">
|
|
1186
|
+
<button
|
|
1187
|
+
class="frame-calendar__nav-button"
|
|
1188
|
+
type="button"
|
|
1189
|
+
[disabled]="isDisabled()"
|
|
1190
|
+
(click)="previousMonth()"
|
|
1191
|
+
[attr.aria-label]="previousMonthLabel()"
|
|
1192
|
+
>
|
|
1193
|
+
@if (previousMonthTemplate(); as template) {
|
|
1194
|
+
<ng-container [ngTemplateOutlet]="template" />
|
|
1195
|
+
} @else {
|
|
1196
|
+
{{ previousMonthIcon() }}
|
|
1197
|
+
}
|
|
1198
|
+
</button>
|
|
1199
|
+
|
|
1200
|
+
@if (captionLayout() === 'dropdown') {
|
|
1201
|
+
<div class="frame-calendar__caption-controls">
|
|
1202
|
+
<select
|
|
1203
|
+
class="frame-calendar__select"
|
|
1204
|
+
[disabled]="isDisabled()"
|
|
1205
|
+
[value]="currentMonth().getMonth()"
|
|
1206
|
+
aria-label="Month"
|
|
1207
|
+
(change)="setMonth($any($event.target).value)"
|
|
1208
|
+
>
|
|
1209
|
+
@for (month of monthOptions(); track month.value) {
|
|
1210
|
+
<option [value]="month.value" [selected]="month.value === currentMonth().getMonth()">
|
|
1211
|
+
{{ month.label }}
|
|
1212
|
+
</option>
|
|
1213
|
+
}
|
|
1214
|
+
</select>
|
|
1215
|
+
|
|
1216
|
+
<select
|
|
1217
|
+
class="frame-calendar__select"
|
|
1218
|
+
[disabled]="isDisabled()"
|
|
1219
|
+
[value]="currentMonth().getFullYear()"
|
|
1220
|
+
aria-label="Year"
|
|
1221
|
+
(change)="setYear($any($event.target).value)"
|
|
1222
|
+
>
|
|
1223
|
+
@for (year of yearOptions(); track year) {
|
|
1224
|
+
<option [value]="year" [selected]="year === currentMonth().getFullYear()">
|
|
1225
|
+
{{ year }}
|
|
1226
|
+
</option>
|
|
1227
|
+
}
|
|
1228
|
+
</select>
|
|
1229
|
+
</div>
|
|
1230
|
+
} @else {
|
|
1231
|
+
<div class="frame-calendar__caption" aria-live="polite">
|
|
1232
|
+
{{ monthLabel(currentMonth()) }}
|
|
1233
|
+
</div>
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
<button
|
|
1237
|
+
class="frame-calendar__nav-button"
|
|
1238
|
+
type="button"
|
|
1239
|
+
[disabled]="isDisabled()"
|
|
1240
|
+
(click)="nextMonth()"
|
|
1241
|
+
[attr.aria-label]="nextMonthLabel()"
|
|
1242
|
+
>
|
|
1243
|
+
@if (nextMonthTemplate(); as template) {
|
|
1244
|
+
<ng-container [ngTemplateOutlet]="template" />
|
|
1245
|
+
} @else {
|
|
1246
|
+
{{ nextMonthIcon() }}
|
|
1247
|
+
}
|
|
1248
|
+
</button>
|
|
1249
|
+
</div>
|
|
1250
|
+
|
|
1251
|
+
<div class="frame-calendar__months">
|
|
1252
|
+
@for (month of months(); track month.key) {
|
|
1253
|
+
<section class="frame-calendar__month" [attr.aria-label]="month.label">
|
|
1254
|
+
@if (numberOfMonths() > 1 || captionLayout() === 'dropdown') {
|
|
1255
|
+
<h3 class="frame-calendar__month-caption">{{ month.label }}</h3>
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1258
|
+
<table class="frame-calendar__table" role="grid" [attr.aria-readonly]="true">
|
|
1259
|
+
<thead>
|
|
1260
|
+
<tr>
|
|
1261
|
+
@if (showWeekNumber()) {
|
|
1262
|
+
<th class="frame-calendar__week-number-header" scope="col">Wk</th>
|
|
1263
|
+
}
|
|
1264
|
+
@for (weekday of weekdayLabels(); track weekday) {
|
|
1265
|
+
<th class="frame-calendar__weekday" scope="col">{{ weekday }}</th>
|
|
1266
|
+
}
|
|
1267
|
+
</tr>
|
|
1268
|
+
</thead>
|
|
1269
|
+
<tbody>
|
|
1270
|
+
@for (week of month.weeks; track week[0].key) {
|
|
1271
|
+
<tr>
|
|
1272
|
+
@if (showWeekNumber()) {
|
|
1273
|
+
<td class="frame-calendar__week-number">{{ weekNumber(week[0].date) }}</td>
|
|
1274
|
+
}
|
|
1275
|
+
@for (day of week; track day.key) {
|
|
1276
|
+
<td
|
|
1277
|
+
class="frame-calendar__cell"
|
|
1278
|
+
[attr.data-outside]="day.outside ? '' : null"
|
|
1279
|
+
[attr.data-selected]="day.selected ? '' : null"
|
|
1280
|
+
[attr.data-range-start]="day.rangeStart ? '' : null"
|
|
1281
|
+
[attr.data-range-middle]="day.rangeMiddle ? '' : null"
|
|
1282
|
+
[attr.data-range-end]="day.rangeEnd ? '' : null"
|
|
1283
|
+
[attr.data-today]="day.today ? '' : null"
|
|
1284
|
+
[attr.data-disabled-date]="day.disabledDate ? '' : null"
|
|
1285
|
+
>
|
|
1286
|
+
<button
|
|
1287
|
+
class="frame-calendar__day"
|
|
1288
|
+
type="button"
|
|
1289
|
+
[disabled]="isDisabled() || day.disabled"
|
|
1290
|
+
[attr.data-date]="day.key"
|
|
1291
|
+
[attr.tabindex]="dayTabIndex(day)"
|
|
1292
|
+
[attr.aria-label]="dayLabel(day.date)"
|
|
1293
|
+
[attr.aria-pressed]="day.selected ? 'true' : 'false'"
|
|
1294
|
+
[attr.aria-selected]="day.selected ? 'true' : 'false'"
|
|
1295
|
+
[attr.aria-current]="day.today ? 'date' : null"
|
|
1296
|
+
(click)="selectDay(day)"
|
|
1297
|
+
(focus)="focusedDate.set(day.date)"
|
|
1298
|
+
(keydown)="handleDayKeydown($event, day)"
|
|
1299
|
+
>
|
|
1300
|
+
@if (cellTemplate(); as template) {
|
|
1301
|
+
<ng-container
|
|
1302
|
+
[ngTemplateOutlet]="template"
|
|
1303
|
+
[ngTemplateOutletContext]="day"
|
|
1304
|
+
/>
|
|
1305
|
+
} @else {
|
|
1306
|
+
<span class="frame-calendar__day-number">{{ day.day }}</span>
|
|
1307
|
+
@if (day.dateLabel) {
|
|
1308
|
+
<span class="frame-calendar__day-meta">{{ day.dateLabel }}</span>
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
</button>
|
|
1312
|
+
</td>
|
|
1313
|
+
}
|
|
1314
|
+
</tr>
|
|
1315
|
+
}
|
|
1316
|
+
</tbody>
|
|
1317
|
+
</table>
|
|
1318
|
+
</section>
|
|
1319
|
+
}
|
|
1320
|
+
</div>
|
|
1214
1321
|
`,
|
|
1215
1322
|
}]
|
|
1216
1323
|
}], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], captionLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "captionLayout", required: false }] }], numberOfMonths: [{ type: i0.Input, args: [{ isSignal: true, alias: "numberOfMonths", required: false }] }], firstDayOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDayOfWeek", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], fromYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "fromYear", required: false }] }], toYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "toYear", required: false }] }], showOutsideDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "showOutsideDays", required: false }] }], showWeekNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "showWeekNumber", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], disabledDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDates", required: false }] }], dateLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateLabels", required: false }] }], disabledMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledMatcher", required: false }] }], cellTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellTemplate", required: false }] }], previousMonthTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthTemplate", required: false }] }], nextMonthTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthTemplate", required: false }] }], previousMonthIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthIcon", required: false }] }], nextMonthIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthIcon", required: false }] }], previousMonthLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthLabel", required: false }] }], nextMonthLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthLabel", required: false }] }], month: [{ type: i0.Input, args: [{ isSignal: true, alias: "month", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }], monthChange: [{ type: i0.Output, args: ["monthChange"] }] } });
|
|
@@ -2181,7 +2288,7 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2181
2288
|
itemsVersion = signal(0, ...(ngDevMode ? [{ debugName: "itemsVersion" }] : /* istanbul ignore next */ []));
|
|
2182
2289
|
selectedLabels = new Map();
|
|
2183
2290
|
resizeObserver = null;
|
|
2184
|
-
origin;
|
|
2291
|
+
origin = viewChild(CdkOverlayOrigin, ...(ngDevMode ? [{ debugName: "origin" }] : /* istanbul ignore next */ []));
|
|
2185
2292
|
content = contentChild(FrComboboxContent, ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
|
|
2186
2293
|
autoHighlight = input(false, { ...(ngDevMode ? { debugName: "autoHighlight" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
2187
2294
|
debugVisible = input(false, { ...(ngDevMode ? { debugName: "debugVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -2348,7 +2455,7 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2348
2455
|
this.itemsVersion.update((value) => value + 1);
|
|
2349
2456
|
}
|
|
2350
2457
|
measureAnchor() {
|
|
2351
|
-
const element = this.origin?.elementRef.nativeElement ?? this.elementRef.nativeElement;
|
|
2458
|
+
const element = this.origin()?.elementRef.nativeElement ?? this.elementRef.nativeElement;
|
|
2352
2459
|
if (typeof element?.getBoundingClientRect !== 'function') {
|
|
2353
2460
|
this.anchorWidth.set(null);
|
|
2354
2461
|
return;
|
|
@@ -2359,7 +2466,7 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2359
2466
|
if (typeof ResizeObserver === 'undefined') {
|
|
2360
2467
|
return;
|
|
2361
2468
|
}
|
|
2362
|
-
const element = this.origin?.elementRef.nativeElement ?? this.elementRef.nativeElement;
|
|
2469
|
+
const element = this.origin()?.elementRef.nativeElement ?? this.elementRef.nativeElement;
|
|
2363
2470
|
if (typeof element?.getBoundingClientRect !== 'function') {
|
|
2364
2471
|
return;
|
|
2365
2472
|
}
|
|
@@ -2373,27 +2480,27 @@ class FrCombobox extends FrControlValueAccessor$1 {
|
|
|
2373
2480
|
provide: FrComboboxRootLookup,
|
|
2374
2481
|
useExisting: FrCombobox,
|
|
2375
2482
|
},
|
|
2376
|
-
], queries: [{ propertyName: "content", first: true, predicate: FrComboboxContent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "origin", first: true, predicate: CdkOverlayOrigin, descendants: true }], exportAs: ["frCombobox"], usesInheritance: true, ngImport: i0, template: `
|
|
2377
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-combobox__anchor">
|
|
2378
|
-
<ng-content />
|
|
2379
|
-
</span>
|
|
2380
|
-
|
|
2381
|
-
<ng-template
|
|
2382
|
-
cdkConnectedOverlay
|
|
2383
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
2384
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
2385
|
-
[cdkConnectedOverlayPositions]="positions"
|
|
2386
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
2387
|
-
[cdkConnectedOverlayWidth]="overlayMinWidth()"
|
|
2388
|
-
[cdkConnectedOverlayMinWidth]="overlayMinWidth()"
|
|
2389
|
-
(overlayOutsideClick)="close()"
|
|
2390
|
-
(positionChange)="handlePositionChange($event)"
|
|
2391
|
-
(detach)="close()"
|
|
2392
|
-
>
|
|
2393
|
-
@if (content()) {
|
|
2394
|
-
<ng-container [ngTemplateOutlet]="content()!.templateRef" />
|
|
2395
|
-
}
|
|
2396
|
-
</ng-template>
|
|
2483
|
+
], queries: [{ propertyName: "content", first: true, predicate: FrComboboxContent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "origin", first: true, predicate: CdkOverlayOrigin, descendants: true, isSignal: true }], exportAs: ["frCombobox"], usesInheritance: true, ngImport: i0, template: `
|
|
2484
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-combobox__anchor">
|
|
2485
|
+
<ng-content />
|
|
2486
|
+
</span>
|
|
2487
|
+
|
|
2488
|
+
<ng-template
|
|
2489
|
+
cdkConnectedOverlay
|
|
2490
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
2491
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
2492
|
+
[cdkConnectedOverlayPositions]="positions"
|
|
2493
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
2494
|
+
[cdkConnectedOverlayWidth]="overlayMinWidth()"
|
|
2495
|
+
[cdkConnectedOverlayMinWidth]="overlayMinWidth()"
|
|
2496
|
+
(overlayOutsideClick)="close()"
|
|
2497
|
+
(positionChange)="handlePositionChange($event)"
|
|
2498
|
+
(detach)="close()"
|
|
2499
|
+
>
|
|
2500
|
+
@if (content()) {
|
|
2501
|
+
<ng-container [ngTemplateOutlet]="content()!.templateRef" />
|
|
2502
|
+
}
|
|
2503
|
+
</ng-template>
|
|
2397
2504
|
`, 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"] }] });
|
|
2398
2505
|
}
|
|
2399
2506
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCombobox, decorators: [{
|
|
@@ -2414,33 +2521,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
2414
2521
|
'[attr.data-disabled]': 'disabled() ? "" : null',
|
|
2415
2522
|
'[attr.data-invalid]': 'invalid() ? "" : null'
|
|
2416
2523
|
},
|
|
2417
|
-
template: `
|
|
2418
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-combobox__anchor">
|
|
2419
|
-
<ng-content />
|
|
2420
|
-
</span>
|
|
2421
|
-
|
|
2422
|
-
<ng-template
|
|
2423
|
-
cdkConnectedOverlay
|
|
2424
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
2425
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
2426
|
-
[cdkConnectedOverlayPositions]="positions"
|
|
2427
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
2428
|
-
[cdkConnectedOverlayWidth]="overlayMinWidth()"
|
|
2429
|
-
[cdkConnectedOverlayMinWidth]="overlayMinWidth()"
|
|
2430
|
-
(overlayOutsideClick)="close()"
|
|
2431
|
-
(positionChange)="handlePositionChange($event)"
|
|
2432
|
-
(detach)="close()"
|
|
2433
|
-
>
|
|
2434
|
-
@if (content()) {
|
|
2435
|
-
<ng-container [ngTemplateOutlet]="content()!.templateRef" />
|
|
2436
|
-
}
|
|
2437
|
-
</ng-template>
|
|
2524
|
+
template: `
|
|
2525
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-combobox__anchor">
|
|
2526
|
+
<ng-content />
|
|
2527
|
+
</span>
|
|
2528
|
+
|
|
2529
|
+
<ng-template
|
|
2530
|
+
cdkConnectedOverlay
|
|
2531
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
2532
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
2533
|
+
[cdkConnectedOverlayPositions]="positions"
|
|
2534
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
2535
|
+
[cdkConnectedOverlayWidth]="overlayMinWidth()"
|
|
2536
|
+
[cdkConnectedOverlayMinWidth]="overlayMinWidth()"
|
|
2537
|
+
(overlayOutsideClick)="close()"
|
|
2538
|
+
(positionChange)="handlePositionChange($event)"
|
|
2539
|
+
(detach)="close()"
|
|
2540
|
+
>
|
|
2541
|
+
@if (content()) {
|
|
2542
|
+
<ng-container [ngTemplateOutlet]="content()!.templateRef" />
|
|
2543
|
+
}
|
|
2544
|
+
</ng-template>
|
|
2438
2545
|
`,
|
|
2439
2546
|
}]
|
|
2440
|
-
}], ctorParameters: () => [], propDecorators: { origin: [{
|
|
2441
|
-
type: ViewChild,
|
|
2442
|
-
args: [CdkOverlayOrigin]
|
|
2443
|
-
}], 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"] }] } });
|
|
2547
|
+
}], 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"] }] } });
|
|
2444
2548
|
|
|
2445
2549
|
class FrComboboxInput {
|
|
2446
2550
|
root = inject(FrCombobox);
|
|
@@ -2918,7 +3022,7 @@ class FrCommandService {
|
|
|
2918
3022
|
withDefaultClasses(config) {
|
|
2919
3023
|
return {
|
|
2920
3024
|
ariaModal: true,
|
|
2921
|
-
autoFocus: '
|
|
3025
|
+
autoFocus: '[frCommandInput]',
|
|
2922
3026
|
restoreFocus: true,
|
|
2923
3027
|
width: 'min(calc(100vw - 2rem), 48rem)',
|
|
2924
3028
|
maxWidth: 'calc(100vw - 2rem)',
|
|
@@ -3953,6 +4057,7 @@ class FrDatePicker extends FrControlValueAccessor$1 {
|
|
|
3953
4057
|
valueChange = output();
|
|
3954
4058
|
openChange = output();
|
|
3955
4059
|
monthChange = output();
|
|
4060
|
+
calendar = viewChild(FrCalendar$1, ...(ngDevMode ? [{ debugName: "calendar" }] : /* istanbul ignore next */ []));
|
|
3956
4061
|
positions = POSITIONS;
|
|
3957
4062
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
3958
4063
|
overlaySide = signal('bottom', ...(ngDevMode ? [{ debugName: "overlaySide" }] : /* istanbul ignore next */ []));
|
|
@@ -4053,6 +4158,9 @@ class FrDatePicker extends FrControlValueAccessor$1 {
|
|
|
4053
4158
|
handlePositionChange(event) {
|
|
4054
4159
|
this.overlaySide.set(event.connectionPair.overlayY === 'bottom' ? 'top' : 'bottom');
|
|
4055
4160
|
}
|
|
4161
|
+
focusCalendar() {
|
|
4162
|
+
this.calendar()?.focusActiveDate();
|
|
4163
|
+
}
|
|
4056
4164
|
overlayPanelClasses() {
|
|
4057
4165
|
return ['frame-date-picker-overlay', `frame-date-picker-overlay--${this.overlaySide()}`];
|
|
4058
4166
|
}
|
|
@@ -4068,118 +4176,119 @@ class FrDatePicker extends FrControlValueAccessor$1 {
|
|
|
4068
4176
|
this.markAsTouched();
|
|
4069
4177
|
}
|
|
4070
4178
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4071
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrDatePicker, isStandalone: true, selector: "frame-date-picker", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null }, numberOfMonths: { classPropertyName: "numberOfMonths", publicName: "numberOfMonths", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, fromYear: { classPropertyName: "fromYear", publicName: "fromYear", isSignal: true, isRequired: false, transformFunction: null }, toYear: { classPropertyName: "toYear", publicName: "toYear", isSignal: true, isRequired: false, transformFunction: null }, showOutsideDays: { classPropertyName: "showOutsideDays", publicName: "showOutsideDays", isSignal: true, isRequired: false, transformFunction: null }, showWeekNumber: { classPropertyName: "showWeekNumber", publicName: "showWeekNumber", 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 }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, readonlyInput: { classPropertyName: "readonlyInput", publicName: "readonlyInput", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, debugVisible: { classPropertyName: "debugVisible", publicName: "debugVisible", isSignal: true, isRequired: false, transformFunction: null }, showTime: { classPropertyName: "showTime", publicName: "showTime", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, dialogLabel: { classPropertyName: "dialogLabel", publicName: "dialogLabel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, dateLabels: { classPropertyName: "dateLabels", publicName: "dateLabels", isSignal: true, isRequired: false, transformFunction: null }, disabledMatcher: { classPropertyName: "disabledMatcher", publicName: "disabledMatcher", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthTemplate: { classPropertyName: "previousMonthTemplate", publicName: "previousMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, nextMonthTemplate: { classPropertyName: "nextMonthTemplate", publicName: "nextMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthIcon: { classPropertyName: "previousMonthIcon", publicName: "previousMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, nextMonthIcon: { classPropertyName: "nextMonthIcon", publicName: "nextMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, previousMonthLabel: { classPropertyName: "previousMonthLabel", publicName: "previousMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, nextMonthLabel: { classPropertyName: "nextMonthLabel", publicName: "nextMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, month: { classPropertyName: "month", publicName: "month", isSignal: true, isRequired: false, transformFunction: null }, presets: { classPropertyName: "presets", publicName: "presets", isSignal: true, isRequired: false, transformFunction: null }, formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, parser: { classPropertyName: "parser", publicName: "parser", isSignal: true, isRequired: false, transformFunction: null }, timeLabel: { classPropertyName: "timeLabel", publicName: "timeLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", openChange: "openChange", monthChange: "monthChange" }, host: { properties: { "attr.data-open": "isOpen() ? \"\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-mode": "mode()", "attr.dir": "dir()" }, classAttribute: "frame-date-picker" }, providers: [provideDsValueAccessor$1(FrDatePicker)], exportAs: ["frDatePicker"], usesInheritance: true, ngImport: i0, template: `
|
|
4072
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-date-picker__anchor">
|
|
4073
|
-
@if (editable()) {
|
|
4074
|
-
<span class="frame-date-picker__input-wrap">
|
|
4075
|
-
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4076
|
-
<input
|
|
4077
|
-
class="frame-date-picker__input"
|
|
4078
|
-
type="text"
|
|
4079
|
-
[disabled]="disabled()"
|
|
4080
|
-
[readOnly]="readonlyInput()"
|
|
4081
|
-
[placeholder]="placeholder()"
|
|
4082
|
-
[value]="inputValue()"
|
|
4083
|
-
[attr.aria-expanded]="isOpen()"
|
|
4084
|
-
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4085
|
-
aria-haspopup="dialog"
|
|
4086
|
-
(focus)="open()"
|
|
4087
|
-
(click)="open()"
|
|
4088
|
-
(input)="handleInput($any($event.target).value)"
|
|
4089
|
-
(change)="commitInput($any($event.target).value)"
|
|
4090
|
-
(keydown)="handleTriggerKeydown($event)"
|
|
4091
|
-
(blur)="markAsTouched()"
|
|
4092
|
-
/>
|
|
4093
|
-
</span>
|
|
4094
|
-
} @else {
|
|
4095
|
-
<button
|
|
4096
|
-
class="frame-date-picker__trigger"
|
|
4097
|
-
type="button"
|
|
4098
|
-
[disabled]="disabled()"
|
|
4099
|
-
[attr.aria-expanded]="isOpen()"
|
|
4100
|
-
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4101
|
-
aria-haspopup="dialog"
|
|
4102
|
-
(click)="toggle()"
|
|
4103
|
-
(keydown)="handleTriggerKeydown($event)"
|
|
4104
|
-
>
|
|
4105
|
-
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4106
|
-
<span class="frame-date-picker__trigger-label" [attr.data-placeholder]="hasValue() ? null : ''">
|
|
4107
|
-
{{ displayValue() || placeholder() }}
|
|
4108
|
-
</span>
|
|
4109
|
-
</button>
|
|
4110
|
-
}
|
|
4111
|
-
</span>
|
|
4112
|
-
|
|
4113
|
-
<ng-template
|
|
4114
|
-
cdkConnectedOverlay
|
|
4115
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
4116
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
4117
|
-
[cdkConnectedOverlayPositions]="positions"
|
|
4118
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
4119
|
-
[cdkConnectedOverlayPush]="true"
|
|
4120
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
4121
|
-
(overlayOutsideClick)="close()"
|
|
4122
|
-
(
|
|
4123
|
-
(
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
[
|
|
4141
|
-
[
|
|
4142
|
-
[
|
|
4143
|
-
[
|
|
4144
|
-
[
|
|
4145
|
-
[
|
|
4146
|
-
[
|
|
4147
|
-
[
|
|
4148
|
-
[
|
|
4149
|
-
[
|
|
4150
|
-
[
|
|
4151
|
-
[
|
|
4152
|
-
[
|
|
4153
|
-
[
|
|
4154
|
-
[
|
|
4155
|
-
[
|
|
4156
|
-
[
|
|
4157
|
-
[
|
|
4158
|
-
[
|
|
4159
|
-
[
|
|
4160
|
-
[
|
|
4161
|
-
[
|
|
4162
|
-
[
|
|
4163
|
-
|
|
4164
|
-
(
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
<
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
[
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4179
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrDatePicker, isStandalone: true, selector: "frame-date-picker", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null }, numberOfMonths: { classPropertyName: "numberOfMonths", publicName: "numberOfMonths", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, fromYear: { classPropertyName: "fromYear", publicName: "fromYear", isSignal: true, isRequired: false, transformFunction: null }, toYear: { classPropertyName: "toYear", publicName: "toYear", isSignal: true, isRequired: false, transformFunction: null }, showOutsideDays: { classPropertyName: "showOutsideDays", publicName: "showOutsideDays", isSignal: true, isRequired: false, transformFunction: null }, showWeekNumber: { classPropertyName: "showWeekNumber", publicName: "showWeekNumber", 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 }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, readonlyInput: { classPropertyName: "readonlyInput", publicName: "readonlyInput", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, debugVisible: { classPropertyName: "debugVisible", publicName: "debugVisible", isSignal: true, isRequired: false, transformFunction: null }, showTime: { classPropertyName: "showTime", publicName: "showTime", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, dialogLabel: { classPropertyName: "dialogLabel", publicName: "dialogLabel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, dateLabels: { classPropertyName: "dateLabels", publicName: "dateLabels", isSignal: true, isRequired: false, transformFunction: null }, disabledMatcher: { classPropertyName: "disabledMatcher", publicName: "disabledMatcher", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthTemplate: { classPropertyName: "previousMonthTemplate", publicName: "previousMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, nextMonthTemplate: { classPropertyName: "nextMonthTemplate", publicName: "nextMonthTemplate", isSignal: true, isRequired: false, transformFunction: null }, previousMonthIcon: { classPropertyName: "previousMonthIcon", publicName: "previousMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, nextMonthIcon: { classPropertyName: "nextMonthIcon", publicName: "nextMonthIcon", isSignal: true, isRequired: false, transformFunction: null }, previousMonthLabel: { classPropertyName: "previousMonthLabel", publicName: "previousMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, nextMonthLabel: { classPropertyName: "nextMonthLabel", publicName: "nextMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, month: { classPropertyName: "month", publicName: "month", isSignal: true, isRequired: false, transformFunction: null }, presets: { classPropertyName: "presets", publicName: "presets", isSignal: true, isRequired: false, transformFunction: null }, formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, parser: { classPropertyName: "parser", publicName: "parser", isSignal: true, isRequired: false, transformFunction: null }, timeLabel: { classPropertyName: "timeLabel", publicName: "timeLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", openChange: "openChange", monthChange: "monthChange" }, host: { properties: { "attr.data-open": "isOpen() ? \"\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-mode": "mode()", "attr.dir": "dir()" }, classAttribute: "frame-date-picker" }, providers: [provideDsValueAccessor$1(FrDatePicker)], viewQueries: [{ propertyName: "calendar", first: true, predicate: FrCalendar$1, descendants: true, isSignal: true }], exportAs: ["frDatePicker"], usesInheritance: true, ngImport: i0, template: `
|
|
4180
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-date-picker__anchor">
|
|
4181
|
+
@if (editable()) {
|
|
4182
|
+
<span class="frame-date-picker__input-wrap">
|
|
4183
|
+
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4184
|
+
<input
|
|
4185
|
+
class="frame-date-picker__input"
|
|
4186
|
+
type="text"
|
|
4187
|
+
[disabled]="disabled()"
|
|
4188
|
+
[readOnly]="readonlyInput()"
|
|
4189
|
+
[placeholder]="placeholder()"
|
|
4190
|
+
[value]="inputValue()"
|
|
4191
|
+
[attr.aria-expanded]="isOpen()"
|
|
4192
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4193
|
+
aria-haspopup="dialog"
|
|
4194
|
+
(focus)="open()"
|
|
4195
|
+
(click)="open()"
|
|
4196
|
+
(input)="handleInput($any($event.target).value)"
|
|
4197
|
+
(change)="commitInput($any($event.target).value)"
|
|
4198
|
+
(keydown)="handleTriggerKeydown($event)"
|
|
4199
|
+
(blur)="markAsTouched()"
|
|
4200
|
+
/>
|
|
4201
|
+
</span>
|
|
4202
|
+
} @else {
|
|
4203
|
+
<button
|
|
4204
|
+
class="frame-date-picker__trigger"
|
|
4205
|
+
type="button"
|
|
4206
|
+
[disabled]="disabled()"
|
|
4207
|
+
[attr.aria-expanded]="isOpen()"
|
|
4208
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4209
|
+
aria-haspopup="dialog"
|
|
4210
|
+
(click)="toggle()"
|
|
4211
|
+
(keydown)="handleTriggerKeydown($event)"
|
|
4212
|
+
>
|
|
4213
|
+
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4214
|
+
<span class="frame-date-picker__trigger-label" [attr.data-placeholder]="hasValue() ? null : ''">
|
|
4215
|
+
{{ displayValue() || placeholder() }}
|
|
4216
|
+
</span>
|
|
4217
|
+
</button>
|
|
4218
|
+
}
|
|
4219
|
+
</span>
|
|
4220
|
+
|
|
4221
|
+
<ng-template
|
|
4222
|
+
cdkConnectedOverlay
|
|
4223
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
4224
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
4225
|
+
[cdkConnectedOverlayPositions]="positions"
|
|
4226
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
4227
|
+
[cdkConnectedOverlayPush]="true"
|
|
4228
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
4229
|
+
(overlayOutsideClick)="close()"
|
|
4230
|
+
(attach)="focusCalendar()"
|
|
4231
|
+
(detach)="close()"
|
|
4232
|
+
(positionChange)="handlePositionChange($event)"
|
|
4233
|
+
>
|
|
4234
|
+
<div class="frame-date-picker__content" role="dialog" [attr.aria-label]="dialogLabel()">
|
|
4235
|
+
@if (presets().length) {
|
|
4236
|
+
<div class="frame-date-picker__presets" aria-label="Date presets">
|
|
4237
|
+
@for (preset of presets(); track preset.label) {
|
|
4238
|
+
<button class="frame-date-picker__preset" type="button" (click)="selectPreset(preset)">
|
|
4239
|
+
{{ preset.label }}
|
|
4240
|
+
</button>
|
|
4241
|
+
}
|
|
4242
|
+
</div>
|
|
4243
|
+
}
|
|
4244
|
+
|
|
4245
|
+
<ng-container [ngTemplateOutlet]="headerTemplate() ?? null" />
|
|
4246
|
+
|
|
4247
|
+
<frame-calendar
|
|
4248
|
+
[mode]="mode()"
|
|
4249
|
+
[captionLayout]="captionLayout()"
|
|
4250
|
+
[numberOfMonths]="numberOfMonths()"
|
|
4251
|
+
[firstDayOfWeek]="firstDayOfWeek()"
|
|
4252
|
+
[locale]="locale()"
|
|
4253
|
+
[timeZone]="timeZone()"
|
|
4254
|
+
[dir]="dir()"
|
|
4255
|
+
[fromYear]="fromYear()"
|
|
4256
|
+
[toYear]="toYear()"
|
|
4257
|
+
[showOutsideDays]="showOutsideDays()"
|
|
4258
|
+
[showWeekNumber]="showWeekNumber()"
|
|
4259
|
+
[disabled]="disabled()"
|
|
4260
|
+
[disabledDates]="disabledDates()"
|
|
4261
|
+
[dateLabels]="dateLabels()"
|
|
4262
|
+
[disabledMatcher]="disabledMatcher()"
|
|
4263
|
+
[cellTemplate]="cellTemplate()"
|
|
4264
|
+
[previousMonthTemplate]="previousMonthTemplate()"
|
|
4265
|
+
[nextMonthTemplate]="nextMonthTemplate()"
|
|
4266
|
+
[previousMonthIcon]="previousMonthIcon()"
|
|
4267
|
+
[nextMonthIcon]="nextMonthIcon()"
|
|
4268
|
+
[previousMonthLabel]="previousMonthLabel()"
|
|
4269
|
+
[nextMonthLabel]="nextMonthLabel()"
|
|
4270
|
+
[month]="month()"
|
|
4271
|
+
[selected]="calendarValue()"
|
|
4272
|
+
(selectedChange)="selectCalendarValue($any($event))"
|
|
4273
|
+
(monthChange)="monthChange.emit($event)"
|
|
4274
|
+
/>
|
|
4275
|
+
|
|
4276
|
+
@if (showTime() && mode() === 'single') {
|
|
4277
|
+
<label class="frame-date-picker__time">
|
|
4278
|
+
<span class="frame-date-picker__time-label">{{ timeLabel() }}</span>
|
|
4279
|
+
<input
|
|
4280
|
+
class="frame-date-picker__time-input"
|
|
4281
|
+
type="time"
|
|
4282
|
+
[disabled]="disabled() || !singleDate()"
|
|
4283
|
+
[value]="timeValue()"
|
|
4284
|
+
(change)="setTime($any($event.target).value)"
|
|
4285
|
+
/>
|
|
4286
|
+
</label>
|
|
4287
|
+
}
|
|
4288
|
+
|
|
4289
|
+
<ng-container [ngTemplateOutlet]="footerTemplate() ?? null" />
|
|
4290
|
+
</div>
|
|
4291
|
+
</ng-template>
|
|
4183
4292
|
`, 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: "component", type: FrCalendar$1, selector: "frame-calendar", inputs: ["mode", "captionLayout", "numberOfMonths", "firstDayOfWeek", "locale", "timeZone", "dir", "fromYear", "toYear", "showOutsideDays", "showWeekNumber", "disabled", "disabledDates", "dateLabels", "disabledMatcher", "cellTemplate", "previousMonthTemplate", "nextMonthTemplate", "previousMonthIcon", "nextMonthIcon", "previousMonthLabel", "nextMonthLabel", "month", "selected"], outputs: ["selectedChange", "monthChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4184
4293
|
}
|
|
4185
4294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDatePicker, decorators: [{
|
|
@@ -4198,121 +4307,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4198
4307
|
'[attr.data-mode]': 'mode()',
|
|
4199
4308
|
'[attr.dir]': 'dir()',
|
|
4200
4309
|
},
|
|
4201
|
-
template: `
|
|
4202
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-date-picker__anchor">
|
|
4203
|
-
@if (editable()) {
|
|
4204
|
-
<span class="frame-date-picker__input-wrap">
|
|
4205
|
-
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4206
|
-
<input
|
|
4207
|
-
class="frame-date-picker__input"
|
|
4208
|
-
type="text"
|
|
4209
|
-
[disabled]="disabled()"
|
|
4210
|
-
[readOnly]="readonlyInput()"
|
|
4211
|
-
[placeholder]="placeholder()"
|
|
4212
|
-
[value]="inputValue()"
|
|
4213
|
-
[attr.aria-expanded]="isOpen()"
|
|
4214
|
-
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4215
|
-
aria-haspopup="dialog"
|
|
4216
|
-
(focus)="open()"
|
|
4217
|
-
(click)="open()"
|
|
4218
|
-
(input)="handleInput($any($event.target).value)"
|
|
4219
|
-
(change)="commitInput($any($event.target).value)"
|
|
4220
|
-
(keydown)="handleTriggerKeydown($event)"
|
|
4221
|
-
(blur)="markAsTouched()"
|
|
4222
|
-
/>
|
|
4223
|
-
</span>
|
|
4224
|
-
} @else {
|
|
4225
|
-
<button
|
|
4226
|
-
class="frame-date-picker__trigger"
|
|
4227
|
-
type="button"
|
|
4228
|
-
[disabled]="disabled()"
|
|
4229
|
-
[attr.aria-expanded]="isOpen()"
|
|
4230
|
-
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4231
|
-
aria-haspopup="dialog"
|
|
4232
|
-
(click)="toggle()"
|
|
4233
|
-
(keydown)="handleTriggerKeydown($event)"
|
|
4234
|
-
>
|
|
4235
|
-
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4236
|
-
<span class="frame-date-picker__trigger-label" [attr.data-placeholder]="hasValue() ? null : ''">
|
|
4237
|
-
{{ displayValue() || placeholder() }}
|
|
4238
|
-
</span>
|
|
4239
|
-
</button>
|
|
4240
|
-
}
|
|
4241
|
-
</span>
|
|
4242
|
-
|
|
4243
|
-
<ng-template
|
|
4244
|
-
cdkConnectedOverlay
|
|
4245
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
4246
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
4247
|
-
[cdkConnectedOverlayPositions]="positions"
|
|
4248
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
4249
|
-
[cdkConnectedOverlayPush]="true"
|
|
4250
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
4251
|
-
(overlayOutsideClick)="close()"
|
|
4252
|
-
(
|
|
4253
|
-
(
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
[
|
|
4271
|
-
[
|
|
4272
|
-
[
|
|
4273
|
-
[
|
|
4274
|
-
[
|
|
4275
|
-
[
|
|
4276
|
-
[
|
|
4277
|
-
[
|
|
4278
|
-
[
|
|
4279
|
-
[
|
|
4280
|
-
[
|
|
4281
|
-
[
|
|
4282
|
-
[
|
|
4283
|
-
[
|
|
4284
|
-
[
|
|
4285
|
-
[
|
|
4286
|
-
[
|
|
4287
|
-
[
|
|
4288
|
-
[
|
|
4289
|
-
[
|
|
4290
|
-
[
|
|
4291
|
-
[
|
|
4292
|
-
[
|
|
4293
|
-
|
|
4294
|
-
(
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
<
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
[
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4308
|
-
|
|
4309
|
-
|
|
4310
|
-
|
|
4311
|
-
|
|
4312
|
-
|
|
4310
|
+
template: `
|
|
4311
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-date-picker__anchor">
|
|
4312
|
+
@if (editable()) {
|
|
4313
|
+
<span class="frame-date-picker__input-wrap">
|
|
4314
|
+
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4315
|
+
<input
|
|
4316
|
+
class="frame-date-picker__input"
|
|
4317
|
+
type="text"
|
|
4318
|
+
[disabled]="disabled()"
|
|
4319
|
+
[readOnly]="readonlyInput()"
|
|
4320
|
+
[placeholder]="placeholder()"
|
|
4321
|
+
[value]="inputValue()"
|
|
4322
|
+
[attr.aria-expanded]="isOpen()"
|
|
4323
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4324
|
+
aria-haspopup="dialog"
|
|
4325
|
+
(focus)="open()"
|
|
4326
|
+
(click)="open()"
|
|
4327
|
+
(input)="handleInput($any($event.target).value)"
|
|
4328
|
+
(change)="commitInput($any($event.target).value)"
|
|
4329
|
+
(keydown)="handleTriggerKeydown($event)"
|
|
4330
|
+
(blur)="markAsTouched()"
|
|
4331
|
+
/>
|
|
4332
|
+
</span>
|
|
4333
|
+
} @else {
|
|
4334
|
+
<button
|
|
4335
|
+
class="frame-date-picker__trigger"
|
|
4336
|
+
type="button"
|
|
4337
|
+
[disabled]="disabled()"
|
|
4338
|
+
[attr.aria-expanded]="isOpen()"
|
|
4339
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
4340
|
+
aria-haspopup="dialog"
|
|
4341
|
+
(click)="toggle()"
|
|
4342
|
+
(keydown)="handleTriggerKeydown($event)"
|
|
4343
|
+
>
|
|
4344
|
+
<span class="frame-date-picker__icon" aria-hidden="true">{{ icon() }}</span>
|
|
4345
|
+
<span class="frame-date-picker__trigger-label" [attr.data-placeholder]="hasValue() ? null : ''">
|
|
4346
|
+
{{ displayValue() || placeholder() }}
|
|
4347
|
+
</span>
|
|
4348
|
+
</button>
|
|
4349
|
+
}
|
|
4350
|
+
</span>
|
|
4351
|
+
|
|
4352
|
+
<ng-template
|
|
4353
|
+
cdkConnectedOverlay
|
|
4354
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
4355
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
4356
|
+
[cdkConnectedOverlayPositions]="positions"
|
|
4357
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
4358
|
+
[cdkConnectedOverlayPush]="true"
|
|
4359
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
4360
|
+
(overlayOutsideClick)="close()"
|
|
4361
|
+
(attach)="focusCalendar()"
|
|
4362
|
+
(detach)="close()"
|
|
4363
|
+
(positionChange)="handlePositionChange($event)"
|
|
4364
|
+
>
|
|
4365
|
+
<div class="frame-date-picker__content" role="dialog" [attr.aria-label]="dialogLabel()">
|
|
4366
|
+
@if (presets().length) {
|
|
4367
|
+
<div class="frame-date-picker__presets" aria-label="Date presets">
|
|
4368
|
+
@for (preset of presets(); track preset.label) {
|
|
4369
|
+
<button class="frame-date-picker__preset" type="button" (click)="selectPreset(preset)">
|
|
4370
|
+
{{ preset.label }}
|
|
4371
|
+
</button>
|
|
4372
|
+
}
|
|
4373
|
+
</div>
|
|
4374
|
+
}
|
|
4375
|
+
|
|
4376
|
+
<ng-container [ngTemplateOutlet]="headerTemplate() ?? null" />
|
|
4377
|
+
|
|
4378
|
+
<frame-calendar
|
|
4379
|
+
[mode]="mode()"
|
|
4380
|
+
[captionLayout]="captionLayout()"
|
|
4381
|
+
[numberOfMonths]="numberOfMonths()"
|
|
4382
|
+
[firstDayOfWeek]="firstDayOfWeek()"
|
|
4383
|
+
[locale]="locale()"
|
|
4384
|
+
[timeZone]="timeZone()"
|
|
4385
|
+
[dir]="dir()"
|
|
4386
|
+
[fromYear]="fromYear()"
|
|
4387
|
+
[toYear]="toYear()"
|
|
4388
|
+
[showOutsideDays]="showOutsideDays()"
|
|
4389
|
+
[showWeekNumber]="showWeekNumber()"
|
|
4390
|
+
[disabled]="disabled()"
|
|
4391
|
+
[disabledDates]="disabledDates()"
|
|
4392
|
+
[dateLabels]="dateLabels()"
|
|
4393
|
+
[disabledMatcher]="disabledMatcher()"
|
|
4394
|
+
[cellTemplate]="cellTemplate()"
|
|
4395
|
+
[previousMonthTemplate]="previousMonthTemplate()"
|
|
4396
|
+
[nextMonthTemplate]="nextMonthTemplate()"
|
|
4397
|
+
[previousMonthIcon]="previousMonthIcon()"
|
|
4398
|
+
[nextMonthIcon]="nextMonthIcon()"
|
|
4399
|
+
[previousMonthLabel]="previousMonthLabel()"
|
|
4400
|
+
[nextMonthLabel]="nextMonthLabel()"
|
|
4401
|
+
[month]="month()"
|
|
4402
|
+
[selected]="calendarValue()"
|
|
4403
|
+
(selectedChange)="selectCalendarValue($any($event))"
|
|
4404
|
+
(monthChange)="monthChange.emit($event)"
|
|
4405
|
+
/>
|
|
4406
|
+
|
|
4407
|
+
@if (showTime() && mode() === 'single') {
|
|
4408
|
+
<label class="frame-date-picker__time">
|
|
4409
|
+
<span class="frame-date-picker__time-label">{{ timeLabel() }}</span>
|
|
4410
|
+
<input
|
|
4411
|
+
class="frame-date-picker__time-input"
|
|
4412
|
+
type="time"
|
|
4413
|
+
[disabled]="disabled() || !singleDate()"
|
|
4414
|
+
[value]="timeValue()"
|
|
4415
|
+
(change)="setTime($any($event.target).value)"
|
|
4416
|
+
/>
|
|
4417
|
+
</label>
|
|
4418
|
+
}
|
|
4419
|
+
|
|
4420
|
+
<ng-container [ngTemplateOutlet]="footerTemplate() ?? null" />
|
|
4421
|
+
</div>
|
|
4422
|
+
</ng-template>
|
|
4313
4423
|
`,
|
|
4314
4424
|
}]
|
|
4315
|
-
}], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], captionLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "captionLayout", required: false }] }], numberOfMonths: [{ type: i0.Input, args: [{ isSignal: true, alias: "numberOfMonths", required: false }] }], firstDayOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDayOfWeek", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], fromYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "fromYear", required: false }] }], toYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "toYear", required: false }] }], showOutsideDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "showOutsideDays", required: false }] }], showWeekNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "showWeekNumber", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], readonlyInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonlyInput", required: false }] }], closeOnSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnSelect", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], showTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTime", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], dialogLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "dialogLabel", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], disabledDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDates", required: false }] }], dateLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateLabels", required: false }] }], disabledMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledMatcher", required: false }] }], cellTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellTemplate", required: false }] }], previousMonthTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthTemplate", required: false }] }], nextMonthTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthTemplate", required: false }] }], previousMonthIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthIcon", required: false }] }], nextMonthIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthIcon", required: false }] }], previousMonthLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthLabel", required: false }] }], nextMonthLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthLabel", required: false }] }], headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTemplate", required: false }] }], footerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerTemplate", required: false }] }], month: [{ type: i0.Input, args: [{ isSignal: true, alias: "month", required: false }] }], presets: [{ type: i0.Input, args: [{ isSignal: true, alias: "presets", required: false }] }], formatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatter", required: false }] }], parser: [{ type: i0.Input, args: [{ isSignal: true, alias: "parser", required: false }] }], timeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], openChange: [{ type: i0.Output, args: ["openChange"] }], monthChange: [{ type: i0.Output, args: ["monthChange"] }] } });
|
|
4425
|
+
}], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], captionLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "captionLayout", required: false }] }], numberOfMonths: [{ type: i0.Input, args: [{ isSignal: true, alias: "numberOfMonths", required: false }] }], firstDayOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDayOfWeek", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], fromYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "fromYear", required: false }] }], toYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "toYear", required: false }] }], showOutsideDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "showOutsideDays", required: false }] }], showWeekNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "showWeekNumber", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], readonlyInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonlyInput", required: false }] }], closeOnSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnSelect", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], showTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTime", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], dialogLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "dialogLabel", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], disabledDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDates", required: false }] }], dateLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateLabels", required: false }] }], disabledMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledMatcher", required: false }] }], cellTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellTemplate", required: false }] }], previousMonthTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthTemplate", required: false }] }], nextMonthTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthTemplate", required: false }] }], previousMonthIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthIcon", required: false }] }], nextMonthIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthIcon", required: false }] }], previousMonthLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousMonthLabel", required: false }] }], nextMonthLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextMonthLabel", required: false }] }], headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTemplate", required: false }] }], footerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerTemplate", required: false }] }], month: [{ type: i0.Input, args: [{ isSignal: true, alias: "month", required: false }] }], presets: [{ type: i0.Input, args: [{ isSignal: true, alias: "presets", required: false }] }], formatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatter", required: false }] }], parser: [{ type: i0.Input, args: [{ isSignal: true, alias: "parser", required: false }] }], timeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], openChange: [{ type: i0.Output, args: ["openChange"] }], monthChange: [{ type: i0.Output, args: ["monthChange"] }], calendar: [{ type: i0.ViewChild, args: [i0.forwardRef(() => FrCalendar$1), { isSignal: true }] }] } });
|
|
4316
4426
|
function normalizeValue(value, mode) {
|
|
4317
4427
|
if (!value) {
|
|
4318
4428
|
return mode === 'range' ? { from: null, to: null } : null;
|
|
@@ -4377,27 +4487,41 @@ function mergeTime(date, timeSource) {
|
|
|
4377
4487
|
return next;
|
|
4378
4488
|
}
|
|
4379
4489
|
|
|
4490
|
+
const DEFAULT_SIDE_OFFSET = 4;
|
|
4491
|
+
const MIN_SUBMENU_SIDE_OFFSET = 8;
|
|
4380
4492
|
function defaultPositions(isSubmenu) {
|
|
4381
4493
|
return buildConnectedPositions({
|
|
4382
4494
|
align: 'start',
|
|
4383
4495
|
alignOffset: 0,
|
|
4384
4496
|
isSubmenu,
|
|
4385
|
-
side:
|
|
4386
|
-
sideOffset:
|
|
4497
|
+
side: 'auto',
|
|
4498
|
+
sideOffset: DEFAULT_SIDE_OFFSET,
|
|
4387
4499
|
});
|
|
4388
4500
|
}
|
|
4389
4501
|
function buildConnectedPositions(options) {
|
|
4390
|
-
const
|
|
4391
|
-
|
|
4502
|
+
const side = normalizeSide(options.side, options.isSubmenu);
|
|
4503
|
+
if (side === 'auto') {
|
|
4504
|
+
return autoSides(options.isSubmenu).flatMap((side) => primaryPlacement({
|
|
4505
|
+
...options,
|
|
4506
|
+
side,
|
|
4507
|
+
}));
|
|
4508
|
+
}
|
|
4509
|
+
return primaryPlacement({
|
|
4510
|
+
...options,
|
|
4511
|
+
side,
|
|
4512
|
+
});
|
|
4392
4513
|
}
|
|
4393
4514
|
function primaryPlacement(options) {
|
|
4394
|
-
if (options.
|
|
4395
|
-
const isRight = options.side
|
|
4396
|
-
const
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4515
|
+
if (options.side === 'left' || options.side === 'right') {
|
|
4516
|
+
const isRight = options.side === 'right';
|
|
4517
|
+
const sideOffset = options.isSubmenu
|
|
4518
|
+
? Math.max(options.sideOffset, MIN_SUBMENU_SIDE_OFFSET)
|
|
4519
|
+
: options.sideOffset;
|
|
4520
|
+
const horizontalOffset = isRight ? sideOffset : -sideOffset;
|
|
4521
|
+
const originY = horizontalOriginY(options.align);
|
|
4522
|
+
const overlayY = horizontalOverlayY(options.align);
|
|
4523
|
+
return [
|
|
4524
|
+
{
|
|
4401
4525
|
originX: isRight ? 'end' : 'start',
|
|
4402
4526
|
originY,
|
|
4403
4527
|
overlayX: isRight ? 'start' : 'end',
|
|
@@ -4405,7 +4529,7 @@ function primaryPlacement(options) {
|
|
|
4405
4529
|
offsetX: horizontalOffset,
|
|
4406
4530
|
offsetY: options.alignOffset,
|
|
4407
4531
|
},
|
|
4408
|
-
|
|
4532
|
+
{
|
|
4409
4533
|
originX: isRight ? 'start' : 'end',
|
|
4410
4534
|
originY,
|
|
4411
4535
|
overlayX: isRight ? 'end' : 'start',
|
|
@@ -4413,14 +4537,14 @@ function primaryPlacement(options) {
|
|
|
4413
4537
|
offsetX: -horizontalOffset,
|
|
4414
4538
|
offsetY: options.alignOffset,
|
|
4415
4539
|
},
|
|
4416
|
-
|
|
4540
|
+
];
|
|
4417
4541
|
}
|
|
4418
|
-
const isBottom = options.side
|
|
4542
|
+
const isBottom = options.side === 'bottom';
|
|
4419
4543
|
const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;
|
|
4420
4544
|
const originX = rootOriginX(options.align);
|
|
4421
4545
|
const overlayX = rootOverlayX(options.align);
|
|
4422
|
-
return
|
|
4423
|
-
|
|
4546
|
+
return [
|
|
4547
|
+
{
|
|
4424
4548
|
originX,
|
|
4425
4549
|
originY: isBottom ? 'bottom' : 'top',
|
|
4426
4550
|
overlayX,
|
|
@@ -4428,7 +4552,7 @@ function primaryPlacement(options) {
|
|
|
4428
4552
|
offsetX: options.alignOffset,
|
|
4429
4553
|
offsetY: verticalOffset,
|
|
4430
4554
|
},
|
|
4431
|
-
|
|
4555
|
+
{
|
|
4432
4556
|
originX,
|
|
4433
4557
|
originY: isBottom ? 'top' : 'bottom',
|
|
4434
4558
|
overlayX,
|
|
@@ -4436,7 +4560,16 @@ function primaryPlacement(options) {
|
|
|
4436
4560
|
offsetX: options.alignOffset,
|
|
4437
4561
|
offsetY: -verticalOffset,
|
|
4438
4562
|
},
|
|
4439
|
-
|
|
4563
|
+
];
|
|
4564
|
+
}
|
|
4565
|
+
function normalizeSide(side, isSubmenu) {
|
|
4566
|
+
if (!isSubmenu || side === 'left' || side === 'right') {
|
|
4567
|
+
return side;
|
|
4568
|
+
}
|
|
4569
|
+
return 'auto';
|
|
4570
|
+
}
|
|
4571
|
+
function autoSides(isSubmenu) {
|
|
4572
|
+
return isSubmenu ? ['right', 'left'] : ['bottom', 'top', 'right', 'left'];
|
|
4440
4573
|
}
|
|
4441
4574
|
function rootOriginX(align) {
|
|
4442
4575
|
if (align === 'center') {
|
|
@@ -4450,13 +4583,13 @@ function rootOverlayX(align) {
|
|
|
4450
4583
|
}
|
|
4451
4584
|
return align;
|
|
4452
4585
|
}
|
|
4453
|
-
function
|
|
4586
|
+
function horizontalOriginY(align) {
|
|
4454
4587
|
if (align === 'center') {
|
|
4455
4588
|
return 'center';
|
|
4456
4589
|
}
|
|
4457
4590
|
return align === 'end' ? 'bottom' : 'top';
|
|
4458
4591
|
}
|
|
4459
|
-
function
|
|
4592
|
+
function horizontalOverlayY(align) {
|
|
4460
4593
|
if (align === 'center') {
|
|
4461
4594
|
return 'center';
|
|
4462
4595
|
}
|
|
@@ -4578,7 +4711,7 @@ class FrDropdownMenuContent {
|
|
|
4578
4711
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
4579
4712
|
alignOffset = input(0, ...(ngDevMode ? [{ debugName: "alignOffset" }] : /* istanbul ignore next */ []));
|
|
4580
4713
|
debugVisible = input(false, { ...(ngDevMode ? { debugName: "debugVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4581
|
-
side = input('
|
|
4714
|
+
side = input('auto', ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
4582
4715
|
sideOffset = input(4, ...(ngDevMode ? [{ debugName: "sideOffset" }] : /* istanbul ignore next */ []));
|
|
4583
4716
|
isDebugVisible() {
|
|
4584
4717
|
return this.debugVisible();
|
|
@@ -4939,7 +5072,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4939
5072
|
}], propDecorators: { menuContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "frDropdownMenuSubTrigger", 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 }] }] } });
|
|
4940
5073
|
|
|
4941
5074
|
const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'];
|
|
4942
|
-
const FR_DROPDOWN_MENU_SIDES = ['bottom', 'left', 'right', 'top'];
|
|
5075
|
+
const FR_DROPDOWN_MENU_SIDES = ['auto', 'bottom', 'left', 'right', 'top'];
|
|
4943
5076
|
const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'];
|
|
4944
5077
|
const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'];
|
|
4945
5078
|
|
|
@@ -5740,6 +5873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5740
5873
|
}] });
|
|
5741
5874
|
|
|
5742
5875
|
const FR_INPUT_GROUP_ADDON_ALIGNS = ['inline-start', 'inline-end'];
|
|
5876
|
+
const FR_INPUT_GROUP_ADDON_VARIANTS = ['default', 'ghost'];
|
|
5743
5877
|
class FrInputGroup {
|
|
5744
5878
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5745
5879
|
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 });
|
|
@@ -5755,8 +5889,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5755
5889
|
}] });
|
|
5756
5890
|
class FrInputGroupAddon {
|
|
5757
5891
|
align = input('inline-start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
5892
|
+
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
5758
5893
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputGroupAddon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5759
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrInputGroupAddon, isStandalone: true, selector: "[frInputGroupAddon], frame-input-group-addon", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-align": "align()" }, classAttribute: "frame-input-group__addon" }, ngImport: i0 });
|
|
5894
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrInputGroupAddon, isStandalone: true, selector: "[frInputGroupAddon], frame-input-group-addon", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-align": "align()", "attr.data-variant": "variant()" }, classAttribute: "frame-input-group__addon" }, ngImport: i0 });
|
|
5760
5895
|
}
|
|
5761
5896
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputGroupAddon, decorators: [{
|
|
5762
5897
|
type: Directive,
|
|
@@ -5765,9 +5900,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5765
5900
|
host: {
|
|
5766
5901
|
class: 'frame-input-group__addon',
|
|
5767
5902
|
'[attr.data-align]': 'align()',
|
|
5903
|
+
'[attr.data-variant]': 'variant()',
|
|
5768
5904
|
},
|
|
5769
5905
|
}]
|
|
5770
|
-
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] } });
|
|
5906
|
+
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
5771
5907
|
class FrInputGroupText {
|
|
5772
5908
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputGroupText, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5773
5909
|
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 });
|
|
@@ -5800,7 +5936,7 @@ const FR_INPUT_OTP_PATTERN_DIGITS = /^[0-9]$/;
|
|
|
5800
5936
|
const FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS = /^[a-zA-Z0-9]$/;
|
|
5801
5937
|
const FR_INPUT_OTP_CONTROLLER = new InjectionToken('FrInputOtpController');
|
|
5802
5938
|
class FrInputOtp extends FrControlValueAccessor$1 {
|
|
5803
|
-
nativeInput;
|
|
5939
|
+
nativeInput = viewChild('nativeInput', ...(ngDevMode ? [{ debugName: "nativeInput" }] : /* istanbul ignore next */ []));
|
|
5804
5940
|
maxLength = input(6, { ...(ngDevMode ? { debugName: "maxLength" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
5805
5941
|
pattern = input(FR_INPUT_OTP_PATTERN_DIGITS, ...(ngDevMode ? [{ debugName: "pattern" }] : /* istanbul ignore next */ []));
|
|
5806
5942
|
disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled', transform: booleanAttribute });
|
|
@@ -5817,11 +5953,11 @@ class FrInputOtp extends FrControlValueAccessor$1 {
|
|
|
5817
5953
|
if (this.disabled()) {
|
|
5818
5954
|
return;
|
|
5819
5955
|
}
|
|
5820
|
-
const inputElement = this.nativeInput?.nativeElement;
|
|
5956
|
+
const inputElement = this.nativeInput()?.nativeElement;
|
|
5821
5957
|
if (!inputElement) {
|
|
5822
5958
|
return;
|
|
5823
5959
|
}
|
|
5824
|
-
const nextIndex =
|
|
5960
|
+
const nextIndex = clampNumber(index, 0, this.maxLength());
|
|
5825
5961
|
inputElement.focus();
|
|
5826
5962
|
inputElement.setSelectionRange(nextIndex, nextIndex);
|
|
5827
5963
|
this.activeIndex.set(nextIndex);
|
|
@@ -5868,9 +6004,9 @@ class FrInputOtp extends FrControlValueAccessor$1 {
|
|
|
5868
6004
|
this.focus(Math.min(next.length, this.maxLength()));
|
|
5869
6005
|
}
|
|
5870
6006
|
syncActiveIndex() {
|
|
5871
|
-
const inputElement = this.nativeInput?.nativeElement;
|
|
6007
|
+
const inputElement = this.nativeInput()?.nativeElement;
|
|
5872
6008
|
const index = inputElement?.selectionStart ?? this.value().length;
|
|
5873
|
-
this.activeIndex.set(
|
|
6009
|
+
this.activeIndex.set(clampNumber(index, 0, this.maxLength()));
|
|
5874
6010
|
}
|
|
5875
6011
|
markTouched() {
|
|
5876
6012
|
this.markAsTouched();
|
|
@@ -5900,7 +6036,7 @@ class FrInputOtp extends FrControlValueAccessor$1 {
|
|
|
5900
6036
|
}
|
|
5901
6037
|
replaceFrom(index, text) {
|
|
5902
6038
|
const value = this.value();
|
|
5903
|
-
const start =
|
|
6039
|
+
const start = clampNumber(index, 0, this.maxLength());
|
|
5904
6040
|
const next = `${value.slice(0, start)}${text}${value.slice(start + text.length)}`;
|
|
5905
6041
|
return this.sanitize(next);
|
|
5906
6042
|
}
|
|
@@ -5919,35 +6055,35 @@ class FrInputOtp extends FrControlValueAccessor$1 {
|
|
|
5919
6055
|
return characters.slice(0, this.maxLength()).join('');
|
|
5920
6056
|
}
|
|
5921
6057
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtp, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
5922
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
6058
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.16", type: FrInputOtp, isStandalone: true, selector: "frame-input-otp", inputs: { maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", 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 }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", complete: "complete" }, host: { attributes: { "role": "group" }, listeners: { "click": "focus(activeIndex())" }, properties: { "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-complete": "isComplete() ? \"\" : null" }, classAttribute: "frame-input-otp" }, providers: [
|
|
5923
6059
|
provideDsValueAccessor$1(FrInputOtp),
|
|
5924
6060
|
{
|
|
5925
6061
|
provide: FR_INPUT_OTP_CONTROLLER,
|
|
5926
6062
|
useExisting: FrInputOtp,
|
|
5927
6063
|
},
|
|
5928
|
-
], viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true }], exportAs: ["frInputOtp"], usesInheritance: true, ngImport: i0, template: `
|
|
5929
|
-
<input
|
|
5930
|
-
#nativeInput
|
|
5931
|
-
frInput
|
|
5932
|
-
class="frame-input-otp__native"
|
|
5933
|
-
type="text"
|
|
5934
|
-
inputmode="numeric"
|
|
5935
|
-
autocomplete="one-time-code"
|
|
5936
|
-
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
5937
|
-
[attr.aria-label]="ariaLabel()"
|
|
5938
|
-
[disabled]="disabled()"
|
|
5939
|
-
[maxLength]="maxLength()"
|
|
5940
|
-
[value]="value()"
|
|
5941
|
-
(blur)="markTouched()"
|
|
5942
|
-
(focus)="syncActiveIndex()"
|
|
5943
|
-
(input)="handleNativeInput($any($event.target).value)"
|
|
5944
|
-
(keydown)="handleKeydown($event)"
|
|
5945
|
-
(paste)="handlePaste($event)"
|
|
5946
|
-
(select)="syncActiveIndex()"
|
|
5947
|
-
(click)="syncActiveIndex()"
|
|
5948
|
-
/>
|
|
5949
|
-
|
|
5950
|
-
<ng-content />
|
|
6064
|
+
], viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true, isSignal: true }], exportAs: ["frInputOtp"], usesInheritance: true, ngImport: i0, template: `
|
|
6065
|
+
<input
|
|
6066
|
+
#nativeInput
|
|
6067
|
+
frInput
|
|
6068
|
+
class="frame-input-otp__native"
|
|
6069
|
+
type="text"
|
|
6070
|
+
inputmode="numeric"
|
|
6071
|
+
autocomplete="one-time-code"
|
|
6072
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
6073
|
+
[attr.aria-label]="ariaLabel()"
|
|
6074
|
+
[disabled]="disabled()"
|
|
6075
|
+
[maxLength]="maxLength()"
|
|
6076
|
+
[value]="value()"
|
|
6077
|
+
(blur)="markTouched()"
|
|
6078
|
+
(focus)="syncActiveIndex()"
|
|
6079
|
+
(input)="handleNativeInput($any($event.target).value)"
|
|
6080
|
+
(keydown)="handleKeydown($event)"
|
|
6081
|
+
(paste)="handlePaste($event)"
|
|
6082
|
+
(select)="syncActiveIndex()"
|
|
6083
|
+
(click)="syncActiveIndex()"
|
|
6084
|
+
/>
|
|
6085
|
+
|
|
6086
|
+
<ng-content />
|
|
5951
6087
|
`, isInline: true, dependencies: [{ kind: "directive", type: FrInput$1, selector: "input[frInput]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5952
6088
|
}
|
|
5953
6089
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtp, decorators: [{
|
|
@@ -5972,35 +6108,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
5972
6108
|
'[attr.data-complete]': 'isComplete() ? "" : null',
|
|
5973
6109
|
'(click)': 'focus(activeIndex())',
|
|
5974
6110
|
},
|
|
5975
|
-
template: `
|
|
5976
|
-
<input
|
|
5977
|
-
#nativeInput
|
|
5978
|
-
frInput
|
|
5979
|
-
class="frame-input-otp__native"
|
|
5980
|
-
type="text"
|
|
5981
|
-
inputmode="numeric"
|
|
5982
|
-
autocomplete="one-time-code"
|
|
5983
|
-
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
5984
|
-
[attr.aria-label]="ariaLabel()"
|
|
5985
|
-
[disabled]="disabled()"
|
|
5986
|
-
[maxLength]="maxLength()"
|
|
5987
|
-
[value]="value()"
|
|
5988
|
-
(blur)="markTouched()"
|
|
5989
|
-
(focus)="syncActiveIndex()"
|
|
5990
|
-
(input)="handleNativeInput($any($event.target).value)"
|
|
5991
|
-
(keydown)="handleKeydown($event)"
|
|
5992
|
-
(paste)="handlePaste($event)"
|
|
5993
|
-
(select)="syncActiveIndex()"
|
|
5994
|
-
(click)="syncActiveIndex()"
|
|
5995
|
-
/>
|
|
5996
|
-
|
|
5997
|
-
<ng-content />
|
|
6111
|
+
template: `
|
|
6112
|
+
<input
|
|
6113
|
+
#nativeInput
|
|
6114
|
+
frInput
|
|
6115
|
+
class="frame-input-otp__native"
|
|
6116
|
+
type="text"
|
|
6117
|
+
inputmode="numeric"
|
|
6118
|
+
autocomplete="one-time-code"
|
|
6119
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
6120
|
+
[attr.aria-label]="ariaLabel()"
|
|
6121
|
+
[disabled]="disabled()"
|
|
6122
|
+
[maxLength]="maxLength()"
|
|
6123
|
+
[value]="value()"
|
|
6124
|
+
(blur)="markTouched()"
|
|
6125
|
+
(focus)="syncActiveIndex()"
|
|
6126
|
+
(input)="handleNativeInput($any($event.target).value)"
|
|
6127
|
+
(keydown)="handleKeydown($event)"
|
|
6128
|
+
(paste)="handlePaste($event)"
|
|
6129
|
+
(select)="syncActiveIndex()"
|
|
6130
|
+
(click)="syncActiveIndex()"
|
|
6131
|
+
/>
|
|
6132
|
+
|
|
6133
|
+
<ng-content />
|
|
5998
6134
|
`,
|
|
5999
6135
|
}]
|
|
6000
|
-
}], propDecorators: { nativeInput: [{
|
|
6001
|
-
type: ViewChild,
|
|
6002
|
-
args: ['nativeInput']
|
|
6003
|
-
}], 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"] }] } });
|
|
6136
|
+
}], 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"] }] } });
|
|
6004
6137
|
class FrInputOtpGroup {
|
|
6005
6138
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6006
6139
|
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 });
|
|
@@ -6022,10 +6155,10 @@ class FrInputOtpSlot {
|
|
|
6022
6155
|
filled = computed(() => !!this.char(), ...(ngDevMode ? [{ debugName: "filled" }] : /* istanbul ignore next */ []));
|
|
6023
6156
|
active = computed(() => this.root.activeIndex() === this.index(), ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
6024
6157
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6025
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrInputOtpSlot, isStandalone: true, selector: "[frInputOtpSlot], frame-input-otp-slot", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, listeners: { "click": "root.focus(index())" }, properties: { "attr.data-active": "active() ? \"\" : null", "attr.data-filled": "filled() ? \"\" : null", "attr.data-invalid": "root.invalid() ? \"\" : null", "attr.data-disabled": "root.disabled() ? \"\" : null" }, classAttribute: "frame-input-otp__slot" }, ngImport: i0, template: `
|
|
6026
|
-
<span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
|
|
6027
|
-
{{ char() || placeholder() }}
|
|
6028
|
-
</span>
|
|
6158
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrInputOtpSlot, isStandalone: true, selector: "[frInputOtpSlot], frame-input-otp-slot", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, listeners: { "click": "root.focus(index())" }, properties: { "attr.data-active": "active() ? \"\" : null", "attr.data-filled": "filled() ? \"\" : null", "attr.data-invalid": "root.invalid() ? \"\" : null", "attr.data-disabled": "root.disabled() ? \"\" : null" }, classAttribute: "frame-input-otp__slot" }, ngImport: i0, template: `
|
|
6159
|
+
<span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
|
|
6160
|
+
{{ char() || placeholder() }}
|
|
6161
|
+
</span>
|
|
6029
6162
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6030
6163
|
}
|
|
6031
6164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpSlot, decorators: [{
|
|
@@ -6043,10 +6176,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6043
6176
|
'[attr.data-disabled]': 'root.disabled() ? "" : null',
|
|
6044
6177
|
'(click)': 'root.focus(index())',
|
|
6045
6178
|
},
|
|
6046
|
-
template: `
|
|
6047
|
-
<span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
|
|
6048
|
-
{{ char() || placeholder() }}
|
|
6049
|
-
</span>
|
|
6179
|
+
template: `
|
|
6180
|
+
<span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
|
|
6181
|
+
{{ char() || placeholder() }}
|
|
6182
|
+
</span>
|
|
6050
6183
|
`,
|
|
6051
6184
|
}]
|
|
6052
6185
|
}], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
|
|
@@ -6078,9 +6211,6 @@ function toMatcher(pattern) {
|
|
|
6078
6211
|
const regex = new RegExp(pattern);
|
|
6079
6212
|
return (character) => regex.test(character);
|
|
6080
6213
|
}
|
|
6081
|
-
function clamp$2(value, min, max) {
|
|
6082
|
-
return Math.max(min, Math.min(max, value));
|
|
6083
|
-
}
|
|
6084
6214
|
|
|
6085
6215
|
const FR_ITEM_VARIANTS = ['default', 'outline', 'muted'];
|
|
6086
6216
|
const FR_ITEM_SIZES = ['default', 'sm', 'xs'];
|
|
@@ -6697,7 +6827,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
6697
6827
|
}]
|
|
6698
6828
|
}] });
|
|
6699
6829
|
|
|
6830
|
+
class FrModalRef extends DialogRef {
|
|
6831
|
+
}
|
|
6832
|
+
|
|
6700
6833
|
const FR_MODAL_DATA = DIALOG_DATA;
|
|
6834
|
+
const FR_MODAL_REF = FrModalRef;
|
|
6701
6835
|
|
|
6702
6836
|
class FrModalShell {
|
|
6703
6837
|
dialogRef = inject((DialogRef));
|
|
@@ -6833,26 +6967,27 @@ const DEFAULT_PANEL_CLASS$1 = 'frame-modal__overlay-pane';
|
|
|
6833
6967
|
const DEFAULT_BACKDROP_CLASS$1 = 'frame-modal__backdrop';
|
|
6834
6968
|
class FrModalService {
|
|
6835
6969
|
dialog = inject(Dialog);
|
|
6836
|
-
open(content, config
|
|
6837
|
-
|
|
6970
|
+
open(content, dataOrConfig, config) {
|
|
6971
|
+
const resolvedConfig = resolveOpenConfig(content, dataOrConfig, config);
|
|
6972
|
+
if (isComponentType$1(content) && hasShellOptions$1(resolvedConfig)) {
|
|
6838
6973
|
const shellConfig = {
|
|
6839
|
-
...withoutShellOptions$1(
|
|
6974
|
+
...withoutShellOptions$1(resolvedConfig),
|
|
6840
6975
|
data: {
|
|
6841
6976
|
bodyComponent: content,
|
|
6842
|
-
bodyData:
|
|
6843
|
-
bodyInputs:
|
|
6844
|
-
description:
|
|
6845
|
-
footerActions:
|
|
6846
|
-
scrollable:
|
|
6847
|
-
showCloseButton:
|
|
6848
|
-
size:
|
|
6849
|
-
stickyFooter:
|
|
6850
|
-
title:
|
|
6977
|
+
bodyData: resolvedConfig.bodyData ?? resolvedConfig.data,
|
|
6978
|
+
bodyInputs: resolvedConfig.inputs ?? resolvedConfig.bodyInputs,
|
|
6979
|
+
description: resolvedConfig.description,
|
|
6980
|
+
footerActions: resolvedConfig.footerActions,
|
|
6981
|
+
scrollable: resolvedConfig.scrollable,
|
|
6982
|
+
showCloseButton: resolvedConfig.showCloseButton,
|
|
6983
|
+
size: resolvedConfig.size,
|
|
6984
|
+
stickyFooter: resolvedConfig.stickyFooter,
|
|
6985
|
+
title: resolvedConfig.title,
|
|
6851
6986
|
},
|
|
6852
6987
|
};
|
|
6853
6988
|
return this.dialog.open(FrModalShell, this.withDefaultClasses(shellConfig));
|
|
6854
6989
|
}
|
|
6855
|
-
return this.dialog.open(content, this.withDefaultClasses(
|
|
6990
|
+
return this.dialog.open(content, this.withDefaultClasses(resolvedConfig));
|
|
6856
6991
|
}
|
|
6857
6992
|
closeAll() {
|
|
6858
6993
|
this.dialog.closeAll();
|
|
@@ -6866,6 +7001,7 @@ class FrModalService {
|
|
|
6866
7001
|
...config,
|
|
6867
7002
|
panelClass: mergeClassList$1(config.panelClass, DEFAULT_PANEL_CLASS$1),
|
|
6868
7003
|
backdropClass: mergeClassList$1(config.backdropClass, DEFAULT_BACKDROP_CLASS$1),
|
|
7004
|
+
providers: withModalRefProvider(config.providers),
|
|
6869
7005
|
};
|
|
6870
7006
|
}
|
|
6871
7007
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -6884,6 +7020,7 @@ function hasShellOptions$1(config) {
|
|
|
6884
7020
|
config.bodyInputs,
|
|
6885
7021
|
config.description,
|
|
6886
7022
|
config.footerActions,
|
|
7023
|
+
config.inputs,
|
|
6887
7024
|
config.scrollable,
|
|
6888
7025
|
config.showCloseButton,
|
|
6889
7026
|
config.size,
|
|
@@ -6892,9 +7029,70 @@ function hasShellOptions$1(config) {
|
|
|
6892
7029
|
].some((value) => value !== undefined);
|
|
6893
7030
|
}
|
|
6894
7031
|
function withoutShellOptions$1(config) {
|
|
6895
|
-
const { bodyData: _bodyData, bodyInputs: _bodyInputs, description: _description, footerActions: _footerActions, scrollable: _scrollable, showCloseButton: _showCloseButton, size: _size, stickyFooter: _stickyFooter, title: _title, ...dialogConfig } = config;
|
|
7032
|
+
const { bodyData: _bodyData, bodyInputs: _bodyInputs, description: _description, footerActions: _footerActions, inputs: _inputs, scrollable: _scrollable, showCloseButton: _showCloseButton, size: _size, stickyFooter: _stickyFooter, title: _title, ...dialogConfig } = config;
|
|
6896
7033
|
return dialogConfig;
|
|
6897
7034
|
}
|
|
7035
|
+
function resolveOpenConfig(content, dataOrConfig, config) {
|
|
7036
|
+
if (!isComponentType$1(content)) {
|
|
7037
|
+
return (dataOrConfig ?? {});
|
|
7038
|
+
}
|
|
7039
|
+
if (config) {
|
|
7040
|
+
return {
|
|
7041
|
+
...config,
|
|
7042
|
+
data: dataOrConfig,
|
|
7043
|
+
};
|
|
7044
|
+
}
|
|
7045
|
+
if (dataOrConfig === undefined) {
|
|
7046
|
+
return {};
|
|
7047
|
+
}
|
|
7048
|
+
if (isModalConfig(dataOrConfig)) {
|
|
7049
|
+
return dataOrConfig;
|
|
7050
|
+
}
|
|
7051
|
+
return {
|
|
7052
|
+
data: dataOrConfig,
|
|
7053
|
+
};
|
|
7054
|
+
}
|
|
7055
|
+
const CONFIG_KEYS = new Set([
|
|
7056
|
+
'ariaDescribedBy',
|
|
7057
|
+
'ariaLabel',
|
|
7058
|
+
'ariaLabelledBy',
|
|
7059
|
+
'ariaModal',
|
|
7060
|
+
'autoFocus',
|
|
7061
|
+
'backdropClass',
|
|
7062
|
+
'bodyData',
|
|
7063
|
+
'bodyInputs',
|
|
7064
|
+
'closeOnDestroy',
|
|
7065
|
+
'closeOnNavigation',
|
|
7066
|
+
'data',
|
|
7067
|
+
'description',
|
|
7068
|
+
'direction',
|
|
7069
|
+
'disableClose',
|
|
7070
|
+
'footerActions',
|
|
7071
|
+
'height',
|
|
7072
|
+
'inputs',
|
|
7073
|
+
'maxHeight',
|
|
7074
|
+
'maxWidth',
|
|
7075
|
+
'minHeight',
|
|
7076
|
+
'minWidth',
|
|
7077
|
+
'panelClass',
|
|
7078
|
+
'positionStrategy',
|
|
7079
|
+
'providers',
|
|
7080
|
+
'restoreFocus',
|
|
7081
|
+
'role',
|
|
7082
|
+
'scrollable',
|
|
7083
|
+
'showCloseButton',
|
|
7084
|
+
'size',
|
|
7085
|
+
'stickyFooter',
|
|
7086
|
+
'title',
|
|
7087
|
+
'viewContainerRef',
|
|
7088
|
+
'width',
|
|
7089
|
+
]);
|
|
7090
|
+
function isModalConfig(value) {
|
|
7091
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
7092
|
+
return false;
|
|
7093
|
+
}
|
|
7094
|
+
return Object.keys(value).some((key) => CONFIG_KEYS.has(key));
|
|
7095
|
+
}
|
|
6898
7096
|
function mergeClassList$1(classList, defaultClass) {
|
|
6899
7097
|
const classes = Array.isArray(classList)
|
|
6900
7098
|
? classList
|
|
@@ -6903,6 +7101,16 @@ function mergeClassList$1(classList, defaultClass) {
|
|
|
6903
7101
|
: [];
|
|
6904
7102
|
return Array.from(new Set([defaultClass, ...classes].filter(Boolean)));
|
|
6905
7103
|
}
|
|
7104
|
+
function withModalRefProvider(providers) {
|
|
7105
|
+
const modalRefProvider = { provide: FrModalRef, useExisting: DialogRef };
|
|
7106
|
+
if (typeof providers === 'function') {
|
|
7107
|
+
return (dialogRef, config, container) => [
|
|
7108
|
+
modalRefProvider,
|
|
7109
|
+
...providers(dialogRef, config, container),
|
|
7110
|
+
];
|
|
7111
|
+
}
|
|
7112
|
+
return [modalRefProvider, ...(providers ?? [])];
|
|
7113
|
+
}
|
|
6906
7114
|
|
|
6907
7115
|
class FrModalTrigger {
|
|
6908
7116
|
static CUSTOM_PROPERTY_PREFIX = '--frame-modal-';
|
|
@@ -7225,7 +7433,7 @@ class FrPagination {
|
|
|
7225
7433
|
canNext = computed(() => this.page() < this.normalizedTotalPages(), ...(ngDevMode ? [{ debugName: "canNext" }] : /* istanbul ignore next */ []));
|
|
7226
7434
|
pages = computed(() => this.buildPages(), ...(ngDevMode ? [{ debugName: "pages" }] : /* istanbul ignore next */ []));
|
|
7227
7435
|
goToPage(page) {
|
|
7228
|
-
this.page.set(
|
|
7436
|
+
this.page.set(clampNumber(page, 1, this.normalizedTotalPages()));
|
|
7229
7437
|
}
|
|
7230
7438
|
goToPreviousPage() {
|
|
7231
7439
|
this.goToPage(this.page() - 1);
|
|
@@ -7240,7 +7448,7 @@ class FrPagination {
|
|
|
7240
7448
|
const totalPages = this.normalizedTotalPages();
|
|
7241
7449
|
const boundaryCount = Math.max(0, Math.floor(this.boundaryCount()));
|
|
7242
7450
|
const siblingCount = Math.max(0, Math.floor(this.siblingCount()));
|
|
7243
|
-
const currentPage =
|
|
7451
|
+
const currentPage = clampNumber(this.page(), 1, totalPages);
|
|
7244
7452
|
const pages = new Set();
|
|
7245
7453
|
for (let page = 1; page <= Math.min(boundaryCount, totalPages); page += 1) {
|
|
7246
7454
|
pages.add(page);
|
|
@@ -7380,13 +7588,13 @@ class FrPaginationPrevious {
|
|
|
7380
7588
|
this.pagination.goToPreviousPage();
|
|
7381
7589
|
}
|
|
7382
7590
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationPrevious, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7383
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationPrevious, isStandalone: true, selector: "a[frPaginationPrevious], button[frPaginationPrevious]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__previous" }, ngImport: i0, template: `
|
|
7384
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7385
|
-
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
7386
|
-
</span>
|
|
7387
|
-
@if (!iconOnly()) {
|
|
7388
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7389
|
-
}
|
|
7591
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationPrevious, isStandalone: true, selector: "a[frPaginationPrevious], button[frPaginationPrevious]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__previous" }, ngImport: i0, template: `
|
|
7592
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7593
|
+
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
7594
|
+
</span>
|
|
7595
|
+
@if (!iconOnly()) {
|
|
7596
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7597
|
+
}
|
|
7390
7598
|
`, isInline: true });
|
|
7391
7599
|
}
|
|
7392
7600
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationPrevious, decorators: [{
|
|
@@ -7403,13 +7611,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7403
7611
|
'[attr.tabindex]': 'isDisabled() ? "-1" : null',
|
|
7404
7612
|
'(click)': 'handleClick($event)',
|
|
7405
7613
|
},
|
|
7406
|
-
template: `
|
|
7407
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7408
|
-
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
7409
|
-
</span>
|
|
7410
|
-
@if (!iconOnly()) {
|
|
7411
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7412
|
-
}
|
|
7614
|
+
template: `
|
|
7615
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7616
|
+
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
7617
|
+
</span>
|
|
7618
|
+
@if (!iconOnly()) {
|
|
7619
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7620
|
+
}
|
|
7413
7621
|
`,
|
|
7414
7622
|
}]
|
|
7415
7623
|
}], 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 }] }] } });
|
|
@@ -7432,13 +7640,13 @@ class FrPaginationNext {
|
|
|
7432
7640
|
this.pagination.goToNextPage();
|
|
7433
7641
|
}
|
|
7434
7642
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationNext, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7435
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationNext, isStandalone: true, selector: "a[frPaginationNext], button[frPaginationNext]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__next" }, ngImport: i0, template: `
|
|
7436
|
-
@if (!iconOnly()) {
|
|
7437
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7438
|
-
}
|
|
7439
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7440
|
-
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
7441
|
-
</span>
|
|
7643
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationNext, isStandalone: true, selector: "a[frPaginationNext], button[frPaginationNext]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__next" }, ngImport: i0, template: `
|
|
7644
|
+
@if (!iconOnly()) {
|
|
7645
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7646
|
+
}
|
|
7647
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7648
|
+
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
7649
|
+
</span>
|
|
7442
7650
|
`, isInline: true });
|
|
7443
7651
|
}
|
|
7444
7652
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationNext, decorators: [{
|
|
@@ -7455,22 +7663,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7455
7663
|
'[attr.tabindex]': 'isDisabled() ? "-1" : null',
|
|
7456
7664
|
'(click)': 'handleClick($event)',
|
|
7457
7665
|
},
|
|
7458
|
-
template: `
|
|
7459
|
-
@if (!iconOnly()) {
|
|
7460
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7461
|
-
}
|
|
7462
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7463
|
-
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
7464
|
-
</span>
|
|
7666
|
+
template: `
|
|
7667
|
+
@if (!iconOnly()) {
|
|
7668
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
7669
|
+
}
|
|
7670
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
7671
|
+
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
7672
|
+
</span>
|
|
7465
7673
|
`,
|
|
7466
7674
|
}]
|
|
7467
7675
|
}], 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 }] }] } });
|
|
7468
7676
|
class FrPaginationEllipsis {
|
|
7469
7677
|
label = input('More pages', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
7470
7678
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationEllipsis, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7471
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrPaginationEllipsis, isStandalone: true, selector: "[frPaginationEllipsis], frame-pagination-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-pagination__ellipsis" }, ngImport: i0, template: `
|
|
7472
|
-
<span aria-hidden="true">...</span>
|
|
7473
|
-
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
7679
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrPaginationEllipsis, isStandalone: true, selector: "[frPaginationEllipsis], frame-pagination-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-pagination__ellipsis" }, ngImport: i0, template: `
|
|
7680
|
+
<span aria-hidden="true">...</span>
|
|
7681
|
+
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
7474
7682
|
`, isInline: true });
|
|
7475
7683
|
}
|
|
7476
7684
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationEllipsis, decorators: [{
|
|
@@ -7481,9 +7689,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7481
7689
|
class: 'frame-pagination__ellipsis',
|
|
7482
7690
|
role: 'presentation',
|
|
7483
7691
|
},
|
|
7484
|
-
template: `
|
|
7485
|
-
<span aria-hidden="true">...</span>
|
|
7486
|
-
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
7692
|
+
template: `
|
|
7693
|
+
<span aria-hidden="true">...</span>
|
|
7694
|
+
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
7487
7695
|
`,
|
|
7488
7696
|
}]
|
|
7489
7697
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
@@ -7898,7 +8106,7 @@ class FrProgress {
|
|
|
7898
8106
|
if (value === null) {
|
|
7899
8107
|
return 0;
|
|
7900
8108
|
}
|
|
7901
|
-
return
|
|
8109
|
+
return clampNumber(value, 0, this.max());
|
|
7902
8110
|
}, ...(ngDevMode ? [{ debugName: "normalizedValue" }] : /* istanbul ignore next */ []));
|
|
7903
8111
|
percentage = computed(() => (this.normalizedValue() / this.max()) * 100, ...(ngDevMode ? [{ debugName: "percentage" }] : /* istanbul ignore next */ []));
|
|
7904
8112
|
state = computed(() => {
|
|
@@ -8028,13 +8236,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8028
8236
|
|
|
8029
8237
|
const FR_RESIZABLE_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
8030
8238
|
let nextResizableId = 0;
|
|
8031
|
-
function coerceSize(value, fallback) {
|
|
8032
|
-
const parsed = Number(value);
|
|
8033
|
-
return Number.isFinite(parsed) ? parsed : fallback;
|
|
8034
|
-
}
|
|
8035
|
-
function clampSize(value, min, max) {
|
|
8036
|
-
return Math.min(Math.max(value, min), max);
|
|
8037
|
-
}
|
|
8038
8239
|
class FrResizablePanelGroup {
|
|
8039
8240
|
elementRef = inject((ElementRef));
|
|
8040
8241
|
groupId = `frame-resizable-${++nextResizableId}`;
|
|
@@ -8074,7 +8275,7 @@ class FrResizablePanelGroup {
|
|
|
8074
8275
|
panel.style.flexGrow = '0';
|
|
8075
8276
|
panel.style.flexShrink = '0';
|
|
8076
8277
|
if (!panel.style.flexBasis) {
|
|
8077
|
-
this.applyPanelSize(panel,
|
|
8278
|
+
this.applyPanelSize(panel, clampNumber(this.defaultSize(panel) ?? fallbackSize, this.minSize(panel), this.maxSize(panel)));
|
|
8078
8279
|
}
|
|
8079
8280
|
else {
|
|
8080
8281
|
this.applyPanelSize(panel, this.panelSize(panel) ?? 0);
|
|
@@ -8164,8 +8365,8 @@ class FrResizablePanelGroup {
|
|
|
8164
8365
|
resizePair(previousPanel, nextPanel, pairTotal, requestedPreviousSize) {
|
|
8165
8366
|
const previousMin = this.minSize(previousPanel);
|
|
8166
8367
|
const previousMax = Math.min(this.maxSize(previousPanel), pairTotal - this.minSize(nextPanel));
|
|
8167
|
-
const previousSize =
|
|
8168
|
-
const nextSize =
|
|
8368
|
+
const previousSize = clampNumber(requestedPreviousSize, previousMin, previousMax);
|
|
8369
|
+
const nextSize = clampNumber(pairTotal - previousSize, this.minSize(nextPanel), this.maxSize(nextPanel));
|
|
8169
8370
|
this.applyPanelSize(previousPanel, previousSize);
|
|
8170
8371
|
this.applyPanelSize(nextPanel, nextSize);
|
|
8171
8372
|
this.updateHandleMetadata();
|
|
@@ -8224,16 +8425,16 @@ class FrResizablePanelGroup {
|
|
|
8224
8425
|
}
|
|
8225
8426
|
defaultSize(panel) {
|
|
8226
8427
|
const value = panel.getAttribute('data-default-size');
|
|
8227
|
-
return value === null ? null :
|
|
8428
|
+
return value === null ? null : coerceNumber(value, 0);
|
|
8228
8429
|
}
|
|
8229
8430
|
minSize(panel) {
|
|
8230
|
-
return
|
|
8431
|
+
return coerceNumber(panel.getAttribute('data-min-size'), 0);
|
|
8231
8432
|
}
|
|
8232
8433
|
maxSize(panel) {
|
|
8233
|
-
return
|
|
8434
|
+
return coerceNumber(panel.getAttribute('data-max-size'), 100);
|
|
8234
8435
|
}
|
|
8235
8436
|
collapsedSize(panel) {
|
|
8236
|
-
return
|
|
8437
|
+
return coerceNumber(panel.getAttribute('data-collapsed-size'), 0);
|
|
8237
8438
|
}
|
|
8238
8439
|
collapsible(panel) {
|
|
8239
8440
|
return panel.hasAttribute('data-collapsible');
|
|
@@ -8254,11 +8455,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8254
8455
|
}]
|
|
8255
8456
|
}], 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"] }] } });
|
|
8256
8457
|
class FrResizablePanel {
|
|
8257
|
-
defaultSize = input(0, { ...(ngDevMode ? { debugName: "defaultSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
8258
|
-
minSize = input(0, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
8259
|
-
maxSize = input(100, { ...(ngDevMode ? { debugName: "maxSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
8458
|
+
defaultSize = input(0, { ...(ngDevMode ? { debugName: "defaultSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
8459
|
+
minSize = input(0, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
8460
|
+
maxSize = input(100, { ...(ngDevMode ? { debugName: "maxSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 100) });
|
|
8260
8461
|
collapsible = input(false, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
8261
|
-
collapsedSize = input(0, { ...(ngDevMode ? { debugName: "collapsedSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
8462
|
+
collapsedSize = input(0, { ...(ngDevMode ? { debugName: "collapsedSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
8262
8463
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrResizablePanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8263
8464
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrResizablePanel, isStandalone: true, selector: "[frResizablePanel], frame-resizable-panel", inputs: { defaultSize: { classPropertyName: "defaultSize", publicName: "defaultSize", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsedSize: { classPropertyName: "collapsedSize", publicName: "collapsedSize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-default-size": "defaultSize()", "attr.data-min-size": "minSize()", "attr.data-max-size": "maxSize()", "attr.data-collapsible": "collapsible() ? \"\" : null", "attr.data-collapsed-size": "collapsedSize()" }, classAttribute: "frame-resizable__panel" }, ngImport: i0 });
|
|
8264
8465
|
}
|
|
@@ -8307,15 +8508,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8307
8508
|
'[attr.data-orientation]': 'group.orientation()',
|
|
8308
8509
|
'[attr.data-handle]': 'withHandle() ? "" : null',
|
|
8309
8510
|
'[attr.data-disabled]': 'group.disabled() ? "" : null',
|
|
8511
|
+
'(pointerdown)': 'onPointerDown($event)',
|
|
8512
|
+
'(keydown)': 'onKeydown($event)',
|
|
8310
8513
|
},
|
|
8311
8514
|
}]
|
|
8312
|
-
}], propDecorators: { withHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "withHandle", required: false }] }]
|
|
8313
|
-
type: HostListener,
|
|
8314
|
-
args: ['pointerdown', ['$event']]
|
|
8315
|
-
}], onKeydown: [{
|
|
8316
|
-
type: HostListener,
|
|
8317
|
-
args: ['keydown', ['$event']]
|
|
8318
|
-
}] } });
|
|
8515
|
+
}], propDecorators: { withHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "withHandle", required: false }] }] } });
|
|
8319
8516
|
|
|
8320
8517
|
const FR_SELECT_POSITIONS = ['item-aligned', 'popper'];
|
|
8321
8518
|
class FrSelectContent extends FrDropdownMenuContent$1 {
|
|
@@ -8530,6 +8727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8530
8727
|
}]
|
|
8531
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 }] }] } });
|
|
8532
8729
|
|
|
8730
|
+
const FR_SELECT_ICON_POSITIONS = ['leading', 'trailing'];
|
|
8533
8731
|
class FrSelectValue {
|
|
8534
8732
|
select = inject(FrSelect);
|
|
8535
8733
|
placeholder = input('Select an option', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
@@ -8564,8 +8762,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8564
8762
|
}]
|
|
8565
8763
|
}] });
|
|
8566
8764
|
class FrSelectIcon {
|
|
8765
|
+
position = input('trailing', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
8567
8766
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8568
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
8767
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSelectIcon, isStandalone: true, selector: "[frSelectIcon], frame-select-icon", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, properties: { "attr.data-position": "position()" }, classAttribute: "frame-select__icon" }, ngImport: i0 });
|
|
8569
8768
|
}
|
|
8570
8769
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectIcon, decorators: [{
|
|
8571
8770
|
type: Directive,
|
|
@@ -8574,9 +8773,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8574
8773
|
host: {
|
|
8575
8774
|
class: 'frame-select__icon',
|
|
8576
8775
|
'aria-hidden': 'true',
|
|
8776
|
+
'[attr.data-position]': 'position()',
|
|
8577
8777
|
},
|
|
8578
8778
|
}]
|
|
8579
|
-
}] });
|
|
8779
|
+
}], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
|
|
8580
8780
|
class FrSelectError {
|
|
8581
8781
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSelectError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8582
8782
|
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 });
|
|
@@ -8686,10 +8886,6 @@ const FR_SLIDER_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
|
8686
8886
|
function coerceOrientation(value) {
|
|
8687
8887
|
return value === 'vertical' ? 'vertical' : 'horizontal';
|
|
8688
8888
|
}
|
|
8689
|
-
function coerceNumber(value, fallback) {
|
|
8690
|
-
const parsed = Number(value);
|
|
8691
|
-
return Number.isFinite(parsed) ? parsed : fallback;
|
|
8692
|
-
}
|
|
8693
8889
|
function coerceValue(value) {
|
|
8694
8890
|
if (Array.isArray(value)) {
|
|
8695
8891
|
return value.map((item) => coerceNumber(item, 0));
|
|
@@ -8825,7 +9021,7 @@ class FrSlider extends FrControlValueAccessor$1 {
|
|
|
8825
9021
|
const next = index < normalized.length - 1 ? normalized[index + 1] - minDistance : max;
|
|
8826
9022
|
const lower = activeIndex === index ? previous : min;
|
|
8827
9023
|
const upper = activeIndex === index ? next : max;
|
|
8828
|
-
return this.snap(
|
|
9024
|
+
return this.snap(clampNumber(value, lower, upper), min, step);
|
|
8829
9025
|
});
|
|
8830
9026
|
}
|
|
8831
9027
|
snap(value, min, step) {
|
|
@@ -8848,7 +9044,7 @@ class FrSlider extends FrControlValueAccessor$1 {
|
|
|
8848
9044
|
if (this.inverted()) {
|
|
8849
9045
|
percent = 1 - percent;
|
|
8850
9046
|
}
|
|
8851
|
-
return this.min() +
|
|
9047
|
+
return this.min() + clampNumber(percent, 0, 1) * (this.max() - this.min());
|
|
8852
9048
|
}
|
|
8853
9049
|
closestThumbIndex(value) {
|
|
8854
9050
|
return this.values().reduce((closestIndex, thumb, index, values) => {
|
|
@@ -8861,31 +9057,31 @@ class FrSlider extends FrControlValueAccessor$1 {
|
|
|
8861
9057
|
return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl';
|
|
8862
9058
|
}
|
|
8863
9059
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8864
|
-
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: `
|
|
8865
|
-
<span class="frame-slider__track">
|
|
8866
|
-
<span class="frame-slider__range"></span>
|
|
8867
|
-
</span>
|
|
8868
|
-
|
|
8869
|
-
@for (thumb of values(); track $index) {
|
|
8870
|
-
<input
|
|
8871
|
-
class="frame-slider__native"
|
|
8872
|
-
type="range"
|
|
8873
|
-
[attr.aria-label]="thumbLabel($index)"
|
|
8874
|
-
[attr.aria-valuetext]="valueText(thumb)"
|
|
8875
|
-
[disabled]="disabled()"
|
|
8876
|
-
[min]="min()"
|
|
8877
|
-
[max]="max()"
|
|
8878
|
-
[step]="step()"
|
|
8879
|
-
[value]="thumb"
|
|
8880
|
-
(blur)="markTouched()"
|
|
8881
|
-
(input)="handleNativeInput($index, $any($event.target).value)"
|
|
8882
|
-
/>
|
|
8883
|
-
<span
|
|
8884
|
-
class="frame-slider__thumb"
|
|
8885
|
-
[attr.data-active]="activeThumb() === $index ? '' : null"
|
|
8886
|
-
[style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
|
|
8887
|
-
></span>
|
|
8888
|
-
}
|
|
9060
|
+
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
|
+
<span class="frame-slider__track">
|
|
9062
|
+
<span class="frame-slider__range"></span>
|
|
9063
|
+
</span>
|
|
9064
|
+
|
|
9065
|
+
@for (thumb of values(); track $index) {
|
|
9066
|
+
<input
|
|
9067
|
+
class="frame-slider__native"
|
|
9068
|
+
type="range"
|
|
9069
|
+
[attr.aria-label]="thumbLabel($index)"
|
|
9070
|
+
[attr.aria-valuetext]="valueText(thumb)"
|
|
9071
|
+
[disabled]="disabled()"
|
|
9072
|
+
[min]="min()"
|
|
9073
|
+
[max]="max()"
|
|
9074
|
+
[step]="step()"
|
|
9075
|
+
[value]="thumb"
|
|
9076
|
+
(blur)="markTouched()"
|
|
9077
|
+
(input)="handleNativeInput($index, $any($event.target).value)"
|
|
9078
|
+
/>
|
|
9079
|
+
<span
|
|
9080
|
+
class="frame-slider__thumb"
|
|
9081
|
+
[attr.data-active]="activeThumb() === $index ? '' : null"
|
|
9082
|
+
[style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
|
|
9083
|
+
></span>
|
|
9084
|
+
}
|
|
8889
9085
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8890
9086
|
}
|
|
8891
9087
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, decorators: [{
|
|
@@ -8905,37 +9101,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8905
9101
|
'[style.--frame-slider-end-percent]': 'rangeEndPercent() + "%"',
|
|
8906
9102
|
'(pointerdown)': 'handlePointerDown($event)',
|
|
8907
9103
|
},
|
|
8908
|
-
template: `
|
|
8909
|
-
<span class="frame-slider__track">
|
|
8910
|
-
<span class="frame-slider__range"></span>
|
|
8911
|
-
</span>
|
|
8912
|
-
|
|
8913
|
-
@for (thumb of values(); track $index) {
|
|
8914
|
-
<input
|
|
8915
|
-
class="frame-slider__native"
|
|
8916
|
-
type="range"
|
|
8917
|
-
[attr.aria-label]="thumbLabel($index)"
|
|
8918
|
-
[attr.aria-valuetext]="valueText(thumb)"
|
|
8919
|
-
[disabled]="disabled()"
|
|
8920
|
-
[min]="min()"
|
|
8921
|
-
[max]="max()"
|
|
8922
|
-
[step]="step()"
|
|
8923
|
-
[value]="thumb"
|
|
8924
|
-
(blur)="markTouched()"
|
|
8925
|
-
(input)="handleNativeInput($index, $any($event.target).value)"
|
|
8926
|
-
/>
|
|
8927
|
-
<span
|
|
8928
|
-
class="frame-slider__thumb"
|
|
8929
|
-
[attr.data-active]="activeThumb() === $index ? '' : null"
|
|
8930
|
-
[style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
|
|
8931
|
-
></span>
|
|
8932
|
-
}
|
|
9104
|
+
template: `
|
|
9105
|
+
<span class="frame-slider__track">
|
|
9106
|
+
<span class="frame-slider__range"></span>
|
|
9107
|
+
</span>
|
|
9108
|
+
|
|
9109
|
+
@for (thumb of values(); track $index) {
|
|
9110
|
+
<input
|
|
9111
|
+
class="frame-slider__native"
|
|
9112
|
+
type="range"
|
|
9113
|
+
[attr.aria-label]="thumbLabel($index)"
|
|
9114
|
+
[attr.aria-valuetext]="valueText(thumb)"
|
|
9115
|
+
[disabled]="disabled()"
|
|
9116
|
+
[min]="min()"
|
|
9117
|
+
[max]="max()"
|
|
9118
|
+
[step]="step()"
|
|
9119
|
+
[value]="thumb"
|
|
9120
|
+
(blur)="markTouched()"
|
|
9121
|
+
(input)="handleNativeInput($index, $any($event.target).value)"
|
|
9122
|
+
/>
|
|
9123
|
+
<span
|
|
9124
|
+
class="frame-slider__thumb"
|
|
9125
|
+
[attr.data-active]="activeThumb() === $index ? '' : null"
|
|
9126
|
+
[style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
|
|
9127
|
+
></span>
|
|
9128
|
+
}
|
|
8933
9129
|
`,
|
|
8934
9130
|
}]
|
|
8935
9131
|
}], ctorParameters: () => [], 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"] }] } });
|
|
8936
|
-
function clamp$1(value, min, max) {
|
|
8937
|
-
return Math.min(Math.max(value, min), max);
|
|
8938
|
-
}
|
|
8939
9132
|
|
|
8940
9133
|
const FR_SEPARATOR_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
8941
9134
|
function coerceSeparatorOrientation(value) {
|
|
@@ -9038,18 +9231,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9038
9231
|
}]
|
|
9039
9232
|
}], propDecorators: { result: [{ type: i0.Input, args: [{ isSignal: true, alias: "frSheetClose", required: false }] }] } });
|
|
9040
9233
|
class FrSheetPanel {
|
|
9234
|
+
dialogRef = inject(DialogRef, { optional: true });
|
|
9041
9235
|
scrollable = input(false, { ...(ngDevMode ? { debugName: "scrollable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
9042
9236
|
showCloseButton = input(true, { ...(ngDevMode ? { debugName: "showCloseButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
9043
9237
|
side = input('right', { ...(ngDevMode ? { debugName: "side" } : /* istanbul ignore next */ {}), transform: coerceSheetSide });
|
|
9044
|
-
|
|
9045
|
-
|
|
9046
|
-
<ng-content />
|
|
9047
|
-
@if (showCloseButton()) {
|
|
9048
|
-
<button class="frame-sheet__close" frSheetClose type="button" aria-label="Close sheet">
|
|
9049
|
-
<span aria-hidden="true">×</span>
|
|
9050
|
-
</button>
|
|
9238
|
+
close() {
|
|
9239
|
+
this.dialogRef?.close();
|
|
9051
9240
|
}
|
|
9052
|
-
|
|
9241
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9242
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSheetPanel, isStandalone: true, selector: "[frSheetPanel], frame-sheet-panel", inputs: { scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-scrollable": "scrollable() ? \"\" : null", "attr.data-side": "side()" }, classAttribute: "frame-sheet__panel" }, ngImport: i0, template: `
|
|
9243
|
+
<ng-content />
|
|
9244
|
+
@if (showCloseButton()) {
|
|
9245
|
+
<button class="frame-sheet__close" type="button" aria-label="Close sheet" (click)="close()">
|
|
9246
|
+
<span aria-hidden="true">×</span>
|
|
9247
|
+
</button>
|
|
9248
|
+
}
|
|
9249
|
+
`, isInline: true });
|
|
9053
9250
|
}
|
|
9054
9251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetPanel, decorators: [{
|
|
9055
9252
|
type: Component,
|
|
@@ -9060,15 +9257,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9060
9257
|
'[attr.data-scrollable]': 'scrollable() ? "" : null',
|
|
9061
9258
|
'[attr.data-side]': 'side()',
|
|
9062
9259
|
},
|
|
9063
|
-
template: `
|
|
9064
|
-
<ng-content />
|
|
9065
|
-
@if (showCloseButton()) {
|
|
9066
|
-
<button class="frame-sheet__close"
|
|
9067
|
-
<span aria-hidden="true">×</span>
|
|
9068
|
-
</button>
|
|
9069
|
-
}
|
|
9260
|
+
template: `
|
|
9261
|
+
<ng-content />
|
|
9262
|
+
@if (showCloseButton()) {
|
|
9263
|
+
<button class="frame-sheet__close" type="button" aria-label="Close sheet" (click)="close()">
|
|
9264
|
+
<span aria-hidden="true">×</span>
|
|
9265
|
+
</button>
|
|
9266
|
+
}
|
|
9070
9267
|
`,
|
|
9071
|
-
imports: [FrSheetClose],
|
|
9072
9268
|
}]
|
|
9073
9269
|
}], 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 }] }] } });
|
|
9074
9270
|
class FrSheetHeader {
|
|
@@ -9431,6 +9627,13 @@ function coerceMenuButtonSize(value) {
|
|
|
9431
9627
|
function coerceMenuButtonVariant(value) {
|
|
9432
9628
|
return value === 'outline' ? 'outline' : 'default';
|
|
9433
9629
|
}
|
|
9630
|
+
function coerceOptionalNumber(value) {
|
|
9631
|
+
if (value === null || value === undefined || value === '') {
|
|
9632
|
+
return null;
|
|
9633
|
+
}
|
|
9634
|
+
const coerced = numberAttribute(value, Number.NaN);
|
|
9635
|
+
return Number.isFinite(coerced) ? coerced : null;
|
|
9636
|
+
}
|
|
9434
9637
|
class FrSidebarProvider {
|
|
9435
9638
|
document = inject(DOCUMENT);
|
|
9436
9639
|
elementRef = inject(ElementRef);
|
|
@@ -9526,20 +9729,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9526
9729
|
'[attr.data-mobile-open]': 'openMobile()',
|
|
9527
9730
|
'[attr.data-mobile]': 'isMobile() ? "" : null',
|
|
9528
9731
|
'[attr.data-resizing]': 'resizing() ? "" : null',
|
|
9732
|
+
'(document:keydown)': 'handleKeydown($event)',
|
|
9529
9733
|
},
|
|
9530
9734
|
}]
|
|
9531
|
-
}], 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 }] }]
|
|
9532
|
-
type: HostListener,
|
|
9533
|
-
args: ['document:keydown', ['$event']]
|
|
9534
|
-
}] } });
|
|
9735
|
+
}], 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 }] }] } });
|
|
9535
9736
|
class FrSidebar {
|
|
9536
9737
|
elementRef = inject(ElementRef);
|
|
9537
9738
|
provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
|
|
9538
9739
|
side = input('left', { ...(ngDevMode ? { debugName: "side" } : /* istanbul ignore next */ {}), transform: coerceSide });
|
|
9539
9740
|
variant = input('sidebar', { ...(ngDevMode ? { debugName: "variant" } : /* istanbul ignore next */ {}), transform: coerceVariant });
|
|
9540
9741
|
collapsible = input('offcanvas', { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: coerceCollapsible });
|
|
9742
|
+
minSize = input(null, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: coerceOptionalNumber });
|
|
9743
|
+
maxSize = input(384, { ...(ngDevMode ? { debugName: "maxSize" } : /* istanbul ignore next */ {}), transform: coerceOptionalNumber });
|
|
9744
|
+
resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
9541
9745
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebar, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9542
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebar, isStandalone: true, selector: "[frSidebar], frame-sidebar", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-side": "side()", "attr.data-variant": "variant()", "attr.data-collapsible": "collapsible()", "attr.data-state": "provider?.state() ?? \"expanded\"", "attr.data-mobile-open": "provider?.openMobile() ?? false" }, classAttribute: "frame-sidebar" }, ngImport: i0 });
|
|
9746
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebar, isStandalone: true, selector: "[frSidebar], frame-sidebar", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-side": "side()", "attr.data-variant": "variant()", "attr.data-collapsible": "collapsible()", "attr.data-resizable": "resizable() ? \"\" : null", "attr.data-state": "provider?.state() ?? \"expanded\"", "attr.data-mobile-open": "provider?.openMobile() ?? false" }, classAttribute: "frame-sidebar" }, ngImport: i0 });
|
|
9543
9747
|
}
|
|
9544
9748
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebar, decorators: [{
|
|
9545
9749
|
type: Directive,
|
|
@@ -9550,11 +9754,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
9550
9754
|
'[attr.data-side]': 'side()',
|
|
9551
9755
|
'[attr.data-variant]': 'variant()',
|
|
9552
9756
|
'[attr.data-collapsible]': 'collapsible()',
|
|
9757
|
+
'[attr.data-resizable]': 'resizable() ? "" : null',
|
|
9553
9758
|
'[attr.data-state]': 'provider?.state() ?? "expanded"',
|
|
9554
9759
|
'[attr.data-mobile-open]': 'provider?.openMobile() ?? false',
|
|
9555
9760
|
},
|
|
9556
9761
|
}]
|
|
9557
|
-
}], 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 }] }] } });
|
|
9762
|
+
}], 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 }] }] } });
|
|
9558
9763
|
class FrSidebarTrigger {
|
|
9559
9764
|
provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
|
|
9560
9765
|
ariaLabel = input('Toggle sidebar', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -9586,32 +9791,42 @@ class FrSidebarRail {
|
|
|
9586
9791
|
suppressClick = false;
|
|
9587
9792
|
frameId = -1;
|
|
9588
9793
|
pendingWidth = 0;
|
|
9794
|
+
resizeMinSize = 192;
|
|
9795
|
+
resizeMaxSize = 384;
|
|
9589
9796
|
provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
|
|
9590
9797
|
toggle() {
|
|
9591
9798
|
if (this.suppressClick) {
|
|
9592
9799
|
return;
|
|
9593
9800
|
}
|
|
9801
|
+
if (this.sidebar?.collapsible() === 'icon') {
|
|
9802
|
+
return;
|
|
9803
|
+
}
|
|
9594
9804
|
this.provider?.toggleSidebar();
|
|
9595
9805
|
}
|
|
9596
9806
|
startResize(event) {
|
|
9597
|
-
if (!this.sidebar || !this.provider || this.provider.isMobile()) {
|
|
9807
|
+
if (!this.sidebar || !this.provider || this.provider.isMobile() || !this.sidebar.resizable()) {
|
|
9598
9808
|
return;
|
|
9599
9809
|
}
|
|
9600
9810
|
this.startX = event.clientX;
|
|
9601
9811
|
this.startWidth = this.sidebar.elementRef.nativeElement.getBoundingClientRect().width;
|
|
9602
9812
|
this.dragging = false;
|
|
9603
9813
|
this.pendingWidth = this.startWidth;
|
|
9814
|
+
this.captureResizeBounds();
|
|
9604
9815
|
this.provider.setResizing(true);
|
|
9605
9816
|
event.preventDefault();
|
|
9606
9817
|
const move = (moveEvent) => this.resize(moveEvent);
|
|
9607
9818
|
const up = () => {
|
|
9608
9819
|
this.document.removeEventListener('pointermove', move);
|
|
9609
9820
|
this.document.removeEventListener('pointerup', up);
|
|
9610
|
-
this.
|
|
9821
|
+
if (this.dragging) {
|
|
9822
|
+
this.flushResize();
|
|
9823
|
+
}
|
|
9611
9824
|
this.provider?.setResizing(false);
|
|
9612
9825
|
this.suppressClick = this.dragging;
|
|
9613
9826
|
this.dragging = false;
|
|
9614
9827
|
this.pendingWidth = 0;
|
|
9828
|
+
this.resizeMinSize = 192;
|
|
9829
|
+
this.resizeMaxSize = 384;
|
|
9615
9830
|
setTimeout(() => {
|
|
9616
9831
|
this.suppressClick = false;
|
|
9617
9832
|
});
|
|
@@ -9625,9 +9840,12 @@ class FrSidebarRail {
|
|
|
9625
9840
|
}
|
|
9626
9841
|
const delta = event.clientX - this.startX;
|
|
9627
9842
|
const direction = this.sidebar.side() === 'right' ? -1 : 1;
|
|
9628
|
-
const nextWidth =
|
|
9843
|
+
const nextWidth = clampNumber(this.startWidth + delta * direction, this.resizeMinSize, this.resizeMaxSize);
|
|
9629
9844
|
if (Math.abs(delta) > 3) {
|
|
9630
9845
|
this.dragging = true;
|
|
9846
|
+
if (this.sidebar.collapsible() === 'icon' && !this.provider.open()) {
|
|
9847
|
+
this.provider.setOpen(true);
|
|
9848
|
+
}
|
|
9631
9849
|
}
|
|
9632
9850
|
this.pendingWidth = nextWidth;
|
|
9633
9851
|
if (this.frameId !== -1) {
|
|
@@ -9647,6 +9865,32 @@ class FrSidebarRail {
|
|
|
9647
9865
|
this.provider?.setSidebarWidth(this.pendingWidth);
|
|
9648
9866
|
}
|
|
9649
9867
|
}
|
|
9868
|
+
captureResizeBounds() {
|
|
9869
|
+
if (!this.sidebar) {
|
|
9870
|
+
return;
|
|
9871
|
+
}
|
|
9872
|
+
const minSize = this.sidebar.minSize() ?? this.measureContentMinSize();
|
|
9873
|
+
const maxSize = this.sidebar.maxSize() ?? Number.POSITIVE_INFINITY;
|
|
9874
|
+
this.resizeMinSize = minSize;
|
|
9875
|
+
this.resizeMaxSize = Math.max(minSize, maxSize);
|
|
9876
|
+
}
|
|
9877
|
+
measureContentMinSize() {
|
|
9878
|
+
if (!this.sidebar) {
|
|
9879
|
+
return 192;
|
|
9880
|
+
}
|
|
9881
|
+
const sidebarElement = this.sidebar.elementRef.nativeElement;
|
|
9882
|
+
const sidebarRect = sidebarElement.getBoundingClientRect();
|
|
9883
|
+
let measuredWidth = 0;
|
|
9884
|
+
for (const element of Array.from(sidebarElement.querySelectorAll('*'))) {
|
|
9885
|
+
if (element.hasAttribute('frSidebarRail') || element.tagName.toLowerCase() === 'frame-sidebar-rail') {
|
|
9886
|
+
continue;
|
|
9887
|
+
}
|
|
9888
|
+
const rect = element.getBoundingClientRect();
|
|
9889
|
+
const inlineStart = Math.max(0, rect.left - sidebarRect.left);
|
|
9890
|
+
measuredWidth = Math.max(measuredWidth, inlineStart + element.scrollWidth);
|
|
9891
|
+
}
|
|
9892
|
+
return Math.max(Math.ceil(measuredWidth), 192);
|
|
9893
|
+
}
|
|
9650
9894
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarRail, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9651
9895
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarRail, isStandalone: true, selector: "[frSidebarRail], frame-sidebar-rail", host: { attributes: { "role": "separator", "tabindex": "0", "aria-label": "Resize sidebar", "aria-orientation": "vertical" }, listeners: { "click": "toggle()", "pointerdown": "startResize($event)", "keydown.enter": "toggle()", "keydown.space": "toggle(); $event.preventDefault()" }, classAttribute: "frame-sidebar__rail" }, ngImport: i0 });
|
|
9652
9896
|
}
|
|
@@ -10036,8 +10280,8 @@ function calculateVirtualRange(options) {
|
|
|
10036
10280
|
const overscan = Math.max(Math.trunc(options.overscan), 0);
|
|
10037
10281
|
const visibleCount = Math.max(Math.ceil(viewportSize / itemSize), 1);
|
|
10038
10282
|
const rawStart = Math.floor(Math.max(options.scrollTop, 0) / itemSize) - overscan;
|
|
10039
|
-
const start =
|
|
10040
|
-
const end =
|
|
10283
|
+
const start = clampNumber(rawStart, 0, totalCount);
|
|
10284
|
+
const end = clampNumber(start + visibleCount + overscan * 2, start, totalCount);
|
|
10041
10285
|
return {
|
|
10042
10286
|
start,
|
|
10043
10287
|
end,
|
|
@@ -10049,31 +10293,28 @@ function calculateScrollOffsetForIndex(index, alignment, itemSize, viewportSize,
|
|
|
10049
10293
|
const normalizedItemSize = Math.max(itemSize, 1);
|
|
10050
10294
|
const normalizedViewportSize = Math.max(viewportSize, 0);
|
|
10051
10295
|
const maxScrollTop = Math.max(totalCount * normalizedItemSize - normalizedViewportSize, 0);
|
|
10052
|
-
const clampedIndex =
|
|
10296
|
+
const clampedIndex = clampNumber(index, 0, Math.max(totalCount - 1, 0));
|
|
10053
10297
|
const itemStart = clampedIndex * normalizedItemSize;
|
|
10054
10298
|
const itemEnd = itemStart + normalizedItemSize;
|
|
10055
10299
|
switch (alignment) {
|
|
10056
10300
|
case 'start':
|
|
10057
|
-
return
|
|
10301
|
+
return clampNumber(itemStart, 0, maxScrollTop);
|
|
10058
10302
|
case 'center':
|
|
10059
|
-
return
|
|
10303
|
+
return clampNumber(itemStart - (normalizedViewportSize - normalizedItemSize) / 2, 0, maxScrollTop);
|
|
10060
10304
|
case 'end':
|
|
10061
|
-
return
|
|
10305
|
+
return clampNumber(itemEnd - normalizedViewportSize, 0, maxScrollTop);
|
|
10062
10306
|
case 'nearest':
|
|
10063
10307
|
case 'auto':
|
|
10064
10308
|
default:
|
|
10065
10309
|
if (itemStart < currentScrollTop) {
|
|
10066
|
-
return
|
|
10310
|
+
return clampNumber(itemStart, 0, maxScrollTop);
|
|
10067
10311
|
}
|
|
10068
10312
|
if (itemEnd > currentScrollTop + normalizedViewportSize) {
|
|
10069
|
-
return
|
|
10313
|
+
return clampNumber(itemEnd - normalizedViewportSize, 0, maxScrollTop);
|
|
10070
10314
|
}
|
|
10071
|
-
return
|
|
10315
|
+
return clampNumber(currentScrollTop, 0, maxScrollTop);
|
|
10072
10316
|
}
|
|
10073
10317
|
}
|
|
10074
|
-
function clamp(value, min, max) {
|
|
10075
|
-
return Math.min(Math.max(value, min), max);
|
|
10076
|
-
}
|
|
10077
10318
|
|
|
10078
10319
|
class FrVirtualViewport {
|
|
10079
10320
|
destroyRef = inject(DestroyRef);
|
|
@@ -10304,5 +10545,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10304
10545
|
* Generated bundle index. Do not edit.
|
|
10305
10546
|
*/
|
|
10306
10547
|
|
|
10307
|
-
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_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_NAVIGATION_MENU_PARENT, FR_POPOVER_ALIGNMENTS, FR_POPOVER_SIDES, FR_RADIO_GROUP_ORIENTATIONS, FR_RADIO_GROUP_VARIANTS, FR_RESIZABLE_ORIENTATIONS, 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, 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 };
|
|
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 };
|
|
10308
10549
|
//# sourceMappingURL=frame-ui-ng-components.mjs.map
|