@frame-ui-ng/components 0.4.0-beta.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/confirm-popover/src/styles/confirm-popover.css +20 -0
- package/drag-drop/src/styles/_vars.css +28 -0
- package/drag-drop/src/styles/drag-drop.css +132 -0
- package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
- package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
- package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-calendar.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
- package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
- package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
- package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
- package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
- package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
- package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
- package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
- package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
- package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
- package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
- package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +128 -114
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
- package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
- package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
- package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
- package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +1387 -552
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/package.json +10 -2
- package/popover/src/styles/popover.css +106 -101
- package/src/styles/components.css +6 -4
- package/styles/components.css +6 -4
- package/styles.css +6 -4
- package/types/frame-ui-ng-components-accordion.d.ts +11 -4
- package/types/frame-ui-ng-components-alert.d.ts +4 -0
- package/types/frame-ui-ng-components-avatar.d.ts +7 -0
- package/types/frame-ui-ng-components-badge.d.ts +4 -0
- package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
- package/types/frame-ui-ng-components-button-group.d.ts +1 -0
- package/types/frame-ui-ng-components-button.d.ts +5 -0
- package/types/frame-ui-ng-components-calendar.d.ts +1 -0
- package/types/frame-ui-ng-components-card.d.ts +8 -3
- package/types/frame-ui-ng-components-carousel.d.ts +11 -2
- package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
- package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
- package/types/frame-ui-ng-components-combobox.d.ts +32 -3
- package/types/frame-ui-ng-components-command.d.ts +26 -4
- package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
- package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
- package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
- package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
- package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
- package/types/frame-ui-ng-components-empty.d.ts +6 -0
- package/types/frame-ui-ng-components-field.d.ts +9 -0
- package/types/frame-ui-ng-components-forms.d.ts +1 -0
- package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
- package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
- package/types/frame-ui-ng-components-input.d.ts +13 -0
- package/types/frame-ui-ng-components-item.d.ts +10 -0
- package/types/frame-ui-ng-components-menubar.d.ts +15 -0
- package/types/frame-ui-ng-components-modal.d.ts +12 -0
- package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
- package/types/frame-ui-ng-components-pagination.d.ts +8 -0
- package/types/frame-ui-ng-components-popover.d.ts +14 -2
- package/types/frame-ui-ng-components-progress.d.ts +2 -0
- package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
- package/types/frame-ui-ng-components-resizable.d.ts +3 -0
- package/types/frame-ui-ng-components-select.d.ts +23 -2
- package/types/frame-ui-ng-components-separator.d.ts +1 -0
- package/types/frame-ui-ng-components-sheet.d.ts +11 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
- package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
- package/types/frame-ui-ng-components-slider.d.ts +5 -2
- package/types/frame-ui-ng-components-spinner.d.ts +1 -0
- package/types/frame-ui-ng-components-switch.d.ts +6 -0
- package/types/frame-ui-ng-components-table.d.ts +26 -0
- package/types/frame-ui-ng-components-tabs.d.ts +4 -0
- package/types/frame-ui-ng-components-textarea.d.ts +1 -0
- package/types/frame-ui-ng-components-toast.d.ts +2 -0
- package/types/frame-ui-ng-components-toggle.d.ts +8 -2
- package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
- package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
- package/types/frame-ui-ng-components.d.ts +492 -76
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, Directive, Component, NgModule } from '@angular/core';
|
|
3
3
|
|
|
4
|
+
/** Breadcrumb navigation landmark. */
|
|
4
5
|
class FrBreadcrumb {
|
|
5
6
|
ariaLabel = input('breadcrumb', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
6
7
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -16,6 +17,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
16
17
|
},
|
|
17
18
|
}]
|
|
18
19
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }] } });
|
|
20
|
+
/** List slot for breadcrumb. */
|
|
19
21
|
class FrBreadcrumbList {
|
|
20
22
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
21
23
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbList, isStandalone: true, selector: "ol[frBreadcrumbList], ul[frBreadcrumbList], [frBreadcrumbList]", host: { classAttribute: "frame-breadcrumb__list" }, ngImport: i0 });
|
|
@@ -29,6 +31,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
29
31
|
},
|
|
30
32
|
}]
|
|
31
33
|
}] });
|
|
34
|
+
/** Item slot for breadcrumb. */
|
|
32
35
|
class FrBreadcrumbItem {
|
|
33
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
34
37
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbItem, isStandalone: true, selector: "li[frBreadcrumbItem], [frBreadcrumbItem]", host: { classAttribute: "frame-breadcrumb__item" }, ngImport: i0 });
|
|
@@ -42,6 +45,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
42
45
|
},
|
|
43
46
|
}]
|
|
44
47
|
}] });
|
|
48
|
+
/** Navigable link inside a breadcrumb item. */
|
|
45
49
|
class FrBreadcrumbLink {
|
|
46
50
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
47
51
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbLink, isStandalone: true, selector: "a[frBreadcrumbLink], [frBreadcrumbLink]", host: { classAttribute: "frame-breadcrumb__link" }, ngImport: i0 });
|
|
@@ -55,6 +59,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
55
59
|
},
|
|
56
60
|
}]
|
|
57
61
|
}] });
|
|
62
|
+
/** Page slot for breadcrumb. */
|
|
58
63
|
class FrBreadcrumbPage {
|
|
59
64
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbPage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
60
65
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbPage, isStandalone: true, selector: "[frBreadcrumbPage]", host: { attributes: { "aria-current": "page" }, classAttribute: "frame-breadcrumb__page" }, ngImport: i0 });
|
|
@@ -69,6 +74,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
69
74
|
},
|
|
70
75
|
}]
|
|
71
76
|
}] });
|
|
77
|
+
/** Separator slot for breadcrumb. */
|
|
72
78
|
class FrBreadcrumbSeparator {
|
|
73
79
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
74
80
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrBreadcrumbSeparator, isStandalone: true, selector: "[frBreadcrumbSeparator]", host: { attributes: { "aria-hidden": "true", "role": "presentation" }, classAttribute: "frame-breadcrumb__separator" }, ngImport: i0 });
|
|
@@ -84,12 +90,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
84
90
|
},
|
|
85
91
|
}]
|
|
86
92
|
}] });
|
|
93
|
+
/** Ellipsis slot for breadcrumb. */
|
|
87
94
|
class FrBreadcrumbEllipsis {
|
|
88
95
|
label = input('More pages', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
89
96
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbEllipsis, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrBreadcrumbEllipsis, isStandalone: true, selector: "[frBreadcrumbEllipsis], frame-breadcrumb-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-breadcrumb__ellipsis" }, ngImport: i0, template: `
|
|
91
|
-
<span aria-hidden="true">...</span>
|
|
92
|
-
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
97
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrBreadcrumbEllipsis, isStandalone: true, selector: "[frBreadcrumbEllipsis], frame-breadcrumb-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-breadcrumb__ellipsis" }, ngImport: i0, template: `
|
|
98
|
+
<span aria-hidden="true">...</span>
|
|
99
|
+
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
93
100
|
`, isInline: true });
|
|
94
101
|
}
|
|
95
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrBreadcrumbEllipsis, decorators: [{
|
|
@@ -100,9 +107,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
100
107
|
class: 'frame-breadcrumb__ellipsis',
|
|
101
108
|
'role': 'presentation',
|
|
102
109
|
},
|
|
103
|
-
template: `
|
|
104
|
-
<span aria-hidden="true">...</span>
|
|
105
|
-
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
110
|
+
template: `
|
|
111
|
+
<span aria-hidden="true">...</span>
|
|
112
|
+
<span class="frame-breadcrumb__sr-only">{{ label() }}</span>
|
|
106
113
|
`,
|
|
107
114
|
}]
|
|
108
115
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-breadcrumb.mjs","sources":["../../../projects/components/breadcrumb/src/breadcrumb.ts","../../../projects/components/breadcrumb/breadcrumb.module.ts","../../../projects/components/breadcrumb/frame-ui-ng-components-breadcrumb.ts"],"sourcesContent":["import { Component, Directive, input } from '@angular/core';\n\n@Directive({\n selector: 'nav[frBreadcrumb], [frBreadcrumb]',\n host: {\n class: 'frame-breadcrumb',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class FrBreadcrumb {\n readonly ariaLabel = input('breadcrumb', { alias: 'aria-label' });\n}\n\n@Directive({\n selector: 'ol[frBreadcrumbList], ul[frBreadcrumbList], [frBreadcrumbList]',\n host: {\n class: 'frame-breadcrumb__list',\n },\n})\nexport class FrBreadcrumbList {}\n\n@Directive({\n selector: 'li[frBreadcrumbItem], [frBreadcrumbItem]',\n host: {\n class: 'frame-breadcrumb__item',\n },\n})\nexport class FrBreadcrumbItem {}\n\n@Directive({\n selector: 'a[frBreadcrumbLink], [frBreadcrumbLink]',\n host: {\n class: 'frame-breadcrumb__link',\n },\n})\nexport class FrBreadcrumbLink {}\n\n@Directive({\n selector: '[frBreadcrumbPage]',\n host: {\n class: 'frame-breadcrumb__page',\n 'aria-current': 'page',\n },\n})\nexport class FrBreadcrumbPage {}\n\n@Directive({\n selector: '[frBreadcrumbSeparator]',\n host: {\n class: 'frame-breadcrumb__separator',\n 'aria-hidden': 'true',\n 'role': 'presentation',\n },\n})\nexport class FrBreadcrumbSeparator {}\n\n@Component({\n selector: '[frBreadcrumbEllipsis], frame-breadcrumb-ellipsis',\n host: {\n class: 'frame-breadcrumb__ellipsis',\n 'role': 'presentation',\n },\n template: `\n <span aria-hidden=\"true\">...</span>\n <span class=\"frame-breadcrumb__sr-only\">{{ label() }}</span>\n `,\n})\nexport class FrBreadcrumbEllipsis {\n readonly label = input('More pages');\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrBreadcrumb,\n FrBreadcrumbEllipsis,\n FrBreadcrumbItem,\n FrBreadcrumbLink,\n FrBreadcrumbList,\n FrBreadcrumbPage,\n FrBreadcrumbSeparator,\n} from './src/breadcrumb';\n\n@NgModule({\n imports: [\n FrBreadcrumb,\n FrBreadcrumbEllipsis,\n FrBreadcrumbItem,\n FrBreadcrumbLink,\n FrBreadcrumbList,\n FrBreadcrumbPage,\n FrBreadcrumbSeparator,\n ],\n exports: [\n FrBreadcrumb,\n FrBreadcrumbEllipsis,\n FrBreadcrumbItem,\n FrBreadcrumbLink,\n FrBreadcrumbList,\n FrBreadcrumbPage,\n FrBreadcrumbSeparator,\n ],\n})\nexport class FrBreadcrumbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-breadcrumb.mjs","sources":["../../../projects/components/breadcrumb/src/breadcrumb.ts","../../../projects/components/breadcrumb/breadcrumb.module.ts","../../../projects/components/breadcrumb/frame-ui-ng-components-breadcrumb.ts"],"sourcesContent":["import { Component, Directive, input } from '@angular/core';\r\n\r\n/** Breadcrumb navigation landmark. */\r\n@Directive({\r\n selector: 'nav[frBreadcrumb], [frBreadcrumb]',\r\n host: {\r\n class: 'frame-breadcrumb',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n },\r\n})\r\nexport class FrBreadcrumb {\r\n readonly ariaLabel = input('breadcrumb', { alias: 'aria-label' });\r\n}\r\n\r\n/** List slot for breadcrumb. */\r\n@Directive({\r\n selector: 'ol[frBreadcrumbList], ul[frBreadcrumbList], [frBreadcrumbList]',\r\n host: {\r\n class: 'frame-breadcrumb__list',\r\n },\r\n})\r\nexport class FrBreadcrumbList {}\r\n\r\n/** Item slot for breadcrumb. */\r\n@Directive({\r\n selector: 'li[frBreadcrumbItem], [frBreadcrumbItem]',\r\n host: {\r\n class: 'frame-breadcrumb__item',\r\n },\r\n})\r\nexport class FrBreadcrumbItem {}\r\n\r\n/** Navigable link inside a breadcrumb item. */\r\n@Directive({\r\n selector: 'a[frBreadcrumbLink], [frBreadcrumbLink]',\r\n host: {\r\n class: 'frame-breadcrumb__link',\r\n },\r\n})\r\nexport class FrBreadcrumbLink {}\r\n\r\n/** Page slot for breadcrumb. */\r\n@Directive({\r\n selector: '[frBreadcrumbPage]',\r\n host: {\r\n class: 'frame-breadcrumb__page',\r\n 'aria-current': 'page',\r\n },\r\n})\r\nexport class FrBreadcrumbPage {}\r\n\r\n/** Separator slot for breadcrumb. */\r\n@Directive({\r\n selector: '[frBreadcrumbSeparator]',\r\n host: {\r\n class: 'frame-breadcrumb__separator',\r\n 'aria-hidden': 'true',\r\n 'role': 'presentation',\r\n },\r\n})\r\nexport class FrBreadcrumbSeparator {}\r\n\r\n/** Ellipsis slot for breadcrumb. */\r\n@Component({\r\n selector: '[frBreadcrumbEllipsis], frame-breadcrumb-ellipsis',\r\n host: {\r\n class: 'frame-breadcrumb__ellipsis',\r\n 'role': 'presentation',\r\n },\r\n template: `\r\n <span aria-hidden=\"true\">...</span>\r\n <span class=\"frame-breadcrumb__sr-only\">{{ label() }}</span>\r\n `,\r\n})\r\nexport class FrBreadcrumbEllipsis {\r\n readonly label = input('More pages');\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrBreadcrumb,\n FrBreadcrumbEllipsis,\n FrBreadcrumbItem,\n FrBreadcrumbLink,\n FrBreadcrumbList,\n FrBreadcrumbPage,\n FrBreadcrumbSeparator,\n} from './src/breadcrumb';\n\n@NgModule({\n imports: [\n FrBreadcrumb,\n FrBreadcrumbEllipsis,\n FrBreadcrumbItem,\n FrBreadcrumbLink,\n FrBreadcrumbList,\n FrBreadcrumbPage,\n FrBreadcrumbSeparator,\n ],\n exports: [\n FrBreadcrumb,\n FrBreadcrumbEllipsis,\n FrBreadcrumbItem,\n FrBreadcrumbLink,\n FrBreadcrumbList,\n FrBreadcrumbPage,\n FrBreadcrumbSeparator,\n ],\n})\nexport class FrBreadcrumbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { input, Directive, NgModule } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
const FR_BUTTON_GROUP_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
5
|
+
/** Groups related buttons with shared orientation. */
|
|
5
6
|
class FrButtonGroup {
|
|
6
7
|
orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
7
8
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-button-group.mjs","sources":["../../../projects/components/button-group/src/button-group.ts","../../../projects/components/button-group/button-group.module.ts","../../../projects/components/button-group/frame-ui-ng-components-button-group.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\n\nexport const FR_BUTTON_GROUP_ORIENTATIONS = ['horizontal', 'vertical'] as const;\nexport type FrButtonGroupOrientation = (typeof FR_BUTTON_GROUP_ORIENTATIONS)[number];\n\n@Directive({\n selector: '[frButtonGroup], frame-button-group',\n host: {\n class: 'frame-button-group',\n '[attr.data-orientation]': 'orientation()',\n role: 'group',\n },\n})\nexport class FrButtonGroup {\n readonly orientation = input<FrButtonGroupOrientation>('horizontal');\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrButtonGroup,\n} from './src/button-group';\n\n@NgModule({\n imports: [\n FrButtonGroup,\n ],\n exports: [\n FrButtonGroup,\n ],\n})\nexport class FrButtonGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,4BAA4B,GAAG,CAAC,YAAY,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-button-group.mjs","sources":["../../../projects/components/button-group/src/button-group.ts","../../../projects/components/button-group/button-group.module.ts","../../../projects/components/button-group/frame-ui-ng-components-button-group.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\r\n\r\nexport const FR_BUTTON_GROUP_ORIENTATIONS = ['horizontal', 'vertical'] as const;\r\nexport type FrButtonGroupOrientation = (typeof FR_BUTTON_GROUP_ORIENTATIONS)[number];\r\n\r\n/** Groups related buttons with shared orientation. */\r\n@Directive({\r\n selector: '[frButtonGroup], frame-button-group',\r\n host: {\r\n class: 'frame-button-group',\r\n '[attr.data-orientation]': 'orientation()',\r\n role: 'group',\r\n },\r\n})\r\nexport class FrButtonGroup {\r\n readonly orientation = input<FrButtonGroupOrientation>('horizontal');\r\n}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrButtonGroup,\n} from './src/button-group';\n\n@NgModule({\n imports: [\n FrButtonGroup,\n ],\n exports: [\n FrButtonGroup,\n ],\n})\nexport class FrButtonGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,4BAA4B,GAAG,CAAC,YAAY,EAAE,UAAU;AAGrE;MASa,aAAa,CAAA;AACf,IAAA,WAAW,GAAG,KAAK,CAA2B,YAAY,kFAAC;wGADzD,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA;AACF,iBAAA;;;MCAY,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAnB,mBAAmB,EAAA,OAAA,EAAA,CAN5B,aAAa,CAAA,EAAA,OAAA,EAAA,CAGb,aAAa,CAAA,EAAA,CAAA;yGAGJ,mBAAmB,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,aAAa;AACd,qBAAA;AACF,iBAAA;;;ACZD;;AAEG;;;;"}
|
|
@@ -10,6 +10,7 @@ const FR_BUTTON_APPEARANCES = [
|
|
|
10
10
|
const FR_BUTTON_LOADING_DISPLAYS = ['inline', 'replace'];
|
|
11
11
|
const FR_BUTTON_RADII = ['full', 'lg', 'md', 'none', 'sm'];
|
|
12
12
|
const FR_BUTTON_SIZES = ['sm', 'md', 'lg'];
|
|
13
|
+
/** Button host with FrameUI size and appearance variants. */
|
|
13
14
|
class FrButton {
|
|
14
15
|
loadingIndicator = contentChild(FrButtonLoading, ...(ngDevMode ? [{ debugName: "loadingIndicator" }] : /* istanbul ignore next */ []));
|
|
15
16
|
spinnerIndicator = contentChild(FrSpinner, ...(ngDevMode ? [{ debugName: "spinnerIndicator" }] : /* istanbul ignore next */ []));
|
|
@@ -45,6 +46,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
45
46
|
},
|
|
46
47
|
}]
|
|
47
48
|
}], propDecorators: { loadingIndicator: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FrButtonLoading), { isSignal: true }] }], spinnerIndicator: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FrSpinner), { isSignal: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingDisplay", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
49
|
+
/** Icon-only button host with square sizing. */
|
|
48
50
|
class FrIconButton {
|
|
49
51
|
ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
50
52
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrIconButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -67,6 +69,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
67
69
|
},
|
|
68
70
|
}]
|
|
69
71
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }] } });
|
|
72
|
+
/** Icon slot for button. */
|
|
70
73
|
class FrButtonIcon {
|
|
71
74
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
72
75
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrButtonIcon, isStandalone: true, selector: "[frButtonIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-button__icon" }, ngImport: i0 });
|
|
@@ -81,6 +84,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
81
84
|
},
|
|
82
85
|
}]
|
|
83
86
|
}] });
|
|
87
|
+
/** Label slot for button. */
|
|
84
88
|
class FrButtonLabel {
|
|
85
89
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
86
90
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrButtonLabel, isStandalone: true, selector: "[frButtonLabel]", host: { classAttribute: "frame-button__label" }, ngImport: i0 });
|
|
@@ -94,6 +98,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
94
98
|
},
|
|
95
99
|
}]
|
|
96
100
|
}] });
|
|
101
|
+
/** Loading indicator slot for button. */
|
|
97
102
|
class FrButtonLoading {
|
|
98
103
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrButtonLoading, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
99
104
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrButtonLoading, isStandalone: true, selector: "[frButtonLoading]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-button__loading" }, ngImport: i0 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-button.mjs","sources":["../../../projects/components/button/src/button.ts","../../../projects/components/button/button.module.ts","../../../projects/components/button/frame-ui-ng-components-button.ts"],"sourcesContent":["import { Directive, booleanAttribute, computed, contentChild, input } from '@angular/core';\r\nimport { FrSpinner } from '@frame-ui-ng/components/spinner';\r\n\r\nexport const FR_BUTTON_APPEARANCES = [\r\n 'ghost',\r\n 'outline',\r\n 'primary',\r\n] as const;\r\nexport const FR_BUTTON_LOADING_DISPLAYS = ['inline', 'replace'] as const;\r\nexport const FR_BUTTON_RADII = ['full', 'lg', 'md', 'none', 'sm'] as const;\r\nexport const FR_BUTTON_SIZES = ['sm', 'md', 'lg'] as const;\r\n\r\nexport type FrButtonAppearance = (typeof FR_BUTTON_APPEARANCES)[number];\r\nexport type FrButtonLoadingDisplay = (typeof FR_BUTTON_LOADING_DISPLAYS)[number];\r\nexport type FrButtonRadius = (typeof FR_BUTTON_RADII)[number];\r\nexport type FrButtonSize = (typeof FR_BUTTON_SIZES)[number];\r\n\r\n@Directive({\r\n selector: 'a[frButton], button[frButton]',\r\n host: {\r\n class: 'frame-button',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-has-custom-loading]': 'hasCustomLoadingIndicator() ? \"\" : null',\r\n '[attr.data-loading]': 'loading() ? \"\" : null',\r\n '[attr.data-loading-display]': 'loadingDisplay()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.disabled]': 'isUnavailable() ? \"\" : null',\r\n '[class.frame-button-disabled]': 'isUnavailable()',\r\n '[class.frame-button-loading]': 'loading()',\r\n },\r\n})\r\nexport class FrButton {\r\n private readonly loadingIndicator = contentChild(FrButtonLoading);\r\n private readonly spinnerIndicator = contentChild(FrSpinner);\r\n\r\n readonly appearance = input<FrButtonAppearance>('primary');\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly loadingDisplay = input<FrButtonLoadingDisplay>('replace');\r\n readonly radius = input<FrButtonRadius>('none');\r\n readonly size = input<FrButtonSize>('md');\r\n protected readonly hasCustomLoadingIndicator = computed(\r\n () => !!this.loadingIndicator() || !!this.spinnerIndicator(),\r\n );\r\n protected readonly isUnavailable = computed(() => this.disabled() || this.loading());\r\n}\r\n\r\n@Directive({\r\n selector: 'a[frIconButton], button[frIconButton]',\r\n hostDirectives: [\r\n {\r\n directive: FrButton,\r\n inputs: ['appearance', 'disabled', 'loading', 'loadingDisplay', 'radius', 'size'],\r\n },\r\n ],\r\n host: {\r\n class: 'frame-icon-button',\r\n '[attr.data-icon-button]': '\"\"',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n },\r\n})\r\nexport class FrIconButton {\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n}\r\n\r\n@Directive({\r\n selector: '[frButtonIcon]',\r\n host: {\r\n class: 'frame-button__icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrButtonIcon {}\r\n\r\n@Directive({\r\n selector: '[frButtonLabel]',\r\n host: {\r\n class: 'frame-button__label',\r\n },\r\n})\r\nexport class FrButtonLabel {}\r\n\r\n@Directive({\r\n selector: '[frButtonLoading]',\r\n host: {\r\n class: 'frame-button__loading',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrButtonLoading {}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrButton,\n FrButtonIcon,\n FrButtonLabel,\n FrButtonLoading,\n FrIconButton,\n} from './src/button';\n\n@NgModule({\n imports: [\n FrButton,\n FrButtonIcon,\n FrButtonLabel,\n FrButtonLoading,\n FrIconButton,\n ],\n exports: [\n FrButton,\n FrButtonIcon,\n FrButtonLabel,\n FrButtonLoading,\n FrIconButton,\n ],\n})\nexport class FrButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-button.mjs","sources":["../../../projects/components/button/src/button.ts","../../../projects/components/button/button.module.ts","../../../projects/components/button/frame-ui-ng-components-button.ts"],"sourcesContent":["import { Directive, booleanAttribute, computed, contentChild, input } from '@angular/core';\r\nimport { FrSpinner } from '@frame-ui-ng/components/spinner';\r\n\r\nexport const FR_BUTTON_APPEARANCES = [\r\n 'ghost',\r\n 'outline',\r\n 'primary',\r\n] as const;\r\nexport const FR_BUTTON_LOADING_DISPLAYS = ['inline', 'replace'] as const;\r\nexport const FR_BUTTON_RADII = ['full', 'lg', 'md', 'none', 'sm'] as const;\r\nexport const FR_BUTTON_SIZES = ['sm', 'md', 'lg'] as const;\r\n\r\nexport type FrButtonAppearance = (typeof FR_BUTTON_APPEARANCES)[number];\r\nexport type FrButtonLoadingDisplay = (typeof FR_BUTTON_LOADING_DISPLAYS)[number];\r\nexport type FrButtonRadius = (typeof FR_BUTTON_RADII)[number];\r\nexport type FrButtonSize = (typeof FR_BUTTON_SIZES)[number];\r\n\r\n/** Button host with FrameUI size and appearance variants. */\r\n@Directive({\r\n selector: 'a[frButton], button[frButton]',\r\n host: {\r\n class: 'frame-button',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-has-custom-loading]': 'hasCustomLoadingIndicator() ? \"\" : null',\r\n '[attr.data-loading]': 'loading() ? \"\" : null',\r\n '[attr.data-loading-display]': 'loadingDisplay()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.disabled]': 'isUnavailable() ? \"\" : null',\r\n '[class.frame-button-disabled]': 'isUnavailable()',\r\n '[class.frame-button-loading]': 'loading()',\r\n },\r\n})\r\nexport class FrButton {\r\n private readonly loadingIndicator = contentChild(FrButtonLoading);\r\n private readonly spinnerIndicator = contentChild(FrSpinner);\r\n\r\n readonly appearance = input<FrButtonAppearance>('primary');\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly loadingDisplay = input<FrButtonLoadingDisplay>('replace');\r\n readonly radius = input<FrButtonRadius>('none');\r\n readonly size = input<FrButtonSize>('md');\r\n protected readonly hasCustomLoadingIndicator = computed(\r\n () => !!this.loadingIndicator() || !!this.spinnerIndicator(),\r\n );\r\n protected readonly isUnavailable = computed(() => this.disabled() || this.loading());\r\n}\r\n\r\n/** Icon-only button host with square sizing. */\r\n@Directive({\r\n selector: 'a[frIconButton], button[frIconButton]',\r\n hostDirectives: [\r\n {\r\n directive: FrButton,\r\n inputs: ['appearance', 'disabled', 'loading', 'loadingDisplay', 'radius', 'size'],\r\n },\r\n ],\r\n host: {\r\n class: 'frame-icon-button',\r\n '[attr.data-icon-button]': '\"\"',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n },\r\n})\r\nexport class FrIconButton {\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n}\r\n\r\n/** Icon slot for button. */\r\n@Directive({\r\n selector: '[frButtonIcon]',\r\n host: {\r\n class: 'frame-button__icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrButtonIcon {}\r\n\r\n/** Label slot for button. */\r\n@Directive({\r\n selector: '[frButtonLabel]',\r\n host: {\r\n class: 'frame-button__label',\r\n },\r\n})\r\nexport class FrButtonLabel {}\r\n\r\n/** Loading indicator slot for button. */\r\n@Directive({\r\n selector: '[frButtonLoading]',\r\n host: {\r\n class: 'frame-button__loading',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrButtonLoading {}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrButton,\n FrButtonIcon,\n FrButtonLabel,\n FrButtonLoading,\n FrIconButton,\n} from './src/button';\n\n@NgModule({\n imports: [\n FrButton,\n FrButtonIcon,\n FrButtonLabel,\n FrButtonLoading,\n FrIconButton,\n ],\n exports: [\n FrButton,\n FrButtonIcon,\n FrButtonLabel,\n FrButtonLoading,\n FrIconButton,\n ],\n})\nexport class FrButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const VALUE_ACCESSOR = {
|
|
|
8
8
|
useExisting: forwardRef(() => FrCalendar),
|
|
9
9
|
multi: true,
|
|
10
10
|
};
|
|
11
|
+
/** Calendar control for single-date and range selection. */
|
|
11
12
|
class FrCalendar {
|
|
12
13
|
mode = input('single', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
13
14
|
captionLayout = input('label', ...(ngDevMode ? [{ debugName: "captionLayout" }] : /* istanbul ignore next */ []));
|
|
@@ -152,6 +153,7 @@ class FrCalendar {
|
|
|
152
153
|
}
|
|
153
154
|
resolveActiveDate() {
|
|
154
155
|
const focused = this.focusedDate();
|
|
156
|
+
// Prefer the roving-focus target, then selection, then today, then first enabled day.
|
|
155
157
|
if (focused && this.findDay(focused) && !this.isDayDisabled(focused)) {
|
|
156
158
|
return cloneDate(focused);
|
|
157
159
|
}
|
|
@@ -199,6 +201,7 @@ class FrCalendar {
|
|
|
199
201
|
if (this.focusDayElement(date)) {
|
|
200
202
|
return;
|
|
201
203
|
}
|
|
204
|
+
// Month navigation may render the target button one tick later.
|
|
202
205
|
setTimeout(() => {
|
|
203
206
|
this.focusDayElement(date);
|
|
204
207
|
});
|
|
@@ -217,6 +220,7 @@ class FrCalendar {
|
|
|
217
220
|
const start = startOfMonth(monthDate);
|
|
218
221
|
const gridStart = startOfWeek(start, this.firstDayOfWeek());
|
|
219
222
|
const weeks = [];
|
|
223
|
+
// Always build a six-week grid so layout height stays stable across months.
|
|
220
224
|
for (let week = 0; week < 6; week++) {
|
|
221
225
|
const days = [];
|
|
222
226
|
for (let dayIndex = 0; dayIndex < 7; dayIndex++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-calendar.mjs","sources":["../../../projects/components/calendar/src/calendar.ts","../../../projects/components/calendar/calendar.module.ts","../../../projects/components/calendar/frame-ui-ng-components-calendar.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n TemplateRef,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type FrCalendarMode = 'single' | 'range';\r\nexport type FrCalendarCaptionLayout = 'label' | 'dropdown';\r\n\r\nexport type FrCalendarDateRange = {\r\n from: Date | null;\r\n to: Date | null;\r\n};\r\n\r\nexport type FrCalendarCellContext = {\r\n date: Date;\r\n day: number;\r\n dateLabel?: string;\r\n disabled: boolean;\r\n disabledDate: boolean;\r\n outside: boolean;\r\n selected: boolean;\r\n today: boolean;\r\n};\r\n\r\nexport type FrCalendarDisabledMatcher = (date: Date) => boolean;\r\n\r\ntype CalendarDay = FrCalendarCellContext & {\r\n key: string;\r\n rangeEnd: boolean;\r\n rangeMiddle: boolean;\r\n rangeStart: boolean;\r\n};\r\n\r\ntype CalendarMonth = {\r\n date: Date;\r\n key: string;\r\n label: string;\r\n weeks: CalendarDay[][];\r\n};\r\n\r\nconst VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FrCalendar),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'frame-calendar',\r\n imports: [NgTemplateOutlet],\r\n providers: [VALUE_ACCESSOR],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-calendar',\r\n '[attr.data-mode]': 'mode()',\r\n '[attr.data-caption-layout]': 'captionLayout()',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.dir]': 'dir()',\r\n },\r\n template: `\r\n <div class=\"frame-calendar__header\">\r\n <button\r\n class=\"frame-calendar__nav-button\"\r\n type=\"button\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"previousMonth()\"\r\n [attr.aria-label]=\"previousMonthLabel()\"\r\n >\r\n @if (previousMonthTemplate(); as template) {\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n } @else {\r\n {{ previousMonthIcon() }}\r\n }\r\n </button>\r\n\r\n @if (captionLayout() === 'dropdown') {\r\n <div class=\"frame-calendar__caption-controls\">\r\n <select\r\n class=\"frame-calendar__select\"\r\n [disabled]=\"isDisabled()\"\r\n [value]=\"currentMonth().getMonth()\"\r\n aria-label=\"Month\"\r\n (change)=\"setMonth($any($event.target).value)\"\r\n >\r\n @for (month of monthOptions(); track month.value) {\r\n <option [value]=\"month.value\" [selected]=\"month.value === currentMonth().getMonth()\">\r\n {{ month.label }}\r\n </option>\r\n }\r\n </select>\r\n\r\n <select\r\n class=\"frame-calendar__select\"\r\n [disabled]=\"isDisabled()\"\r\n [value]=\"currentMonth().getFullYear()\"\r\n aria-label=\"Year\"\r\n (change)=\"setYear($any($event.target).value)\"\r\n >\r\n @for (year of yearOptions(); track year) {\r\n <option [value]=\"year\" [selected]=\"year === currentMonth().getFullYear()\">\r\n {{ year }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n } @else {\r\n <div class=\"frame-calendar__caption\" aria-live=\"polite\">\r\n {{ monthLabel(currentMonth()) }}\r\n </div>\r\n }\r\n\r\n <button\r\n class=\"frame-calendar__nav-button\"\r\n type=\"button\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"nextMonth()\"\r\n [attr.aria-label]=\"nextMonthLabel()\"\r\n >\r\n @if (nextMonthTemplate(); as template) {\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n } @else {\r\n {{ nextMonthIcon() }}\r\n }\r\n </button>\r\n </div>\r\n\r\n <div class=\"frame-calendar__months\">\r\n @for (month of months(); track month.key) {\r\n <section class=\"frame-calendar__month\" [attr.aria-label]=\"month.label\">\r\n @if (numberOfMonths() > 1 || captionLayout() === 'dropdown') {\r\n <h3 class=\"frame-calendar__month-caption\">{{ month.label }}</h3>\r\n }\r\n\r\n <table class=\"frame-calendar__table\" role=\"grid\" [attr.aria-readonly]=\"true\">\r\n <thead>\r\n <tr>\r\n @if (showWeekNumber()) {\r\n <th class=\"frame-calendar__week-number-header\" scope=\"col\">Wk</th>\r\n }\r\n @for (weekday of weekdayLabels(); track weekday) {\r\n <th class=\"frame-calendar__weekday\" scope=\"col\">{{ weekday }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (week of month.weeks; track week[0].key) {\r\n <tr>\r\n @if (showWeekNumber()) {\r\n <td class=\"frame-calendar__week-number\">{{ weekNumber(week[0].date) }}</td>\r\n }\r\n @for (day of week; track day.key) {\r\n <td\r\n class=\"frame-calendar__cell\"\r\n [attr.data-outside]=\"day.outside ? '' : null\"\r\n [attr.data-selected]=\"day.selected ? '' : null\"\r\n [attr.data-range-start]=\"day.rangeStart ? '' : null\"\r\n [attr.data-range-middle]=\"day.rangeMiddle ? '' : null\"\r\n [attr.data-range-end]=\"day.rangeEnd ? '' : null\"\r\n [attr.data-today]=\"day.today ? '' : null\"\r\n [attr.data-disabled-date]=\"day.disabledDate ? '' : null\"\r\n >\r\n <button\r\n class=\"frame-calendar__day\"\r\n type=\"button\"\r\n [disabled]=\"isDisabled() || day.disabled\"\r\n [attr.data-date]=\"day.key\"\r\n [attr.tabindex]=\"dayTabIndex(day)\"\r\n [attr.aria-label]=\"dayLabel(day.date)\"\r\n [attr.aria-pressed]=\"day.selected ? 'true' : 'false'\"\r\n [attr.aria-selected]=\"day.selected ? 'true' : 'false'\"\r\n [attr.aria-current]=\"day.today ? 'date' : null\"\r\n (click)=\"selectDay(day)\"\r\n (focus)=\"focusedDate.set(day.date)\"\r\n (keydown)=\"handleDayKeydown($event, day)\"\r\n >\r\n @if (cellTemplate(); as template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"day\"\r\n />\r\n } @else {\r\n <span class=\"frame-calendar__day-number\">{{ day.day }}</span>\r\n @if (day.dateLabel) {\r\n <span class=\"frame-calendar__day-meta\">{{ day.dateLabel }}</span>\r\n }\r\n }\r\n </button>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </section>\r\n }\r\n </div>\r\n `,\r\n})\r\nexport class FrCalendar implements ControlValueAccessor {\r\n readonly mode = input<FrCalendarMode>('single');\r\n readonly captionLayout = input<FrCalendarCaptionLayout>('label');\r\n readonly numberOfMonths = input(1);\r\n readonly firstDayOfWeek = input(0);\r\n readonly locale = input('en-US');\r\n readonly timeZone = input<string | undefined>(undefined);\r\n readonly dir = input<'ltr' | 'rtl'>('ltr');\r\n readonly fromYear = input(new Date().getFullYear() - 100);\r\n readonly toYear = input(new Date().getFullYear() + 20);\r\n readonly showOutsideDays = input(true, { transform: booleanAttribute });\r\n readonly showWeekNumber = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly disabledDates = input<Date[]>([]);\r\n readonly dateLabels = input<Record<string, string>>({});\r\n readonly disabledMatcher = input<FrCalendarDisabledMatcher | null>(null);\r\n readonly cellTemplate = input<TemplateRef<FrCalendarCellContext> | null>(null);\r\n readonly previousMonthTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly nextMonthTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly previousMonthIcon = input('‹');\r\n readonly nextMonthIcon = input('›');\r\n readonly previousMonthLabel = input('Previous month');\r\n readonly nextMonthLabel = input('Next month');\r\n readonly month = input<Date | null | undefined>(undefined);\r\n readonly selected = input<Date | FrCalendarDateRange | null | undefined>(undefined);\r\n\r\n readonly selectedChange = output<Date | FrCalendarDateRange | null>();\r\n readonly monthChange = output<Date>();\r\n\r\n readonly focusedDate = signal<Date | null>(null);\r\n private readonly navigatedMonth = signal<Date | null>(null);\r\n private readonly internalValue = signal<Date | FrCalendarDateRange | null>(null);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n readonly currentMonth = computed(() =>\r\n startOfMonth(this.navigatedMonth() ?? this.month() ?? new Date()),\r\n );\r\n readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\r\n readonly value = computed(() => {\r\n const selected = this.selected();\r\n return normalizeValue(selected !== undefined ? selected : this.internalValue(), this.mode());\r\n });\r\n readonly weekdayLabels = computed(() =>\r\n buildWeekdayLabels(this.locale(), this.firstDayOfWeek(), this.timeZone()),\r\n );\r\n readonly monthOptions = computed(() =>\r\n Array.from({ length: 12 }, (_, value) => ({\r\n value,\r\n label: new Intl.DateTimeFormat(this.locale(), {\r\n month: 'short',\r\n timeZone: this.timeZone(),\r\n }).format(new Date(2026, value, 1)),\r\n })),\r\n );\r\n readonly yearOptions = computed(() =>\r\n Array.from(\r\n { length: Math.max(0, this.toYear() - this.fromYear() + 1) },\r\n (_, index) => this.fromYear() + index,\r\n ),\r\n );\r\n readonly months = computed(() =>\r\n Array.from({ length: Math.max(1, this.numberOfMonths()) }, (_, index) =>\r\n this.buildMonth(addMonths(this.currentMonth(), index)),\r\n ),\r\n );\r\n readonly activeDate = computed(() => this.resolveActiveDate());\r\n\r\n private onTouched: () => void = () => undefined;\r\n private onChange: (value: Date | FrCalendarDateRange | null) => void = () => undefined;\r\n\r\n writeValue(value: Date | FrCalendarDateRange | null): void {\r\n this.internalValue.set(normalizeValue(value, this.mode()));\r\n\r\n if (value instanceof Date) {\r\n this.navigatedMonth.set(startOfMonth(value));\r\n } else if (isRange(value) && value.from) {\r\n this.navigatedMonth.set(startOfMonth(value.from));\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: Date | FrCalendarDateRange | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n }\r\n\r\n previousMonth(): void {\r\n this.updateMonth(addMonths(this.currentMonth(), -1));\r\n }\r\n\r\n nextMonth(): void {\r\n this.updateMonth(addMonths(this.currentMonth(), 1));\r\n }\r\n\r\n setMonth(value: string): void {\r\n const month = new Date(this.currentMonth().getFullYear(), Number(value), 1);\r\n this.updateMonth(month);\r\n }\r\n\r\n setYear(value: string): void {\r\n const month = new Date(Number(value), this.currentMonth().getMonth(), 1);\r\n this.updateMonth(month);\r\n }\r\n\r\n selectDay(day: CalendarDay): void {\r\n if (this.isDisabled() || day.disabled) {\r\n return;\r\n }\r\n\r\n this.onTouched();\r\n\r\n const nextValue =\r\n this.mode() === 'range' ? nextRangeValue(this.value(), day.date) : cloneDate(day.date);\r\n\r\n this.internalValue.set(nextValue);\r\n this.onChange(nextValue);\r\n this.selectedChange.emit(nextValue);\r\n }\r\n\r\n handleDayKeydown(event: KeyboardEvent, day: CalendarDay): void {\r\n const offset = this.navigationOffset(event.key);\r\n\r\n if (offset === null || this.isDisabled()) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n const next = addDays(day.date, offset);\r\n this.focusedDate.set(next);\r\n\r\n if (!this.isDateVisible(next)) {\r\n this.updateMonth(startOfMonth(next));\r\n }\r\n\r\n this.focusDay(next);\r\n }\r\n\r\n dayTabIndex(day: CalendarDay): number {\r\n return sameDate(day.date, this.activeDate()) ? 0 : -1;\r\n }\r\n\r\n focusActiveDate(): void {\r\n this.focusDay(this.activeDate());\r\n }\r\n\r\n monthLabel(date: Date): string {\r\n return new Intl.DateTimeFormat(this.locale(), {\r\n month: 'long',\r\n year: 'numeric',\r\n timeZone: this.timeZone(),\r\n }).format(date);\r\n }\r\n\r\n dayLabel(date: Date): string {\r\n return new Intl.DateTimeFormat(this.locale(), {\r\n dateStyle: 'full',\r\n timeZone: this.timeZone(),\r\n }).format(date);\r\n }\r\n\r\n weekNumber(date: Date): string {\r\n return isoWeekNumber(date).toString().padStart(2, '0');\r\n }\r\n\r\n private navigationOffset(key: string): number | null {\r\n switch (key) {\r\n case 'ArrowLeft':\r\n return this.dir() === 'rtl' ? 1 : -1;\r\n case 'ArrowRight':\r\n return this.dir() === 'rtl' ? -1 : 1;\r\n case 'ArrowUp':\r\n return -7;\r\n case 'ArrowDown':\r\n return 7;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private resolveActiveDate(): Date {\r\n const focused = this.focusedDate();\r\n\r\n if (focused && this.findDay(focused) && !this.isDayDisabled(focused)) {\r\n return cloneDate(focused);\r\n }\r\n\r\n const selected = this.selectedDate();\r\n\r\n if (selected && this.findDay(selected) && !this.isDayDisabled(selected)) {\r\n return cloneDate(selected);\r\n }\r\n\r\n const today = new Date();\r\n\r\n if (this.findDay(today) && !this.isDayDisabled(today)) {\r\n return cloneDate(today);\r\n }\r\n\r\n const firstEnabled = this.months()\r\n .flatMap((month) => month.weeks.flat())\r\n .find((day) => !day.disabled);\r\n\r\n return firstEnabled ? cloneDate(firstEnabled.date) : cloneDate(this.currentMonth());\r\n }\r\n\r\n private selectedDate(): Date | null {\r\n const value = this.value();\r\n\r\n if (value instanceof Date) {\r\n return value;\r\n }\r\n\r\n if (isRange(value)) {\r\n return value.from ?? value.to;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isDateVisible(date: Date): boolean {\r\n return this.months().some((month) =>\r\n month.weeks.some((week) => week.some((day) => sameDate(day.date, date))),\r\n );\r\n }\r\n\r\n private findDay(date: Date): CalendarDay | null {\r\n for (const month of this.months()) {\r\n for (const week of month.weeks) {\r\n const day = week.find((item) => sameDate(item.date, date));\r\n\r\n if (day) {\r\n return day;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isDayDisabled(date: Date): boolean {\r\n return this.findDay(date)?.disabled ?? true;\r\n }\r\n\r\n private focusDay(date: Date): void {\r\n if (this.focusDayElement(date)) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n this.focusDayElement(date);\r\n });\r\n }\r\n\r\n private focusDayElement(date: Date): boolean {\r\n const button = this.host.nativeElement.querySelector(\r\n `.frame-calendar__day[data-date=\"${dateKey(date)}\"]`,\r\n ) as HTMLButtonElement | null;\r\n\r\n button?.focus();\r\n\r\n return !!button;\r\n }\r\n\r\n private updateMonth(month: Date): void {\r\n const next = startOfMonth(month);\r\n this.navigatedMonth.set(next);\r\n this.monthChange.emit(cloneDate(next));\r\n }\r\n\r\n private buildMonth(monthDate: Date): CalendarMonth {\r\n const start = startOfMonth(monthDate);\r\n const gridStart = startOfWeek(start, this.firstDayOfWeek());\r\n const weeks: CalendarDay[][] = [];\r\n\r\n for (let week = 0; week < 6; week++) {\r\n const days: CalendarDay[] = [];\r\n\r\n for (let dayIndex = 0; dayIndex < 7; dayIndex++) {\r\n const date = addDays(gridStart, week * 7 + dayIndex);\r\n const outside = date.getMonth() !== start.getMonth();\r\n const key = dateKey(date);\r\n const disabledDate = hasDate(this.disabledDates(), date);\r\n const disabled =\r\n (!this.showOutsideDays() && outside) ||\r\n disabledDate ||\r\n (this.disabledMatcher()?.(cloneDate(date)) ?? false);\r\n const selection = selectionState(this.value(), date, this.mode());\r\n\r\n days.push({\r\n date,\r\n day: date.getDate(),\r\n key,\r\n dateLabel: this.dateLabels()[key],\r\n disabled,\r\n disabledDate,\r\n outside,\r\n today: sameDate(date, new Date()),\r\n ...selection,\r\n });\r\n }\r\n\r\n weeks.push(days);\r\n }\r\n\r\n return {\r\n date: start,\r\n key: `${start.getFullYear()}-${start.getMonth()}`,\r\n label: this.monthLabel(start),\r\n weeks,\r\n };\r\n }\r\n}\r\n\r\nfunction buildWeekdayLabels(locale: string, firstDayOfWeek: number, timeZone?: string): string[] {\r\n const baseSunday = new Date(2026, 5, 7);\r\n\r\n return Array.from({ length: 7 }, (_, index) => {\r\n const day = addDays(baseSunday, (firstDayOfWeek + index) % 7);\r\n return new Intl.DateTimeFormat(locale, {\r\n weekday: 'short',\r\n timeZone,\r\n }).format(day);\r\n });\r\n}\r\n\r\nfunction normalizeValue(\r\n value: Date | FrCalendarDateRange | null | undefined,\r\n mode: FrCalendarMode,\r\n): Date | FrCalendarDateRange | null {\r\n if (!value) {\r\n return mode === 'range' ? { from: null, to: null } : null;\r\n }\r\n\r\n if (mode === 'range') {\r\n if (isRange(value)) {\r\n return {\r\n from: value.from ? cloneDate(value.from) : null,\r\n to: value.to ? cloneDate(value.to) : null,\r\n };\r\n }\r\n\r\n return { from: cloneDate(value), to: null };\r\n }\r\n\r\n return value instanceof Date ? cloneDate(value) : value.from ? cloneDate(value.from) : null;\r\n}\r\n\r\nfunction nextRangeValue(value: Date | FrCalendarDateRange | null, selected: Date): FrCalendarDateRange {\r\n const range = isRange(value) ? value : { from: null, to: null };\r\n\r\n if (!range.from || range.to) {\r\n return { from: cloneDate(selected), to: null };\r\n }\r\n\r\n if (selected < range.from) {\r\n return { from: cloneDate(selected), to: cloneDate(range.from) };\r\n }\r\n\r\n return { from: cloneDate(range.from), to: cloneDate(selected) };\r\n}\r\n\r\nfunction selectionState(value: Date | FrCalendarDateRange | null, date: Date, mode: FrCalendarMode) {\r\n if (mode === 'range' && isRange(value)) {\r\n const from = value.from;\r\n const to = value.to;\r\n const rangeStart = !!from && sameDate(date, from);\r\n const rangeEnd = !!to && sameDate(date, to);\r\n const rangeMiddle = !!from && !!to && date > from && date < to;\r\n\r\n return {\r\n selected: rangeStart || rangeEnd || rangeMiddle,\r\n rangeStart,\r\n rangeMiddle,\r\n rangeEnd,\r\n };\r\n }\r\n\r\n const selected = value instanceof Date && sameDate(date, value);\r\n\r\n return {\r\n selected,\r\n rangeStart: selected,\r\n rangeMiddle: false,\r\n rangeEnd: selected,\r\n };\r\n}\r\n\r\nfunction isRange(value: unknown): value is FrCalendarDateRange {\r\n return !!value && typeof value === 'object' && ('from' in value || 'to' in value);\r\n}\r\n\r\nfunction hasDate(dates: Date[], date: Date): boolean {\r\n return dates.some((item) => sameDate(item, date));\r\n}\r\n\r\nfunction sameDate(a: Date, b: Date): boolean {\r\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n}\r\n\r\nfunction dateKey(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = `${date.getMonth() + 1}`.padStart(2, '0');\r\n const day = `${date.getDate()}`.padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n}\r\n\r\nfunction cloneDate(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n}\r\n\r\nfunction startOfMonth(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n}\r\n\r\nfunction addMonths(date: Date, amount: number): Date {\r\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\r\n}\r\n\r\nfunction addDays(date: Date, amount: number): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\r\n}\r\n\r\nfunction startOfWeek(date: Date, firstDayOfWeek: number): Date {\r\n const normalized = ((firstDayOfWeek % 7) + 7) % 7;\r\n const diff = (date.getDay() - normalized + 7) % 7;\r\n return addDays(date, -diff);\r\n}\r\n\r\nfunction isoWeekNumber(date: Date): number {\r\n const target = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n const dayNumber = target.getUTCDay() || 7;\r\n target.setUTCDate(target.getUTCDate() + 4 - dayNumber);\r\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\r\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\r\n}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrCalendar,\n} from './src/calendar';\n\n@NgModule({\n imports: [\n FrCalendar,\n ],\n exports: [\n FrCalendar,\n ],\n})\nexport class FrCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-calendar.mjs","sources":["../../../projects/components/calendar/src/calendar.ts","../../../projects/components/calendar/calendar.module.ts","../../../projects/components/calendar/frame-ui-ng-components-calendar.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n TemplateRef,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type FrCalendarMode = 'single' | 'range';\r\nexport type FrCalendarCaptionLayout = 'label' | 'dropdown';\r\n\r\nexport type FrCalendarDateRange = {\r\n from: Date | null;\r\n to: Date | null;\r\n};\r\n\r\nexport type FrCalendarCellContext = {\r\n date: Date;\r\n day: number;\r\n dateLabel?: string;\r\n disabled: boolean;\r\n disabledDate: boolean;\r\n outside: boolean;\r\n selected: boolean;\r\n today: boolean;\r\n};\r\n\r\nexport type FrCalendarDisabledMatcher = (date: Date) => boolean;\r\n\r\ntype CalendarDay = FrCalendarCellContext & {\r\n key: string;\r\n rangeEnd: boolean;\r\n rangeMiddle: boolean;\r\n rangeStart: boolean;\r\n};\r\n\r\ntype CalendarMonth = {\r\n date: Date;\r\n key: string;\r\n label: string;\r\n weeks: CalendarDay[][];\r\n};\r\n\r\nconst VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FrCalendar),\r\n multi: true,\r\n};\r\n\r\n/** Calendar control for single-date and range selection. */\r\n@Component({\r\n selector: 'frame-calendar',\r\n imports: [NgTemplateOutlet],\r\n providers: [VALUE_ACCESSOR],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-calendar',\r\n '[attr.data-mode]': 'mode()',\r\n '[attr.data-caption-layout]': 'captionLayout()',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.dir]': 'dir()',\r\n },\r\n template: `\r\n <div class=\"frame-calendar__header\">\r\n <button\r\n class=\"frame-calendar__nav-button\"\r\n type=\"button\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"previousMonth()\"\r\n [attr.aria-label]=\"previousMonthLabel()\"\r\n >\r\n @if (previousMonthTemplate(); as template) {\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n } @else {\r\n {{ previousMonthIcon() }}\r\n }\r\n </button>\r\n\r\n @if (captionLayout() === 'dropdown') {\r\n <div class=\"frame-calendar__caption-controls\">\r\n <select\r\n class=\"frame-calendar__select\"\r\n [disabled]=\"isDisabled()\"\r\n [value]=\"currentMonth().getMonth()\"\r\n aria-label=\"Month\"\r\n (change)=\"setMonth($any($event.target).value)\"\r\n >\r\n @for (month of monthOptions(); track month.value) {\r\n <option [value]=\"month.value\" [selected]=\"month.value === currentMonth().getMonth()\">\r\n {{ month.label }}\r\n </option>\r\n }\r\n </select>\r\n\r\n <select\r\n class=\"frame-calendar__select\"\r\n [disabled]=\"isDisabled()\"\r\n [value]=\"currentMonth().getFullYear()\"\r\n aria-label=\"Year\"\r\n (change)=\"setYear($any($event.target).value)\"\r\n >\r\n @for (year of yearOptions(); track year) {\r\n <option [value]=\"year\" [selected]=\"year === currentMonth().getFullYear()\">\r\n {{ year }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n } @else {\r\n <div class=\"frame-calendar__caption\" aria-live=\"polite\">\r\n {{ monthLabel(currentMonth()) }}\r\n </div>\r\n }\r\n\r\n <button\r\n class=\"frame-calendar__nav-button\"\r\n type=\"button\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"nextMonth()\"\r\n [attr.aria-label]=\"nextMonthLabel()\"\r\n >\r\n @if (nextMonthTemplate(); as template) {\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n } @else {\r\n {{ nextMonthIcon() }}\r\n }\r\n </button>\r\n </div>\r\n\r\n <div class=\"frame-calendar__months\">\r\n @for (month of months(); track month.key) {\r\n <section class=\"frame-calendar__month\" [attr.aria-label]=\"month.label\">\r\n @if (numberOfMonths() > 1 || captionLayout() === 'dropdown') {\r\n <h3 class=\"frame-calendar__month-caption\">{{ month.label }}</h3>\r\n }\r\n\r\n <table class=\"frame-calendar__table\" role=\"grid\" [attr.aria-readonly]=\"true\">\r\n <thead>\r\n <tr>\r\n @if (showWeekNumber()) {\r\n <th class=\"frame-calendar__week-number-header\" scope=\"col\">Wk</th>\r\n }\r\n @for (weekday of weekdayLabels(); track weekday) {\r\n <th class=\"frame-calendar__weekday\" scope=\"col\">{{ weekday }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (week of month.weeks; track week[0].key) {\r\n <tr>\r\n @if (showWeekNumber()) {\r\n <td class=\"frame-calendar__week-number\">{{ weekNumber(week[0].date) }}</td>\r\n }\r\n @for (day of week; track day.key) {\r\n <td\r\n class=\"frame-calendar__cell\"\r\n [attr.data-outside]=\"day.outside ? '' : null\"\r\n [attr.data-selected]=\"day.selected ? '' : null\"\r\n [attr.data-range-start]=\"day.rangeStart ? '' : null\"\r\n [attr.data-range-middle]=\"day.rangeMiddle ? '' : null\"\r\n [attr.data-range-end]=\"day.rangeEnd ? '' : null\"\r\n [attr.data-today]=\"day.today ? '' : null\"\r\n [attr.data-disabled-date]=\"day.disabledDate ? '' : null\"\r\n >\r\n <button\r\n class=\"frame-calendar__day\"\r\n type=\"button\"\r\n [disabled]=\"isDisabled() || day.disabled\"\r\n [attr.data-date]=\"day.key\"\r\n [attr.tabindex]=\"dayTabIndex(day)\"\r\n [attr.aria-label]=\"dayLabel(day.date)\"\r\n [attr.aria-pressed]=\"day.selected ? 'true' : 'false'\"\r\n [attr.aria-selected]=\"day.selected ? 'true' : 'false'\"\r\n [attr.aria-current]=\"day.today ? 'date' : null\"\r\n (click)=\"selectDay(day)\"\r\n (focus)=\"focusedDate.set(day.date)\"\r\n (keydown)=\"handleDayKeydown($event, day)\"\r\n >\r\n @if (cellTemplate(); as template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"day\"\r\n />\r\n } @else {\r\n <span class=\"frame-calendar__day-number\">{{ day.day }}</span>\r\n @if (day.dateLabel) {\r\n <span class=\"frame-calendar__day-meta\">{{ day.dateLabel }}</span>\r\n }\r\n }\r\n </button>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </section>\r\n }\r\n </div>\r\n `,\r\n})\r\nexport class FrCalendar implements ControlValueAccessor {\r\n readonly mode = input<FrCalendarMode>('single');\r\n readonly captionLayout = input<FrCalendarCaptionLayout>('label');\r\n readonly numberOfMonths = input(1);\r\n readonly firstDayOfWeek = input(0);\r\n readonly locale = input('en-US');\r\n readonly timeZone = input<string | undefined>(undefined);\r\n readonly dir = input<'ltr' | 'rtl'>('ltr');\r\n readonly fromYear = input(new Date().getFullYear() - 100);\r\n readonly toYear = input(new Date().getFullYear() + 20);\r\n readonly showOutsideDays = input(true, { transform: booleanAttribute });\r\n readonly showWeekNumber = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly disabledDates = input<Date[]>([]);\r\n readonly dateLabels = input<Record<string, string>>({});\r\n readonly disabledMatcher = input<FrCalendarDisabledMatcher | null>(null);\r\n readonly cellTemplate = input<TemplateRef<FrCalendarCellContext> | null>(null);\r\n readonly previousMonthTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly nextMonthTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly previousMonthIcon = input('‹');\r\n readonly nextMonthIcon = input('›');\r\n readonly previousMonthLabel = input('Previous month');\r\n readonly nextMonthLabel = input('Next month');\r\n readonly month = input<Date | null | undefined>(undefined);\r\n readonly selected = input<Date | FrCalendarDateRange | null | undefined>(undefined);\r\n\r\n readonly selectedChange = output<Date | FrCalendarDateRange | null>();\r\n readonly monthChange = output<Date>();\r\n\r\n readonly focusedDate = signal<Date | null>(null);\r\n private readonly navigatedMonth = signal<Date | null>(null);\r\n private readonly internalValue = signal<Date | FrCalendarDateRange | null>(null);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n readonly currentMonth = computed(() =>\r\n startOfMonth(this.navigatedMonth() ?? this.month() ?? new Date()),\r\n );\r\n readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\r\n readonly value = computed(() => {\r\n const selected = this.selected();\r\n return normalizeValue(selected !== undefined ? selected : this.internalValue(), this.mode());\r\n });\r\n readonly weekdayLabels = computed(() =>\r\n buildWeekdayLabels(this.locale(), this.firstDayOfWeek(), this.timeZone()),\r\n );\r\n readonly monthOptions = computed(() =>\r\n Array.from({ length: 12 }, (_, value) => ({\r\n value,\r\n label: new Intl.DateTimeFormat(this.locale(), {\r\n month: 'short',\r\n timeZone: this.timeZone(),\r\n }).format(new Date(2026, value, 1)),\r\n })),\r\n );\r\n readonly yearOptions = computed(() =>\r\n Array.from(\r\n { length: Math.max(0, this.toYear() - this.fromYear() + 1) },\r\n (_, index) => this.fromYear() + index,\r\n ),\r\n );\r\n readonly months = computed(() =>\r\n Array.from({ length: Math.max(1, this.numberOfMonths()) }, (_, index) =>\r\n this.buildMonth(addMonths(this.currentMonth(), index)),\r\n ),\r\n );\r\n readonly activeDate = computed(() => this.resolveActiveDate());\r\n\r\n private onTouched: () => void = () => undefined;\r\n private onChange: (value: Date | FrCalendarDateRange | null) => void = () => undefined;\r\n\r\n writeValue(value: Date | FrCalendarDateRange | null): void {\r\n this.internalValue.set(normalizeValue(value, this.mode()));\r\n\r\n if (value instanceof Date) {\r\n this.navigatedMonth.set(startOfMonth(value));\r\n } else if (isRange(value) && value.from) {\r\n this.navigatedMonth.set(startOfMonth(value.from));\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: Date | FrCalendarDateRange | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n }\r\n\r\n previousMonth(): void {\r\n this.updateMonth(addMonths(this.currentMonth(), -1));\r\n }\r\n\r\n nextMonth(): void {\r\n this.updateMonth(addMonths(this.currentMonth(), 1));\r\n }\r\n\r\n setMonth(value: string): void {\r\n const month = new Date(this.currentMonth().getFullYear(), Number(value), 1);\r\n this.updateMonth(month);\r\n }\r\n\r\n setYear(value: string): void {\r\n const month = new Date(Number(value), this.currentMonth().getMonth(), 1);\r\n this.updateMonth(month);\r\n }\r\n\r\n selectDay(day: CalendarDay): void {\r\n if (this.isDisabled() || day.disabled) {\r\n return;\r\n }\r\n\r\n this.onTouched();\r\n\r\n const nextValue =\r\n this.mode() === 'range' ? nextRangeValue(this.value(), day.date) : cloneDate(day.date);\r\n\r\n this.internalValue.set(nextValue);\r\n this.onChange(nextValue);\r\n this.selectedChange.emit(nextValue);\r\n }\r\n\r\n handleDayKeydown(event: KeyboardEvent, day: CalendarDay): void {\r\n const offset = this.navigationOffset(event.key);\r\n\r\n if (offset === null || this.isDisabled()) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n const next = addDays(day.date, offset);\r\n this.focusedDate.set(next);\r\n\r\n if (!this.isDateVisible(next)) {\r\n this.updateMonth(startOfMonth(next));\r\n }\r\n\r\n this.focusDay(next);\r\n }\r\n\r\n dayTabIndex(day: CalendarDay): number {\r\n return sameDate(day.date, this.activeDate()) ? 0 : -1;\r\n }\r\n\r\n focusActiveDate(): void {\r\n this.focusDay(this.activeDate());\r\n }\r\n\r\n monthLabel(date: Date): string {\r\n return new Intl.DateTimeFormat(this.locale(), {\r\n month: 'long',\r\n year: 'numeric',\r\n timeZone: this.timeZone(),\r\n }).format(date);\r\n }\r\n\r\n dayLabel(date: Date): string {\r\n return new Intl.DateTimeFormat(this.locale(), {\r\n dateStyle: 'full',\r\n timeZone: this.timeZone(),\r\n }).format(date);\r\n }\r\n\r\n weekNumber(date: Date): string {\r\n return isoWeekNumber(date).toString().padStart(2, '0');\r\n }\r\n\r\n private navigationOffset(key: string): number | null {\r\n switch (key) {\r\n case 'ArrowLeft':\r\n return this.dir() === 'rtl' ? 1 : -1;\r\n case 'ArrowRight':\r\n return this.dir() === 'rtl' ? -1 : 1;\r\n case 'ArrowUp':\r\n return -7;\r\n case 'ArrowDown':\r\n return 7;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private resolveActiveDate(): Date {\r\n const focused = this.focusedDate();\r\n\r\n // Prefer the roving-focus target, then selection, then today, then first enabled day.\r\n if (focused && this.findDay(focused) && !this.isDayDisabled(focused)) {\r\n return cloneDate(focused);\r\n }\r\n\r\n const selected = this.selectedDate();\r\n\r\n if (selected && this.findDay(selected) && !this.isDayDisabled(selected)) {\r\n return cloneDate(selected);\r\n }\r\n\r\n const today = new Date();\r\n\r\n if (this.findDay(today) && !this.isDayDisabled(today)) {\r\n return cloneDate(today);\r\n }\r\n\r\n const firstEnabled = this.months()\r\n .flatMap((month) => month.weeks.flat())\r\n .find((day) => !day.disabled);\r\n\r\n return firstEnabled ? cloneDate(firstEnabled.date) : cloneDate(this.currentMonth());\r\n }\r\n\r\n private selectedDate(): Date | null {\r\n const value = this.value();\r\n\r\n if (value instanceof Date) {\r\n return value;\r\n }\r\n\r\n if (isRange(value)) {\r\n return value.from ?? value.to;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isDateVisible(date: Date): boolean {\r\n return this.months().some((month) =>\r\n month.weeks.some((week) => week.some((day) => sameDate(day.date, date))),\r\n );\r\n }\r\n\r\n private findDay(date: Date): CalendarDay | null {\r\n for (const month of this.months()) {\r\n for (const week of month.weeks) {\r\n const day = week.find((item) => sameDate(item.date, date));\r\n\r\n if (day) {\r\n return day;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isDayDisabled(date: Date): boolean {\r\n return this.findDay(date)?.disabled ?? true;\r\n }\r\n\r\n private focusDay(date: Date): void {\r\n if (this.focusDayElement(date)) {\r\n return;\r\n }\r\n\r\n // Month navigation may render the target button one tick later.\r\n setTimeout(() => {\r\n this.focusDayElement(date);\r\n });\r\n }\r\n\r\n private focusDayElement(date: Date): boolean {\r\n const button = this.host.nativeElement.querySelector(\r\n `.frame-calendar__day[data-date=\"${dateKey(date)}\"]`,\r\n ) as HTMLButtonElement | null;\r\n\r\n button?.focus();\r\n\r\n return !!button;\r\n }\r\n\r\n private updateMonth(month: Date): void {\r\n const next = startOfMonth(month);\r\n this.navigatedMonth.set(next);\r\n this.monthChange.emit(cloneDate(next));\r\n }\r\n\r\n private buildMonth(monthDate: Date): CalendarMonth {\r\n const start = startOfMonth(monthDate);\r\n const gridStart = startOfWeek(start, this.firstDayOfWeek());\r\n const weeks: CalendarDay[][] = [];\r\n\r\n // Always build a six-week grid so layout height stays stable across months.\r\n for (let week = 0; week < 6; week++) {\r\n const days: CalendarDay[] = [];\r\n\r\n for (let dayIndex = 0; dayIndex < 7; dayIndex++) {\r\n const date = addDays(gridStart, week * 7 + dayIndex);\r\n const outside = date.getMonth() !== start.getMonth();\r\n const key = dateKey(date);\r\n const disabledDate = hasDate(this.disabledDates(), date);\r\n const disabled =\r\n (!this.showOutsideDays() && outside) ||\r\n disabledDate ||\r\n (this.disabledMatcher()?.(cloneDate(date)) ?? false);\r\n const selection = selectionState(this.value(), date, this.mode());\r\n\r\n days.push({\r\n date,\r\n day: date.getDate(),\r\n key,\r\n dateLabel: this.dateLabels()[key],\r\n disabled,\r\n disabledDate,\r\n outside,\r\n today: sameDate(date, new Date()),\r\n ...selection,\r\n });\r\n }\r\n\r\n weeks.push(days);\r\n }\r\n\r\n return {\r\n date: start,\r\n key: `${start.getFullYear()}-${start.getMonth()}`,\r\n label: this.monthLabel(start),\r\n weeks,\r\n };\r\n }\r\n}\r\n\r\nfunction buildWeekdayLabels(locale: string, firstDayOfWeek: number, timeZone?: string): string[] {\r\n const baseSunday = new Date(2026, 5, 7);\r\n\r\n return Array.from({ length: 7 }, (_, index) => {\r\n const day = addDays(baseSunday, (firstDayOfWeek + index) % 7);\r\n return new Intl.DateTimeFormat(locale, {\r\n weekday: 'short',\r\n timeZone,\r\n }).format(day);\r\n });\r\n}\r\n\r\nfunction normalizeValue(\r\n value: Date | FrCalendarDateRange | null | undefined,\r\n mode: FrCalendarMode,\r\n): Date | FrCalendarDateRange | null {\r\n if (!value) {\r\n return mode === 'range' ? { from: null, to: null } : null;\r\n }\r\n\r\n if (mode === 'range') {\r\n if (isRange(value)) {\r\n return {\r\n from: value.from ? cloneDate(value.from) : null,\r\n to: value.to ? cloneDate(value.to) : null,\r\n };\r\n }\r\n\r\n return { from: cloneDate(value), to: null };\r\n }\r\n\r\n return value instanceof Date ? cloneDate(value) : value.from ? cloneDate(value.from) : null;\r\n}\r\n\r\nfunction nextRangeValue(value: Date | FrCalendarDateRange | null, selected: Date): FrCalendarDateRange {\r\n const range = isRange(value) ? value : { from: null, to: null };\r\n\r\n if (!range.from || range.to) {\r\n return { from: cloneDate(selected), to: null };\r\n }\r\n\r\n if (selected < range.from) {\r\n return { from: cloneDate(selected), to: cloneDate(range.from) };\r\n }\r\n\r\n return { from: cloneDate(range.from), to: cloneDate(selected) };\r\n}\r\n\r\nfunction selectionState(value: Date | FrCalendarDateRange | null, date: Date, mode: FrCalendarMode) {\r\n if (mode === 'range' && isRange(value)) {\r\n const from = value.from;\r\n const to = value.to;\r\n const rangeStart = !!from && sameDate(date, from);\r\n const rangeEnd = !!to && sameDate(date, to);\r\n const rangeMiddle = !!from && !!to && date > from && date < to;\r\n\r\n return {\r\n selected: rangeStart || rangeEnd || rangeMiddle,\r\n rangeStart,\r\n rangeMiddle,\r\n rangeEnd,\r\n };\r\n }\r\n\r\n const selected = value instanceof Date && sameDate(date, value);\r\n\r\n return {\r\n selected,\r\n rangeStart: selected,\r\n rangeMiddle: false,\r\n rangeEnd: selected,\r\n };\r\n}\r\n\r\nfunction isRange(value: unknown): value is FrCalendarDateRange {\r\n return !!value && typeof value === 'object' && ('from' in value || 'to' in value);\r\n}\r\n\r\nfunction hasDate(dates: Date[], date: Date): boolean {\r\n return dates.some((item) => sameDate(item, date));\r\n}\r\n\r\nfunction sameDate(a: Date, b: Date): boolean {\r\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n}\r\n\r\nfunction dateKey(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = `${date.getMonth() + 1}`.padStart(2, '0');\r\n const day = `${date.getDate()}`.padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n}\r\n\r\nfunction cloneDate(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n}\r\n\r\nfunction startOfMonth(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n}\r\n\r\nfunction addMonths(date: Date, amount: number): Date {\r\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\r\n}\r\n\r\nfunction addDays(date: Date, amount: number): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\r\n}\r\n\r\nfunction startOfWeek(date: Date, firstDayOfWeek: number): Date {\r\n const normalized = ((firstDayOfWeek % 7) + 7) % 7;\r\n const diff = (date.getDay() - normalized + 7) % 7;\r\n return addDays(date, -diff);\r\n}\r\n\r\nfunction isoWeekNumber(date: Date): number {\r\n const target = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n const dayNumber = target.getUTCDay() || 7;\r\n target.setUTCDate(target.getUTCDate() + 4 - dayNumber);\r\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\r\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrCalendar,\n} from './src/calendar';\n\n@NgModule({\n imports: [\n FrCalendar,\n ],\n exports: [\n FrCalendar,\n ],\n})\nexport class FrCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { input, computed, Directive, NgModule } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
const FR_CARD_SIZES = ['default', 'sm'];
|
|
5
5
|
const FR_CARD_SPACINGS = ['sm', 'md', 'lg', 'xl'];
|
|
@@ -10,23 +10,16 @@ const FR_CARD_SPACING_VALUES = {
|
|
|
10
10
|
lg: '1.25rem',
|
|
11
11
|
xl: '2rem',
|
|
12
12
|
};
|
|
13
|
+
/** Card container with size and spacing controls. */
|
|
13
14
|
class FrCard {
|
|
14
|
-
elementRef = inject(ElementRef);
|
|
15
|
-
renderer = inject(Renderer2);
|
|
16
15
|
size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
17
16
|
spacing = input(null, ...(ngDevMode ? [{ debugName: "spacing" }] : /* istanbul ignore next */ []));
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.renderer.removeStyle(this.elementRef.nativeElement, '--frame-card-spacing', RendererStyleFlags2.DashCase);
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
this.renderer.setStyle(this.elementRef.nativeElement, '--frame-card-spacing', FR_CARD_SPACING_VALUES[spacing], RendererStyleFlags2.DashCase);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
17
|
+
spacingValue = computed(() => {
|
|
18
|
+
const spacing = this.spacing();
|
|
19
|
+
return spacing ? FR_CARD_SPACING_VALUES[spacing] : null;
|
|
20
|
+
}, ...(ngDevMode ? [{ debugName: "spacingValue" }] : /* istanbul ignore next */ []));
|
|
28
21
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
29
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrCard, isStandalone: true, selector: "[frCard], frame-card", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.data-spacing": "spacing()" }, classAttribute: "frame-card" }, ngImport: i0 });
|
|
22
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrCard, isStandalone: true, selector: "[frCard], frame-card", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.data-spacing": "spacing()", "style.--frame-card-spacing": "spacingValue()" }, classAttribute: "frame-card" }, ngImport: i0 });
|
|
30
23
|
}
|
|
31
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCard, decorators: [{
|
|
32
25
|
type: Directive,
|
|
@@ -36,9 +29,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
36
29
|
class: 'frame-card',
|
|
37
30
|
'[attr.data-size]': 'size()',
|
|
38
31
|
'[attr.data-spacing]': 'spacing()',
|
|
32
|
+
'[style.--frame-card-spacing]': 'spacingValue()',
|
|
39
33
|
},
|
|
40
34
|
}]
|
|
41
|
-
}],
|
|
35
|
+
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }] } });
|
|
36
|
+
/** Header slot for card. */
|
|
42
37
|
class FrCardHeader {
|
|
43
38
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
44
39
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardHeader, isStandalone: true, selector: "[frCardHeader]", host: { classAttribute: "frame-card__header" }, ngImport: i0 });
|
|
@@ -52,6 +47,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
52
47
|
},
|
|
53
48
|
}]
|
|
54
49
|
}] });
|
|
50
|
+
/** Title slot for card. */
|
|
55
51
|
class FrCardTitle {
|
|
56
52
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
57
53
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardTitle, isStandalone: true, selector: "[frCardTitle]", host: { classAttribute: "frame-card__title" }, ngImport: i0 });
|
|
@@ -65,6 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
65
61
|
},
|
|
66
62
|
}]
|
|
67
63
|
}] });
|
|
64
|
+
/** Description slot for card. */
|
|
68
65
|
class FrCardDescription {
|
|
69
66
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
70
67
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardDescription, isStandalone: true, selector: "[frCardDescription]", host: { classAttribute: "frame-card__description" }, ngImport: i0 });
|
|
@@ -78,6 +75,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
78
75
|
},
|
|
79
76
|
}]
|
|
80
77
|
}] });
|
|
78
|
+
/** Action slot for card. */
|
|
81
79
|
class FrCardAction {
|
|
82
80
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
83
81
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardAction, isStandalone: true, selector: "[frCardAction]", host: { classAttribute: "frame-card__action" }, ngImport: i0 });
|
|
@@ -91,6 +89,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
91
89
|
},
|
|
92
90
|
}]
|
|
93
91
|
}] });
|
|
92
|
+
/** Content slot for card. */
|
|
94
93
|
class FrCardContent {
|
|
95
94
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
96
95
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrCardContent, isStandalone: true, selector: "[frCardContent]", host: { classAttribute: "frame-card__content" }, ngImport: i0 });
|
|
@@ -104,6 +103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
104
103
|
},
|
|
105
104
|
}]
|
|
106
105
|
}] });
|
|
106
|
+
/** Footer slot for card. */
|
|
107
107
|
class FrCardFooter {
|
|
108
108
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
109
109
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrCardFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|