@neural-ui/core 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/calendar/package.json +4 -0
- package/fesm2022/neural-ui-core-autocomplete.mjs +2 -2
- package/fesm2022/neural-ui-core-block-ui.mjs +2 -2
- package/fesm2022/neural-ui-core-button.mjs +2 -2
- package/fesm2022/neural-ui-core-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-calendar.mjs +551 -0
- package/fesm2022/neural-ui-core-calendar.mjs.map +1 -0
- package/fesm2022/neural-ui-core-chip.mjs +2 -2
- package/fesm2022/neural-ui-core-chip.mjs.map +1 -1
- package/fesm2022/neural-ui-core-confirm-dialog.mjs +2 -2
- package/fesm2022/neural-ui-core-confirm-dialog.mjs.map +1 -1
- package/fesm2022/neural-ui-core-dashboard-grid.mjs +2 -2
- package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -1
- package/fesm2022/neural-ui-core-date-input.mjs +2 -2
- package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-image-gallery.mjs +224 -0
- package/fesm2022/neural-ui-core-image-gallery.mjs.map +1 -0
- package/fesm2022/neural-ui-core-input.mjs +2 -2
- package/fesm2022/neural-ui-core-kanban.mjs +270 -0
- package/fesm2022/neural-ui-core-kanban.mjs.map +1 -0
- package/fesm2022/neural-ui-core-meter-group.mjs +2 -2
- package/fesm2022/neural-ui-core-multiselect.mjs +13 -2
- package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
- package/fesm2022/neural-ui-core-nav.mjs +2 -2
- package/fesm2022/neural-ui-core-nav.mjs.map +1 -1
- package/fesm2022/neural-ui-core-number-input.mjs +2 -2
- package/fesm2022/neural-ui-core-pagination.mjs +2 -2
- package/fesm2022/neural-ui-core-pagination.mjs.map +1 -1
- package/fesm2022/neural-ui-core-progress-bar.mjs +2 -2
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs +289 -0
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs.map +1 -0
- package/fesm2022/neural-ui-core-select.mjs +31 -9
- package/fesm2022/neural-ui-core-select.mjs.map +1 -1
- package/fesm2022/neural-ui-core-slider.mjs +2 -2
- package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
- package/fesm2022/neural-ui-core-split-button.mjs +2 -2
- package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-stepper.mjs +2 -2
- package/fesm2022/neural-ui-core-stepper.mjs.map +1 -1
- package/fesm2022/neural-ui-core-table.mjs +273 -19
- package/fesm2022/neural-ui-core-table.mjs.map +1 -1
- package/fesm2022/neural-ui-core-textarea.mjs +2 -2
- package/fesm2022/neural-ui-core-timeline-grid.mjs +215 -0
- package/fesm2022/neural-ui-core-timeline-grid.mjs.map +1 -0
- package/fesm2022/neural-ui-core-toggle-button-group.mjs +2 -2
- package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tree-table.mjs +262 -0
- package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -0
- package/fesm2022/neural-ui-core-tree.mjs +413 -0
- package/fesm2022/neural-ui-core-tree.mjs.map +1 -0
- package/fesm2022/neural-ui-core-uploader.mjs +624 -0
- package/fesm2022/neural-ui-core-uploader.mjs.map +1 -0
- package/fesm2022/neural-ui-core-virtual-list.mjs +2 -2
- package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -1
- package/fesm2022/neural-ui-core.mjs +3 -1
- package/fesm2022/neural-ui-core.mjs.map +1 -1
- package/image-gallery/package.json +4 -0
- package/kanban/package.json +4 -0
- package/package.json +34 -2
- package/scheduler-gantt/package.json +4 -0
- package/styles/_tokens.scss +13 -4
- package/timeline-grid/package.json +4 -0
- package/tree/package.json +4 -0
- package/tree-table/package.json +4 -0
- package/types/neural-ui-core-calendar.d.ts +79 -0
- package/types/neural-ui-core-image-gallery.d.ts +26 -0
- package/types/neural-ui-core-kanban.d.ts +52 -0
- package/types/neural-ui-core-multiselect.d.ts +1 -0
- package/types/neural-ui-core-scheduler-gantt.d.ts +68 -0
- package/types/neural-ui-core-select.d.ts +2 -0
- package/types/neural-ui-core-table.d.ts +44 -2
- package/types/neural-ui-core-timeline-grid.d.ts +55 -0
- package/types/neural-ui-core-tree-table.d.ts +72 -0
- package/types/neural-ui-core-tree.d.ts +52 -0
- package/types/neural-ui-core-uploader.d.ts +98 -0
- package/uploader/package.json +4 -0
|
@@ -0,0 +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 tabindex=\"0\"\n role=\"button\"\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 (click)=\"selectDate(day.date)\"\n (keydown)=\"onDayKeydown($event, day.date)\"\n >\n <div class=\"neu-calendar__day-top\">\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 </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 tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n (click)=\"selectDate(day.date)\"\n (keydown)=\"onDayKeydown($event, day.date)\"\n >\n <div class=\"neu-calendar__week-head\">\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n <span class=\"neu-calendar__week-date\">{{ formatWeekDate(day.date) }}</span>\n </div>\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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"}
|
|
@@ -83,7 +83,7 @@ class NeuChipComponent {
|
|
|
83
83
|
</svg>
|
|
84
84
|
</button>
|
|
85
85
|
}
|
|
86
|
-
`, isInline: true, styles: [".neu-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--neu-font-sans);font-weight:500;white-space:nowrap;cursor:pointer;border:1.5px solid transparent;transition:background var(--neu-transition),border-color var(--neu-transition),color var(--neu-transition),box-shadow var(--neu-transition);-webkit-user-select:none;user-select:none;outline:none}.neu-chip:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}.neu-chip--sm{padding:3px 10px;font-size:var(--neu-text-xs);border-radius:var(--neu-radius-full)}.neu-chip--md{padding:5px 14px;font-size:var(--neu-text-sm);border-radius:var(--neu-radius-full)}.neu-chip--default{background:var(--neu-surface-2);color:var(--neu-text-muted);border-color:var(--neu-border)}.neu-chip--default:hover:not(.neu-chip--disabled){background:var(--neu-surface-3);border-color:var(--neu-border-hover)}.neu-chip--default.neu-chip--selected{background:var(--neu-primary-100);color:var(--neu-primary);border-color:var(--neu-primary)}.neu-chip--primary{background:var(--neu-primary-50);color:var(--neu-primary);border-color:var(--neu-primary-
|
|
86
|
+
`, isInline: true, styles: [".neu-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--neu-font-sans);font-weight:500;white-space:nowrap;cursor:pointer;border:1.5px solid transparent;transition:background var(--neu-transition),border-color var(--neu-transition),color var(--neu-transition),box-shadow var(--neu-transition);-webkit-user-select:none;user-select:none;outline:none}.neu-chip:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}.neu-chip--sm{padding:3px 10px;font-size:var(--neu-text-xs);border-radius:var(--neu-radius-full)}.neu-chip--md{padding:5px 14px;font-size:var(--neu-text-sm);border-radius:var(--neu-radius-full)}.neu-chip--default{background:var(--neu-surface-2);color:var(--neu-text-muted);border-color:var(--neu-border)}.neu-chip--default:hover:not(.neu-chip--disabled){background:var(--neu-surface-3);border-color:var(--neu-border-hover)}.neu-chip--default.neu-chip--selected{background:var(--neu-primary-100);color:var(--neu-primary);border-color:var(--neu-primary)}.neu-chip--primary{background:var(--neu-primary-50);color:var(--neu-primary-dark, var(--neu-primary));border-color:color-mix(in srgb,var(--neu-primary-dark, var(--neu-primary)) 28%,transparent)}.neu-chip--primary:hover:not(.neu-chip--disabled){background:var(--neu-primary-100);color:var(--neu-primary-dark, var(--neu-primary))}.neu-chip--primary.neu-chip--selected{background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));border-color:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)))}.neu-chip--success{background:var(--neu-success-bg);color:var(--neu-success-text);border-color:transparent}.neu-chip--success.neu-chip--selected{background:var(--neu-success);color:var(--neu-primary-fg)}.neu-chip--warning{background:var(--neu-warning-bg);color:var(--neu-warning-text);border-color:transparent}.neu-chip--warning.neu-chip--selected{background:var(--neu-warning);color:var(--neu-primary-fg)}.neu-chip--danger{background:var(--neu-error-bg);color:var(--neu-error-text);border-color:transparent}.neu-chip--danger.neu-chip--selected{background:var(--neu-error);color:var(--neu-primary-fg)}.neu-chip--disabled{background:var(--neu-surface-2);color:var(--neu-text-muted);border-color:var(--neu-border);cursor:not-allowed;pointer-events:none}.neu-chip__remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;border:none;border-radius:50%;background:transparent;cursor:pointer;color:currentColor;opacity:.6;padding:0;flex-shrink:0;transition:opacity var(--neu-transition),background var(--neu-transition);outline:none}.neu-chip__remove:hover{opacity:1;background:var(--neu-alert-dismiss-hover-bg)}.neu-chip__remove:focus-visible{outline:2px solid currentColor;outline-offset:1px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
87
87
|
}
|
|
88
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuChipComponent, decorators: [{
|
|
89
89
|
type: Component,
|
|
@@ -119,7 +119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
119
119
|
</svg>
|
|
120
120
|
</button>
|
|
121
121
|
}
|
|
122
|
-
`, styles: [".neu-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--neu-font-sans);font-weight:500;white-space:nowrap;cursor:pointer;border:1.5px solid transparent;transition:background var(--neu-transition),border-color var(--neu-transition),color var(--neu-transition),box-shadow var(--neu-transition);-webkit-user-select:none;user-select:none;outline:none}.neu-chip:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}.neu-chip--sm{padding:3px 10px;font-size:var(--neu-text-xs);border-radius:var(--neu-radius-full)}.neu-chip--md{padding:5px 14px;font-size:var(--neu-text-sm);border-radius:var(--neu-radius-full)}.neu-chip--default{background:var(--neu-surface-2);color:var(--neu-text-muted);border-color:var(--neu-border)}.neu-chip--default:hover:not(.neu-chip--disabled){background:var(--neu-surface-3);border-color:var(--neu-border-hover)}.neu-chip--default.neu-chip--selected{background:var(--neu-primary-100);color:var(--neu-primary);border-color:var(--neu-primary)}.neu-chip--primary{background:var(--neu-primary-50);color:var(--neu-primary);border-color:var(--neu-primary-
|
|
122
|
+
`, styles: [".neu-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--neu-font-sans);font-weight:500;white-space:nowrap;cursor:pointer;border:1.5px solid transparent;transition:background var(--neu-transition),border-color var(--neu-transition),color var(--neu-transition),box-shadow var(--neu-transition);-webkit-user-select:none;user-select:none;outline:none}.neu-chip:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}.neu-chip--sm{padding:3px 10px;font-size:var(--neu-text-xs);border-radius:var(--neu-radius-full)}.neu-chip--md{padding:5px 14px;font-size:var(--neu-text-sm);border-radius:var(--neu-radius-full)}.neu-chip--default{background:var(--neu-surface-2);color:var(--neu-text-muted);border-color:var(--neu-border)}.neu-chip--default:hover:not(.neu-chip--disabled){background:var(--neu-surface-3);border-color:var(--neu-border-hover)}.neu-chip--default.neu-chip--selected{background:var(--neu-primary-100);color:var(--neu-primary);border-color:var(--neu-primary)}.neu-chip--primary{background:var(--neu-primary-50);color:var(--neu-primary-dark, var(--neu-primary));border-color:color-mix(in srgb,var(--neu-primary-dark, var(--neu-primary)) 28%,transparent)}.neu-chip--primary:hover:not(.neu-chip--disabled){background:var(--neu-primary-100);color:var(--neu-primary-dark, var(--neu-primary))}.neu-chip--primary.neu-chip--selected{background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));border-color:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)))}.neu-chip--success{background:var(--neu-success-bg);color:var(--neu-success-text);border-color:transparent}.neu-chip--success.neu-chip--selected{background:var(--neu-success);color:var(--neu-primary-fg)}.neu-chip--warning{background:var(--neu-warning-bg);color:var(--neu-warning-text);border-color:transparent}.neu-chip--warning.neu-chip--selected{background:var(--neu-warning);color:var(--neu-primary-fg)}.neu-chip--danger{background:var(--neu-error-bg);color:var(--neu-error-text);border-color:transparent}.neu-chip--danger.neu-chip--selected{background:var(--neu-error);color:var(--neu-primary-fg)}.neu-chip--disabled{background:var(--neu-surface-2);color:var(--neu-text-muted);border-color:var(--neu-border);cursor:not-allowed;pointer-events:none}.neu-chip__remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;border:none;border-radius:50%;background:transparent;cursor:pointer;color:currentColor;opacity:.6;padding:0;flex-shrink:0;transition:opacity var(--neu-transition),background var(--neu-transition);outline:none}.neu-chip__remove:hover{opacity:1;background:var(--neu-alert-dismiss-hover-bg)}.neu-chip__remove:focus-visible{outline:2px solid currentColor;outline-offset:1px}\n"] }]
|
|
123
123
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], removeAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "removeAriaLabel", required: false }] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }], removed: [{ type: i0.Output, args: ["removed"] }] } });
|
|
124
124
|
|
|
125
125
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neural-ui-core-chip.mjs","sources":["../../../../projects/ui-core/chip/neu-chip.component.ts","../../../../projects/ui-core/chip/neural-ui-core-chip.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\n\nexport type NeuChipVariant = 'default' | 'primary' | 'success' | 'warning' | 'danger';\nexport type NeuChipSize = 'sm' | 'md';\n\n/**\n * NeuralUI Chip Component\n *\n * Etiqueta compacta seleccionable y/o eliminable. Ideal para filtros,\n * listas de tags y multiselección visual.\n *\n * Uso:\n * <neu-chip>Angular</neu-chip>\n * <neu-chip [removable]=\"true\" (removed)=\"onRemove()\">CSS</neu-chip>\n * <neu-chip [selected]=\"true\" (selectedChange)=\"toggle()\">TypeScript</neu-chip>\n */\n@Component({\n selector: 'neu-chip',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '_hostRole()',\n '[attr.aria-pressed]': '_hostAriaPressed()',\n '[attr.tabindex]': '_hostTabindex()',\n '(keydown.space)': 'onToggle()',\n '(keydown.enter)': 'onToggle()',\n },\n template: `\n <ng-content />\n @if (removable()) {\n <button\n class=\"neu-chip__remove\"\n type=\"button\"\n [disabled]=\"disabled()\"\n (click)=\"$event.stopPropagation(); onRemove()\"\n [attr.aria-label]=\"removeAriaLabel()\"\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n }\n `,\n styleUrl: './neu-chip.component.scss',\n})\nexport class NeuChipComponent {\n /** Variante de color / Color variant */\n variant = input<NeuChipVariant>('default');\n\n /** Tamaño / Size */\n size = input<NeuChipSize>('md');\n\n /** Estado seleccionado / Selected state */\n selected = input<boolean>(false);\n\n /** Muestra botón de cierre / Shows close button */\n removable = input<boolean>(false);\n\n /** Deshabilitado / Disabled */\n disabled = input<boolean>(false);\n\n /** Aria-label del botón de eliminar / Aria-label for the delete button */\n removeAriaLabel = input<string>('Eliminar');\n\n /** Emite al hacer clic o pulsar espacio/enter / Emits on click or space/enter press */\n selectedChange = output<boolean>();\n\n /** Emite al pulsar el botón de cierre / Emits when the close button is pressed */\n removed = output<void>();\n\n readonly hostClasses = computed(() => ({\n 'neu-chip': true,\n [`neu-chip--${this.variant()}`]: true,\n [`neu-chip--${this.size()}`]: true,\n 'neu-chip--selected': this.selected(),\n 'neu-chip--removable': this.removable(),\n 'neu-chip--disabled': this.disabled(),\n }));\n\n /** Rol ARIA del host: 'button' cuando seleccionable, 'group' cuando también eliminable / Host ARIA role: 'button' when selectable, 'group' when removable */\n readonly _hostRole = computed(() => (this.removable() ? 'group' : 'button'));\n\n /** aria-pressed solo cuando actúa como botón toggle / aria-pressed only when acting as toggle button */\n readonly _hostAriaPressed = computed<boolean | null>(() =>\n this.removable() ? null : this.selected(),\n );\n\n /** tabindex nulo en el host grupo para no saturar el orden de foco / null tabindex on group host to not saturate focus order */\n readonly _hostTabindex = computed<number | null>(() => {\n if (this.removable()) return null;\n return this.disabled() ? -1 : 0;\n });\n\n onToggle(): void {\n if (!this.disabled() && !this.removable()) {\n this.selectedChange.emit(!this.selected());\n }\n }\n\n onRemove(): void {\n if (!this.disabled()) {\n this.removed.emit();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"neural-ui-core-chip.mjs","sources":["../../../../projects/ui-core/chip/neu-chip.component.ts","../../../../projects/ui-core/chip/neural-ui-core-chip.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\n\nexport type NeuChipVariant = 'default' | 'primary' | 'success' | 'warning' | 'danger';\nexport type NeuChipSize = 'sm' | 'md';\n\n/**\n * NeuralUI Chip Component\n *\n * Etiqueta compacta seleccionable y/o eliminable. Ideal para filtros,\n * listas de tags y multiselección visual.\n *\n * Uso:\n * <neu-chip>Angular</neu-chip>\n * <neu-chip [removable]=\"true\" (removed)=\"onRemove()\">CSS</neu-chip>\n * <neu-chip [selected]=\"true\" (selectedChange)=\"toggle()\">TypeScript</neu-chip>\n */\n@Component({\n selector: 'neu-chip',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '_hostRole()',\n '[attr.aria-pressed]': '_hostAriaPressed()',\n '[attr.tabindex]': '_hostTabindex()',\n '(keydown.space)': 'onToggle()',\n '(keydown.enter)': 'onToggle()',\n },\n template: `\n <ng-content />\n @if (removable()) {\n <button\n class=\"neu-chip__remove\"\n type=\"button\"\n [disabled]=\"disabled()\"\n (click)=\"$event.stopPropagation(); onRemove()\"\n [attr.aria-label]=\"removeAriaLabel()\"\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n }\n `,\n styleUrl: './neu-chip.component.scss',\n})\nexport class NeuChipComponent {\n /** Variante de color / Color variant */\n variant = input<NeuChipVariant>('default');\n\n /** Tamaño / Size */\n size = input<NeuChipSize>('md');\n\n /** Estado seleccionado / Selected state */\n selected = input<boolean>(false);\n\n /** Muestra botón de cierre / Shows close button */\n removable = input<boolean>(false);\n\n /** Deshabilitado / Disabled */\n disabled = input<boolean>(false);\n\n /** Aria-label del botón de eliminar / Aria-label for the delete button */\n removeAriaLabel = input<string>('Eliminar');\n\n /** Emite al hacer clic o pulsar espacio/enter / Emits on click or space/enter press */\n selectedChange = output<boolean>();\n\n /** Emite al pulsar el botón de cierre / Emits when the close button is pressed */\n removed = output<void>();\n\n readonly hostClasses = computed(() => ({\n 'neu-chip': true,\n [`neu-chip--${this.variant()}`]: true,\n [`neu-chip--${this.size()}`]: true,\n 'neu-chip--selected': this.selected(),\n 'neu-chip--removable': this.removable(),\n 'neu-chip--disabled': this.disabled(),\n }));\n\n /** Rol ARIA del host: 'button' cuando seleccionable, 'group' cuando también eliminable / Host ARIA role: 'button' when selectable, 'group' when removable */\n readonly _hostRole = computed(() => (this.removable() ? 'group' : 'button'));\n\n /** aria-pressed solo cuando actúa como botón toggle / aria-pressed only when acting as toggle button */\n readonly _hostAriaPressed = computed<boolean | null>(() =>\n this.removable() ? null : this.selected(),\n );\n\n /** tabindex nulo en el host grupo para no saturar el orden de foco / null tabindex on group host to not saturate focus order */\n readonly _hostTabindex = computed<number | null>(() => {\n if (this.removable()) return null;\n return this.disabled() ? -1 : 0;\n });\n\n onToggle(): void {\n if (!this.disabled() && !this.removable()) {\n this.selectedChange.emit(!this.selected());\n }\n }\n\n onRemove(): void {\n if (!this.disabled()) {\n this.removed.emit();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;AAYA;;;;;;;;;;AAUG;MA0CU,gBAAgB,CAAA;;AAE3B,IAAA,OAAO,GAAG,KAAK,CAAiB,SAAS,8EAAC;;AAG1C,IAAA,IAAI,GAAG,KAAK,CAAc,IAAI,2EAAC;;AAG/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;;AAGjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,eAAe,GAAG,KAAK,CAAS,UAAU,sFAAC;;IAG3C,cAAc,GAAG,MAAM,EAAW;;IAGlC,OAAO,GAAG,MAAM,EAAQ;AAEf,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO;AACrC,QAAA,UAAU,EAAE,IAAI;QAChB,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,GAAG,IAAI;QACrC,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;AAClC,QAAA,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrC,QAAA,qBAAqB,EAAE,IAAI,CAAC,SAAS,EAAE;AACvC,QAAA,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtC,KAAA,CAAC,kFAAC;;IAGM,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;IAGnE,gBAAgB,GAAG,QAAQ,CAAiB,MACnD,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC1C;;AAGQ,IAAA,aAAa,GAAG,QAAQ,CAAgB,MAAK;QACpD,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,IAAI;AACjC,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;AACjC,IAAA,CAAC,oFAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5C;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;uGA1DW,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,QAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5BjB;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6wFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzC5B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,EAAE,EAAA,aAAA,EACI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,iBAAiB,EAAE,iBAAiB;AACpC,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,iBAAiB,EAAE,YAAY;qBAChC,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,6wFAAA,CAAA,EAAA;;;AC7DH;;AAEG;;;;"}
|
|
@@ -39,7 +39,7 @@ class NeuConfirmDialogComponent {
|
|
|
39
39
|
{{ data.acceptLabel ?? 'Aceptar' }}
|
|
40
40
|
</button>
|
|
41
41
|
</div>
|
|
42
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";.neu-confirm-dialog{display:flex;flex-direction:column;gap:16px;background:var(--neu-surface-1, #ffffff);border:1px solid var(--neu-border-color, #e5e7eb);border-radius:var(--neu-radius-xl, 16px);box-shadow:0 20px 40px -8px #0000002e;padding:24px;width:clamp(280px,90vw,420px);animation:neu-confirm-in .14s ease}
|
|
42
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";.neu-confirm-dialog{display:flex;flex-direction:column;gap:16px;background:var(--neu-surface-1, #ffffff);border:1px solid var(--neu-border-color, #e5e7eb);border-radius:var(--neu-radius-xl, 16px);box-shadow:0 20px 40px -8px #0000002e;padding:24px;width:clamp(280px,90vw,420px);animation:neu-confirm-in .14s ease}.neu-confirm-dialog__title{margin:0;font-size:1.125rem;font-weight:600;color:var(--neu-text-primary, #111)}.neu-confirm-dialog__message{margin:0;font-size:.9375rem;color:var(--neu-text-secondary, #4b5563);line-height:1.55}.neu-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}.neu-confirm-dialog__btn{all:unset;box-sizing:border-box;padding:8px 18px;border-radius:var(--neu-radius-md, 8px);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .12s,color .12s}.neu-confirm-dialog__btn:focus-visible{outline:2px solid var(--neu-focus-ring, #0ea5e9);outline-offset:2px}.neu-confirm-dialog__btn--reject{color:var(--neu-text-secondary, #4b5563);background:var(--neu-surface-2, #f3f4f6)}.neu-confirm-dialog__btn--reject:hover{background:var(--neu-surface-3, #e5e7eb)}.neu-confirm-dialog__btn--reject.neu-confirm-dialog__btn--danger{background:var(--neu-color-danger, #ef4444);color:var(--neu-primary-fg)}.neu-confirm-dialog__btn--reject.neu-confirm-dialog__btn--danger:hover{filter:brightness(1.08)}.neu-confirm-dialog__btn--primary{background:var(--neu-color-primary, #0ea5e9);color:var(--neu-primary-solid-fg, var(--neu-primary-fg))}.neu-confirm-dialog__btn--primary:hover{filter:brightness(1.08)}.neu-confirm-dialog__btn--danger{background:var(--neu-color-danger, #ef4444);color:var(--neu-primary-fg)}.neu-confirm-dialog__btn--danger:hover{filter:brightness(1.08)}@keyframes neu-confirm-in{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.neu-confirm-dialog-backdrop{background:var(--neu-overlay-bg);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
43
43
|
}
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuConfirmDialogComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
@@ -73,7 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
73
73
|
{{ data.acceptLabel ?? 'Aceptar' }}
|
|
74
74
|
</button>
|
|
75
75
|
</div>
|
|
76
|
-
`, styles: ["@charset \"UTF-8\";.neu-confirm-dialog{display:flex;flex-direction:column;gap:16px;background:var(--neu-surface-1, #ffffff);border:1px solid var(--neu-border-color, #e5e7eb);border-radius:var(--neu-radius-xl, 16px);box-shadow:0 20px 40px -8px #0000002e;padding:24px;width:clamp(280px,90vw,420px);animation:neu-confirm-in .14s ease}
|
|
76
|
+
`, styles: ["@charset \"UTF-8\";.neu-confirm-dialog{display:flex;flex-direction:column;gap:16px;background:var(--neu-surface-1, #ffffff);border:1px solid var(--neu-border-color, #e5e7eb);border-radius:var(--neu-radius-xl, 16px);box-shadow:0 20px 40px -8px #0000002e;padding:24px;width:clamp(280px,90vw,420px);animation:neu-confirm-in .14s ease}.neu-confirm-dialog__title{margin:0;font-size:1.125rem;font-weight:600;color:var(--neu-text-primary, #111)}.neu-confirm-dialog__message{margin:0;font-size:.9375rem;color:var(--neu-text-secondary, #4b5563);line-height:1.55}.neu-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}.neu-confirm-dialog__btn{all:unset;box-sizing:border-box;padding:8px 18px;border-radius:var(--neu-radius-md, 8px);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .12s,color .12s}.neu-confirm-dialog__btn:focus-visible{outline:2px solid var(--neu-focus-ring, #0ea5e9);outline-offset:2px}.neu-confirm-dialog__btn--reject{color:var(--neu-text-secondary, #4b5563);background:var(--neu-surface-2, #f3f4f6)}.neu-confirm-dialog__btn--reject:hover{background:var(--neu-surface-3, #e5e7eb)}.neu-confirm-dialog__btn--reject.neu-confirm-dialog__btn--danger{background:var(--neu-color-danger, #ef4444);color:var(--neu-primary-fg)}.neu-confirm-dialog__btn--reject.neu-confirm-dialog__btn--danger:hover{filter:brightness(1.08)}.neu-confirm-dialog__btn--primary{background:var(--neu-color-primary, #0ea5e9);color:var(--neu-primary-solid-fg, var(--neu-primary-fg))}.neu-confirm-dialog__btn--primary:hover{filter:brightness(1.08)}.neu-confirm-dialog__btn--danger{background:var(--neu-color-danger, #ef4444);color:var(--neu-primary-fg)}.neu-confirm-dialog__btn--danger:hover{filter:brightness(1.08)}@keyframes neu-confirm-in{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.neu-confirm-dialog-backdrop{background:var(--neu-overlay-bg);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"] }]
|
|
77
77
|
}] });
|
|
78
78
|
/**
|
|
79
79
|
* NeuralUI ConfirmDialog Service
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neural-ui-core-confirm-dialog.mjs","sources":["../../../../projects/ui-core/confirm-dialog/neu-confirm-dialog.component.ts","../../../../projects/ui-core/confirm-dialog/neural-ui-core-confirm-dialog.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Injectable,\n ViewEncapsulation,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { Dialog, DialogRef, DIALOG_DATA } from '@angular/cdk/dialog';\n\nexport interface NeuConfirmDialogData {\n /** Título del diálogo / Dialog title */\n title?: string;\n /** Mensaje principal / Main message */\n message: string;\n /** Etiqueta botón aceptar / Accept button label */\n acceptLabel?: string;\n /** Etiqueta botón cancelar / Cancel button label */\n rejectLabel?: string;\n /** Variante del botón cancelar / Reject button variant */\n rejectVariant?: 'secondary' | 'danger';\n /** Variante del botón aceptar / Accept button variant */\n acceptVariant?: 'primary' | 'danger';\n}\n\n/**\n * NeuralUI ConfirmDialog Component (internal — usado por NeuConfirmDialogService)\n */\n@Component({\n selector: 'neu-confirm-dialog',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-confirm-dialog',\n role: 'alertdialog',\n 'aria-modal': 'true',\n '[attr.aria-labelledby]': '\"neu-confirm-title\"',\n '[attr.aria-describedby]': '\"neu-confirm-msg\"',\n },\n template: `\n @if (data.title) {\n <h2 class=\"neu-confirm-dialog__title\" id=\"neu-confirm-title\">{{ data.title }}</h2>\n }\n <p class=\"neu-confirm-dialog__message\" id=\"neu-confirm-msg\">{{ data.message }}</p>\n <div class=\"neu-confirm-dialog__actions\">\n <button\n type=\"button\"\n class=\"neu-confirm-dialog__btn neu-confirm-dialog__btn--reject\"\n [class.neu-confirm-dialog__btn--danger]=\"data.rejectVariant === 'danger'\"\n (click)=\"reject()\"\n >\n {{ data.rejectLabel ?? 'Cancelar' }}\n </button>\n <button\n type=\"button\"\n class=\"neu-confirm-dialog__btn\"\n [class.neu-confirm-dialog__btn--primary]=\"(data.acceptVariant ?? 'primary') === 'primary'\"\n [class.neu-confirm-dialog__btn--danger]=\"data.acceptVariant === 'danger'\"\n (click)=\"accept()\"\n >\n {{ data.acceptLabel ?? 'Aceptar' }}\n </button>\n </div>\n `,\n styleUrl: './neu-confirm-dialog.component.scss',\n})\nexport class NeuConfirmDialogComponent {\n readonly data: NeuConfirmDialogData = inject(DIALOG_DATA);\n private readonly _dialogRef = inject(DialogRef<boolean>);\n\n accept(): void {\n this._dialogRef.close(true);\n }\n\n reject(): void {\n this._dialogRef.close(false);\n }\n}\n\n/**\n * NeuralUI ConfirmDialog Service\n *\n * Abre un diálogo de confirmación y retorna una promesa con el resultado.\n *\n * Uso:\n * inject(NeuConfirmDialogService)\n * .confirm({ message: '¿Eliminar este registro?', acceptVariant: 'danger' })\n * .then(ok => ok && doDelete());\n */\n@Injectable({ providedIn: 'root' })\nexport class NeuConfirmDialogService {\n private readonly _dialog = inject(Dialog);\n\n /**\n * Abre el diálogo y resuelve con `true` si el usuario acepta,\n * `false` si cancela o cierra el diálogo.\n */\n confirm(data: NeuConfirmDialogData): Promise<boolean> {\n const ref = this._dialog.open<boolean, NeuConfirmDialogData>(NeuConfirmDialogComponent, {\n data,\n panelClass: 'neu-confirm-dialog-panel',\n backdropClass: 'neu-confirm-dialog-backdrop',\n disableClose: true,\n });\n return new Promise<boolean>((resolve) => {\n ref.closed.subscribe((result) => resolve(result ?? false));\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;AA0BA;;AAEG;MAwCU,yBAAyB,CAAA;AAC3B,IAAA,IAAI,GAAyB,MAAM,CAAC,WAAW,CAAC;AACxC,IAAA,UAAU,GAAG,MAAM,EAAC,SAAkB,EAAC;IAExD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9B;uGAVW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3B1B;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA
|
|
1
|
+
{"version":3,"file":"neural-ui-core-confirm-dialog.mjs","sources":["../../../../projects/ui-core/confirm-dialog/neu-confirm-dialog.component.ts","../../../../projects/ui-core/confirm-dialog/neural-ui-core-confirm-dialog.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Injectable,\n ViewEncapsulation,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { Dialog, DialogRef, DIALOG_DATA } from '@angular/cdk/dialog';\n\nexport interface NeuConfirmDialogData {\n /** Título del diálogo / Dialog title */\n title?: string;\n /** Mensaje principal / Main message */\n message: string;\n /** Etiqueta botón aceptar / Accept button label */\n acceptLabel?: string;\n /** Etiqueta botón cancelar / Cancel button label */\n rejectLabel?: string;\n /** Variante del botón cancelar / Reject button variant */\n rejectVariant?: 'secondary' | 'danger';\n /** Variante del botón aceptar / Accept button variant */\n acceptVariant?: 'primary' | 'danger';\n}\n\n/**\n * NeuralUI ConfirmDialog Component (internal — usado por NeuConfirmDialogService)\n */\n@Component({\n selector: 'neu-confirm-dialog',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-confirm-dialog',\n role: 'alertdialog',\n 'aria-modal': 'true',\n '[attr.aria-labelledby]': '\"neu-confirm-title\"',\n '[attr.aria-describedby]': '\"neu-confirm-msg\"',\n },\n template: `\n @if (data.title) {\n <h2 class=\"neu-confirm-dialog__title\" id=\"neu-confirm-title\">{{ data.title }}</h2>\n }\n <p class=\"neu-confirm-dialog__message\" id=\"neu-confirm-msg\">{{ data.message }}</p>\n <div class=\"neu-confirm-dialog__actions\">\n <button\n type=\"button\"\n class=\"neu-confirm-dialog__btn neu-confirm-dialog__btn--reject\"\n [class.neu-confirm-dialog__btn--danger]=\"data.rejectVariant === 'danger'\"\n (click)=\"reject()\"\n >\n {{ data.rejectLabel ?? 'Cancelar' }}\n </button>\n <button\n type=\"button\"\n class=\"neu-confirm-dialog__btn\"\n [class.neu-confirm-dialog__btn--primary]=\"(data.acceptVariant ?? 'primary') === 'primary'\"\n [class.neu-confirm-dialog__btn--danger]=\"data.acceptVariant === 'danger'\"\n (click)=\"accept()\"\n >\n {{ data.acceptLabel ?? 'Aceptar' }}\n </button>\n </div>\n `,\n styleUrl: './neu-confirm-dialog.component.scss',\n})\nexport class NeuConfirmDialogComponent {\n readonly data: NeuConfirmDialogData = inject(DIALOG_DATA);\n private readonly _dialogRef = inject(DialogRef<boolean>);\n\n accept(): void {\n this._dialogRef.close(true);\n }\n\n reject(): void {\n this._dialogRef.close(false);\n }\n}\n\n/**\n * NeuralUI ConfirmDialog Service\n *\n * Abre un diálogo de confirmación y retorna una promesa con el resultado.\n *\n * Uso:\n * inject(NeuConfirmDialogService)\n * .confirm({ message: '¿Eliminar este registro?', acceptVariant: 'danger' })\n * .then(ok => ok && doDelete());\n */\n@Injectable({ providedIn: 'root' })\nexport class NeuConfirmDialogService {\n private readonly _dialog = inject(Dialog);\n\n /**\n * Abre el diálogo y resuelve con `true` si el usuario acepta,\n * `false` si cancela o cierra el diálogo.\n */\n confirm(data: NeuConfirmDialogData): Promise<boolean> {\n const ref = this._dialog.open<boolean, NeuConfirmDialogData>(NeuConfirmDialogComponent, {\n data,\n panelClass: 'neu-confirm-dialog-panel',\n backdropClass: 'neu-confirm-dialog-backdrop',\n disableClose: true,\n });\n return new Promise<boolean>((resolve) => {\n ref.closed.subscribe((result) => resolve(result ?? false));\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;AA0BA;;AAEG;MAwCU,yBAAyB,CAAA;AAC3B,IAAA,IAAI,GAAyB,MAAM,CAAC,WAAW,CAAC;AACxC,IAAA,UAAU,GAAG,MAAM,EAAC,SAAkB,EAAC;IAExD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9B;uGAVW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3B1B;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,48DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAGU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAvCrC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,EAAE,EAAA,aAAA,EACI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,YAAY,EAAE,MAAM;AACpB,wBAAA,wBAAwB,EAAE,qBAAqB;AAC/C,wBAAA,yBAAyB,EAAE,mBAAmB;qBAC/C,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,48DAAA,CAAA,EAAA;;AAgBH;;;;;;;;;AASG;MAEU,uBAAuB,CAAA;AACjB,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAEzC;;;AAGG;AACH,IAAA,OAAO,CAAC,IAA0B,EAAA;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAgC,yBAAyB,EAAE;YACtF,IAAI;AACJ,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,aAAa,EAAE,6BAA6B;AAC5C,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;AACtC,YAAA,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AAC5D,QAAA,CAAC,CAAC;IACJ;uGAjBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC3FlC;;AAEG;;;;"}
|
|
@@ -89,7 +89,7 @@ class NeuDashboardGridComponent {
|
|
|
89
89
|
</div>
|
|
90
90
|
}
|
|
91
91
|
</div>
|
|
92
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";.neu-dg{display:block;width:100%}.neu-dg__projection-source{display:none}.neu-dg__grid{display:grid;grid-template-columns:repeat(var(--neu-dg-cols, 3),1fr);gap:var(--neu-dg-gap, 16px)}.neu-dg__tile{grid-column:span var(--tile-cols, 1);grid-row:span var(--tile-rows, 1);background:var(--neu-surface
|
|
92
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";.neu-dg{display:block;width:100%}.neu-dg__projection-source{display:none}.neu-dg__grid{display:grid;grid-template-columns:repeat(var(--neu-dg-cols, 3),1fr);gap:var(--neu-dg-gap, 16px)}.neu-dg__tile{grid-column:span var(--tile-cols, 1);grid-row:span var(--tile-rows, 1);background:var(--neu-surface);border:1px solid var(--neu-border);border-radius:var(--neu-radius-xl, 16px);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .12s}.neu-dg__tile:hover{box-shadow:0 4px 12px -2px #00000014}.neu-dg__tile-handle{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--neu-border);cursor:grab;-webkit-user-select:none;user-select:none}.neu-dg__tile-handle:active{cursor:grabbing}.neu-dg__tile-title{font-size:.875rem;font-weight:600;color:var(--neu-text)}.neu-dg__handle-icon{font-size:1rem;color:var(--neu-text-muted);letter-spacing:2px}.neu-dg__tile-content{flex:1;overflow:auto;padding:12px 12px 16px}.neu-dg__tile-slot{display:flex;flex-direction:column;gap:var(--neu-dg-content-gap, 12px);min-height:100%}.neu-dg__placeholder{background:color-mix(in srgb,var(--neu-primary) 10%,transparent);border:2px dashed var(--neu-primary);border-radius:var(--neu-radius-xl, 16px)}.neu-dg__preview{display:flex;align-items:center;justify-content:center;padding:12px 20px;background:var(--neu-surface);border:1px solid var(--neu-border);border-radius:var(--neu-radius-xl, 16px);box-shadow:0 8px 20px -4px #00000024;font-size:.875rem;font-weight:500}.cdk-drag-animating{transition:transform .2s cubic-bezier(.25,.8,.25,1)}\n"], dependencies: [{ kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
93
93
|
}
|
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuDashboardGridComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
@@ -133,7 +133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
133
133
|
</div>
|
|
134
134
|
}
|
|
135
135
|
</div>
|
|
136
|
-
`, styles: ["@charset \"UTF-8\";.neu-dg{display:block;width:100%}.neu-dg__projection-source{display:none}.neu-dg__grid{display:grid;grid-template-columns:repeat(var(--neu-dg-cols, 3),1fr);gap:var(--neu-dg-gap, 16px)}.neu-dg__tile{grid-column:span var(--tile-cols, 1);grid-row:span var(--tile-rows, 1);background:var(--neu-surface
|
|
136
|
+
`, styles: ["@charset \"UTF-8\";.neu-dg{display:block;width:100%}.neu-dg__projection-source{display:none}.neu-dg__grid{display:grid;grid-template-columns:repeat(var(--neu-dg-cols, 3),1fr);gap:var(--neu-dg-gap, 16px)}.neu-dg__tile{grid-column:span var(--tile-cols, 1);grid-row:span var(--tile-rows, 1);background:var(--neu-surface);border:1px solid var(--neu-border);border-radius:var(--neu-radius-xl, 16px);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .12s}.neu-dg__tile:hover{box-shadow:0 4px 12px -2px #00000014}.neu-dg__tile-handle{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--neu-border);cursor:grab;-webkit-user-select:none;user-select:none}.neu-dg__tile-handle:active{cursor:grabbing}.neu-dg__tile-title{font-size:.875rem;font-weight:600;color:var(--neu-text)}.neu-dg__handle-icon{font-size:1rem;color:var(--neu-text-muted);letter-spacing:2px}.neu-dg__tile-content{flex:1;overflow:auto;padding:12px 12px 16px}.neu-dg__tile-slot{display:flex;flex-direction:column;gap:var(--neu-dg-content-gap, 12px);min-height:100%}.neu-dg__placeholder{background:color-mix(in srgb,var(--neu-primary) 10%,transparent);border:2px dashed var(--neu-primary);border-radius:var(--neu-radius-xl, 16px)}.neu-dg__preview{display:flex;align-items:center;justify-content:center;padding:12px 20px;background:var(--neu-surface);border:1px solid var(--neu-border);border-radius:var(--neu-radius-xl, 16px);box-shadow:0 8px 20px -4px #00000024;font-size:.875rem;font-weight:500}.cdk-drag-animating{transition:transform .2s cubic-bezier(.25,.8,.25,1)}\n"] }]
|
|
137
137
|
}], ctorParameters: () => [], propDecorators: { tiles: [{ type: i0.Input, args: [{ isSignal: true, alias: "tiles", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], orderChange: [{ type: i0.Output, args: ["orderChange"] }], _tileSlots: [{ type: i0.ViewChildren, args: ['tileSlot', { isSignal: true }] }] } });
|
|
138
138
|
|
|
139
139
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neural-ui-core-dashboard-grid.mjs","sources":["../../../../projects/ui-core/dashboard-grid/neu-dashboard-grid.component.ts","../../../../projects/ui-core/dashboard-grid/neural-ui-core-dashboard-grid.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChildren,\n} from '@angular/core';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragPlaceholder,\n CdkDragPreview,\n CdkDropList,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\n\nexport interface NeuDashboardTileConfig {\n /** Identificador único / Unique identifier */\n id: string;\n /** Número de columnas que ocupa / Column span */\n cols?: number;\n /** Número de filas que ocupa / Row span */\n rows?: number;\n /** Título del tile / Tile title */\n title?: string;\n}\n\n/**\n * NeuralUI DashboardGrid\n *\n * Cuadrícula de tiles reordenables mediante drag-and-drop (CDK DragDrop).\n *\n * Uso:\n * <neu-dashboard-grid [tiles]=\"tileConfigs\" [columns]=\"3\">\n * <ng-template neuDashboardTile id=\"tile-1\">...</ng-template>\n * </neu-dashboard-grid>\n */\n@Component({\n selector: 'neu-dashboard-grid',\n imports: [CdkDrag, CdkDragPlaceholder, CdkDragPreview, CdkDropList],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-dg',\n '[style.--neu-dg-cols]': 'columns()',\n },\n template: `\n <div class=\"neu-dg__projection-source\" aria-hidden=\"true\">\n <ng-content />\n </div>\n\n <div\n class=\"neu-dg__grid\"\n cdkDropList\n [cdkDropListData]=\"_orderedTiles()\"\n (cdkDropListDropped)=\"_onDrop($event)\"\n >\n @for (tile of _orderedTiles(); track tile.id) {\n <div\n class=\"neu-dg__tile\"\n cdkDrag\n [cdkDragData]=\"tile\"\n [style.--tile-cols]=\"tile.cols ?? 1\"\n [style.--tile-rows]=\"tile.rows ?? 1\"\n >\n <!-- Drag handle -->\n <div class=\"neu-dg__tile-handle\" cdkDragHandle>\n @if (tile.title) {\n <span class=\"neu-dg__tile-title\">{{ tile.title }}</span>\n }\n <span class=\"neu-dg__handle-icon\" aria-hidden=\"true\">⠿</span>\n </div>\n <!-- Drag placeholder -->\n <div *cdkDragPlaceholder class=\"neu-dg__placeholder\"></div>\n <!-- Drag preview -->\n <div *cdkDragPreview class=\"neu-dg__preview\">{{ tile.title ?? tile.id }}</div>\n <!-- Content slot -->\n <div class=\"neu-dg__tile-content\" tabindex=\"0\">\n <div class=\"neu-dg__tile-slot\" #tileSlot [attr.data-slot-id]=\"tile.id\"></div>\n </div>\n </div>\n }\n </div>\n `,\n styleUrl: './neu-dashboard-grid.component.scss',\n})\nexport class NeuDashboardGridComponent {\n private readonly _host = inject(ElementRef) as ElementRef<HTMLElement>;\n\n readonly tiles = input<NeuDashboardTileConfig[]>([]);\n readonly columns = input<number>(3);\n\n /** Emitido cuando el orden cambia / Emitted when order changes */\n readonly orderChange = output<NeuDashboardTileConfig[]>();\n\n readonly _orderedTiles = signal<NeuDashboardTileConfig[]>([]);\n readonly _tileSlots = viewChildren<ElementRef<HTMLElement>>('tileSlot');\n\n constructor() {\n effect(() => {\n const t = this.tiles();\n untracked(() => this._orderedTiles.set([...t]));\n });\n\n effect(() => {\n this._orderedTiles();\n this._tileSlots();\n queueMicrotask(() => this._attachProjectedTiles());\n });\n }\n\n _onDrop(event: CdkDragDrop<NeuDashboardTileConfig[]>): void {\n const tiles = [...this._orderedTiles()];\n moveItemInArray(tiles, event.previousIndex, event.currentIndex);\n this._orderedTiles.set(tiles);\n this.orderChange.emit(tiles);\n }\n\n private _attachProjectedTiles(): void {\n const slots = new Map(\n this._tileSlots().map((slotRef) => [\n slotRef.nativeElement.dataset['slotId'],\n slotRef.nativeElement,\n ]),\n );\n\n const projectedTiles = this._host.nativeElement.querySelectorAll(\n '[data-tile-id]',\n ) as NodeListOf<HTMLElement>;\n\n for (const tileContent of projectedTiles) {\n const tileId = tileContent.dataset['tileId'];\n const slot = slots.get(tileId);\n\n if (slot && tileContent.parentElement !== slot) {\n slot.appendChild(tileContent);\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"neural-ui-core-dashboard-grid.mjs","sources":["../../../../projects/ui-core/dashboard-grid/neu-dashboard-grid.component.ts","../../../../projects/ui-core/dashboard-grid/neural-ui-core-dashboard-grid.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChildren,\n} from '@angular/core';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragPlaceholder,\n CdkDragPreview,\n CdkDropList,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\n\nexport interface NeuDashboardTileConfig {\n /** Identificador único / Unique identifier */\n id: string;\n /** Número de columnas que ocupa / Column span */\n cols?: number;\n /** Número de filas que ocupa / Row span */\n rows?: number;\n /** Título del tile / Tile title */\n title?: string;\n}\n\n/**\n * NeuralUI DashboardGrid\n *\n * Cuadrícula de tiles reordenables mediante drag-and-drop (CDK DragDrop).\n *\n * Uso:\n * <neu-dashboard-grid [tiles]=\"tileConfigs\" [columns]=\"3\">\n * <ng-template neuDashboardTile id=\"tile-1\">...</ng-template>\n * </neu-dashboard-grid>\n */\n@Component({\n selector: 'neu-dashboard-grid',\n imports: [CdkDrag, CdkDragPlaceholder, CdkDragPreview, CdkDropList],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-dg',\n '[style.--neu-dg-cols]': 'columns()',\n },\n template: `\n <div class=\"neu-dg__projection-source\" aria-hidden=\"true\">\n <ng-content />\n </div>\n\n <div\n class=\"neu-dg__grid\"\n cdkDropList\n [cdkDropListData]=\"_orderedTiles()\"\n (cdkDropListDropped)=\"_onDrop($event)\"\n >\n @for (tile of _orderedTiles(); track tile.id) {\n <div\n class=\"neu-dg__tile\"\n cdkDrag\n [cdkDragData]=\"tile\"\n [style.--tile-cols]=\"tile.cols ?? 1\"\n [style.--tile-rows]=\"tile.rows ?? 1\"\n >\n <!-- Drag handle -->\n <div class=\"neu-dg__tile-handle\" cdkDragHandle>\n @if (tile.title) {\n <span class=\"neu-dg__tile-title\">{{ tile.title }}</span>\n }\n <span class=\"neu-dg__handle-icon\" aria-hidden=\"true\">⠿</span>\n </div>\n <!-- Drag placeholder -->\n <div *cdkDragPlaceholder class=\"neu-dg__placeholder\"></div>\n <!-- Drag preview -->\n <div *cdkDragPreview class=\"neu-dg__preview\">{{ tile.title ?? tile.id }}</div>\n <!-- Content slot -->\n <div class=\"neu-dg__tile-content\" tabindex=\"0\">\n <div class=\"neu-dg__tile-slot\" #tileSlot [attr.data-slot-id]=\"tile.id\"></div>\n </div>\n </div>\n }\n </div>\n `,\n styleUrl: './neu-dashboard-grid.component.scss',\n})\nexport class NeuDashboardGridComponent {\n private readonly _host = inject(ElementRef) as ElementRef<HTMLElement>;\n\n readonly tiles = input<NeuDashboardTileConfig[]>([]);\n readonly columns = input<number>(3);\n\n /** Emitido cuando el orden cambia / Emitted when order changes */\n readonly orderChange = output<NeuDashboardTileConfig[]>();\n\n readonly _orderedTiles = signal<NeuDashboardTileConfig[]>([]);\n readonly _tileSlots = viewChildren<ElementRef<HTMLElement>>('tileSlot');\n\n constructor() {\n effect(() => {\n const t = this.tiles();\n untracked(() => this._orderedTiles.set([...t]));\n });\n\n effect(() => {\n this._orderedTiles();\n this._tileSlots();\n queueMicrotask(() => this._attachProjectedTiles());\n });\n }\n\n _onDrop(event: CdkDragDrop<NeuDashboardTileConfig[]>): void {\n const tiles = [...this._orderedTiles()];\n moveItemInArray(tiles, event.previousIndex, event.currentIndex);\n this._orderedTiles.set(tiles);\n this.orderChange.emit(tiles);\n }\n\n private _attachProjectedTiles(): void {\n const slots = new Map(\n this._tileSlots().map((slotRef) => [\n slotRef.nativeElement.dataset['slotId'],\n slotRef.nativeElement,\n ]),\n );\n\n const projectedTiles = this._host.nativeElement.querySelectorAll(\n '[data-tile-id]',\n ) as NodeListOf<HTMLElement>;\n\n for (const tileContent of projectedTiles) {\n const tileId = tileContent.dataset['tileId'];\n const slot = slots.get(tileId);\n\n if (slot && tileContent.parentElement !== slot) {\n slot.appendChild(tileContent);\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -924,7 +924,7 @@ class NeuDateInputComponent {
|
|
|
924
924
|
<p class="neu-date-input__hint">{{ hint() }}</p>
|
|
925
925
|
}
|
|
926
926
|
}
|
|
927
|
-
`, isInline: true, styles: [".neu-date-input-host{display:block;font-family:var(--neu-font-sans)}.neu-date-input__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-date-input{position:relative;font-family:var(--neu-font-sans)}.neu-date-input__trigger{display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);cursor:pointer;text-align:left;font-family:var(--neu-font-sans);font-size:var(--neu-text-base);color:var(--neu-text);transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-date-input__trigger:hover:not(:disabled){border-color:var(--neu-border-hover, var(--neu-border))}.neu-date-input__trigger:disabled{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-date-input--open .neu-date-input__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-date-input--error .neu-date-input__trigger{border-color:var(--neu-error)}.neu-date-input__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-date-input__icon svg{width:18px;height:18px}.neu-date-input__display{flex:1;color:var(--neu-text);white-space:nowrap}.neu-date-input__display--placeholder{color:var(--neu-text-disabled)}.neu-date-input__panel{position:absolute;top:calc(100% + 6px);left:0;z-index:200;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);box-shadow:var(--neu-shadow-lg);display:flex;flex-direction:column;overflow:hidden;animation:neu-datepicker-in .12s ease}.neu-date-input__panel--time-only{flex-direction:row}@media(max-width:600px){.neu-date-input__panel{left:auto;right:0;width:min(280px,100vw - 2rem);max-width:calc(100vw - 2rem)}}@keyframes neu-datepicker-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.neu-date-input__calendar{padding:var(--neu-space-3);width:280px;flex-shrink:0}.neu-date-input__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-2)}.neu-date-input__cal-title{font-size:var(--neu-text-sm);font-weight:600;color:var(--neu-text);text-transform:capitalize}.neu-date-input__cal-arrow{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-arrow svg{width:15px;height:15px}.neu-date-input__cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:4px}.neu-date-input__cal-weekdays span{font-size:11px;font-weight:600;color:var(--neu-text-muted);padding:4px 0;text-transform:uppercase}.neu-date-input__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-date-input__cal-day{display:flex;align-items:center;justify-content:center;aspect-ratio:1;width:100%;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);font-family:var(--neu-font-sans);font-size:var(--neu-text-sm);color:var(--neu-text);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-day:hover:not(.neu-date-input__cal-day--other):not(.neu-date-input__cal-day--selected){background:var(--neu-surface-2)}.neu-date-input__cal-day--other{color:var(--neu-text-disabled);pointer-events:none;cursor:default}.neu-date-input__cal-day--today{color:var(--neu-primary);font-weight:700}.neu-date-input__cal-day--selected{background:var(--neu-primary)!important;color:var(--neu-primary-fg)!important;font-weight:600}.neu-date-input__cal-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--neu-space-2);padding-top:var(--neu-space-2);border-top:1px solid var(--neu-border)}.neu-date-input__cal-footer-btn{background:none;border:none;padding:4px 8px;font-family:var(--neu-font-sans);font-size:var(--neu-text-xs);color:var(--neu-text-muted);cursor:pointer;border-radius:var(--neu-radius-sm);transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-footer-btn:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-footer-btn--today{color:var(--neu-primary);font-weight:500}.neu-date-input__cal-footer-btn--today:hover{color:var(--neu-primary)}.neu-date-input__sep{height:1px;width:100%;background:var(--neu-border);flex-shrink:0}.neu-date-input__time{display:flex;align-items:center;justify-content:center;gap:var(--neu-space-1);padding:var(--neu-space-3) var(--neu-space-4);flex-shrink:0}.neu-date-input__time-colon{font-size:20px;font-weight:700;color:var(--neu-text);line-height:1;margin-bottom:4px;-webkit-user-select:none;user-select:none}.neu-date-input__drum{display:flex;flex-direction:column;align-items:center;gap:4px}.neu-date-input__drum-arrow{display:flex;align-items:center;justify-content:center;width:36px;height:24px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__drum-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__drum-arrow svg{width:14px;height:14px}.neu-date-input__drum-track{position:relative;display:flex;flex-direction:column;align-items:center}.neu-date-input__drum-track:before{content:\"\";position:absolute;top:36px;left:-6px;right:-6px;height:36px;background:var(--neu-primary-soft, rgba(0, 122, 255, .1));border-radius:var(--neu-radius-sm);pointer-events:none}.neu-date-input__drum-item{position:relative;display:flex;align-items:center;justify-content:center;width:52px;height:36px;font-family:var(--neu-font-sans);font-weight:500;-webkit-user-select:none;user-select:none;border-radius:var(--neu-radius-sm);transition:opacity var(--neu-transition)}.neu-date-input__drum-item--adjacent{font-size:13px;color:var(--neu-text-muted);opacity:.45;cursor:pointer}.neu-date-input__drum-item--adjacent:hover{opacity:.75}.neu-date-input__drum-item--selected{font-size:22px;font-weight:700;color:var(--neu-primary);cursor:default}.neu-date-input__error{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-error-text, var(--neu-error));font-family:var(--neu-font-sans)}.neu-date-input__hint{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-text-muted);font-family:var(--neu-font-sans)}.neu-drp{position:relative;display:block;font-family:var(--neu-font-sans)}.neu-drp--disabled{opacity:.55;pointer-events:none}.neu-drp__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-drp__trigger{all:unset;display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);background:var(--neu-surface);color:var(--neu-text);font-size:var(--neu-text-base);font-family:var(--neu-font-sans);cursor:pointer;box-sizing:border-box;transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-drp__trigger:hover:not([disabled]){border-color:var(--neu-border-hover, var(--neu-border))}.neu-drp__trigger:focus-visible{outline:none;border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__trigger[disabled]{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-drp--open .neu-drp__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-drp__icon svg{width:18px;height:18px}.neu-drp__value{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-drp__value--placeholder{color:var(--neu-text-disabled)}.neu-drp__panel{position:absolute;top:calc(100% + 6px);left:0;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius-lg);box-shadow:var(--neu-shadow-lg);padding:var(--neu-space-4);z-index:1000;animation:neu-drp-in .1s ease;min-width:560px}@keyframes neu-drp-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.neu-drp__calendars{display:flex;gap:var(--neu-space-6)}.neu-drp__cal{flex:1}.neu-drp__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-3)}.neu-drp__cal-nav button{all:unset;padding:4px 8px;border-radius:var(--neu-radius);cursor:pointer;font-size:1.1rem;color:var(--neu-text-muted)}.neu-drp__cal-nav button:hover{background:var(--neu-surface-2)}.neu-drp__cal-title{font-size:var(--neu-text-sm);font-weight:600;text-transform:capitalize;color:var(--neu-text)}.neu-drp__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-drp__day-label{text-align:center;font-size:.7rem;font-weight:600;color:var(--neu-text-muted);padding:4px 0}.neu-drp__cell{all:unset;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:var(--neu-text-sm);cursor:pointer;transition:background var(--neu-transition);box-sizing:border-box;margin:1px auto}.neu-drp__cell:hover{background:var(--neu-surface-2)}.neu-drp__cell--other-month{opacity:.35}.neu-drp__cell--today{font-weight:700;border:1.5px solid var(--neu-primary)}.neu-drp__cell--selected,.neu-drp__cell--range-start,.neu-drp__cell--range-end{background:var(--neu-primary);color:var(--neu-primary-fg);border-radius:50%}.neu-drp__cell--in-range{background:var(--neu-primary-soft, rgba(14, 165, 233, .15));border-radius:0}.neu-drp__footer{display:flex;justify-content:flex-end;gap:var(--neu-space-2);padding-top:var(--neu-space-3);border-top:1px solid var(--neu-border);margin-top:var(--neu-space-3)}.neu-drp__clear{all:unset;padding:7px 14px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);color:var(--neu-text-muted);cursor:pointer;background:var(--neu-surface-2)}.neu-drp__clear:hover{background:var(--neu-surface-3, var(--neu-surface-2));color:var(--neu-text)}.neu-drp__apply{all:unset;padding:7px 18px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);font-weight:500;background:var(--neu-primary);color:var(--neu-primary-fg);cursor:pointer}.neu-drp__apply:hover:not([disabled]){filter:brightness(1.08)}.neu-drp__apply[disabled]{opacity:.4;cursor:not-allowed}.neu-drp__apply:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}@media(max-width:600px){.neu-drp__panel{left:0;right:auto;min-width:0;width:min(100%,360px,100vw - 2rem);max-width:calc(100vw - 2rem);padding:var(--neu-space-2)}.neu-drp__calendars{flex-direction:column;gap:var(--neu-space-4)}.neu-drp__cal{width:100%;max-width:320px;margin-inline:auto}.neu-drp__footer{flex-wrap:wrap}}.neu-date-input-host--sm .neu-date-input__trigger{min-height:36px;font-size:var(--neu-text-sm)}.neu-date-input-host--lg .neu-date-input__trigger{min-height:56px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
927
|
+
`, isInline: true, styles: [".neu-date-input-host{display:block;font-family:var(--neu-font-sans)}.neu-date-input-host--sm .neu-date-input__trigger{min-height:36px;font-size:var(--neu-text-sm)}.neu-date-input-host--lg .neu-date-input__trigger{min-height:56px}.neu-date-input__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-date-input{position:relative;font-family:var(--neu-font-sans)}.neu-date-input__trigger{display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);cursor:pointer;text-align:left;font-family:var(--neu-font-sans);font-size:var(--neu-text-base);color:var(--neu-text);transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-date-input__trigger:hover:not(:disabled){border-color:var(--neu-border-hover, var(--neu-border))}.neu-date-input__trigger:disabled{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-date-input--open .neu-date-input__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-date-input--error .neu-date-input__trigger{border-color:var(--neu-error)}.neu-date-input__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-date-input__icon svg{width:18px;height:18px}.neu-date-input__display{flex:1;color:var(--neu-text);white-space:nowrap}.neu-date-input__display--placeholder{color:var(--neu-text-disabled)}.neu-date-input__panel{position:absolute;top:calc(100% + 6px);left:0;z-index:200;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);box-shadow:var(--neu-shadow-lg);display:flex;flex-direction:column;overflow:hidden;animation:neu-datepicker-in .12s ease}.neu-date-input__panel--time-only{flex-direction:row}@media(max-width:600px){.neu-date-input__panel{left:auto;right:0;width:min(280px,100vw - 2rem);max-width:calc(100vw - 2rem)}}@keyframes neu-datepicker-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.neu-date-input__calendar{padding:var(--neu-space-3);width:280px;flex-shrink:0}.neu-date-input__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-2)}.neu-date-input__cal-title{font-size:var(--neu-text-sm);font-weight:600;color:var(--neu-text);text-transform:capitalize}.neu-date-input__cal-arrow{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-arrow svg{width:15px;height:15px}.neu-date-input__cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:4px}.neu-date-input__cal-weekdays span{font-size:11px;font-weight:600;color:var(--neu-text-muted);padding:4px 0;text-transform:uppercase}.neu-date-input__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-date-input__cal-day{display:flex;align-items:center;justify-content:center;aspect-ratio:1;width:100%;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);font-family:var(--neu-font-sans);font-size:var(--neu-text-sm);color:var(--neu-text);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-day:hover:not(.neu-date-input__cal-day--other):not(.neu-date-input__cal-day--selected){background:var(--neu-surface-2)}.neu-date-input__cal-day--other{color:var(--neu-text-disabled);pointer-events:none;cursor:default}.neu-date-input__cal-day--today{color:var(--neu-primary);font-weight:700}.neu-date-input__cal-day--selected{background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)))!important;color:var(--neu-primary-solid-fg, var(--neu-primary-fg))!important;font-weight:600}.neu-date-input__cal-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--neu-space-2);padding-top:var(--neu-space-2);border-top:1px solid var(--neu-border)}.neu-date-input__cal-footer-btn{background:none;border:none;padding:4px 8px;font-family:var(--neu-font-sans);font-size:var(--neu-text-xs);color:var(--neu-text-muted);cursor:pointer;border-radius:var(--neu-radius-sm);transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-footer-btn:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-footer-btn--today{color:var(--neu-primary);font-weight:500}.neu-date-input__cal-footer-btn--today:hover{color:var(--neu-primary)}.neu-date-input__sep{height:1px;width:100%;background:var(--neu-border);flex-shrink:0}.neu-date-input__time{display:flex;align-items:center;justify-content:center;gap:var(--neu-space-1);padding:var(--neu-space-3) var(--neu-space-4);flex-shrink:0}.neu-date-input__time-colon{font-size:20px;font-weight:700;color:var(--neu-text);line-height:1;margin-bottom:4px;-webkit-user-select:none;user-select:none}.neu-date-input__drum{display:flex;flex-direction:column;align-items:center;gap:4px}.neu-date-input__drum-arrow{display:flex;align-items:center;justify-content:center;width:36px;height:24px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__drum-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__drum-arrow svg{width:14px;height:14px}.neu-date-input__drum-track{position:relative;display:flex;flex-direction:column;align-items:center}.neu-date-input__drum-track:before{content:\"\";position:absolute;top:36px;left:-6px;right:-6px;height:36px;background:var(--neu-primary-soft, rgba(0, 122, 255, .1));border-radius:var(--neu-radius-sm);pointer-events:none}.neu-date-input__drum-item{position:relative;display:flex;align-items:center;justify-content:center;width:52px;height:36px;font-family:var(--neu-font-sans);font-weight:500;-webkit-user-select:none;user-select:none;border-radius:var(--neu-radius-sm);transition:opacity var(--neu-transition)}.neu-date-input__drum-item--adjacent{font-size:13px;color:var(--neu-text-muted);opacity:.45;cursor:pointer}.neu-date-input__drum-item--adjacent:hover{opacity:.75}.neu-date-input__drum-item--selected{font-size:22px;font-weight:700;color:var(--neu-primary);cursor:default}.neu-date-input__error{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-error-text, var(--neu-error));font-family:var(--neu-font-sans)}.neu-date-input__hint{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-text-muted);font-family:var(--neu-font-sans)}.neu-drp{position:relative;display:block;font-family:var(--neu-font-sans)}.neu-drp--disabled{opacity:.55;pointer-events:none}.neu-drp__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-drp__trigger{all:unset;display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);background:var(--neu-surface);color:var(--neu-text);font-size:var(--neu-text-base);font-family:var(--neu-font-sans);cursor:pointer;box-sizing:border-box;transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-drp__trigger:hover:not([disabled]){border-color:var(--neu-border-hover, var(--neu-border))}.neu-drp__trigger:focus-visible{outline:none;border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__trigger[disabled]{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-drp--open .neu-drp__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-drp__icon svg{width:18px;height:18px}.neu-drp__value{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-drp__value--placeholder{color:var(--neu-text-disabled)}.neu-drp__panel{position:absolute;top:calc(100% + 6px);left:0;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius-lg);box-shadow:var(--neu-shadow-lg);padding:var(--neu-space-4);z-index:1000;animation:neu-drp-in .1s ease;min-width:560px}@keyframes neu-drp-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.neu-drp__calendars{display:flex;gap:var(--neu-space-6)}.neu-drp__cal{flex:1}.neu-drp__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-3)}.neu-drp__cal-nav button{all:unset;padding:4px 8px;border-radius:var(--neu-radius);cursor:pointer;font-size:1.1rem;color:var(--neu-text-muted)}.neu-drp__cal-nav button:hover{background:var(--neu-surface-2)}.neu-drp__cal-title{font-size:var(--neu-text-sm);font-weight:600;text-transform:capitalize;color:var(--neu-text)}.neu-drp__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-drp__day-label{text-align:center;font-size:.7rem;font-weight:600;color:var(--neu-text-muted);padding:4px 0}.neu-drp__cell{all:unset;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:var(--neu-text-sm);cursor:pointer;transition:background var(--neu-transition);box-sizing:border-box;margin:1px auto}.neu-drp__cell:hover{background:var(--neu-surface-2)}.neu-drp__cell--other-month{opacity:.35}.neu-drp__cell--today{font-weight:700;border:1.5px solid var(--neu-primary)}.neu-drp__cell--selected,.neu-drp__cell--range-start,.neu-drp__cell--range-end{background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));border-radius:50%}.neu-drp__cell--in-range{background:var(--neu-primary-soft, rgba(14, 165, 233, .15));border-radius:0}.neu-drp__footer{display:flex;justify-content:flex-end;gap:var(--neu-space-2);padding-top:var(--neu-space-3);border-top:1px solid var(--neu-border);margin-top:var(--neu-space-3)}.neu-drp__clear{all:unset;padding:7px 14px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);color:var(--neu-text-muted);cursor:pointer;background:var(--neu-surface-2)}.neu-drp__clear:hover{background:var(--neu-surface-3, var(--neu-surface-2));color:var(--neu-text)}.neu-drp__apply{all:unset;padding:7px 18px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);font-weight:500;background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));cursor:pointer}.neu-drp__apply:hover:not([disabled]){filter:brightness(1.08)}.neu-drp__apply[disabled]{opacity:.4;cursor:not-allowed}.neu-drp__apply:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}@media(max-width:600px){.neu-drp__panel{left:0;right:auto;min-width:0;width:min(100%,360px,100vw - 2rem);max-width:calc(100vw - 2rem);padding:var(--neu-space-2)}.neu-drp__calendars{flex-direction:column;gap:var(--neu-space-4)}.neu-drp__cal{width:100%;max-width:320px;margin-inline:auto}.neu-drp__footer{flex-wrap:wrap}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
928
928
|
}
|
|
929
929
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuDateInputComponent, decorators: [{
|
|
930
930
|
type: Component,
|
|
@@ -1318,7 +1318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
1318
1318
|
<p class="neu-date-input__hint">{{ hint() }}</p>
|
|
1319
1319
|
}
|
|
1320
1320
|
}
|
|
1321
|
-
`, styles: [".neu-date-input-host{display:block;font-family:var(--neu-font-sans)}.neu-date-input__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-date-input{position:relative;font-family:var(--neu-font-sans)}.neu-date-input__trigger{display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);cursor:pointer;text-align:left;font-family:var(--neu-font-sans);font-size:var(--neu-text-base);color:var(--neu-text);transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-date-input__trigger:hover:not(:disabled){border-color:var(--neu-border-hover, var(--neu-border))}.neu-date-input__trigger:disabled{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-date-input--open .neu-date-input__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-date-input--error .neu-date-input__trigger{border-color:var(--neu-error)}.neu-date-input__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-date-input__icon svg{width:18px;height:18px}.neu-date-input__display{flex:1;color:var(--neu-text);white-space:nowrap}.neu-date-input__display--placeholder{color:var(--neu-text-disabled)}.neu-date-input__panel{position:absolute;top:calc(100% + 6px);left:0;z-index:200;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);box-shadow:var(--neu-shadow-lg);display:flex;flex-direction:column;overflow:hidden;animation:neu-datepicker-in .12s ease}.neu-date-input__panel--time-only{flex-direction:row}@media(max-width:600px){.neu-date-input__panel{left:auto;right:0;width:min(280px,100vw - 2rem);max-width:calc(100vw - 2rem)}}@keyframes neu-datepicker-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.neu-date-input__calendar{padding:var(--neu-space-3);width:280px;flex-shrink:0}.neu-date-input__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-2)}.neu-date-input__cal-title{font-size:var(--neu-text-sm);font-weight:600;color:var(--neu-text);text-transform:capitalize}.neu-date-input__cal-arrow{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-arrow svg{width:15px;height:15px}.neu-date-input__cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:4px}.neu-date-input__cal-weekdays span{font-size:11px;font-weight:600;color:var(--neu-text-muted);padding:4px 0;text-transform:uppercase}.neu-date-input__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-date-input__cal-day{display:flex;align-items:center;justify-content:center;aspect-ratio:1;width:100%;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);font-family:var(--neu-font-sans);font-size:var(--neu-text-sm);color:var(--neu-text);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-day:hover:not(.neu-date-input__cal-day--other):not(.neu-date-input__cal-day--selected){background:var(--neu-surface-2)}.neu-date-input__cal-day--other{color:var(--neu-text-disabled);pointer-events:none;cursor:default}.neu-date-input__cal-day--today{color:var(--neu-primary);font-weight:700}.neu-date-input__cal-day--selected{background:var(--neu-primary)!important;color:var(--neu-primary-fg)!important;font-weight:600}.neu-date-input__cal-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--neu-space-2);padding-top:var(--neu-space-2);border-top:1px solid var(--neu-border)}.neu-date-input__cal-footer-btn{background:none;border:none;padding:4px 8px;font-family:var(--neu-font-sans);font-size:var(--neu-text-xs);color:var(--neu-text-muted);cursor:pointer;border-radius:var(--neu-radius-sm);transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-footer-btn:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-footer-btn--today{color:var(--neu-primary);font-weight:500}.neu-date-input__cal-footer-btn--today:hover{color:var(--neu-primary)}.neu-date-input__sep{height:1px;width:100%;background:var(--neu-border);flex-shrink:0}.neu-date-input__time{display:flex;align-items:center;justify-content:center;gap:var(--neu-space-1);padding:var(--neu-space-3) var(--neu-space-4);flex-shrink:0}.neu-date-input__time-colon{font-size:20px;font-weight:700;color:var(--neu-text);line-height:1;margin-bottom:4px;-webkit-user-select:none;user-select:none}.neu-date-input__drum{display:flex;flex-direction:column;align-items:center;gap:4px}.neu-date-input__drum-arrow{display:flex;align-items:center;justify-content:center;width:36px;height:24px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__drum-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__drum-arrow svg{width:14px;height:14px}.neu-date-input__drum-track{position:relative;display:flex;flex-direction:column;align-items:center}.neu-date-input__drum-track:before{content:\"\";position:absolute;top:36px;left:-6px;right:-6px;height:36px;background:var(--neu-primary-soft, rgba(0, 122, 255, .1));border-radius:var(--neu-radius-sm);pointer-events:none}.neu-date-input__drum-item{position:relative;display:flex;align-items:center;justify-content:center;width:52px;height:36px;font-family:var(--neu-font-sans);font-weight:500;-webkit-user-select:none;user-select:none;border-radius:var(--neu-radius-sm);transition:opacity var(--neu-transition)}.neu-date-input__drum-item--adjacent{font-size:13px;color:var(--neu-text-muted);opacity:.45;cursor:pointer}.neu-date-input__drum-item--adjacent:hover{opacity:.75}.neu-date-input__drum-item--selected{font-size:22px;font-weight:700;color:var(--neu-primary);cursor:default}.neu-date-input__error{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-error-text, var(--neu-error));font-family:var(--neu-font-sans)}.neu-date-input__hint{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-text-muted);font-family:var(--neu-font-sans)}.neu-drp{position:relative;display:block;font-family:var(--neu-font-sans)}.neu-drp--disabled{opacity:.55;pointer-events:none}.neu-drp__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-drp__trigger{all:unset;display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);background:var(--neu-surface);color:var(--neu-text);font-size:var(--neu-text-base);font-family:var(--neu-font-sans);cursor:pointer;box-sizing:border-box;transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-drp__trigger:hover:not([disabled]){border-color:var(--neu-border-hover, var(--neu-border))}.neu-drp__trigger:focus-visible{outline:none;border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__trigger[disabled]{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-drp--open .neu-drp__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-drp__icon svg{width:18px;height:18px}.neu-drp__value{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-drp__value--placeholder{color:var(--neu-text-disabled)}.neu-drp__panel{position:absolute;top:calc(100% + 6px);left:0;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius-lg);box-shadow:var(--neu-shadow-lg);padding:var(--neu-space-4);z-index:1000;animation:neu-drp-in .1s ease;min-width:560px}@keyframes neu-drp-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.neu-drp__calendars{display:flex;gap:var(--neu-space-6)}.neu-drp__cal{flex:1}.neu-drp__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-3)}.neu-drp__cal-nav button{all:unset;padding:4px 8px;border-radius:var(--neu-radius);cursor:pointer;font-size:1.1rem;color:var(--neu-text-muted)}.neu-drp__cal-nav button:hover{background:var(--neu-surface-2)}.neu-drp__cal-title{font-size:var(--neu-text-sm);font-weight:600;text-transform:capitalize;color:var(--neu-text)}.neu-drp__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-drp__day-label{text-align:center;font-size:.7rem;font-weight:600;color:var(--neu-text-muted);padding:4px 0}.neu-drp__cell{all:unset;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:var(--neu-text-sm);cursor:pointer;transition:background var(--neu-transition);box-sizing:border-box;margin:1px auto}.neu-drp__cell:hover{background:var(--neu-surface-2)}.neu-drp__cell--other-month{opacity:.35}.neu-drp__cell--today{font-weight:700;border:1.5px solid var(--neu-primary)}.neu-drp__cell--selected,.neu-drp__cell--range-start,.neu-drp__cell--range-end{background:var(--neu-primary);color:var(--neu-primary-fg);border-radius:50%}.neu-drp__cell--in-range{background:var(--neu-primary-soft, rgba(14, 165, 233, .15));border-radius:0}.neu-drp__footer{display:flex;justify-content:flex-end;gap:var(--neu-space-2);padding-top:var(--neu-space-3);border-top:1px solid var(--neu-border);margin-top:var(--neu-space-3)}.neu-drp__clear{all:unset;padding:7px 14px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);color:var(--neu-text-muted);cursor:pointer;background:var(--neu-surface-2)}.neu-drp__clear:hover{background:var(--neu-surface-3, var(--neu-surface-2));color:var(--neu-text)}.neu-drp__apply{all:unset;padding:7px 18px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);font-weight:500;background:var(--neu-primary);color:var(--neu-primary-fg);cursor:pointer}.neu-drp__apply:hover:not([disabled]){filter:brightness(1.08)}.neu-drp__apply[disabled]{opacity:.4;cursor:not-allowed}.neu-drp__apply:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}@media(max-width:600px){.neu-drp__panel{left:0;right:auto;min-width:0;width:min(100%,360px,100vw - 2rem);max-width:calc(100vw - 2rem);padding:var(--neu-space-2)}.neu-drp__calendars{flex-direction:column;gap:var(--neu-space-4)}.neu-drp__cal{width:100%;max-width:320px;margin-inline:auto}.neu-drp__footer{flex-wrap:wrap}}.neu-date-input-host--sm .neu-date-input__trigger{min-height:36px;font-size:var(--neu-text-sm)}.neu-date-input-host--lg .neu-date-input__trigger{min-height:56px}\n"] }]
|
|
1321
|
+
`, styles: [".neu-date-input-host{display:block;font-family:var(--neu-font-sans)}.neu-date-input-host--sm .neu-date-input__trigger{min-height:36px;font-size:var(--neu-text-sm)}.neu-date-input-host--lg .neu-date-input__trigger{min-height:56px}.neu-date-input__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-date-input{position:relative;font-family:var(--neu-font-sans)}.neu-date-input__trigger{display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);cursor:pointer;text-align:left;font-family:var(--neu-font-sans);font-size:var(--neu-text-base);color:var(--neu-text);transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-date-input__trigger:hover:not(:disabled){border-color:var(--neu-border-hover, var(--neu-border))}.neu-date-input__trigger:disabled{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-date-input--open .neu-date-input__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-date-input--error .neu-date-input__trigger{border-color:var(--neu-error)}.neu-date-input__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-date-input__icon svg{width:18px;height:18px}.neu-date-input__display{flex:1;color:var(--neu-text);white-space:nowrap}.neu-date-input__display--placeholder{color:var(--neu-text-disabled)}.neu-date-input__panel{position:absolute;top:calc(100% + 6px);left:0;z-index:200;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);box-shadow:var(--neu-shadow-lg);display:flex;flex-direction:column;overflow:hidden;animation:neu-datepicker-in .12s ease}.neu-date-input__panel--time-only{flex-direction:row}@media(max-width:600px){.neu-date-input__panel{left:auto;right:0;width:min(280px,100vw - 2rem);max-width:calc(100vw - 2rem)}}@keyframes neu-datepicker-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.neu-date-input__calendar{padding:var(--neu-space-3);width:280px;flex-shrink:0}.neu-date-input__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-2)}.neu-date-input__cal-title{font-size:var(--neu-text-sm);font-weight:600;color:var(--neu-text);text-transform:capitalize}.neu-date-input__cal-arrow{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-arrow svg{width:15px;height:15px}.neu-date-input__cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:4px}.neu-date-input__cal-weekdays span{font-size:11px;font-weight:600;color:var(--neu-text-muted);padding:4px 0;text-transform:uppercase}.neu-date-input__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-date-input__cal-day{display:flex;align-items:center;justify-content:center;aspect-ratio:1;width:100%;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);font-family:var(--neu-font-sans);font-size:var(--neu-text-sm);color:var(--neu-text);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-day:hover:not(.neu-date-input__cal-day--other):not(.neu-date-input__cal-day--selected){background:var(--neu-surface-2)}.neu-date-input__cal-day--other{color:var(--neu-text-disabled);pointer-events:none;cursor:default}.neu-date-input__cal-day--today{color:var(--neu-primary);font-weight:700}.neu-date-input__cal-day--selected{background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)))!important;color:var(--neu-primary-solid-fg, var(--neu-primary-fg))!important;font-weight:600}.neu-date-input__cal-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--neu-space-2);padding-top:var(--neu-space-2);border-top:1px solid var(--neu-border)}.neu-date-input__cal-footer-btn{background:none;border:none;padding:4px 8px;font-family:var(--neu-font-sans);font-size:var(--neu-text-xs);color:var(--neu-text-muted);cursor:pointer;border-radius:var(--neu-radius-sm);transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__cal-footer-btn:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__cal-footer-btn--today{color:var(--neu-primary);font-weight:500}.neu-date-input__cal-footer-btn--today:hover{color:var(--neu-primary)}.neu-date-input__sep{height:1px;width:100%;background:var(--neu-border);flex-shrink:0}.neu-date-input__time{display:flex;align-items:center;justify-content:center;gap:var(--neu-space-1);padding:var(--neu-space-3) var(--neu-space-4);flex-shrink:0}.neu-date-input__time-colon{font-size:20px;font-weight:700;color:var(--neu-text);line-height:1;margin-bottom:4px;-webkit-user-select:none;user-select:none}.neu-date-input__drum{display:flex;flex-direction:column;align-items:center;gap:4px}.neu-date-input__drum-arrow{display:flex;align-items:center;justify-content:center;width:36px;height:24px;padding:0;background:none;border:none;border-radius:var(--neu-radius-sm);color:var(--neu-text-muted);cursor:pointer;transition:background var(--neu-transition),color var(--neu-transition)}.neu-date-input__drum-arrow:hover{background:var(--neu-surface-2);color:var(--neu-text)}.neu-date-input__drum-arrow svg{width:14px;height:14px}.neu-date-input__drum-track{position:relative;display:flex;flex-direction:column;align-items:center}.neu-date-input__drum-track:before{content:\"\";position:absolute;top:36px;left:-6px;right:-6px;height:36px;background:var(--neu-primary-soft, rgba(0, 122, 255, .1));border-radius:var(--neu-radius-sm);pointer-events:none}.neu-date-input__drum-item{position:relative;display:flex;align-items:center;justify-content:center;width:52px;height:36px;font-family:var(--neu-font-sans);font-weight:500;-webkit-user-select:none;user-select:none;border-radius:var(--neu-radius-sm);transition:opacity var(--neu-transition)}.neu-date-input__drum-item--adjacent{font-size:13px;color:var(--neu-text-muted);opacity:.45;cursor:pointer}.neu-date-input__drum-item--adjacent:hover{opacity:.75}.neu-date-input__drum-item--selected{font-size:22px;font-weight:700;color:var(--neu-primary);cursor:default}.neu-date-input__error{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-error-text, var(--neu-error));font-family:var(--neu-font-sans)}.neu-date-input__hint{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-text-muted);font-family:var(--neu-font-sans)}.neu-drp{position:relative;display:block;font-family:var(--neu-font-sans)}.neu-drp--disabled{opacity:.55;pointer-events:none}.neu-drp__label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-drp__trigger{all:unset;display:flex;align-items:center;gap:var(--neu-space-2);width:100%;min-height:48px;padding:0 var(--neu-space-3);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);background:var(--neu-surface);color:var(--neu-text);font-size:var(--neu-text-base);font-family:var(--neu-font-sans);cursor:pointer;box-sizing:border-box;transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-drp__trigger:hover:not([disabled]){border-color:var(--neu-border-hover, var(--neu-border))}.neu-drp__trigger:focus-visible{outline:none;border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__trigger[disabled]{opacity:.6;cursor:not-allowed;background:var(--neu-surface-2)}.neu-drp--open .neu-drp__trigger{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring)}.neu-drp__icon{display:flex;align-items:center;color:var(--neu-text-muted);flex-shrink:0}.neu-drp__icon svg{width:18px;height:18px}.neu-drp__value{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-drp__value--placeholder{color:var(--neu-text-disabled)}.neu-drp__panel{position:absolute;top:calc(100% + 6px);left:0;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius-lg);box-shadow:var(--neu-shadow-lg);padding:var(--neu-space-4);z-index:1000;animation:neu-drp-in .1s ease;min-width:560px}@keyframes neu-drp-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.neu-drp__calendars{display:flex;gap:var(--neu-space-6)}.neu-drp__cal{flex:1}.neu-drp__cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--neu-space-3)}.neu-drp__cal-nav button{all:unset;padding:4px 8px;border-radius:var(--neu-radius);cursor:pointer;font-size:1.1rem;color:var(--neu-text-muted)}.neu-drp__cal-nav button:hover{background:var(--neu-surface-2)}.neu-drp__cal-title{font-size:var(--neu-text-sm);font-weight:600;text-transform:capitalize;color:var(--neu-text)}.neu-drp__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.neu-drp__day-label{text-align:center;font-size:.7rem;font-weight:600;color:var(--neu-text-muted);padding:4px 0}.neu-drp__cell{all:unset;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:var(--neu-text-sm);cursor:pointer;transition:background var(--neu-transition);box-sizing:border-box;margin:1px auto}.neu-drp__cell:hover{background:var(--neu-surface-2)}.neu-drp__cell--other-month{opacity:.35}.neu-drp__cell--today{font-weight:700;border:1.5px solid var(--neu-primary)}.neu-drp__cell--selected,.neu-drp__cell--range-start,.neu-drp__cell--range-end{background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));border-radius:50%}.neu-drp__cell--in-range{background:var(--neu-primary-soft, rgba(14, 165, 233, .15));border-radius:0}.neu-drp__footer{display:flex;justify-content:flex-end;gap:var(--neu-space-2);padding-top:var(--neu-space-3);border-top:1px solid var(--neu-border);margin-top:var(--neu-space-3)}.neu-drp__clear{all:unset;padding:7px 14px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);color:var(--neu-text-muted);cursor:pointer;background:var(--neu-surface-2)}.neu-drp__clear:hover{background:var(--neu-surface-3, var(--neu-surface-2));color:var(--neu-text)}.neu-drp__apply{all:unset;padding:7px 18px;border-radius:var(--neu-radius);font-size:var(--neu-text-sm);font-weight:500;background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));cursor:pointer}.neu-drp__apply:hover:not([disabled]){filter:brightness(1.08)}.neu-drp__apply[disabled]{opacity:.4;cursor:not-allowed}.neu-drp__apply:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}@media(max-width:600px){.neu-drp__panel{left:0;right:auto;min-width:0;width:min(100%,360px,100vw - 2rem);max-width:calc(100vw - 2rem);padding:var(--neu-space-2)}.neu-drp__calendars{flex-direction:column;gap:var(--neu-space-4)}.neu-drp__cal{width:100%;max-width:320px;margin-inline:auto}.neu-drp__footer{flex-wrap:wrap}}\n"] }]
|
|
1322
1322
|
}], ctorParameters: () => [], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], errorMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessage", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }], rangeChange: [{ type: i0.Output, args: ["rangeChange"] }], onDocumentClick: [{
|
|
1323
1323
|
type: HostListener,
|
|
1324
1324
|
args: ['document:click', ['$event']]
|