@neural-ui/core 1.6.1 → 1.6.2
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/neural-ui-core-accordion.mjs +7 -11
- package/fesm2022/neural-ui-core-accordion.mjs.map +1 -1
- package/fesm2022/neural-ui-core-alert.mjs +14 -25
- package/fesm2022/neural-ui-core-alert.mjs.map +1 -1
- package/fesm2022/neural-ui-core-autocomplete.mjs +28 -53
- package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -1
- package/fesm2022/neural-ui-core-avatar.mjs +13 -23
- package/fesm2022/neural-ui-core-avatar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-badge.mjs +9 -15
- package/fesm2022/neural-ui-core-badge.mjs.map +1 -1
- package/fesm2022/neural-ui-core-block-ui.mjs +11 -16
- package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -1
- package/fesm2022/neural-ui-core-breadcrumb.mjs +6 -8
- package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/neural-ui-core-button.mjs +16 -29
- package/fesm2022/neural-ui-core-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-calendar.mjs +20 -37
- package/fesm2022/neural-ui-core-calendar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-card.mjs +8 -13
- package/fesm2022/neural-ui-core-card.mjs.map +1 -1
- package/fesm2022/neural-ui-core-chart.mjs +24 -45
- package/fesm2022/neural-ui-core-chart.mjs.map +1 -1
- package/fesm2022/neural-ui-core-checkbox.mjs +9 -15
- package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -1
- package/fesm2022/neural-ui-core-chip.mjs +13 -23
- package/fesm2022/neural-ui-core-chip.mjs.map +1 -1
- package/fesm2022/neural-ui-core-code-block.mjs +17 -31
- package/fesm2022/neural-ui-core-code-block.mjs.map +1 -1
- package/fesm2022/neural-ui-core-color-picker.mjs +11 -19
- package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -1
- package/fesm2022/neural-ui-core-command-palette.mjs +11 -16
- package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -1
- package/fesm2022/neural-ui-core-confirm-dialog.mjs +6 -6
- package/fesm2022/neural-ui-core-confirm-dialog.mjs.map +1 -1
- package/fesm2022/neural-ui-core-context-menu.mjs +9 -12
- package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -1
- package/fesm2022/neural-ui-core-dashboard-grid.mjs +7 -11
- package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -1
- package/fesm2022/neural-ui-core-date-input.mjs +57 -111
- package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-divider.mjs +5 -7
- package/fesm2022/neural-ui-core-divider.mjs.map +1 -1
- package/fesm2022/neural-ui-core-empty-state.mjs +8 -13
- package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -1
- package/fesm2022/neural-ui-core-filter-bar.mjs +11 -19
- package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-icon.mjs +7 -11
- package/fesm2022/neural-ui-core-icon.mjs.map +1 -1
- package/fesm2022/neural-ui-core-image-gallery.mjs +13 -23
- package/fesm2022/neural-ui-core-image-gallery.mjs.map +1 -1
- package/fesm2022/neural-ui-core-image-viewer.mjs +14 -22
- package/fesm2022/neural-ui-core-image-viewer.mjs.map +1 -1
- package/fesm2022/neural-ui-core-input-otp.mjs +11 -19
- package/fesm2022/neural-ui-core-input-otp.mjs.map +1 -1
- package/fesm2022/neural-ui-core-input.mjs +35 -67
- package/fesm2022/neural-ui-core-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-kanban.mjs +9 -15
- package/fesm2022/neural-ui-core-kanban.mjs.map +1 -1
- package/fesm2022/neural-ui-core-knob.mjs +22 -41
- package/fesm2022/neural-ui-core-knob.mjs.map +1 -1
- package/fesm2022/neural-ui-core-meter-group.mjs +13 -23
- package/fesm2022/neural-ui-core-meter-group.mjs.map +1 -1
- package/fesm2022/neural-ui-core-modal.mjs +11 -16
- package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
- package/fesm2022/neural-ui-core-multiselect.mjs +39 -72
- package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
- package/fesm2022/neural-ui-core-nav.mjs +13 -22
- package/fesm2022/neural-ui-core-nav.mjs.map +1 -1
- package/fesm2022/neural-ui-core-notification-center.mjs +9 -12
- package/fesm2022/neural-ui-core-notification-center.mjs.map +1 -1
- package/fesm2022/neural-ui-core-number-input.mjs +19 -35
- package/fesm2022/neural-ui-core-number-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-pagination.mjs +9 -15
- package/fesm2022/neural-ui-core-pagination.mjs.map +1 -1
- package/fesm2022/neural-ui-core-popover.mjs +14 -22
- package/fesm2022/neural-ui-core-popover.mjs.map +1 -1
- package/fesm2022/neural-ui-core-progress-bar.mjs +11 -19
- package/fesm2022/neural-ui-core-progress-bar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-radio.mjs +15 -24
- package/fesm2022/neural-ui-core-radio.mjs.map +1 -1
- package/fesm2022/neural-ui-core-rating.mjs +8 -13
- package/fesm2022/neural-ui-core-rating.mjs.map +1 -1
- package/fesm2022/neural-ui-core-rich-text-editor.mjs +28 -53
- package/fesm2022/neural-ui-core-rich-text-editor.mjs.map +1 -1
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs +22 -41
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs.map +1 -1
- package/fesm2022/neural-ui-core-select.mjs +43 -77
- package/fesm2022/neural-ui-core-select.mjs.map +1 -1
- package/fesm2022/neural-ui-core-sidebar.mjs +12 -21
- package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-skeleton.mjs +7 -11
- package/fesm2022/neural-ui-core-skeleton.mjs.map +1 -1
- package/fesm2022/neural-ui-core-slider.mjs +13 -23
- package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
- package/fesm2022/neural-ui-core-spinner.mjs +10 -17
- package/fesm2022/neural-ui-core-spinner.mjs.map +1 -1
- package/fesm2022/neural-ui-core-split-button.mjs +15 -27
- package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-splitter.mjs +6 -9
- package/fesm2022/neural-ui-core-splitter.mjs.map +1 -1
- package/fesm2022/neural-ui-core-stats-card.mjs +11 -19
- package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -1
- package/fesm2022/neural-ui-core-stepper.mjs +8 -13
- package/fesm2022/neural-ui-core-stepper.mjs.map +1 -1
- package/fesm2022/neural-ui-core-switch.mjs +9 -15
- package/fesm2022/neural-ui-core-switch.mjs.map +1 -1
- package/fesm2022/neural-ui-core-table.mjs +124 -242
- package/fesm2022/neural-ui-core-table.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tabs.mjs +18 -30
- package/fesm2022/neural-ui-core-tabs.mjs.map +1 -1
- package/fesm2022/neural-ui-core-textarea.mjs +23 -43
- package/fesm2022/neural-ui-core-textarea.mjs.map +1 -1
- package/fesm2022/neural-ui-core-timeline-grid.mjs +12 -21
- package/fesm2022/neural-ui-core-timeline-grid.mjs.map +1 -1
- package/fesm2022/neural-ui-core-timeline.mjs +4 -5
- package/fesm2022/neural-ui-core-timeline.mjs.map +1 -1
- package/fesm2022/neural-ui-core-toast.mjs +8 -10
- package/fesm2022/neural-ui-core-toast.mjs.map +1 -1
- package/fesm2022/neural-ui-core-toggle-button-group.mjs +10 -17
- package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
- package/fesm2022/neural-ui-core-toolbar.mjs +8 -13
- package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tooltip.mjs +11 -16
- package/fesm2022/neural-ui-core-tooltip.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tree-table.mjs +30 -57
- package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tree.mjs +17 -31
- package/fesm2022/neural-ui-core-tree.mjs.map +1 -1
- package/fesm2022/neural-ui-core-uploader.mjs +47 -91
- package/fesm2022/neural-ui-core-uploader.mjs.map +1 -1
- package/fesm2022/neural-ui-core-url-state.mjs +5 -7
- package/fesm2022/neural-ui-core-url-state.mjs.map +1 -1
- package/fesm2022/neural-ui-core-virtual-list.mjs +19 -32
- package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -1
- package/package.json +6 -6
|
@@ -48,43 +48,32 @@ function defaultCalendarLabels(locale) {
|
|
|
48
48
|
return locale.toLowerCase().startsWith('es') ? ES_CALENDAR_LABELS : EN_CALENDAR_LABELS;
|
|
49
49
|
}
|
|
50
50
|
class NeuCalendarComponent {
|
|
51
|
-
events = input([], /*
|
|
52
|
-
...(ngDevMode ? [{ debugName: "
|
|
53
|
-
|
|
54
|
-
...(ngDevMode ? [{ debugName: "
|
|
55
|
-
|
|
56
|
-
...(ngDevMode ? [{ debugName: "
|
|
57
|
-
|
|
58
|
-
...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
|
|
59
|
-
maxVisibleEvents = input(3, /* @ts-ignore */
|
|
60
|
-
...(ngDevMode ? [{ debugName: "maxVisibleEvents" }] : /* istanbul ignore next */ []));
|
|
61
|
-
showHeader = input(true, /* @ts-ignore */
|
|
62
|
-
...(ngDevMode ? [{ debugName: "showHeader" }] : /* istanbul ignore next */ []));
|
|
63
|
-
labels = input({}, /* @ts-ignore */
|
|
64
|
-
...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
|
|
51
|
+
events = input([], ...(ngDevMode ? [{ debugName: "events" }] : /* istanbul ignore next */ []));
|
|
52
|
+
view = input('month', ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
|
|
53
|
+
selectedDate = input(new Date(), ...(ngDevMode ? [{ debugName: "selectedDate" }] : /* istanbul ignore next */ []));
|
|
54
|
+
locale = input(defaultCalendarLocale(), ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
|
|
55
|
+
maxVisibleEvents = input(3, ...(ngDevMode ? [{ debugName: "maxVisibleEvents" }] : /* istanbul ignore next */ []));
|
|
56
|
+
showHeader = input(true, ...(ngDevMode ? [{ debugName: "showHeader" }] : /* istanbul ignore next */ []));
|
|
57
|
+
labels = input({}, ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
|
|
65
58
|
selectedDateChange = output();
|
|
66
59
|
dateSelect = output();
|
|
67
60
|
eventClick = output();
|
|
68
|
-
_selectedDate = signal(startOfDay(new Date()), /*
|
|
69
|
-
...(ngDevMode ? [{ debugName: "_selectedDate" }] : /* istanbul ignore next */ []));
|
|
61
|
+
_selectedDate = signal(startOfDay(new Date()), ...(ngDevMode ? [{ debugName: "_selectedDate" }] : /* istanbul ignore next */ []));
|
|
70
62
|
resolvedLabels = computed(() => ({
|
|
71
63
|
...defaultCalendarLabels(this.locale()),
|
|
72
64
|
...this.labels(),
|
|
73
|
-
}), /*
|
|
74
|
-
...(ngDevMode ? [{ debugName: "resolvedLabels" }] : /* istanbul ignore next */ []));
|
|
65
|
+
}), ...(ngDevMode ? [{ debugName: "resolvedLabels" }] : /* istanbul ignore next */ []));
|
|
75
66
|
normalizedEvents = computed(() => this.events()
|
|
76
67
|
.map((event) => ({
|
|
77
68
|
...event,
|
|
78
69
|
start: this.coerceDate(event.start),
|
|
79
70
|
end: event.end ? this.coerceDate(event.end) : undefined,
|
|
80
71
|
}))
|
|
81
|
-
.sort((a, b) => a.start.getTime() - b.start.getTime()), /*
|
|
82
|
-
...(ngDevMode ? [{ debugName: "normalizedEvents" }] : /* istanbul ignore next */ []));
|
|
72
|
+
.sort((a, b) => a.start.getTime() - b.start.getTime()), ...(ngDevMode ? [{ debugName: "normalizedEvents" }] : /* istanbul ignore next */ []));
|
|
83
73
|
weekdays = computed(() => {
|
|
84
74
|
const base = startOfWeek(new Date(2026, 0, 5));
|
|
85
75
|
return Array.from({ length: 7 }, (_, index) => new Intl.DateTimeFormat(this.locale(), { weekday: 'short' }).format(addDays(base, index)));
|
|
86
|
-
}, /*
|
|
87
|
-
...(ngDevMode ? [{ debugName: "weekdays" }] : /* istanbul ignore next */ []));
|
|
76
|
+
}, ...(ngDevMode ? [{ debugName: "weekdays" }] : /* istanbul ignore next */ []));
|
|
88
77
|
monthDays = computed(() => {
|
|
89
78
|
const selected = this._selectedDate();
|
|
90
79
|
const firstDayOfMonth = new Date(selected.getFullYear(), selected.getMonth(), 1);
|
|
@@ -93,23 +82,18 @@ class NeuCalendarComponent {
|
|
|
93
82
|
const date = addDays(gridStart, index);
|
|
94
83
|
return this.buildDayCell(date, date.getMonth() === selected.getMonth());
|
|
95
84
|
});
|
|
96
|
-
}, /*
|
|
97
|
-
...(ngDevMode ? [{ debugName: "monthDays" }] : /* istanbul ignore next */ []));
|
|
85
|
+
}, ...(ngDevMode ? [{ debugName: "monthDays" }] : /* istanbul ignore next */ []));
|
|
98
86
|
weekDays = computed(() => {
|
|
99
87
|
const start = startOfWeek(this._selectedDate());
|
|
100
88
|
return Array.from({ length: 7 }, (_, index) => this.buildDayCell(addDays(start, index), true));
|
|
101
|
-
}, /*
|
|
102
|
-
...(ngDevMode ? [{ debugName: "
|
|
103
|
-
|
|
104
|
-
...(ngDevMode ? [{ debugName: "selectedDay" }] : /* istanbul ignore next */ []));
|
|
105
|
-
selectedDayEvents = computed(() => this.selectedDay().events, /* @ts-ignore */
|
|
106
|
-
...(ngDevMode ? [{ debugName: "selectedDayEvents" }] : /* istanbul ignore next */ []));
|
|
89
|
+
}, ...(ngDevMode ? [{ debugName: "weekDays" }] : /* istanbul ignore next */ []));
|
|
90
|
+
selectedDay = computed(() => this.buildDayCell(this._selectedDate(), true), ...(ngDevMode ? [{ debugName: "selectedDay" }] : /* istanbul ignore next */ []));
|
|
91
|
+
selectedDayEvents = computed(() => this.selectedDay().events, ...(ngDevMode ? [{ debugName: "selectedDayEvents" }] : /* istanbul ignore next */ []));
|
|
107
92
|
selectedAgendaLabel = computed(() => new Intl.DateTimeFormat(this.locale(), {
|
|
108
93
|
weekday: 'long',
|
|
109
94
|
month: 'long',
|
|
110
95
|
day: 'numeric',
|
|
111
|
-
}).format(this._selectedDate()), /*
|
|
112
|
-
...(ngDevMode ? [{ debugName: "selectedAgendaLabel" }] : /* istanbul ignore next */ []));
|
|
96
|
+
}).format(this._selectedDate()), ...(ngDevMode ? [{ debugName: "selectedAgendaLabel" }] : /* istanbul ignore next */ []));
|
|
113
97
|
currentLabel = computed(() => {
|
|
114
98
|
const selected = this._selectedDate();
|
|
115
99
|
if (this.view() === 'month') {
|
|
@@ -119,8 +103,7 @@ class NeuCalendarComponent {
|
|
|
119
103
|
const weekEnd = addDays(weekStart, 6);
|
|
120
104
|
const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' });
|
|
121
105
|
return `${formatter.format(weekStart)} - ${formatter.format(weekEnd)}`;
|
|
122
|
-
}, /*
|
|
123
|
-
...(ngDevMode ? [{ debugName: "currentLabel" }] : /* istanbul ignore next */ []));
|
|
106
|
+
}, ...(ngDevMode ? [{ debugName: "currentLabel" }] : /* istanbul ignore next */ []));
|
|
124
107
|
constructor() {
|
|
125
108
|
effect(() => {
|
|
126
109
|
this._selectedDate.set(this.coerceDate(this.selectedDate()));
|
|
@@ -222,8 +205,8 @@ class NeuCalendarComponent {
|
|
|
222
205
|
const candidate = value instanceof Date ? value : new Date(value);
|
|
223
206
|
return Number.isNaN(candidate.getTime()) ? startOfDay(new Date()) : startOfDay(candidate);
|
|
224
207
|
}
|
|
225
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
226
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
208
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: NeuCalendarComponent, isStandalone: true, selector: "neu-calendar", inputs: { events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleEvents: { classPropertyName: "maxVisibleEvents", publicName: "maxVisibleEvents", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDateChange: "selectedDateChange", dateSelect: "dateSelect", eventClick: "eventClick" }, ngImport: i0, template: `
|
|
227
210
|
<div
|
|
228
211
|
class="neu-calendar"
|
|
229
212
|
[class.neu-calendar--month]="view() === 'month'"
|
|
@@ -394,7 +377,7 @@ class NeuCalendarComponent {
|
|
|
394
377
|
</div>
|
|
395
378
|
`, isInline: true, styles: [".neu-calendar{display:grid;gap:var(--neu-space-4);padding:var(--neu-space-4);overflow:hidden;border-radius:calc(var(--neu-radius-lg) + 4px);background:radial-gradient(circle at top left,color-mix(in srgb,var(--neu-primary) 6%,transparent 94%),transparent 30%),linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 82%,var(--neu-surface) 18%),var(--neu-surface));border:1px solid color-mix(in srgb,var(--neu-border) 92%,transparent 8%);box-shadow:var(--neu-shadow-sm)}.neu-calendar--month .neu-calendar__weekdays,.neu-calendar--month .neu-calendar__month-grid{min-width:800px}.neu-calendar--month .neu-calendar__month-grid{grid-auto-rows:172px}.neu-calendar--month .neu-calendar__day{min-height:0;height:100%}.neu-calendar--month .neu-calendar__event-list{max-height:100%}.neu-calendar--week .neu-calendar__weekdays,.neu-calendar--week .neu-calendar__week-grid{min-width:0}.neu-calendar__viewport{display:grid;gap:8px;overflow-x:auto;overflow-y:hidden;min-width:0;scrollbar-gutter:stable}.neu-calendar__viewport{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--neu-border) 88%,transparent 12%) transparent}.neu-calendar__viewport::-webkit-scrollbar{height:8px}.neu-calendar__viewport::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px}.neu-calendar__header{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-4);flex-wrap:wrap}.neu-calendar__nav{display:inline-flex;align-items:center;gap:var(--neu-space-2)}.neu-calendar__title{margin:0;font-size:clamp(1.05rem,1vw + .9rem,1.35rem);font-weight:700;color:var(--neu-text);text-transform:capitalize}.neu-calendar__nav-btn{min-width:36px;height:36px;border:1px solid color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px;background:color-mix(in srgb,var(--neu-surface) 88%,var(--neu-surface-2) 12%);color:var(--neu-text);cursor:pointer;transition:transform var(--neu-transition),border-color var(--neu-transition),background var(--neu-transition)}.neu-calendar__nav-btn:hover,.neu-calendar__today:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--neu-primary) 45%,var(--neu-border) 55%)}.neu-calendar__today{height:36px;padding:0 var(--neu-space-3);border:1px solid color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px;background:color-mix(in srgb,var(--neu-surface-2) 92%,var(--neu-surface) 8%);color:var(--neu-text);cursor:pointer;font-weight:600;transition:transform var(--neu-transition),border-color var(--neu-transition),background var(--neu-transition)}.neu-calendar__weekdays,.neu-calendar__month-grid,.neu-calendar__week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;background:transparent;border:none;border-radius:0;overflow:visible}.neu-calendar__weekday{padding:0 8px 6px;text-align:center;background:transparent;color:var(--neu-text-muted);font-size:var(--neu-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.neu-calendar__day{min-height:110px;padding:10px;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface) 96%,var(--neu-surface-2) 4%),color-mix(in srgb,var(--neu-surface) 88%,black 12%));display:grid;grid-template-rows:auto minmax(0,1fr);align-content:start;gap:var(--neu-space-2);cursor:pointer;text-align:left;box-sizing:border-box;min-width:0;overflow:hidden;box-shadow:0 12px 24px -24px color-mix(in srgb,black 32%,transparent 68%),inset 0 1px color-mix(in srgb,white 8%,transparent 92%);transition:background var(--neu-transition),box-shadow var(--neu-transition),border-color var(--neu-transition),transform var(--neu-transition)}.neu-calendar__day--outside{background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 90%,black 10%),color-mix(in srgb,var(--neu-surface-2) 82%,black 18%));box-shadow:none;opacity:.72}.neu-calendar__day--today{border-color:color-mix(in srgb,var(--neu-primary) 36%,var(--neu-border) 64%);background:linear-gradient(180deg,color-mix(in srgb,var(--neu-primary) 10%,var(--neu-surface) 90%),color-mix(in srgb,var(--neu-primary) 6%,var(--neu-surface) 94%));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--neu-primary) 22%,transparent 78%),0 12px 26px -24px color-mix(in srgb,var(--neu-primary) 18%,transparent 82%)}.neu-calendar__day--selected{background:linear-gradient(180deg,color-mix(in srgb,var(--neu-primary) 14%,var(--neu-surface) 86%),color-mix(in srgb,var(--neu-primary) 8%,var(--neu-surface) 92%));border-color:color-mix(in srgb,var(--neu-primary) 38%,var(--neu-border) 62%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--neu-primary) 22%,transparent 78%),0 12px 24px -24px color-mix(in srgb,var(--neu-primary) 18%,transparent 82%)}.neu-calendar__day:hover,.neu-calendar__week-day:hover{background:color-mix(in srgb,var(--neu-primary) 4%,var(--neu-surface) 96%);border-color:color-mix(in srgb,var(--neu-primary) 22%,var(--neu-border) 78%);transform:translateY(-1px)}.neu-calendar__day-select:focus-visible,.neu-calendar__event:focus-visible,.neu-calendar__nav-btn:focus-visible,.neu-calendar__today:focus-visible{outline:2px solid color-mix(in srgb,var(--neu-primary) 75%,white 25%);outline-offset:-2px}.neu-calendar__day-top{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-2);min-width:0}.neu-calendar__day-select{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-2);width:100%;min-width:0;padding:0;border:0;border-radius:999px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.neu-calendar__day-count{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--neu-primary) 10%,var(--neu-surface) 90%);color:var(--neu-text);font-size:11px;font-weight:700;flex-shrink:0}.neu-calendar__day-number{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:999px;font-size:var(--neu-text-sm);color:var(--neu-text)}.neu-calendar__day--selected .neu-calendar__day-number{background:color-mix(in srgb,var(--neu-primary) 78%,black 22%);color:#fff}.neu-calendar__event-list{display:grid;gap:4px;align-content:start;overflow-x:hidden;overflow-y:auto;min-height:0;min-width:0;width:100%;padding-right:2px;scrollbar-gutter:stable}.neu-calendar__event-list{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--neu-border) 88%,transparent 12%) transparent}.neu-calendar__event-list::-webkit-scrollbar{width:6px}.neu-calendar__event-list::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px}.neu-calendar__event{display:grid;gap:2px;width:100%;justify-self:stretch;align-self:start;padding:8px;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-left:2px solid var(--neu-primary);border-radius:14px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 46%,var(--neu-surface) 54%),color-mix(in srgb,var(--neu-surface) 74%,black 26%));text-align:left;cursor:pointer;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent 94%),0 10px 18px -20px color-mix(in srgb,black 34%,transparent 66%);min-width:0;box-sizing:border-box;max-width:100%;overflow:hidden}.neu-calendar__event--compact{gap:1px;padding:5px 6px;border-radius:12px;box-shadow:none}.neu-calendar__event--compact .neu-calendar__event-title,.neu-calendar__event--compact .neu-calendar__event-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-calendar__event--compact .neu-calendar__event-title{font-size:11px}.neu-calendar__event--compact .neu-calendar__event-meta{font-size:10px}.neu-calendar__event--default{border-left-color:var(--neu-primary)}.neu-calendar__event--success{border-left-color:var(--neu-success)}.neu-calendar__event--warning{border-left-color:var(--neu-warning)}.neu-calendar__event--danger{border-left-color:var(--neu-danger)}.neu-calendar__event--info{border-left-color:#0ea5e9}.neu-calendar__event-title{font-size:var(--neu-text-xs);font-weight:700;color:var(--neu-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-calendar__event-meta{font-size:11px;color:var(--neu-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-calendar__more{display:inline-flex;align-items:center;justify-content:center;min-height:28px;width:100%;padding:0 8px;border-radius:12px;border:1px dashed color-mix(in srgb,var(--neu-border) 92%,transparent 8%);background:color-mix(in srgb,var(--neu-surface-2) 72%,var(--neu-surface) 28%);font-size:11px;color:var(--neu-text-muted);box-sizing:border-box}.neu-calendar__more--summary{font-weight:700;letter-spacing:.01em}.neu-calendar__agenda{display:grid;gap:var(--neu-space-3);padding:14px;min-width:0;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface) 94%,var(--neu-surface-2) 6%),color-mix(in srgb,var(--neu-surface) 86%,black 14%));box-shadow:0 12px 24px -24px color-mix(in srgb,black 28%,transparent 72%),inset 0 1px color-mix(in srgb,white 8%,transparent 92%)}.neu-calendar__agenda-header{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-3);flex-wrap:wrap}.neu-calendar__agenda-title{margin:0;font-size:var(--neu-text-base);font-weight:700;color:var(--neu-text);text-transform:capitalize}.neu-calendar__agenda-count{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--neu-primary) 10%,var(--neu-surface) 90%);color:var(--neu-text);font-size:11px;font-weight:700}.neu-calendar__agenda-list{display:grid;gap:8px}.neu-calendar__agenda-event{min-height:48px}.neu-calendar__agenda-empty{margin:0;color:var(--neu-text-muted);font-size:var(--neu-text-sm)}.neu-calendar__week-day{min-height:220px;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface) 94%,var(--neu-surface-2) 6%),color-mix(in srgb,var(--neu-surface) 84%,black 16%));display:grid;grid-template-rows:auto 1fr;text-align:left;box-sizing:border-box;min-width:0;overflow:hidden;box-shadow:0 12px 24px -24px color-mix(in srgb,black 32%,transparent 68%),inset 0 1px color-mix(in srgb,white 8%,transparent 92%)}.neu-calendar__week-head{display:grid;gap:4px;width:100%;padding:14px 12px 12px;border:0;border-bottom:1px solid color-mix(in srgb,var(--neu-border) 90%,transparent 10%);background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 78%,transparent 22%),transparent);border-radius:18px 18px 0 0;cursor:pointer}.neu-calendar__week-date{font-size:var(--neu-text-xs);color:var(--neu-text-muted)}.neu-calendar__week-events{scrollbar-width:none}.neu-calendar__week-events::-webkit-scrollbar{display:none}.neu-calendar__week-events{padding:12px;display:grid;align-content:start;gap:var(--neu-space-2);overflow:hidden;min-height:0;min-width:0}.neu-calendar__empty{margin:0;font-size:var(--neu-text-sm);color:var(--neu-text-muted);line-height:1.35}@media(max-width:860px){.neu-calendar{padding:var(--neu-space-3)}.neu-calendar--month .neu-calendar__weekdays,.neu-calendar--month .neu-calendar__month-grid{min-width:760px}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
396
379
|
}
|
|
397
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCalendarComponent, decorators: [{
|
|
398
381
|
type: Component,
|
|
399
382
|
args: [{ selector: 'neu-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
400
383
|
<div
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neural-ui-core-calendar.mjs","sources":["../../../../projects/ui-core/calendar/neu-calendar.component.ts","../../../../projects/ui-core/calendar/neural-ui-core-calendar.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\n\nexport type NeuCalendarView = 'month' | 'week';\nexport type NeuCalendarEventVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface NeuCalendarEvent {\n id: string;\n title: string;\n start: string | Date;\n end?: string | Date;\n description?: string;\n meta?: string;\n allDay?: boolean;\n variant?: NeuCalendarEventVariant;\n}\n\nexport interface NeuCalendarLabels {\n previousButtonAriaLabel: string;\n nextButtonAriaLabel: string;\n todayButton: string;\n allDay: string;\n noEvents: string;\n eventCount: (count: number) => string;\n moreEvents: (count: number) => string;\n}\n\nexport type NeuCalendarLabelOverrides = Partial<NeuCalendarLabels>;\n\ninterface NormalizedCalendarEvent extends Omit<NeuCalendarEvent, 'start' | 'end'> {\n start: Date;\n end?: Date;\n}\n\ninterface CalendarDayCell {\n date: Date;\n inCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n events: NormalizedCalendarEvent[];\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction sameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction addDays(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setDate(next.getDate() + amount);\n return next;\n}\n\nfunction addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, date.getDate());\n}\n\nfunction startOfWeek(date: Date): Date {\n const normalized = startOfDay(date);\n const day = normalized.getDay();\n const diff = day === 0 ? -6 : 1 - day;\n return addDays(normalized, diff);\n}\n\nconst EN_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Previous',\n nextButtonAriaLabel: 'Next',\n todayButton: 'Today',\n allDay: 'All day',\n noEvents: 'No events',\n eventCount: (count) => `${count} ${count === 1 ? 'event' : 'events'}`,\n moreEvents: (count) => `+${count} more`,\n};\n\nconst ES_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Anterior',\n nextButtonAriaLabel: 'Siguiente',\n todayButton: 'Hoy',\n allDay: 'Todo el dia',\n noEvents: 'Sin eventos',\n eventCount: (count) => `${count} evento${count === 1 ? '' : 's'}`,\n moreEvents: (count) => `+${count} mas`,\n};\n\nfunction defaultCalendarLocale(): string {\n return typeof navigator !== 'undefined' && navigator.language ? navigator.language : 'en-US';\n}\n\nfunction defaultCalendarLabels(locale: string): NeuCalendarLabels {\n return locale.toLowerCase().startsWith('es') ? ES_CALENDAR_LABELS : EN_CALENDAR_LABELS;\n}\n\n@Component({\n selector: 'neu-calendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"neu-calendar\"\n [class.neu-calendar--month]=\"view() === 'month'\"\n [class.neu-calendar--week]=\"view() === 'week'\"\n >\n @if (showHeader()) {\n <header class=\"neu-calendar__header\">\n <div>\n <h3 class=\"neu-calendar__title\">{{ currentLabel() }}</h3>\n </div>\n\n <div class=\"neu-calendar__nav\">\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().previousButtonAriaLabel\"\n (click)=\"prev()\"\n >\n ‹\n </button>\n <button type=\"button\" class=\"neu-calendar__today\" (click)=\"today()\">\n {{ resolvedLabels().todayButton }}\n </button>\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().nextButtonAriaLabel\"\n (click)=\"next()\"\n >\n ›\n </button>\n </div>\n </header>\n }\n\n <div class=\"neu-calendar__viewport\">\n <div class=\"neu-calendar__weekdays\">\n @for (weekday of weekdays(); track $index) {\n <div class=\"neu-calendar__weekday\">{{ weekday }}</div>\n }\n </div>\n\n @if (view() === 'month') {\n <div class=\"neu-calendar__month-grid\">\n @for (day of monthDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--outside]=\"!day.inCurrentMonth\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <div class=\"neu-calendar__day-top\">\n <button\n type=\"button\"\n class=\"neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n @if (day.events.length > 0) {\n <span class=\"neu-calendar__day-count\">{{ day.events.length }}</span>\n }\n </button>\n </div>\n <div class=\"neu-calendar__event-list\">\n @for (event of monthVisibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event neu-calendar__event--compact\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--compact neu-calendar__event--' +\n (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n </article>\n }\n </div>\n } @else {\n <div class=\"neu-calendar__week-grid\">\n @for (day of weekDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__week-day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <button\n type=\"button\"\n class=\"neu-calendar__week-head neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n <span class=\"neu-calendar__week-date\">{{ formatWeekDate(day.date) }}</span>\n </button>\n\n <div class=\"neu-calendar__week-events\">\n @if (day.events.length === 0) {\n <p class=\"neu-calendar__empty\">{{ resolvedLabels().noEvents }}</p>\n }\n\n @for (event of visibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--' + (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n\n @if (day.events.length > maxVisibleEvents()) {\n <span class=\"neu-calendar__more\">{{\n resolvedLabels().moreEvents(day.events.length - maxVisibleEvents())\n }}</span>\n }\n </div>\n </article>\n }\n </div>\n }\n </div>\n\n <section class=\"neu-calendar__agenda\" aria-live=\"polite\">\n <div class=\"neu-calendar__agenda-header\">\n <h4 class=\"neu-calendar__agenda-title\">{{ selectedAgendaLabel() }}</h4>\n <span class=\"neu-calendar__agenda-count\">{{\n resolvedLabels().eventCount(selectedDayEvents().length)\n }}</span>\n </div>\n\n @if (selectedDayEvents().length === 0) {\n <p class=\"neu-calendar__agenda-empty\">{{ resolvedLabels().noEvents }}</p>\n } @else {\n <div class=\"neu-calendar__agenda-list\">\n @for (event of selectedDayEvents(); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__agenda-event neu-calendar__event neu-calendar__event--{{\n event.variant || 'default'\n }}\"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n }\n </section>\n </div>\n `,\n styleUrl: './neu-calendar.component.scss',\n})\nexport class NeuCalendarComponent {\n readonly events = input<NeuCalendarEvent[]>([]);\n readonly view = input<NeuCalendarView>('month');\n readonly selectedDate = input<Date | string>(new Date());\n readonly locale = input<string>(defaultCalendarLocale());\n readonly maxVisibleEvents = input<number>(3);\n readonly showHeader = input<boolean>(true);\n readonly labels = input<NeuCalendarLabelOverrides>({});\n\n readonly selectedDateChange = output<Date>();\n readonly dateSelect = output<Date>();\n readonly eventClick = output<NeuCalendarEvent>();\n\n private readonly _selectedDate = signal(startOfDay(new Date()));\n\n readonly resolvedLabels = computed<NeuCalendarLabels>(() => ({\n ...defaultCalendarLabels(this.locale()),\n ...this.labels(),\n }));\n\n readonly normalizedEvents = computed<NormalizedCalendarEvent[]>(() =>\n this.events()\n .map((event) => ({\n ...event,\n start: this.coerceDate(event.start),\n end: event.end ? this.coerceDate(event.end) : undefined,\n }))\n .sort((a, b) => a.start.getTime() - b.start.getTime()),\n );\n\n readonly weekdays = computed(() => {\n const base = startOfWeek(new Date(2026, 0, 5));\n return Array.from({ length: 7 }, (_, index) =>\n new Intl.DateTimeFormat(this.locale(), { weekday: 'short' }).format(addDays(base, index)),\n );\n });\n\n readonly monthDays = computed<CalendarDayCell[]>(() => {\n const selected = this._selectedDate();\n const firstDayOfMonth = new Date(selected.getFullYear(), selected.getMonth(), 1);\n const gridStart = startOfWeek(firstDayOfMonth);\n return Array.from({ length: 42 }, (_, index) => {\n const date = addDays(gridStart, index);\n return this.buildDayCell(date, date.getMonth() === selected.getMonth());\n });\n });\n\n readonly weekDays = computed<CalendarDayCell[]>(() => {\n const start = startOfWeek(this._selectedDate());\n return Array.from({ length: 7 }, (_, index) => this.buildDayCell(addDays(start, index), true));\n });\n\n readonly selectedDay = computed<CalendarDayCell>(() =>\n this.buildDayCell(this._selectedDate(), true),\n );\n\n readonly selectedDayEvents = computed<NormalizedCalendarEvent[]>(() => this.selectedDay().events);\n\n readonly selectedAgendaLabel = computed(() =>\n new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n }).format(this._selectedDate()),\n );\n\n readonly currentLabel = computed(() => {\n const selected = this._selectedDate();\n if (this.view() === 'month') {\n return new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' }).format(\n selected,\n );\n }\n\n const weekStart = startOfWeek(selected);\n const weekEnd = addDays(weekStart, 6);\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' });\n return `${formatter.format(weekStart)} - ${formatter.format(weekEnd)}`;\n });\n\n constructor() {\n effect(() => {\n this._selectedDate.set(this.coerceDate(this.selectedDate()));\n });\n }\n\n prev(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), -1)\n : addDays(this._selectedDate(), -7),\n );\n }\n\n next(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), 1)\n : addDays(this._selectedDate(), 7),\n );\n }\n\n today(): void {\n this.selectDate(new Date());\n }\n\n selectDate(date: Date): void {\n const nextDate = startOfDay(date);\n this._selectedDate.set(nextDate);\n this.selectedDateChange.emit(nextDate);\n this.dateSelect.emit(nextDate);\n }\n\n visibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.maxVisibleEvents());\n }\n\n monthVisibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.monthVisibleEventLimit(events.length));\n }\n\n formatEventMeta(event: NormalizedCalendarEvent): string {\n if (event.meta) return event.meta;\n if (event.allDay) return this.resolvedLabels().allDay;\n return new Intl.DateTimeFormat(this.locale(), {\n hour: '2-digit',\n minute: '2-digit',\n }).format(event.start);\n }\n\n eventTooltip(event: NormalizedCalendarEvent): string {\n const meta = this.formatEventMeta(event);\n return meta ? `${event.title} · ${meta}` : event.title;\n }\n\n formatWeekDate(date: Date): string {\n return new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' }).format(date);\n }\n\n formatDayAriaLabel(day: CalendarDayCell): string {\n const dateLabel = new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(day.date);\n const eventLabel = this.resolvedLabels().eventCount(day.events.length);\n return `${dateLabel}, ${eventLabel}`;\n }\n\n onDaySpace(event: Event, date: Date): void {\n event.preventDefault();\n this.selectDate(date);\n }\n\n onDayKeydown(event: KeyboardEvent, date: Date): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.selectDate(date);\n return;\n }\n\n if (event.key === ' ' || event.key === 'Spacebar') {\n this.onDaySpace(event, date);\n }\n }\n\n onEventClick(event: MouseEvent, calendarEvent: NormalizedCalendarEvent): void {\n event.stopPropagation();\n this.eventClick.emit({\n ...calendarEvent,\n start: new Date(calendarEvent.start),\n end: calendarEvent.end ? new Date(calendarEvent.end) : undefined,\n });\n }\n\n private buildDayCell(date: Date, inCurrentMonth: boolean): CalendarDayCell {\n const normalizedDate = startOfDay(date);\n const today = startOfDay(new Date());\n return {\n date: normalizedDate,\n inCurrentMonth,\n isToday: sameDay(normalizedDate, today),\n isSelected: sameDay(normalizedDate, this._selectedDate()),\n events: this.normalizedEvents().filter((event) => sameDay(event.start, normalizedDate)),\n };\n }\n\n private monthVisibleEventLimit(eventCount: number): number {\n const limit = this.maxVisibleEvents();\n if (eventCount <= limit || limit <= 1) {\n return limit;\n }\n\n return limit - 1;\n }\n\n private coerceDate(value: Date | string): Date {\n const candidate = value instanceof Date ? value : new Date(value);\n return Number.isNaN(candidate.getTime()) ? startOfDay(new Date()) : startOfDay(candidate);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;AAkDA,SAAS,UAAU,CAAC,IAAU,EAAA;AAC5B,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACtE;AAEA,SAAS,OAAO,CAAC,CAAO,EAAE,CAAO,EAAA;IAC/B,QACE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE;AACnC,QAAA,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC7B,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE;AAE/B;AAEA,SAAS,OAAO,CAAC,IAAU,EAAE,MAAc,EAAA;AACzC,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;AACrC,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,SAAS,CAAC,IAAU,EAAE,MAAc,EAAA;IAC3C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/E;AAEA,SAAS,WAAW,CAAC,IAAU,EAAA;AAC7B,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;AACnC,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE;AAC/B,IAAA,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;AACrC,IAAA,OAAO,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;AAClC;AAEA,MAAM,kBAAkB,GAAsB;AAC5C,IAAA,uBAAuB,EAAE,UAAU;AACnC,IAAA,mBAAmB,EAAE,MAAM;AAC3B,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAA,CAAE;IACrE,UAAU,EAAE,CAAC,KAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,KAAA,CAAO;CACxC;AAED,MAAM,kBAAkB,GAAsB;AAC5C,IAAA,uBAAuB,EAAE,UAAU;AACnC,IAAA,mBAAmB,EAAE,WAAW;AAChC,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,OAAA,EAAU,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAA,CAAE;IACjE,UAAU,EAAE,CAAC,KAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,IAAA,CAAM;CACvC;AAED,SAAS,qBAAqB,GAAA;AAC5B,IAAA,OAAO,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,OAAO;AAC9F;AAEA,SAAS,qBAAqB,CAAC,MAAc,EAAA;AAC3C,IAAA,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,kBAAkB;AACxF;MAkLa,oBAAoB,CAAA;IACtB,MAAM,GAAG,KAAK,CAAqB,EAAE;+EAAC;IACtC,IAAI,GAAG,KAAK,CAAkB,OAAO;6EAAC;AACtC,IAAA,YAAY,GAAG,KAAK,CAAgB,IAAI,IAAI,EAAE;qFAAC;AAC/C,IAAA,MAAM,GAAG,KAAK,CAAS,qBAAqB,EAAE;+EAAC;IAC/C,gBAAgB,GAAG,KAAK,CAAS,CAAC;yFAAC;IACnC,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,MAAM,GAAG,KAAK,CAA4B,EAAE;+EAAC;IAE7C,kBAAkB,GAAG,MAAM,EAAQ;IACnC,UAAU,GAAG,MAAM,EAAQ;IAC3B,UAAU,GAAG,MAAM,EAAoB;IAE/B,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;sFAAC;AAEtD,IAAA,cAAc,GAAG,QAAQ,CAAoB,OAAO;AAC3D,QAAA,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACvC,GAAG,IAAI,CAAC,MAAM,EAAE;KACjB,CAAC;uFAAC;IAEM,gBAAgB,GAAG,QAAQ,CAA4B,MAC9D,IAAI,CAAC,MAAM;AACR,SAAA,GAAG,CAAC,CAAC,KAAK,MAAM;AACf,QAAA,GAAG,KAAK;QACR,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;AACnC,QAAA,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;AACxD,KAAA,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;yFACzD;AAEQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KACxC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAC1F;IACH,CAAC;iFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAoB,MAAK;AACpD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,QAAA,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC;AAC9C,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;YAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;AACtC,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACzE,QAAA,CAAC,CAAC;IACJ,CAAC;kFAAC;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAoB,MAAK;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC/C,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAChG,CAAC;iFAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAkB,MAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC;oFAC9C;IAEQ,iBAAiB,GAAG,QAAQ,CAA4B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;0FAAC;AAExF,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACrC,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,GAAG,EAAE,SAAS;AACf,KAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;4FAChC;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;YAC3B,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CACtF,QAAQ,CACT;QACH;AAEA,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC5F,QAAA,OAAO,CAAA,EAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA,GAAA,EAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACxE,CAAC;qFAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC9D,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,UAAU,CACb,IAAI,CAAC,IAAI,EAAE,KAAK;cACZ,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACpC,cAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CACtC;IACH;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,UAAU,CACb,IAAI,CAAC,IAAI,EAAE,KAAK;cACZ,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;cACjC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CACrC;IACH;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC;AAEA,IAAA,aAAa,CAAC,MAAiC,EAAA;QAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjD;AAEA,IAAA,kBAAkB,CAAC,MAAiC,EAAA;AAClD,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpE;AAEA,IAAA,eAAe,CAAC,KAA8B,EAAA;QAC5C,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI;QACjC,IAAI,KAAK,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM;QACrD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAC5C,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AAClB,SAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,YAAY,CAAC,KAA8B,EAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACxC,QAAA,OAAO,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,CAAA,GAAA,EAAM,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK;IACxD;AAEA,IAAA,cAAc,CAAC,IAAU,EAAA;QACvB,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAChG;AAEA,IAAA,kBAAkB,CAAC,GAAoB,EAAA;QACrC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACvD,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;AACtE,QAAA,OAAO,CAAA,EAAG,SAAS,CAAA,EAAA,EAAK,UAAU,EAAE;IACtC;IAEA,UAAU,CAAC,KAAY,EAAE,IAAU,EAAA;QACjC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACvB;IAEA,YAAY,CAAC,KAAoB,EAAE,IAAU,EAAA;AAC3C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACrB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE;AACjD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;QAC9B;IACF;IAEA,YAAY,CAAC,KAAiB,EAAE,aAAsC,EAAA;QACpE,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,GAAG,aAAa;AAChB,YAAA,KAAK,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACpC,YAAA,GAAG,EAAE,aAAa,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS;AACjE,SAAA,CAAC;IACJ;IAEQ,YAAY,CAAC,IAAU,EAAE,cAAuB,EAAA;AACtD,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,OAAO;AACL,YAAA,IAAI,EAAE,cAAc;YACpB,cAAc;AACd,YAAA,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;YACvC,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YACzD,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;SACxF;IACH;AAEQ,IAAA,sBAAsB,CAAC,UAAkB,EAAA;AAC/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACrC,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,EAAE;AACrC,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,KAAK,GAAG,CAAC;IAClB;AAEQ,IAAA,UAAU,CAAC,KAAoB,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QACjE,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;IAC3F;uGAxMW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5KrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gmWAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAGU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhLhC,SAAS;+BACE,cAAc,EAAA,aAAA,EACT,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyKT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gmWAAA,CAAA,EAAA;;;ACxRH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"neural-ui-core-calendar.mjs","sources":["../../../../projects/ui-core/calendar/neu-calendar.component.ts","../../../../projects/ui-core/calendar/neural-ui-core-calendar.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\n\nexport type NeuCalendarView = 'month' | 'week';\nexport type NeuCalendarEventVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface NeuCalendarEvent {\n id: string;\n title: string;\n start: string | Date;\n end?: string | Date;\n description?: string;\n meta?: string;\n allDay?: boolean;\n variant?: NeuCalendarEventVariant;\n}\n\nexport interface NeuCalendarLabels {\n previousButtonAriaLabel: string;\n nextButtonAriaLabel: string;\n todayButton: string;\n allDay: string;\n noEvents: string;\n eventCount: (count: number) => string;\n moreEvents: (count: number) => string;\n}\n\nexport type NeuCalendarLabelOverrides = Partial<NeuCalendarLabels>;\n\ninterface NormalizedCalendarEvent extends Omit<NeuCalendarEvent, 'start' | 'end'> {\n start: Date;\n end?: Date;\n}\n\ninterface CalendarDayCell {\n date: Date;\n inCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n events: NormalizedCalendarEvent[];\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction sameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction addDays(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setDate(next.getDate() + amount);\n return next;\n}\n\nfunction addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, date.getDate());\n}\n\nfunction startOfWeek(date: Date): Date {\n const normalized = startOfDay(date);\n const day = normalized.getDay();\n const diff = day === 0 ? -6 : 1 - day;\n return addDays(normalized, diff);\n}\n\nconst EN_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Previous',\n nextButtonAriaLabel: 'Next',\n todayButton: 'Today',\n allDay: 'All day',\n noEvents: 'No events',\n eventCount: (count) => `${count} ${count === 1 ? 'event' : 'events'}`,\n moreEvents: (count) => `+${count} more`,\n};\n\nconst ES_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Anterior',\n nextButtonAriaLabel: 'Siguiente',\n todayButton: 'Hoy',\n allDay: 'Todo el dia',\n noEvents: 'Sin eventos',\n eventCount: (count) => `${count} evento${count === 1 ? '' : 's'}`,\n moreEvents: (count) => `+${count} mas`,\n};\n\nfunction defaultCalendarLocale(): string {\n return typeof navigator !== 'undefined' && navigator.language ? navigator.language : 'en-US';\n}\n\nfunction defaultCalendarLabels(locale: string): NeuCalendarLabels {\n return locale.toLowerCase().startsWith('es') ? ES_CALENDAR_LABELS : EN_CALENDAR_LABELS;\n}\n\n@Component({\n selector: 'neu-calendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"neu-calendar\"\n [class.neu-calendar--month]=\"view() === 'month'\"\n [class.neu-calendar--week]=\"view() === 'week'\"\n >\n @if (showHeader()) {\n <header class=\"neu-calendar__header\">\n <div>\n <h3 class=\"neu-calendar__title\">{{ currentLabel() }}</h3>\n </div>\n\n <div class=\"neu-calendar__nav\">\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().previousButtonAriaLabel\"\n (click)=\"prev()\"\n >\n ‹\n </button>\n <button type=\"button\" class=\"neu-calendar__today\" (click)=\"today()\">\n {{ resolvedLabels().todayButton }}\n </button>\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().nextButtonAriaLabel\"\n (click)=\"next()\"\n >\n ›\n </button>\n </div>\n </header>\n }\n\n <div class=\"neu-calendar__viewport\">\n <div class=\"neu-calendar__weekdays\">\n @for (weekday of weekdays(); track $index) {\n <div class=\"neu-calendar__weekday\">{{ weekday }}</div>\n }\n </div>\n\n @if (view() === 'month') {\n <div class=\"neu-calendar__month-grid\">\n @for (day of monthDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--outside]=\"!day.inCurrentMonth\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <div class=\"neu-calendar__day-top\">\n <button\n type=\"button\"\n class=\"neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n @if (day.events.length > 0) {\n <span class=\"neu-calendar__day-count\">{{ day.events.length }}</span>\n }\n </button>\n </div>\n <div class=\"neu-calendar__event-list\">\n @for (event of monthVisibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event neu-calendar__event--compact\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--compact neu-calendar__event--' +\n (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n </article>\n }\n </div>\n } @else {\n <div class=\"neu-calendar__week-grid\">\n @for (day of weekDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__week-day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <button\n type=\"button\"\n class=\"neu-calendar__week-head neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n <span class=\"neu-calendar__week-date\">{{ formatWeekDate(day.date) }}</span>\n </button>\n\n <div class=\"neu-calendar__week-events\">\n @if (day.events.length === 0) {\n <p class=\"neu-calendar__empty\">{{ resolvedLabels().noEvents }}</p>\n }\n\n @for (event of visibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--' + (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n\n @if (day.events.length > maxVisibleEvents()) {\n <span class=\"neu-calendar__more\">{{\n resolvedLabels().moreEvents(day.events.length - maxVisibleEvents())\n }}</span>\n }\n </div>\n </article>\n }\n </div>\n }\n </div>\n\n <section class=\"neu-calendar__agenda\" aria-live=\"polite\">\n <div class=\"neu-calendar__agenda-header\">\n <h4 class=\"neu-calendar__agenda-title\">{{ selectedAgendaLabel() }}</h4>\n <span class=\"neu-calendar__agenda-count\">{{\n resolvedLabels().eventCount(selectedDayEvents().length)\n }}</span>\n </div>\n\n @if (selectedDayEvents().length === 0) {\n <p class=\"neu-calendar__agenda-empty\">{{ resolvedLabels().noEvents }}</p>\n } @else {\n <div class=\"neu-calendar__agenda-list\">\n @for (event of selectedDayEvents(); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__agenda-event neu-calendar__event neu-calendar__event--{{\n event.variant || 'default'\n }}\"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n }\n </section>\n </div>\n `,\n styleUrl: './neu-calendar.component.scss',\n})\nexport class NeuCalendarComponent {\n readonly events = input<NeuCalendarEvent[]>([]);\n readonly view = input<NeuCalendarView>('month');\n readonly selectedDate = input<Date | string>(new Date());\n readonly locale = input<string>(defaultCalendarLocale());\n readonly maxVisibleEvents = input<number>(3);\n readonly showHeader = input<boolean>(true);\n readonly labels = input<NeuCalendarLabelOverrides>({});\n\n readonly selectedDateChange = output<Date>();\n readonly dateSelect = output<Date>();\n readonly eventClick = output<NeuCalendarEvent>();\n\n private readonly _selectedDate = signal(startOfDay(new Date()));\n\n readonly resolvedLabels = computed<NeuCalendarLabels>(() => ({\n ...defaultCalendarLabels(this.locale()),\n ...this.labels(),\n }));\n\n readonly normalizedEvents = computed<NormalizedCalendarEvent[]>(() =>\n this.events()\n .map((event) => ({\n ...event,\n start: this.coerceDate(event.start),\n end: event.end ? this.coerceDate(event.end) : undefined,\n }))\n .sort((a, b) => a.start.getTime() - b.start.getTime()),\n );\n\n readonly weekdays = computed(() => {\n const base = startOfWeek(new Date(2026, 0, 5));\n return Array.from({ length: 7 }, (_, index) =>\n new Intl.DateTimeFormat(this.locale(), { weekday: 'short' }).format(addDays(base, index)),\n );\n });\n\n readonly monthDays = computed<CalendarDayCell[]>(() => {\n const selected = this._selectedDate();\n const firstDayOfMonth = new Date(selected.getFullYear(), selected.getMonth(), 1);\n const gridStart = startOfWeek(firstDayOfMonth);\n return Array.from({ length: 42 }, (_, index) => {\n const date = addDays(gridStart, index);\n return this.buildDayCell(date, date.getMonth() === selected.getMonth());\n });\n });\n\n readonly weekDays = computed<CalendarDayCell[]>(() => {\n const start = startOfWeek(this._selectedDate());\n return Array.from({ length: 7 }, (_, index) => this.buildDayCell(addDays(start, index), true));\n });\n\n readonly selectedDay = computed<CalendarDayCell>(() =>\n this.buildDayCell(this._selectedDate(), true),\n );\n\n readonly selectedDayEvents = computed<NormalizedCalendarEvent[]>(() => this.selectedDay().events);\n\n readonly selectedAgendaLabel = computed(() =>\n new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n }).format(this._selectedDate()),\n );\n\n readonly currentLabel = computed(() => {\n const selected = this._selectedDate();\n if (this.view() === 'month') {\n return new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' }).format(\n selected,\n );\n }\n\n const weekStart = startOfWeek(selected);\n const weekEnd = addDays(weekStart, 6);\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' });\n return `${formatter.format(weekStart)} - ${formatter.format(weekEnd)}`;\n });\n\n constructor() {\n effect(() => {\n this._selectedDate.set(this.coerceDate(this.selectedDate()));\n });\n }\n\n prev(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), -1)\n : addDays(this._selectedDate(), -7),\n );\n }\n\n next(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), 1)\n : addDays(this._selectedDate(), 7),\n );\n }\n\n today(): void {\n this.selectDate(new Date());\n }\n\n selectDate(date: Date): void {\n const nextDate = startOfDay(date);\n this._selectedDate.set(nextDate);\n this.selectedDateChange.emit(nextDate);\n this.dateSelect.emit(nextDate);\n }\n\n visibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.maxVisibleEvents());\n }\n\n monthVisibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.monthVisibleEventLimit(events.length));\n }\n\n formatEventMeta(event: NormalizedCalendarEvent): string {\n if (event.meta) return event.meta;\n if (event.allDay) return this.resolvedLabels().allDay;\n return new Intl.DateTimeFormat(this.locale(), {\n hour: '2-digit',\n minute: '2-digit',\n }).format(event.start);\n }\n\n eventTooltip(event: NormalizedCalendarEvent): string {\n const meta = this.formatEventMeta(event);\n return meta ? `${event.title} · ${meta}` : event.title;\n }\n\n formatWeekDate(date: Date): string {\n return new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' }).format(date);\n }\n\n formatDayAriaLabel(day: CalendarDayCell): string {\n const dateLabel = new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(day.date);\n const eventLabel = this.resolvedLabels().eventCount(day.events.length);\n return `${dateLabel}, ${eventLabel}`;\n }\n\n onDaySpace(event: Event, date: Date): void {\n event.preventDefault();\n this.selectDate(date);\n }\n\n onDayKeydown(event: KeyboardEvent, date: Date): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.selectDate(date);\n return;\n }\n\n if (event.key === ' ' || event.key === 'Spacebar') {\n this.onDaySpace(event, date);\n }\n }\n\n onEventClick(event: MouseEvent, calendarEvent: NormalizedCalendarEvent): void {\n event.stopPropagation();\n this.eventClick.emit({\n ...calendarEvent,\n start: new Date(calendarEvent.start),\n end: calendarEvent.end ? new Date(calendarEvent.end) : undefined,\n });\n }\n\n private buildDayCell(date: Date, inCurrentMonth: boolean): CalendarDayCell {\n const normalizedDate = startOfDay(date);\n const today = startOfDay(new Date());\n return {\n date: normalizedDate,\n inCurrentMonth,\n isToday: sameDay(normalizedDate, today),\n isSelected: sameDay(normalizedDate, this._selectedDate()),\n events: this.normalizedEvents().filter((event) => sameDay(event.start, normalizedDate)),\n };\n }\n\n private monthVisibleEventLimit(eventCount: number): number {\n const limit = this.maxVisibleEvents();\n if (eventCount <= limit || limit <= 1) {\n return limit;\n }\n\n return limit - 1;\n }\n\n private coerceDate(value: Date | string): Date {\n const candidate = value instanceof Date ? value : new Date(value);\n return Number.isNaN(candidate.getTime()) ? startOfDay(new Date()) : startOfDay(candidate);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -16,26 +16,21 @@ import { input, computed, ChangeDetectionStrategy, ViewEncapsulation, Component
|
|
|
16
16
|
*/
|
|
17
17
|
class NeuCardComponent {
|
|
18
18
|
/** Espaciado interior del cuerpo / Inner body padding */
|
|
19
|
-
padding = input('md', /*
|
|
20
|
-
...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
|
|
19
|
+
padding = input('md', ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
|
|
21
20
|
/** Efecto hover con elevación de sombra / Hover effect with shadow elevation */
|
|
22
|
-
hoverable = input(false, /*
|
|
23
|
-
...(ngDevMode ? [{ debugName: "hoverable" }] : /* istanbul ignore next */ []));
|
|
21
|
+
hoverable = input(false, ...(ngDevMode ? [{ debugName: "hoverable" }] : /* istanbul ignore next */ []));
|
|
24
22
|
/** Borde con acento de color primario / Border with primary color accent */
|
|
25
|
-
bordered = input(false, /*
|
|
26
|
-
...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
|
|
23
|
+
bordered = input(false, ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
|
|
27
24
|
/** Card compacta sin bordes ni sombras / Compact card without borders or shadows */
|
|
28
|
-
flat = input(false, /*
|
|
29
|
-
...(ngDevMode ? [{ debugName: "flat" }] : /* istanbul ignore next */ []));
|
|
25
|
+
flat = input(false, ...(ngDevMode ? [{ debugName: "flat" }] : /* istanbul ignore next */ []));
|
|
30
26
|
hostClasses = computed(() => ({
|
|
31
27
|
'neu-card': true,
|
|
32
28
|
'neu-card--hoverable': this.hoverable(),
|
|
33
29
|
'neu-card--bordered': this.bordered(),
|
|
34
30
|
'neu-card--flat': this.flat(),
|
|
35
|
-
}), /*
|
|
36
|
-
|
|
37
|
-
static
|
|
38
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: NeuCardComponent, isStandalone: true, selector: "neu-card", inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, hoverable: { classPropertyName: "hoverable", publicName: "hoverable", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
|
|
31
|
+
}), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
32
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: NeuCardComponent, isStandalone: true, selector: "neu-card", inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, hoverable: { classPropertyName: "hoverable", publicName: "hoverable", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
|
|
39
34
|
<div class="neu-card__inner">
|
|
40
35
|
<div class="neu-card__header">
|
|
41
36
|
<ng-content select="[neu-card-header]" />
|
|
@@ -49,7 +44,7 @@ class NeuCardComponent {
|
|
|
49
44
|
</div>
|
|
50
45
|
`, isInline: true, styles: [".neu-card{display:block;background:var(--neu-surface);border:1px solid var(--neu-border);border-radius:var(--neu-radius-lg);box-shadow:var(--neu-shadow-sm);overflow:visible;transition:box-shadow var(--neu-transition),border-color var(--neu-transition)}.neu-card--hoverable{cursor:pointer}.neu-card--hoverable:hover{box-shadow:var(--neu-shadow-lg);border-color:var(--neu-border-hover)}.neu-card--bordered{border-color:var(--neu-primary)}.neu-card--flat{box-shadow:none;border-color:var(--neu-border)}.neu-card--flat:hover{box-shadow:none}.neu-card__header{padding:var(--neu-space-4) var(--neu-space-5);border-bottom:1px solid var(--neu-border);font-size:var(--neu-text-sm);font-weight:600;color:var(--neu-text)}.neu-card__header:empty,.neu-card__header:not(:has(*)){display:none}.neu-card__body--none{padding:0}.neu-card__body--sm{padding:var(--neu-space-3) var(--neu-space-4)}.neu-card__body--md{padding:var(--neu-space-5)}.neu-card__body--lg{padding:var(--neu-space-6) var(--neu-space-8)}.neu-card__footer{padding:var(--neu-space-4) var(--neu-space-5);border-top:1px solid var(--neu-border);background:var(--neu-surface-2);display:flex;align-items:center;gap:var(--neu-space-3)}.neu-card__footer:empty,.neu-card__footer:not(:has(*)){display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
51
46
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCardComponent, decorators: [{
|
|
53
48
|
type: Component,
|
|
54
49
|
args: [{ selector: 'neu-card', imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class]': 'hostClasses()' }, template: `
|
|
55
50
|
<div class="neu-card__inner">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neural-ui-core-card.mjs","sources":["../../../../projects/ui-core/card/neu-card.component.ts","../../../../projects/ui-core/card/neural-ui-core-card.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type NeuCardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * NeuralUI Card Component\n *\n * Contenedor con sombras y bordes Neural. Soporta header, body y footer\n * via content projection.\n *\n * Uso:\n * <neu-card>\n * <div neu-card-header>Título</div>\n * <p>Contenido</p>\n * <div neu-card-footer>Acciones</div>\n * </neu-card>\n */\n@Component({\n selector: 'neu-card',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClasses()' },\n template: `\n <div class=\"neu-card__inner\">\n <div class=\"neu-card__header\">\n <ng-content select=\"[neu-card-header]\" />\n </div>\n <div class=\"neu-card__body\" [class]=\"'neu-card__body--' + padding()\">\n <ng-content />\n </div>\n <div class=\"neu-card__footer\">\n <ng-content select=\"[neu-card-footer]\" />\n </div>\n </div>\n `,\n styleUrl: './neu-card.component.scss',\n})\nexport class NeuCardComponent {\n /** Espaciado interior del cuerpo / Inner body padding */\n padding = input<NeuCardPadding>('md');\n\n /** Efecto hover con elevación de sombra / Hover effect with shadow elevation */\n hoverable = input<boolean>(false);\n\n /** Borde con acento de color primario / Border with primary color accent */\n bordered = input<boolean>(false);\n\n /** Card compacta sin bordes ni sombras / Compact card without borders or shadows */\n flat = input<boolean>(false);\n\n readonly hostClasses = computed(() => ({\n 'neu-card': true,\n 'neu-card--hoverable': this.hoverable(),\n 'neu-card--bordered': this.bordered(),\n 'neu-card--flat': this.flat(),\n }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;AAUA;;;;;;;;;;;;AAYG;MAsBU,gBAAgB,CAAA;;
|
|
1
|
+
{"version":3,"file":"neural-ui-core-card.mjs","sources":["../../../../projects/ui-core/card/neu-card.component.ts","../../../../projects/ui-core/card/neural-ui-core-card.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type NeuCardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * NeuralUI Card Component\n *\n * Contenedor con sombras y bordes Neural. Soporta header, body y footer\n * via content projection.\n *\n * Uso:\n * <neu-card>\n * <div neu-card-header>Título</div>\n * <p>Contenido</p>\n * <div neu-card-footer>Acciones</div>\n * </neu-card>\n */\n@Component({\n selector: 'neu-card',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClasses()' },\n template: `\n <div class=\"neu-card__inner\">\n <div class=\"neu-card__header\">\n <ng-content select=\"[neu-card-header]\" />\n </div>\n <div class=\"neu-card__body\" [class]=\"'neu-card__body--' + padding()\">\n <ng-content />\n </div>\n <div class=\"neu-card__footer\">\n <ng-content select=\"[neu-card-footer]\" />\n </div>\n </div>\n `,\n styleUrl: './neu-card.component.scss',\n})\nexport class NeuCardComponent {\n /** Espaciado interior del cuerpo / Inner body padding */\n padding = input<NeuCardPadding>('md');\n\n /** Efecto hover con elevación de sombra / Hover effect with shadow elevation */\n hoverable = input<boolean>(false);\n\n /** Borde con acento de color primario / Border with primary color accent */\n bordered = input<boolean>(false);\n\n /** Card compacta sin bordes ni sombras / Compact card without borders or shadows */\n flat = input<boolean>(false);\n\n readonly hostClasses = computed(() => ({\n 'neu-card': true,\n 'neu-card--hoverable': this.hoverable(),\n 'neu-card--bordered': this.bordered(),\n 'neu-card--flat': this.flat(),\n }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;AAUA;;;;;;;;;;;;AAYG;MAsBU,gBAAgB,CAAA;;AAE3B,IAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,8EAAC;;AAGrC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;;AAGjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAEnB,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO;AACrC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,qBAAqB,EAAE,IAAI,CAAC,SAAS,EAAE;AACvC,QAAA,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrC,QAAA,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE;AAC9B,KAAA,CAAC,kFAAC;wGAlBQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfjB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WACX,EAAE,EAAA,aAAA,EACI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,QACzC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAA,QAAA,EAC1B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA;;;ACzCH;;AAEG;;;;"}
|
|
@@ -31,32 +31,23 @@ function computeParetoCumulative(data) {
|
|
|
31
31
|
*/
|
|
32
32
|
class NeuChartComponent {
|
|
33
33
|
/** Tipo de gráfica. / Chart type. */
|
|
34
|
-
type = input('line', /*
|
|
35
|
-
...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
34
|
+
type = input('line', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
36
35
|
/** Series para gráficas de ejes (line, area, bar, pareto…). / Series for axis-based charts (line, area, bar, pareto…). */
|
|
37
|
-
series = input([], /*
|
|
38
|
-
...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
|
|
36
|
+
series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
|
|
39
37
|
/** Series para gráficas sin ejes (donut, pie). / Series for non-axis charts (donut, pie). */
|
|
40
|
-
pieSeries = input([], /*
|
|
41
|
-
...(ngDevMode ? [{ debugName: "pieSeries" }] : /* istanbul ignore next */ []));
|
|
38
|
+
pieSeries = input([], ...(ngDevMode ? [{ debugName: "pieSeries" }] : /* istanbul ignore next */ []));
|
|
42
39
|
/** Etiquetas del eje X. / X-axis labels. */
|
|
43
|
-
categories = input([], /*
|
|
44
|
-
...(ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []));
|
|
40
|
+
categories = input([], ...(ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []));
|
|
45
41
|
/** Etiquetas para donut/pie. / Labels for donut/pie. */
|
|
46
|
-
labels = input([], /*
|
|
47
|
-
...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
|
|
42
|
+
labels = input([], ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
|
|
48
43
|
/** Altura en px. / Height in px. */
|
|
49
|
-
height = input(280, /*
|
|
50
|
-
...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
44
|
+
height = input(280, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
51
45
|
/** Colores custom. Si no se proveen, usa la paleta Neural-Blue. / Custom colors. If not provided, uses the Neural-Blue palette. */
|
|
52
|
-
colors = input([], /*
|
|
53
|
-
...(ngDevMode ? [{ debugName: "colors" }] : /* istanbul ignore next */ []));
|
|
46
|
+
colors = input([], ...(ngDevMode ? [{ debugName: "colors" }] : /* istanbul ignore next */ []));
|
|
54
47
|
/** Muestra/oculta las etiquetas de datos. / Shows/hides data labels. */
|
|
55
|
-
showDataLabels = input(false, /*
|
|
56
|
-
...(ngDevMode ? [{ debugName: "showDataLabels" }] : /* istanbul ignore next */ []));
|
|
48
|
+
showDataLabels = input(false, ...(ngDevMode ? [{ debugName: "showDataLabels" }] : /* istanbul ignore next */ []));
|
|
57
49
|
/** Título de la gráfica. / Chart title. */
|
|
58
|
-
title = input('', /*
|
|
59
|
-
...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
50
|
+
title = input('', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
60
51
|
// --------------------------------------------------
|
|
61
52
|
// Helpers privados
|
|
62
53
|
// --------------------------------------------------
|
|
@@ -72,8 +63,7 @@ class NeuChartComponent {
|
|
|
72
63
|
// --------------------------------------------------
|
|
73
64
|
// Configs computadas
|
|
74
65
|
// --------------------------------------------------
|
|
75
|
-
resolvedColors = computed(() => this.colors().length ? this.colors() : DEFAULT_COLORS, /*
|
|
76
|
-
...(ngDevMode ? [{ debugName: "resolvedColors" }] : /* istanbul ignore next */ []));
|
|
66
|
+
resolvedColors = computed(() => this.colors().length ? this.colors() : DEFAULT_COLORS, ...(ngDevMode ? [{ debugName: "resolvedColors" }] : /* istanbul ignore next */ []));
|
|
77
67
|
resolvedSeries = computed(() => {
|
|
78
68
|
const t = this.type();
|
|
79
69
|
if (t === 'donut' || t === 'pie' || t === 'radialBar')
|
|
@@ -89,8 +79,7 @@ class NeuChartComponent {
|
|
|
89
79
|
];
|
|
90
80
|
}
|
|
91
81
|
return this.series();
|
|
92
|
-
}, /*
|
|
93
|
-
...(ngDevMode ? [{ debugName: "resolvedSeries" }] : /* istanbul ignore next */ []));
|
|
82
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedSeries" }] : /* istanbul ignore next */ []));
|
|
94
83
|
chartConfig = computed(() => {
|
|
95
84
|
const t = this.type();
|
|
96
85
|
const apexType = t === 'bar-stacked' || t === 'bar-horizontal' || t === 'bar-horizontal-stacked'
|
|
@@ -110,8 +99,7 @@ class NeuChartComponent {
|
|
|
110
99
|
zoom: { enabled: false },
|
|
111
100
|
animations: { enabled: true, speed: 500 },
|
|
112
101
|
};
|
|
113
|
-
}, /*
|
|
114
|
-
...(ngDevMode ? [{ debugName: "chartConfig" }] : /* istanbul ignore next */ []));
|
|
102
|
+
}, ...(ngDevMode ? [{ debugName: "chartConfig" }] : /* istanbul ignore next */ []));
|
|
115
103
|
xaxisConfig = computed(() => ({
|
|
116
104
|
categories: this.categories(),
|
|
117
105
|
labels: {
|
|
@@ -119,8 +107,7 @@ class NeuChartComponent {
|
|
|
119
107
|
},
|
|
120
108
|
axisBorder: { show: false },
|
|
121
109
|
axisTicks: { show: false },
|
|
122
|
-
}), /*
|
|
123
|
-
...(ngDevMode ? [{ debugName: "xaxisConfig" }] : /* istanbul ignore next */ []));
|
|
110
|
+
}), ...(ngDevMode ? [{ debugName: "xaxisConfig" }] : /* istanbul ignore next */ []));
|
|
124
111
|
yaxisConfig = computed(() => {
|
|
125
112
|
const labelStyle = { fontSize: '12px', fontFamily: 'inherit', colors: '#94a3b8' };
|
|
126
113
|
if (this.type() === 'pareto') {
|
|
@@ -139,8 +126,7 @@ class NeuChartComponent {
|
|
|
139
126
|
];
|
|
140
127
|
}
|
|
141
128
|
return { labels: { style: labelStyle } };
|
|
142
|
-
}, /*
|
|
143
|
-
...(ngDevMode ? [{ debugName: "yaxisConfig" }] : /* istanbul ignore next */ []));
|
|
129
|
+
}, ...(ngDevMode ? [{ debugName: "yaxisConfig" }] : /* istanbul ignore next */ []));
|
|
144
130
|
strokeConfig = computed(() => {
|
|
145
131
|
const t = this.type();
|
|
146
132
|
if (t === 'pareto') {
|
|
@@ -154,8 +140,7 @@ class NeuChartComponent {
|
|
|
154
140
|
if (this._isBar || t === 'donut' || t === 'pie' || t === 'radialBar')
|
|
155
141
|
return { show: false };
|
|
156
142
|
return { curve: 'smooth', width: 2 };
|
|
157
|
-
}, /*
|
|
158
|
-
...(ngDevMode ? [{ debugName: "strokeConfig" }] : /* istanbul ignore next */ []));
|
|
143
|
+
}, ...(ngDevMode ? [{ debugName: "strokeConfig" }] : /* istanbul ignore next */ []));
|
|
159
144
|
fillConfig = computed(() => {
|
|
160
145
|
const t = this.type();
|
|
161
146
|
if (t === 'area') {
|
|
@@ -165,29 +150,25 @@ class NeuChartComponent {
|
|
|
165
150
|
};
|
|
166
151
|
}
|
|
167
152
|
return { opacity: 0.85 };
|
|
168
|
-
}, /*
|
|
169
|
-
...(ngDevMode ? [{ debugName: "fillConfig" }] : /* istanbul ignore next */ []));
|
|
153
|
+
}, ...(ngDevMode ? [{ debugName: "fillConfig" }] : /* istanbul ignore next */ []));
|
|
170
154
|
dataLabelsConfig = computed(() => ({
|
|
171
155
|
enabled: this.showDataLabels(),
|
|
172
156
|
style: { fontSize: '11px', fontFamily: 'inherit' },
|
|
173
|
-
}), /*
|
|
174
|
-
...(ngDevMode ? [{ debugName: "dataLabelsConfig" }] : /* istanbul ignore next */ []));
|
|
157
|
+
}), ...(ngDevMode ? [{ debugName: "dataLabelsConfig" }] : /* istanbul ignore next */ []));
|
|
175
158
|
gridConfig = computed(() => ({
|
|
176
159
|
borderColor: '#e2e8f0',
|
|
177
160
|
strokeDashArray: 4,
|
|
178
161
|
xaxis: { lines: { show: false } },
|
|
179
162
|
yaxis: { lines: { show: true } },
|
|
180
163
|
padding: { left: 4, right: 4 },
|
|
181
|
-
}), /*
|
|
182
|
-
...(ngDevMode ? [{ debugName: "gridConfig" }] : /* istanbul ignore next */ []));
|
|
164
|
+
}), ...(ngDevMode ? [{ debugName: "gridConfig" }] : /* istanbul ignore next */ []));
|
|
183
165
|
legendConfig = computed(() => ({
|
|
184
166
|
position: 'bottom',
|
|
185
167
|
fontFamily: 'inherit',
|
|
186
168
|
fontSize: '12px',
|
|
187
169
|
markers: { size: 6 },
|
|
188
170
|
itemMargin: { horizontal: 8 },
|
|
189
|
-
}), /*
|
|
190
|
-
...(ngDevMode ? [{ debugName: "legendConfig" }] : /* istanbul ignore next */ []));
|
|
171
|
+
}), ...(ngDevMode ? [{ debugName: "legendConfig" }] : /* istanbul ignore next */ []));
|
|
191
172
|
tooltipConfig = computed(() => {
|
|
192
173
|
const base = {
|
|
193
174
|
theme: 'light',
|
|
@@ -204,8 +185,7 @@ class NeuChartComponent {
|
|
|
204
185
|
};
|
|
205
186
|
}
|
|
206
187
|
return base;
|
|
207
|
-
}, /*
|
|
208
|
-
...(ngDevMode ? [{ debugName: "tooltipConfig" }] : /* istanbul ignore next */ []));
|
|
188
|
+
}, ...(ngDevMode ? [{ debugName: "tooltipConfig" }] : /* istanbul ignore next */ []));
|
|
209
189
|
plotOptionsConfig = computed(() => {
|
|
210
190
|
const t = this.type();
|
|
211
191
|
if (t === 'donut' || t === 'pie') {
|
|
@@ -259,10 +239,9 @@ class NeuChartComponent {
|
|
|
259
239
|
};
|
|
260
240
|
}
|
|
261
241
|
return {};
|
|
262
|
-
}, /*
|
|
263
|
-
|
|
264
|
-
static
|
|
265
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: NeuChartComponent, isStandalone: true, selector: "neu-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, pieSeries: { classPropertyName: "pieSeries", publicName: "pieSeries", isSignal: true, isRequired: false, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, showDataLabels: { classPropertyName: "showDataLabels", publicName: "showDataLabels", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "neu-chart" }, ngImport: i0, template: `
|
|
242
|
+
}, ...(ngDevMode ? [{ debugName: "plotOptionsConfig" }] : /* istanbul ignore next */ []));
|
|
243
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
244
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: NeuChartComponent, isStandalone: true, selector: "neu-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, pieSeries: { classPropertyName: "pieSeries", publicName: "pieSeries", isSignal: true, isRequired: false, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, showDataLabels: { classPropertyName: "showDataLabels", publicName: "showDataLabels", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "neu-chart" }, ngImport: i0, template: `
|
|
266
245
|
<apx-chart
|
|
267
246
|
[chart]="chartConfig()"
|
|
268
247
|
[series]="resolvedSeries()"
|
|
@@ -280,7 +259,7 @@ class NeuChartComponent {
|
|
|
280
259
|
/>
|
|
281
260
|
`, isInline: true, styles: [".neu-chart{display:block;width:100%}.neu-chart .apexcharts-canvas{background:transparent!important}.neu-chart .apexcharts-canvas circle[fill=transparent]{pointer-events:none}.neu-chart .apexcharts-tooltip{border:1px solid var(--neu-border)!important;box-shadow:var(--neu-shadow-sm)!important;border-radius:var(--neu-radius)!important;font-family:inherit!important;font-size:12px!important;background:var(--neu-surface)!important;color:var(--neu-text)!important}.neu-chart .apexcharts-tooltip-title{background:var(--neu-surface-2)!important;border-bottom:1px solid var(--neu-border)!important;font-weight:600!important;color:var(--neu-text)!important;padding:6px 10px!important}.neu-chart .apexcharts-xaxistooltip,.neu-chart .apexcharts-yaxistooltip{background:var(--neu-surface)!important;border-color:var(--neu-border)!important;color:var(--neu-text-muted)!important}.neu-chart .apexcharts-legend-text{color:var(--neu-text-muted)!important;font-family:inherit!important}.neu-chart .apexcharts-yaxis-label,.neu-chart .apexcharts-xaxis-label{fill:var(--neu-text-muted)!important;font-family:inherit!important}.neu-chart .apexcharts-gridline{stroke:var(--neu-border)!important}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "apx-chart", inputs: ["chart", "annotations", "colors", "dataLabels", "series", "stroke", "labels", "legend", "markers", "noData", "parsing", "fill", "tooltip", "plotOptions", "responsive", "xaxis", "yaxis", "forecastDataPoints", "grid", "states", "title", "subtitle", "theme", "autoUpdateSeries"], outputs: ["chartReady"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
282
261
|
}
|
|
283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuChartComponent, decorators: [{
|
|
284
263
|
type: Component,
|
|
285
264
|
args: [{ selector: 'neu-chart', imports: [ChartComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'neu-chart' }, template: `
|
|
286
265
|
<apx-chart
|