@nanahoshi/mona-ui 0.1.0 → 0.1.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/fesm2022/nanahoshi-mona-ui-auto-complete.mjs +11 -11
- package/fesm2022/nanahoshi-mona-ui-breadcrumb.mjs +17 -17
- package/fesm2022/nanahoshi-mona-ui-button-group.mjs +26 -26
- package/fesm2022/nanahoshi-mona-ui-button.mjs +109 -107
- package/fesm2022/nanahoshi-mona-ui-calendar.mjs +53 -53
- package/fesm2022/nanahoshi-mona-ui-check-box.mjs +80 -80
- package/fesm2022/nanahoshi-mona-ui-chip.mjs +98 -98
- package/fesm2022/nanahoshi-mona-ui-circular-progress-bar.mjs +2 -2
- package/fesm2022/nanahoshi-mona-ui-color-gradient.mjs +38 -38
- package/fesm2022/nanahoshi-mona-ui-color-palette.mjs +25 -25
- package/fesm2022/nanahoshi-mona-ui-color-picker.mjs +41 -37
- package/fesm2022/nanahoshi-mona-ui-combo-box.mjs +17 -19
- package/fesm2022/nanahoshi-mona-ui-date-input.mjs +6 -6
- package/fesm2022/nanahoshi-mona-ui-date-picker.mjs +11 -13
- package/fesm2022/nanahoshi-mona-ui-datetime-picker.mjs +18 -20
- package/fesm2022/nanahoshi-mona-ui-dialog.mjs +40 -40
- package/fesm2022/nanahoshi-mona-ui-dropdown-list.mjs +14 -16
- package/fesm2022/nanahoshi-mona-ui-dropdowns.mjs +52 -52
- package/fesm2022/nanahoshi-mona-ui-editor.mjs +462 -81
- package/fesm2022/nanahoshi-mona-ui-expansion-panel.mjs +26 -26
- package/fesm2022/nanahoshi-mona-ui-fieldset.mjs +8 -8
- package/fesm2022/nanahoshi-mona-ui-filter.mjs +14 -14
- package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-cell.component-B9SQH5N-.mjs → nanahoshi-mona-ui-grid-grid-footer-cell.component-B2ETh-uI.mjs} +14 -14
- package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DlLwcCFT.mjs → nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DZk18LJC.mjs} +2 -2
- package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-C7WKhhig.mjs +128 -0
- package/fesm2022/{nanahoshi-mona-ui-grid-grid-toggle.component-DIUutx9s.mjs → nanahoshi-mona-ui-grid-grid-toggle.component-BRiY0CDX.mjs} +13 -13
- package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-BrYpFMyF.mjs +240 -0
- package/fesm2022/{nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-C3eZIaJK.mjs → nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-T9Bj98kl.mjs} +120 -120
- package/fesm2022/nanahoshi-mona-ui-grid.mjs +1 -1
- package/fesm2022/nanahoshi-mona-ui-internal-list.mjs +81 -81
- package/fesm2022/nanahoshi-mona-ui-internal-tree.mjs +35 -35
- package/fesm2022/nanahoshi-mona-ui-list-box.mjs +8 -8
- package/fesm2022/nanahoshi-mona-ui-list-view.mjs +7 -7
- package/fesm2022/nanahoshi-mona-ui-menubar.mjs +50 -50
- package/fesm2022/nanahoshi-mona-ui-multi-select.mjs +12 -14
- package/fesm2022/nanahoshi-mona-ui-notification.mjs +24 -24
- package/fesm2022/nanahoshi-mona-ui-numeric-text-box.mjs +69 -69
- package/fesm2022/nanahoshi-mona-ui-pager.mjs +29 -29
- package/fesm2022/nanahoshi-mona-ui-placeholder.mjs +9 -9
- package/fesm2022/nanahoshi-mona-ui-popover.mjs +12 -12
- package/fesm2022/nanahoshi-mona-ui-popup-menu.mjs +26 -26
- package/fesm2022/nanahoshi-mona-ui-popup.mjs +4 -4
- package/fesm2022/nanahoshi-mona-ui-progress-bar.mjs +2 -2
- package/fesm2022/nanahoshi-mona-ui-radio-button.mjs +55 -55
- package/fesm2022/nanahoshi-mona-ui-scroll-view.mjs +49 -49
- package/fesm2022/nanahoshi-mona-ui-slider.mjs +96 -96
- package/fesm2022/nanahoshi-mona-ui-split-button.mjs +30 -30
- package/fesm2022/nanahoshi-mona-ui-splitter.mjs +24 -24
- package/fesm2022/nanahoshi-mona-ui-stepper.mjs +29 -29
- package/fesm2022/nanahoshi-mona-ui-switch.mjs +42 -42
- package/fesm2022/nanahoshi-mona-ui-tabs.mjs +35 -39
- package/fesm2022/nanahoshi-mona-ui-text-area.mjs +22 -22
- package/fesm2022/nanahoshi-mona-ui-text-box.mjs +54 -54
- package/fesm2022/nanahoshi-mona-ui-time-picker.mjs +11 -19
- package/fesm2022/nanahoshi-mona-ui-time-selector.mjs +29 -29
- package/fesm2022/nanahoshi-mona-ui-tooltip.mjs +51 -51
- package/fesm2022/nanahoshi-mona-ui-tree-view.mjs +2 -2
- package/fesm2022/nanahoshi-mona-ui-window.mjs +27 -28
- package/package.json +30 -5
- package/types/nanahoshi-mona-ui-button.d.ts +4 -3
- package/types/nanahoshi-mona-ui-color-picker.d.ts +0 -3
- package/types/nanahoshi-mona-ui-dialog.d.ts +2 -2
- package/types/nanahoshi-mona-ui-editor.d.ts +17 -17
- package/types/nanahoshi-mona-ui-fieldset.d.ts +1 -1
- package/types/nanahoshi-mona-ui-filter.d.ts +2 -2
- package/types/nanahoshi-mona-ui-grid.d.ts +3 -3
- package/types/nanahoshi-mona-ui-internal-tree.d.ts +16 -16
- package/types/nanahoshi-mona-ui-menubar.d.ts +2 -2
- package/types/nanahoshi-mona-ui-stepper.d.ts +2 -2
- package/types/nanahoshi-mona-ui-tabs.d.ts +2 -2
- package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-Dgea-O0X.mjs +0 -130
- package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-DRHycGIh.mjs +0 -240
|
@@ -3,12 +3,12 @@ import * as i0 from '@angular/core';
|
|
|
3
3
|
import { inject, TemplateRef, Directive, computed, input, output, DestroyRef, ElementRef, signal, contentChild, linkedSignal, model, afterNextRender, effect, untracked, Component } from '@angular/core';
|
|
4
4
|
import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { LucideChevronLeft, LucideChevronRight } from '@lucide/angular';
|
|
6
|
+
import { any, exactly, Dictionary, lastOrDefault, range, index, select } from '@mirei/ts-collections';
|
|
6
7
|
import { ButtonDirective } from '@nanahoshi/mona-ui/button';
|
|
7
8
|
import { PreventableEvent, TakeFirstPipe } from '@nanahoshi/mona-ui/common';
|
|
8
9
|
import { CalendarService } from '@nanahoshi/mona-ui/date-input';
|
|
9
10
|
import { createElementControlId, rxTimeout } from '@nanahoshi/mona-ui/internal';
|
|
10
11
|
import { ThemeService } from '@nanahoshi/mona-ui/theme';
|
|
11
|
-
import { any, exactly, Dictionary, lastOrDefault, range, index, select } from '@mirei/ts-collections';
|
|
12
12
|
import { DateTime } from 'luxon';
|
|
13
13
|
import { skip, fromEvent } from 'rxjs';
|
|
14
14
|
import { twMerge } from 'tailwind-merge';
|
|
@@ -56,13 +56,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
56
56
|
}]
|
|
57
57
|
}] });
|
|
58
58
|
|
|
59
|
-
const calendarBaseVariants = cva(`
|
|
60
|
-
flex flex-col gap-2 p-2 min-w-64
|
|
61
|
-
bg-background text-foreground
|
|
62
|
-
border border-input-border
|
|
63
|
-
shadow-sm select-none
|
|
64
|
-
data-[invalid='true']:border-error
|
|
65
|
-
data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
|
|
59
|
+
const calendarBaseVariants = cva(`
|
|
60
|
+
flex flex-col gap-2 p-2 min-w-64
|
|
61
|
+
bg-background text-foreground
|
|
62
|
+
border border-input-border
|
|
63
|
+
shadow-sm select-none
|
|
64
|
+
data-[invalid='true']:border-error
|
|
65
|
+
data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
|
|
66
66
|
`, {
|
|
67
67
|
variants: {
|
|
68
68
|
disabled: {
|
|
@@ -80,18 +80,18 @@ const calendarBaseVariants = cva(`
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
});
|
|
83
|
-
const calendarHeaderVariants = cva(`
|
|
84
|
-
flex items-center justify-center
|
|
85
|
-
[&>button+button]:not-focus:border-s-0
|
|
86
|
-
[&>button:nth-of-type(2)]:flex-1
|
|
87
|
-
[&>button:nth-of-type(3)]:rounded-se-none
|
|
88
|
-
[&>button:nth-of-type(3)]:rounded-ee-none
|
|
89
|
-
[&>button:nth-of-type(4)]:rounded-ss-none
|
|
90
|
-
[&>button:nth-of-type(4)]:rounded-es-none
|
|
91
|
-
[&>button]:outline-none
|
|
83
|
+
const calendarHeaderVariants = cva(`
|
|
84
|
+
flex items-center justify-center
|
|
85
|
+
[&>button+button]:not-focus:border-s-0
|
|
86
|
+
[&>button:nth-of-type(2)]:flex-1
|
|
87
|
+
[&>button:nth-of-type(3)]:rounded-se-none
|
|
88
|
+
[&>button:nth-of-type(3)]:rounded-ee-none
|
|
89
|
+
[&>button:nth-of-type(4)]:rounded-ss-none
|
|
90
|
+
[&>button:nth-of-type(4)]:rounded-es-none
|
|
91
|
+
[&>button]:outline-none
|
|
92
92
|
`);
|
|
93
|
-
const calendarMonthViewDayVariants = cva(`
|
|
94
|
-
hover:bg-hover cursor-pointer
|
|
93
|
+
const calendarMonthViewDayVariants = cva(`
|
|
94
|
+
hover:bg-hover cursor-pointer
|
|
95
95
|
`, {
|
|
96
96
|
variants: {
|
|
97
97
|
disabled: {
|
|
@@ -131,31 +131,31 @@ const calendarMonthViewDayVariants = cva(`
|
|
|
131
131
|
rounded: "medium"
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
|
-
const calendarMonthViewGridVariants = cva(`
|
|
135
|
-
grid gap-0.5
|
|
136
|
-
justify-center
|
|
137
|
-
[&>div]:h-full [&>div]:flex
|
|
138
|
-
[&>div]:items-center [&>div]:justify-center
|
|
139
|
-
[&>div]:aspect-square
|
|
134
|
+
const calendarMonthViewGridVariants = cva(`
|
|
135
|
+
grid gap-0.5
|
|
136
|
+
justify-center
|
|
137
|
+
[&>div]:h-full [&>div]:flex
|
|
138
|
+
[&>div]:items-center [&>div]:justify-center
|
|
139
|
+
[&>div]:aspect-square
|
|
140
140
|
`);
|
|
141
|
-
const calendarMonthViewGridHeaderVariants = cva(`
|
|
142
|
-
grid justify-center
|
|
143
|
-
gap-0.5 font-semibold text-sm
|
|
144
|
-
[&>div]:h-full [&>div]:flex
|
|
145
|
-
[&>div]:items-center [&>div]:justify-center
|
|
146
|
-
[&>div]:aspect-square
|
|
141
|
+
const calendarMonthViewGridHeaderVariants = cva(`
|
|
142
|
+
grid justify-center
|
|
143
|
+
gap-0.5 font-semibold text-sm
|
|
144
|
+
[&>div]:h-full [&>div]:flex
|
|
145
|
+
[&>div]:items-center [&>div]:justify-center
|
|
146
|
+
[&>div]:aspect-square
|
|
147
147
|
`);
|
|
148
|
-
const calendarYearViewGridVariants = cva(`
|
|
149
|
-
grid grid-cols-3 gap-0.5
|
|
150
|
-
justify-center
|
|
151
|
-
[&>div]:h-full [&>div]:flex
|
|
152
|
-
[&>div]:items-center [&>div]:justify-center
|
|
153
|
-
[&>div]:h-12
|
|
148
|
+
const calendarYearViewGridVariants = cva(`
|
|
149
|
+
grid grid-cols-3 gap-0.5
|
|
150
|
+
justify-center
|
|
151
|
+
[&>div]:h-full [&>div]:flex
|
|
152
|
+
[&>div]:items-center [&>div]:justify-center
|
|
153
|
+
[&>div]:h-12
|
|
154
154
|
`);
|
|
155
|
-
const calendarYearViewCellVariants = cva(`
|
|
156
|
-
py-2 cursor-pointer
|
|
157
|
-
hover:bg-hover
|
|
158
|
-
active:bg-active
|
|
155
|
+
const calendarYearViewCellVariants = cva(`
|
|
156
|
+
py-2 cursor-pointer
|
|
157
|
+
hover:bg-hover
|
|
158
|
+
active:bg-active
|
|
159
159
|
`, {
|
|
160
160
|
variants: {
|
|
161
161
|
focused: {
|
|
@@ -170,17 +170,17 @@ const calendarYearViewCellVariants = cva(`
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
});
|
|
173
|
-
const calendarDecadeViewGridVariants = cva(`
|
|
174
|
-
grid grid-cols-4 gap-0.5
|
|
175
|
-
justify-center
|
|
176
|
-
[&>div]:h-full [&>div]:flex
|
|
177
|
-
[&>div]:items-center [&>div]:justify-center
|
|
178
|
-
[&>div]:h-12
|
|
173
|
+
const calendarDecadeViewGridVariants = cva(`
|
|
174
|
+
grid grid-cols-4 gap-0.5
|
|
175
|
+
justify-center
|
|
176
|
+
[&>div]:h-full [&>div]:flex
|
|
177
|
+
[&>div]:items-center [&>div]:justify-center
|
|
178
|
+
[&>div]:h-12
|
|
179
179
|
`);
|
|
180
|
-
const calendarDecadeViewCellVariants = cva(`
|
|
181
|
-
py-2 cursor-pointer
|
|
182
|
-
hover:bg-hover
|
|
183
|
-
active:bg-active
|
|
180
|
+
const calendarDecadeViewCellVariants = cva(`
|
|
181
|
+
py-2 cursor-pointer
|
|
182
|
+
hover:bg-hover
|
|
183
|
+
active:bg-active
|
|
184
184
|
`, {
|
|
185
185
|
variants: {
|
|
186
186
|
focused: {
|
|
@@ -1532,7 +1532,7 @@ class CalendarComponent {
|
|
|
1532
1532
|
}
|
|
1533
1533
|
}
|
|
1534
1534
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1535
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CalendarComponent, isStandalone: true, selector: "mona-calendar", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, firstDay: { classPropertyName: "firstDay", publicName: "firstDay", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, weekNumber: { classPropertyName: "weekNumber", publicName: "weekNumber", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: "disabledChange", touch: "touch", value: "valueChange" }, host: { attributes: { "role": "application" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-invalid": "invalidState() ? 'true' : null", "attr.data-invalid": "invalidState() || null", "attr.data-required": "required() || null", "attr.tabindex": "disabled() ? -1 : 0", "class": "baseClass()" } }, queries: [{ propertyName: "decadeCellTemplate", first: true, predicate: CalendarDecadeCellTemplateDirective, descendants: true, isSignal: true }, { propertyName: "monthCellTemplate", first: true, predicate: CalendarMonthCellTemplateDirective, descendants: true, isSignal: true }, { propertyName: "yearCellTemplate", first: true, predicate: CalendarYearCellTemplateDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"headerClass()\">\r\n <button\r\n monaButton\r\n look=\"ghost\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"'small'\"\r\n (click)=\"onTodayButtonClick()\"\r\n [attr.aria-label]=\"todayButtonLabel()\">\r\n <span>Today</span>\r\n </button>\r\n @switch (calendarView()) {\r\n @case (\"month\") {\r\n <button\r\n monaButton\r\n look=\"ghost\"\r\n [rounded]=\"rounded()\"\r\n (click)=\"onViewChangeClick('year')\"\r\n [attr.aria-label]=\"viewSwitchButtonLabel()\">\r\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\">{{\r\n navigatedDate() | date: \"MMMM yyyy\" : timezone\r\n }}</span>\r\n </button>\r\n }\r\n @case (\"year\") {\r\n <button\r\n monaButton\r\n look=\"ghost\"\r\n [rounded]=\"rounded()\"\r\n (click)=\"onViewChangeClick('decade')\"\r\n [attr.aria-label]=\"viewSwitchButtonLabel()\">\r\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\">{{\r\n navigatedDate() | date: \"yyyy\" : timezone\r\n }}</span>\r\n </button>\r\n }\r\n @case (\"decade\") {\r\n <button monaButton look=\"ghost\" [rounded]=\"rounded()\" [attr.aria-label]=\"viewSwitchButtonLabel()\">\r\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\"\r\n >{{ decadeStart() }} - {{ decadeEnd() }}</span\r\n >\r\n </button>\r\n }\r\n }\r\n <button\r\n monaButton\r\n look=\"ghost\"\r\n [rounded]=\"rounded()\"\r\n [iconOnly]=\"true\"\r\n [size]=\"'small'\"\r\n (click)=\"onNavigationClick('prev')\"\r\n [attr.aria-label]=\"prevButtonLabel()\">\r\n <svg lucideChevronLeft></svg>\r\n </button>\r\n <button\r\n monaButton\r\n look=\"ghost\"\r\n [rounded]=\"rounded()\"\r\n [iconOnly]=\"true\"\r\n [size]=\"'small'\"\r\n (click)=\"onNavigationClick('next')\"\r\n [attr.aria-label]=\"nextButtonLabel()\">\r\n <svg lucideChevronRight></svg>\r\n </button>\r\n</div>\r\n\r\n<div aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">{{ ariaLabel() }}</div>\r\n\r\n@if (calendarView() === \"month\") {\r\n @let columnCount = weekNumber() ? 8 : 7;\r\n <div [class]=\"monthGridHeaderClass()\" [style.grid-template-columns]=\"`repeat(${columnCount}, 32px)`\">\r\n @if (weekNumber()) {\r\n <div></div>\r\n }\r\n @for (day of weekdays(); track day.short) {\r\n <div>{{ day.short }}</div>\r\n }\r\n </div>\r\n <div\r\n [class]=\"monthGridClass()\"\r\n [attr.aria-labelledby]=\"gridId + '-heading'\"\r\n (pointerleave)=\"onMonthGridPointerLeave()\"\r\n [style.grid-template-columns]=\"`repeat(${columnCount}, 32px)`\">\r\n @for (row of monthDictChunked(); track $index) {\r\n @if (weekNumber()) {\r\n @let firstEntry = row | monaTakeFirst;\r\n @if (firstEntry) {\r\n @let week = firstEntry.key | date: \"w\";\r\n <div>{{ week }}</div>\r\n }\r\n }\r\n @for (entry of row; track entry.key) {\r\n <div\r\n (dayPointerEnter)=\"onDayPointerEnter($event)\"\r\n (daySelect)=\"onDayClick($event.date, $event.event)\"\r\n monaMonthDay\r\n [disabled]=\"disabled()\"\r\n [disabledDates]=\"disabledDates()\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [monthBounds]=\"[monthBounds().start, monthBounds().end]\"\r\n [navigatedDate]=\"navigatedDate()\"\r\n [rangePreview]=\"rangePreviewDates()\"\r\n [rounded]=\"rounded()\"\r\n [value]=\"selectedDates()\"\r\n [entry]=\"entry\">\r\n @if (monthCellTemplate()) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"monthCellTemplate()?.templateRef\"\r\n [ngTemplateOutletContext]=\"{ $implicit: entry.value, date: entry.key }\"></ng-container>\r\n } @else {\r\n <span>{{ entry.value }}</span>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n} @else if (calendarView() === \"year\") {\r\n <div [class]=\"yearGridClass()\" [attr.aria-labelledby]=\"gridId + '-heading'\">\r\n @for (row of months(); track $index) {\r\n @for (monthItem of row; track monthItem) {\r\n <div\r\n (click)=\"onMonthClick(monthItem[0])\"\r\n monaYearMonth\r\n [month]=\"monthItem[0]\"\r\n [monthName]=\"monthItem[1]\"\r\n [navigatedDate]=\"navigatedDate()\"\r\n [rounded]=\"rounded()\"\r\n [selectedDate]=\"selectedDates()[0]\">\r\n @if (yearCellTemplate()) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"yearCellTemplate()?.templateRef\"\r\n [ngTemplateOutletContext]=\"{ $implicit: monthItem[0], text: monthItem[1] }\">\r\n </ng-container>\r\n } @else {\r\n <span>{{ monthItem[1] }}</span>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n} @else if (calendarView() === \"decade\") {\r\n <div [class]=\"decadeGridClass()\" [attr.aria-labelledby]=\"gridId + '-heading'\">\r\n @for (row of decadeYears(); track $index) {\r\n @for (year of row; track year) {\r\n <div\r\n (click)=\"onYearClick(year)\"\r\n monaDecadeYear\r\n [navigatedDate]=\"navigatedDate()\"\r\n [rounded]=\"rounded()\"\r\n [year]=\"year\"\r\n [selectedDate]=\"selectedDates()[0]\">\r\n @if (decadeCellTemplate()) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"decadeCellTemplate()?.templateRef\"\r\n [ngTemplateOutletContext]=\"{ $implicit: year }\">\r\n </ng-container>\r\n } @else {\r\n <span>{{ year }}</span>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n}\r\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: MonthDayDirective, selector: "[monaMonthDay]", inputs: ["disabled", "disabledDates", "entry", "max", "min", "monthBounds", "navigatedDate", "rangePreview", "rounded", "value"], outputs: ["dayPointerEnter", "daySelect"] }, { kind: "directive", type: DecadeYearDirective, selector: "[monaDecadeYear]", inputs: ["navigatedDate", "rounded", "selectedDate", "year"] }, { kind: "directive", type: YearMonthDirective, selector: "[monaYearMonth]", inputs: ["month", "monthName", "navigatedDate", "rounded", "selectedDate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LucideChevronLeft, selector: "svg[lucideChevronLeft]" }, { kind: "component", type: LucideChevronRight, selector: "svg[lucideChevronRight]" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TakeFirstPipe, name: "monaTakeFirst" }] }); }
|
|
1535
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CalendarComponent, isStandalone: true, selector: "mona-calendar", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, firstDay: { classPropertyName: "firstDay", publicName: "firstDay", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, weekNumber: { classPropertyName: "weekNumber", publicName: "weekNumber", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: "disabledChange", touch: "touch", value: "valueChange" }, host: { attributes: { "role": "application" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-invalid": "invalidState() ? 'true' : null", "attr.data-invalid": "invalidState() || null", "attr.data-required": "required() || null", "attr.tabindex": "disabled() ? -1 : 0", "class": "baseClass()" } }, queries: [{ propertyName: "decadeCellTemplate", first: true, predicate: CalendarDecadeCellTemplateDirective, descendants: true, isSignal: true }, { propertyName: "monthCellTemplate", first: true, predicate: CalendarMonthCellTemplateDirective, descendants: true, isSignal: true }, { propertyName: "yearCellTemplate", first: true, predicate: CalendarYearCellTemplateDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"headerClass()\">\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n [size]=\"'small'\"\n (click)=\"onTodayButtonClick()\"\n [attr.aria-label]=\"todayButtonLabel()\">\n <span>Today</span>\n </button>\n @switch (calendarView()) {\n @case (\"month\") {\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n (click)=\"onViewChangeClick('year')\"\n [attr.aria-label]=\"viewSwitchButtonLabel()\">\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\">{{\n navigatedDate() | date: \"MMMM yyyy\" : timezone\n }}</span>\n </button>\n }\n @case (\"year\") {\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n (click)=\"onViewChangeClick('decade')\"\n [attr.aria-label]=\"viewSwitchButtonLabel()\">\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\">{{\n navigatedDate() | date: \"yyyy\" : timezone\n }}</span>\n </button>\n }\n @case (\"decade\") {\n <button monaButton look=\"ghost\" [rounded]=\"rounded()\" [attr.aria-label]=\"viewSwitchButtonLabel()\">\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\"\n >{{ decadeStart() }} - {{ decadeEnd() }}</span\n >\n </button>\n }\n }\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n [iconOnly]=\"true\"\n [size]=\"'small'\"\n (click)=\"onNavigationClick('prev')\"\n [attr.aria-label]=\"prevButtonLabel()\">\n <svg lucideChevronLeft></svg>\n </button>\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n [iconOnly]=\"true\"\n [size]=\"'small'\"\n (click)=\"onNavigationClick('next')\"\n [attr.aria-label]=\"nextButtonLabel()\">\n <svg lucideChevronRight></svg>\n </button>\n</div>\n\n<div aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">{{ ariaLabel() }}</div>\n\n@if (calendarView() === \"month\") {\n @let columnCount = weekNumber() ? 8 : 7;\n <div [class]=\"monthGridHeaderClass()\" [style.grid-template-columns]=\"`repeat(${columnCount}, 32px)`\">\n @if (weekNumber()) {\n <div></div>\n }\n @for (day of weekdays(); track day.short) {\n <div>{{ day.short }}</div>\n }\n </div>\n <div\n [class]=\"monthGridClass()\"\n [attr.aria-labelledby]=\"gridId + '-heading'\"\n (pointerleave)=\"onMonthGridPointerLeave()\"\n [style.grid-template-columns]=\"`repeat(${columnCount}, 32px)`\">\n @for (row of monthDictChunked(); track $index) {\n @if (weekNumber()) {\n @let firstEntry = row | monaTakeFirst;\n @if (firstEntry) {\n @let week = firstEntry.key | date: \"w\";\n <div>{{ week }}</div>\n }\n }\n @for (entry of row; track entry.key) {\n <div\n (dayPointerEnter)=\"onDayPointerEnter($event)\"\n (daySelect)=\"onDayClick($event.date, $event.event)\"\n monaMonthDay\n [disabled]=\"disabled()\"\n [disabledDates]=\"disabledDates()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [monthBounds]=\"[monthBounds().start, monthBounds().end]\"\n [navigatedDate]=\"navigatedDate()\"\n [rangePreview]=\"rangePreviewDates()\"\n [rounded]=\"rounded()\"\n [value]=\"selectedDates()\"\n [entry]=\"entry\">\n @if (monthCellTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"monthCellTemplate()?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.value, date: entry.key }\"></ng-container>\n } @else {\n <span>{{ entry.value }}</span>\n }\n </div>\n }\n }\n </div>\n} @else if (calendarView() === \"year\") {\n <div [class]=\"yearGridClass()\" [attr.aria-labelledby]=\"gridId + '-heading'\">\n @for (row of months(); track $index) {\n @for (monthItem of row; track monthItem) {\n <div\n (click)=\"onMonthClick(monthItem[0])\"\n monaYearMonth\n [month]=\"monthItem[0]\"\n [monthName]=\"monthItem[1]\"\n [navigatedDate]=\"navigatedDate()\"\n [rounded]=\"rounded()\"\n [selectedDate]=\"selectedDates()[0]\">\n @if (yearCellTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"yearCellTemplate()?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: monthItem[0], text: monthItem[1] }\">\n </ng-container>\n } @else {\n <span>{{ monthItem[1] }}</span>\n }\n </div>\n }\n }\n </div>\n} @else if (calendarView() === \"decade\") {\n <div [class]=\"decadeGridClass()\" [attr.aria-labelledby]=\"gridId + '-heading'\">\n @for (row of decadeYears(); track $index) {\n @for (year of row; track year) {\n <div\n (click)=\"onYearClick(year)\"\n monaDecadeYear\n [navigatedDate]=\"navigatedDate()\"\n [rounded]=\"rounded()\"\n [year]=\"year\"\n [selectedDate]=\"selectedDates()[0]\">\n @if (decadeCellTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"decadeCellTemplate()?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: year }\">\n </ng-container>\n } @else {\n <span>{{ year }}</span>\n }\n </div>\n }\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: MonthDayDirective, selector: "[monaMonthDay]", inputs: ["disabled", "disabledDates", "entry", "max", "min", "monthBounds", "navigatedDate", "rangePreview", "rounded", "value"], outputs: ["dayPointerEnter", "daySelect"] }, { kind: "directive", type: DecadeYearDirective, selector: "[monaDecadeYear]", inputs: ["navigatedDate", "rounded", "selectedDate", "year"] }, { kind: "directive", type: YearMonthDirective, selector: "[monaYearMonth]", inputs: ["month", "monthName", "navigatedDate", "rounded", "selectedDate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LucideChevronLeft, selector: "svg[lucideChevronLeft]" }, { kind: "component", type: LucideChevronRight, selector: "svg[lucideChevronRight]" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TakeFirstPipe, name: "monaTakeFirst" }] }); }
|
|
1536
1536
|
}
|
|
1537
1537
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
1538
1538
|
type: Component,
|
|
@@ -1554,7 +1554,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
1554
1554
|
"[attr.data-required]": "required() || null",
|
|
1555
1555
|
"[attr.tabindex]": "disabled() ? -1 : 0",
|
|
1556
1556
|
"[class]": "baseClass()"
|
|
1557
|
-
}, template: "<div [class]=\"headerClass()\">\
|
|
1557
|
+
}, template: "<div [class]=\"headerClass()\">\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n [size]=\"'small'\"\n (click)=\"onTodayButtonClick()\"\n [attr.aria-label]=\"todayButtonLabel()\">\n <span>Today</span>\n </button>\n @switch (calendarView()) {\n @case (\"month\") {\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n (click)=\"onViewChangeClick('year')\"\n [attr.aria-label]=\"viewSwitchButtonLabel()\">\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\">{{\n navigatedDate() | date: \"MMMM yyyy\" : timezone\n }}</span>\n </button>\n }\n @case (\"year\") {\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n (click)=\"onViewChangeClick('decade')\"\n [attr.aria-label]=\"viewSwitchButtonLabel()\">\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\">{{\n navigatedDate() | date: \"yyyy\" : timezone\n }}</span>\n </button>\n }\n @case (\"decade\") {\n <button monaButton look=\"ghost\" [rounded]=\"rounded()\" [attr.aria-label]=\"viewSwitchButtonLabel()\">\n <span class=\"text-primary font-semibold\" [id]=\"gridId + '-heading'\"\n >{{ decadeStart() }} - {{ decadeEnd() }}</span\n >\n </button>\n }\n }\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n [iconOnly]=\"true\"\n [size]=\"'small'\"\n (click)=\"onNavigationClick('prev')\"\n [attr.aria-label]=\"prevButtonLabel()\">\n <svg lucideChevronLeft></svg>\n </button>\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n [iconOnly]=\"true\"\n [size]=\"'small'\"\n (click)=\"onNavigationClick('next')\"\n [attr.aria-label]=\"nextButtonLabel()\">\n <svg lucideChevronRight></svg>\n </button>\n</div>\n\n<div aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">{{ ariaLabel() }}</div>\n\n@if (calendarView() === \"month\") {\n @let columnCount = weekNumber() ? 8 : 7;\n <div [class]=\"monthGridHeaderClass()\" [style.grid-template-columns]=\"`repeat(${columnCount}, 32px)`\">\n @if (weekNumber()) {\n <div></div>\n }\n @for (day of weekdays(); track day.short) {\n <div>{{ day.short }}</div>\n }\n </div>\n <div\n [class]=\"monthGridClass()\"\n [attr.aria-labelledby]=\"gridId + '-heading'\"\n (pointerleave)=\"onMonthGridPointerLeave()\"\n [style.grid-template-columns]=\"`repeat(${columnCount}, 32px)`\">\n @for (row of monthDictChunked(); track $index) {\n @if (weekNumber()) {\n @let firstEntry = row | monaTakeFirst;\n @if (firstEntry) {\n @let week = firstEntry.key | date: \"w\";\n <div>{{ week }}</div>\n }\n }\n @for (entry of row; track entry.key) {\n <div\n (dayPointerEnter)=\"onDayPointerEnter($event)\"\n (daySelect)=\"onDayClick($event.date, $event.event)\"\n monaMonthDay\n [disabled]=\"disabled()\"\n [disabledDates]=\"disabledDates()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [monthBounds]=\"[monthBounds().start, monthBounds().end]\"\n [navigatedDate]=\"navigatedDate()\"\n [rangePreview]=\"rangePreviewDates()\"\n [rounded]=\"rounded()\"\n [value]=\"selectedDates()\"\n [entry]=\"entry\">\n @if (monthCellTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"monthCellTemplate()?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.value, date: entry.key }\"></ng-container>\n } @else {\n <span>{{ entry.value }}</span>\n }\n </div>\n }\n }\n </div>\n} @else if (calendarView() === \"year\") {\n <div [class]=\"yearGridClass()\" [attr.aria-labelledby]=\"gridId + '-heading'\">\n @for (row of months(); track $index) {\n @for (monthItem of row; track monthItem) {\n <div\n (click)=\"onMonthClick(monthItem[0])\"\n monaYearMonth\n [month]=\"monthItem[0]\"\n [monthName]=\"monthItem[1]\"\n [navigatedDate]=\"navigatedDate()\"\n [rounded]=\"rounded()\"\n [selectedDate]=\"selectedDates()[0]\">\n @if (yearCellTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"yearCellTemplate()?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: monthItem[0], text: monthItem[1] }\">\n </ng-container>\n } @else {\n <span>{{ monthItem[1] }}</span>\n }\n </div>\n }\n }\n </div>\n} @else if (calendarView() === \"decade\") {\n <div [class]=\"decadeGridClass()\" [attr.aria-labelledby]=\"gridId + '-heading'\">\n @for (row of decadeYears(); track $index) {\n @for (year of row; track year) {\n <div\n (click)=\"onYearClick(year)\"\n monaDecadeYear\n [navigatedDate]=\"navigatedDate()\"\n [rounded]=\"rounded()\"\n [year]=\"year\"\n [selectedDate]=\"selectedDates()[0]\">\n @if (decadeCellTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"decadeCellTemplate()?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: year }\">\n </ng-container>\n } @else {\n <span>{{ year }}</span>\n }\n </div>\n }\n }\n </div>\n}\n" }]
|
|
1558
1558
|
}], ctorParameters: () => [], propDecorators: { decadeCellTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CalendarDecadeCellTemplateDirective), { isSignal: true }] }], monthCellTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CalendarMonthCellTemplateDirective), { isSignal: true }] }], yearCellTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CalendarYearCellTemplateDirective), { isSignal: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], disabledDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDates", required: false }] }], firstDay: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDay", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], weekNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "weekNumber", required: false }] }] } });
|
|
1559
1559
|
|
|
1560
1560
|
/*
|
|
@@ -8,38 +8,38 @@ import { twMerge } from 'tailwind-merge';
|
|
|
8
8
|
import { cva } from 'class-variance-authority';
|
|
9
9
|
|
|
10
10
|
const checkboxVariants = cva(`sr-only appearance-none outline-none peer`);
|
|
11
|
-
const checkmarkVariants = cva(`
|
|
12
|
-
flex items-center justify-center
|
|
13
|
-
w-4.5 h-4.5 pl-0.25
|
|
14
|
-
overflow-hidden outline-none
|
|
15
|
-
|
|
16
|
-
bg-input-background border border-input-border
|
|
17
|
-
cursor-pointer
|
|
18
|
-
|
|
19
|
-
data-[disabled='true']:pointer-events-none
|
|
20
|
-
data-[disabled='true']:cursor-not-allowed
|
|
21
|
-
data-[disabled='true']:opacity-50
|
|
22
|
-
|
|
23
|
-
peer-focus-visible:ring-2 peer-focus-visible:ring-primary/40
|
|
24
|
-
peer-focus-visible:border-primary
|
|
25
|
-
|
|
26
|
-
peer-checked:bg-primary
|
|
27
|
-
peer-checked:text-primary-foreground
|
|
28
|
-
|
|
29
|
-
peer-indeterminate:bg-primary
|
|
30
|
-
peer-indeterminate:text-primary-foreground
|
|
31
|
-
peer-indeterminate:after:content-['']
|
|
32
|
-
peer-indeterminate:after:absolute
|
|
33
|
-
peer-indeterminate:after:inset-[3px_0_3px_0]
|
|
34
|
-
peer-indeterminate:after:[mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23FFFFFF'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M5%2012h14'%2F%3E%3C%2Fsvg%3E")]
|
|
35
|
-
peer-indeterminate:after:[mask-repeat:no-repeat]
|
|
36
|
-
peer-indeterminate:after:[mask-size:contain]
|
|
37
|
-
peer-indeterminate:after:bg-current
|
|
38
|
-
|
|
39
|
-
[&.ng-touched.ng-invalid]:border-error
|
|
40
|
-
|
|
41
|
-
data-[invalid='true']:border-error
|
|
42
|
-
data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
|
|
11
|
+
const checkmarkVariants = cva(`
|
|
12
|
+
flex items-center justify-center
|
|
13
|
+
w-4.5 h-4.5 pl-0.25
|
|
14
|
+
overflow-hidden outline-none
|
|
15
|
+
|
|
16
|
+
bg-input-background border border-input-border
|
|
17
|
+
cursor-pointer
|
|
18
|
+
|
|
19
|
+
data-[disabled='true']:pointer-events-none
|
|
20
|
+
data-[disabled='true']:cursor-not-allowed
|
|
21
|
+
data-[disabled='true']:opacity-50
|
|
22
|
+
|
|
23
|
+
peer-focus-visible:ring-2 peer-focus-visible:ring-primary/40
|
|
24
|
+
peer-focus-visible:border-primary
|
|
25
|
+
|
|
26
|
+
peer-checked:bg-primary
|
|
27
|
+
peer-checked:text-primary-foreground
|
|
28
|
+
|
|
29
|
+
peer-indeterminate:bg-primary
|
|
30
|
+
peer-indeterminate:text-primary-foreground
|
|
31
|
+
peer-indeterminate:after:content-['']
|
|
32
|
+
peer-indeterminate:after:absolute
|
|
33
|
+
peer-indeterminate:after:inset-[3px_0_3px_0]
|
|
34
|
+
peer-indeterminate:after:[mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23FFFFFF'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M5%2012h14'%2F%3E%3C%2Fsvg%3E")]
|
|
35
|
+
peer-indeterminate:after:[mask-repeat:no-repeat]
|
|
36
|
+
peer-indeterminate:after:[mask-size:contain]
|
|
37
|
+
peer-indeterminate:after:bg-current
|
|
38
|
+
|
|
39
|
+
[&.ng-touched.ng-invalid]:border-error
|
|
40
|
+
|
|
41
|
+
data-[invalid='true']:border-error
|
|
42
|
+
data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
|
|
43
43
|
`, {
|
|
44
44
|
variants: {
|
|
45
45
|
rounded: {
|
|
@@ -51,16 +51,16 @@ const checkmarkVariants = cva(`
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
-
const checkboxContainerLabelVariants = cva(`
|
|
55
|
-
w-full h-full
|
|
56
|
-
inline-flex items-center gap-2
|
|
57
|
-
relative
|
|
58
|
-
|
|
59
|
-
select-none
|
|
60
|
-
|
|
61
|
-
data-[disabled='true']:pointer-events-none
|
|
62
|
-
data-[disabled='true']:cursor-not-allowed
|
|
63
|
-
data-[disabled='true']:opacity-50
|
|
54
|
+
const checkboxContainerLabelVariants = cva(`
|
|
55
|
+
w-full h-full
|
|
56
|
+
inline-flex items-center gap-2
|
|
57
|
+
relative
|
|
58
|
+
|
|
59
|
+
select-none
|
|
60
|
+
|
|
61
|
+
data-[disabled='true']:pointer-events-none
|
|
62
|
+
data-[disabled='true']:cursor-not-allowed
|
|
63
|
+
data-[disabled='true']:opacity-50
|
|
64
64
|
`, {
|
|
65
65
|
variants: {
|
|
66
66
|
labelSize: {
|
|
@@ -70,42 +70,42 @@ const checkboxContainerLabelVariants = cva(`
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
|
-
const checkboxDirectiveVariants = cva(`
|
|
74
|
-
appearance-none outline-none
|
|
75
|
-
w-4.5 h-4.5
|
|
76
|
-
bg-input-background border border-input-border
|
|
77
|
-
cursor-pointer
|
|
78
|
-
relative
|
|
79
|
-
|
|
80
|
-
disabled:pointer-events-none
|
|
81
|
-
disabled:cursor-not-allowed
|
|
82
|
-
disabled:opacity-50
|
|
83
|
-
|
|
84
|
-
checked:text-primary-foreground
|
|
85
|
-
indeterminate:text-primary-foreground
|
|
86
|
-
indeterminate:bg-primary
|
|
87
|
-
checked:bg-primary
|
|
88
|
-
|
|
89
|
-
focus-visible:ring-2 focus-visible:ring-primary/40
|
|
90
|
-
focus-visible:border-primary
|
|
91
|
-
|
|
92
|
-
checked:after:content-['']
|
|
93
|
-
checked:after:absolute
|
|
94
|
-
checked:after:inset-[1px_0_0_1px]
|
|
95
|
-
checked:after:[mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23FFFFFF'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M18%206%209%2017l-5-5'/%3E%3C/svg%3E")]
|
|
96
|
-
checked:after:[mask-repeat:no-repeat]
|
|
97
|
-
checked:after:[mask-size:contain]
|
|
98
|
-
checked:after:bg-current
|
|
99
|
-
|
|
100
|
-
indeterminate:after:content-['']
|
|
101
|
-
indeterminate:after:absolute
|
|
102
|
-
indeterminate:after:inset-[1px_0_1px_1px]
|
|
103
|
-
indeterminate:after:[mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23FFFFFF'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M5%2012h14'%2F%3E%3C%2Fsvg%3E")]
|
|
104
|
-
indeterminate:after:[mask-repeat:no-repeat]
|
|
105
|
-
indeterminate:after:[mask-size:contain]
|
|
106
|
-
indeterminate:after:bg-current
|
|
107
|
-
|
|
108
|
-
[&.ng-touched.ng-invalid]:border-error
|
|
73
|
+
const checkboxDirectiveVariants = cva(`
|
|
74
|
+
appearance-none outline-none
|
|
75
|
+
w-4.5 h-4.5
|
|
76
|
+
bg-input-background border border-input-border
|
|
77
|
+
cursor-pointer
|
|
78
|
+
relative
|
|
79
|
+
|
|
80
|
+
disabled:pointer-events-none
|
|
81
|
+
disabled:cursor-not-allowed
|
|
82
|
+
disabled:opacity-50
|
|
83
|
+
|
|
84
|
+
checked:text-primary-foreground
|
|
85
|
+
indeterminate:text-primary-foreground
|
|
86
|
+
indeterminate:bg-primary
|
|
87
|
+
checked:bg-primary
|
|
88
|
+
|
|
89
|
+
focus-visible:ring-2 focus-visible:ring-primary/40
|
|
90
|
+
focus-visible:border-primary
|
|
91
|
+
|
|
92
|
+
checked:after:content-['']
|
|
93
|
+
checked:after:absolute
|
|
94
|
+
checked:after:inset-[1px_0_0_1px]
|
|
95
|
+
checked:after:[mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23FFFFFF'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M18%206%209%2017l-5-5'/%3E%3C/svg%3E")]
|
|
96
|
+
checked:after:[mask-repeat:no-repeat]
|
|
97
|
+
checked:after:[mask-size:contain]
|
|
98
|
+
checked:after:bg-current
|
|
99
|
+
|
|
100
|
+
indeterminate:after:content-['']
|
|
101
|
+
indeterminate:after:absolute
|
|
102
|
+
indeterminate:after:inset-[1px_0_1px_1px]
|
|
103
|
+
indeterminate:after:[mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23FFFFFF'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M5%2012h14'%2F%3E%3C%2Fsvg%3E")]
|
|
104
|
+
indeterminate:after:[mask-repeat:no-repeat]
|
|
105
|
+
indeterminate:after:[mask-size:contain]
|
|
106
|
+
indeterminate:after:bg-current
|
|
107
|
+
|
|
108
|
+
[&.ng-touched.ng-invalid]:border-error
|
|
109
109
|
`, {
|
|
110
110
|
variants: {
|
|
111
111
|
rounded: {
|
|
@@ -278,7 +278,7 @@ class CheckBoxComponent {
|
|
|
278
278
|
this.touch.emit();
|
|
279
279
|
}
|
|
280
280
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CheckBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
281
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CheckBoxComponent, isStandalone: true, selector: "mona-check-box", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, labelSize: { classPropertyName: "labelSize", publicName: "labelSize", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", touch: "touch" }, host: { properties: { "class": "'flex'", "attr.data-checked": "checked()", "attr.data-disabled": "disabled()", "attr.data-indeterminate": "indeterminate()" } }, ngImport: i0, template: "<label [class]=\"containerLabelClasses()\" [attr.data-disabled]=\"disabled()\">\
|
|
281
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CheckBoxComponent, isStandalone: true, selector: "mona-check-box", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, labelSize: { classPropertyName: "labelSize", publicName: "labelSize", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", touch: "touch" }, host: { properties: { "class": "'flex'", "attr.data-checked": "checked()", "attr.data-disabled": "disabled()", "attr.data-indeterminate": "indeterminate()" } }, ngImport: i0, template: "<label [class]=\"containerLabelClasses()\" [attr.data-disabled]=\"disabled()\">\n @if (labelPosition() === \"before\") {\n <ng-container [ngTemplateOutlet]=\"labelTemplate\"></ng-container>\n }\n\n <input\n type=\"checkbox\"\n [disabled]=\"disabled()\"\n [indeterminate]=\"indeterminate()\"\n [required]=\"required()\"\n [ngModel]=\"checked()\"\n [tabindex]=\"disabled() ? -1 : tabIndex()\"\n [class]=\"checkBoxClasses()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : null\"\n [attr.aria-invalid]=\"invalidState() ? 'true' : null\"\n [attr.aria-label]=\"label() || null\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"inputFocus.emit($event)\"\n (ngModelChange)=\"onCheckedChange($event)\"\n #checkBox />\n\n <span [class]=\"checkMarkClasses()\" [attr.data-invalid]=\"invalidState() || null\" aria-hidden=\"true\">\n @if (checked()) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"lucide lucide-check stroke-primary-foreground\">\n <path d=\"M18 6 9 17l-5-5\" />\n </svg>\n }\n </span>\n @if (labelPosition() === \"after\") {\n <ng-container [ngTemplateOutlet]=\"labelTemplate\"></ng-container>\n }\n</label>\n\n<ng-template #labelTemplate>\n @if (label()) {\n <span>{{ label() }}</span>\n } @else {\n <ng-content></ng-content>\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
282
282
|
}
|
|
283
283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CheckBoxComponent, decorators: [{
|
|
284
284
|
type: Component,
|
|
@@ -287,7 +287,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
287
287
|
"[attr.data-checked]": "checked()",
|
|
288
288
|
"[attr.data-disabled]": "disabled()",
|
|
289
289
|
"[attr.data-indeterminate]": "indeterminate()"
|
|
290
|
-
}, template: "<label [class]=\"containerLabelClasses()\" [attr.data-disabled]=\"disabled()\">\
|
|
290
|
+
}, template: "<label [class]=\"containerLabelClasses()\" [attr.data-disabled]=\"disabled()\">\n @if (labelPosition() === \"before\") {\n <ng-container [ngTemplateOutlet]=\"labelTemplate\"></ng-container>\n }\n\n <input\n type=\"checkbox\"\n [disabled]=\"disabled()\"\n [indeterminate]=\"indeterminate()\"\n [required]=\"required()\"\n [ngModel]=\"checked()\"\n [tabindex]=\"disabled() ? -1 : tabIndex()\"\n [class]=\"checkBoxClasses()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : null\"\n [attr.aria-invalid]=\"invalidState() ? 'true' : null\"\n [attr.aria-label]=\"label() || null\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"inputFocus.emit($event)\"\n (ngModelChange)=\"onCheckedChange($event)\"\n #checkBox />\n\n <span [class]=\"checkMarkClasses()\" [attr.data-invalid]=\"invalidState() || null\" aria-hidden=\"true\">\n @if (checked()) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"lucide lucide-check stroke-primary-foreground\">\n <path d=\"M18 6 9 17l-5-5\" />\n </svg>\n }\n </span>\n @if (labelPosition() === \"after\") {\n <ng-container [ngTemplateOutlet]=\"labelTemplate\"></ng-container>\n }\n</label>\n\n<ng-template #labelTemplate>\n @if (label()) {\n <span>{{ label() }}</span>\n } @else {\n <ng-content></ng-content>\n }\n</ng-template>\n" }]
|
|
291
291
|
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], inputBlur: [{ type: i0.Output, args: ["inputBlur"] }], inputChange: [{ type: i0.Output, args: ["inputChange"] }], inputFocus: [{ type: i0.Output, args: ["inputFocus"] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], labelSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelSize", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
292
292
|
|
|
293
293
|
class CheckboxDirective {
|