@neural-ui/core 1.5.1 → 1.5.3

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.
Files changed (78) hide show
  1. package/fesm2022/neural-ui-core-chart.mjs +3 -2
  2. package/fesm2022/neural-ui-core-chart.mjs.map +1 -1
  3. package/fesm2022/neural-ui-core-date-input.mjs +20 -8
  4. package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
  5. package/fesm2022/neural-ui-core-table.mjs +17 -6
  6. package/fesm2022/neural-ui-core-table.mjs.map +1 -1
  7. package/fesm2022/neural-ui-core-tree-table.mjs +1 -1
  8. package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -1
  9. package/package.json +1 -1
  10. package/types/neural-ui-core-chart.d.ts +6 -0
  11. package/types/neural-ui-core-date-input.d.ts +3 -1
  12. package/types/neural-ui-core-table.d.ts +2 -1
  13. package/accordion/package.json +0 -4
  14. package/alert/package.json +0 -4
  15. package/autocomplete/package.json +0 -4
  16. package/avatar/package.json +0 -4
  17. package/badge/package.json +0 -4
  18. package/block-ui/package.json +0 -4
  19. package/breadcrumb/package.json +0 -4
  20. package/button/package.json +0 -4
  21. package/calendar/package.json +0 -4
  22. package/card/package.json +0 -4
  23. package/chart/package.json +0 -4
  24. package/checkbox/package.json +0 -4
  25. package/chip/package.json +0 -4
  26. package/code-block/package.json +0 -4
  27. package/color-picker/package.json +0 -4
  28. package/command-palette/package.json +0 -4
  29. package/confirm-dialog/package.json +0 -4
  30. package/context-menu/package.json +0 -4
  31. package/dashboard-grid/package.json +0 -4
  32. package/date-input/package.json +0 -4
  33. package/divider/package.json +0 -4
  34. package/empty-state/package.json +0 -4
  35. package/filter-bar/package.json +0 -4
  36. package/icon/package.json +0 -4
  37. package/image-gallery/package.json +0 -4
  38. package/image-viewer/package.json +0 -4
  39. package/input/package.json +0 -4
  40. package/input-otp/package.json +0 -4
  41. package/kanban/package.json +0 -4
  42. package/knob/package.json +0 -4
  43. package/meter-group/package.json +0 -4
  44. package/modal/package.json +0 -4
  45. package/multiselect/package.json +0 -4
  46. package/nav/package.json +0 -4
  47. package/notification-center/package.json +0 -4
  48. package/number-input/package.json +0 -4
  49. package/pagination/package.json +0 -4
  50. package/popover/package.json +0 -4
  51. package/progress-bar/package.json +0 -4
  52. package/radio/package.json +0 -4
  53. package/rating/package.json +0 -4
  54. package/scheduler-gantt/package.json +0 -4
  55. package/select/package.json +0 -4
  56. package/sidebar/package.json +0 -4
  57. package/skeleton/package.json +0 -4
  58. package/slider/package.json +0 -4
  59. package/spinner/package.json +0 -4
  60. package/split-button/package.json +0 -4
  61. package/splitter/package.json +0 -4
  62. package/stats-card/package.json +0 -4
  63. package/stepper/package.json +0 -4
  64. package/switch/package.json +0 -4
  65. package/table/package.json +0 -4
  66. package/tabs/package.json +0 -4
  67. package/textarea/package.json +0 -4
  68. package/timeline/package.json +0 -4
  69. package/timeline-grid/package.json +0 -4
  70. package/toast/package.json +0 -4
  71. package/toggle-button-group/package.json +0 -4
  72. package/toolbar/package.json +0 -4
  73. package/tooltip/package.json +0 -4
  74. package/tree/package.json +0 -4
  75. package/tree-table/package.json +0 -4
  76. package/uploader/package.json +0 -4
  77. package/url-state/package.json +0 -4
  78. package/virtual-list/package.json +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"neural-ui-core-date-input.mjs","sources":["../../../../projects/ui-core/date-input/neu-date-input.component.ts","../../../../projects/ui-core/date-input/neural-ui-core-date-input.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// ── Exported types ───────────────────────────────────────────────────────────\n\n/** Rango de fechas seleccionado / Selected date range */\nexport interface NeuDateRange {\n start: Date | null;\n end: Date | null;\n}\n\n// ── Private helpers ──────────────────────────────────────────────────────────\n\nlet _neuDateInputIdSeq = 0;\n\ninterface CalendarDay {\n date: Date;\n inMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n}\n\ninterface DrumSlot {\n value: number;\n offset: number;\n label: string;\n}\n\ninterface RangeCell {\n date: Date;\n day: number;\n ts: number;\n current: boolean;\n today: boolean;\n selected: boolean;\n rangeStart: boolean;\n rangeEnd: boolean;\n inRange: boolean;\n label: string;\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 cloneDate(d: Date): Date {\n return new Date(d.getTime());\n}\n\n// ── Component ────────────────────────────────────────────────────────────────\n\n/**\n * NeuralUI DateInput — campo de fecha/hora unificado con modo rango.\n * Unified date/time field with range mode.\n *\n * Uso básico / Basic usage:\n * <neu-date-input type=\"date\" [formControl]=\"dateCtrl\" />\n * <neu-date-input type=\"time\" [formControl]=\"timeCtrl\" />\n * <neu-date-input type=\"datetime-local\" [formControl]=\"dateTimeCtrl\" />\n * <neu-date-input type=\"range\" [formControl]=\"rangeCtrl\" />\n */\n@Component({\n selector: 'neu-date-input',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-date-input-host',\n '[class.neu-date-input-host--sm]': 'size() === \"sm\"',\n '[class.neu-date-input-host--lg]': 'size() === \"lg\"',\n '[class.neu-drp]': '_isRange()',\n '[class.neu-drp--open]': '_isRange() && isOpen()',\n '[class.neu-drp--disabled]': '_isRange() && isDisabledFinal()',\n '(keydown.escape)': 'close()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NeuDateInputComponent),\n multi: true,\n },\n ],\n template: `\n @if (_isRange()) {\n @if (label()) {\n <label class=\"neu-drp__label\" [for]=\"_id\">{{ label() }}</label>\n }\n <button\n type=\"button\"\n [id]=\"_id\"\n class=\"neu-drp__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"label() || _texts().rangeAriaLabel\"\n [disabled]=\"isDisabledFinal()\"\n (click)=\"toggle()\"\n >\n <span class=\"neu-drp__icon\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </span>\n <span class=\"neu-drp__value\" [class.neu-drp__value--placeholder]=\"!_hasRange()\">\n {{ _hasRange() ? _rangeDisplayValue() : _rangePlaceholderText() }}\n </span>\n </button>\n @if (isOpen()) {\n <div\n class=\"neu-drp__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"_texts().rangeAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"neu-drp__calendars\">\n <div class=\"neu-drp__cal\">\n <div class=\"neu-drp__cal-nav\">\n <button type=\"button\" [attr.aria-label]=\"_texts().prevMonth\" (click)=\"_prevLeft()\">\n ‹\n </button>\n <span class=\"neu-drp__cal-title\">{{ _leftTitle() }}</span>\n <button type=\"button\" [attr.aria-label]=\"_texts().nextMonth\" (click)=\"_nextLeft()\">\n ›\n </button>\n </div>\n <div class=\"neu-drp__cal-grid\">\n @for (d of _weekDayLabels(); track d) {\n <span class=\"neu-drp__day-label\">{{ d }}</span>\n }\n @for (cell of _leftDays(); track cell.ts) {\n <button\n type=\"button\"\n class=\"neu-drp__cell\"\n [class.neu-drp__cell--other-month]=\"!cell.current\"\n [class.neu-drp__cell--today]=\"cell.today\"\n [class.neu-drp__cell--selected]=\"cell.selected\"\n [class.neu-drp__cell--range-start]=\"cell.rangeStart\"\n [class.neu-drp__cell--range-end]=\"cell.rangeEnd\"\n [class.neu-drp__cell--in-range]=\"cell.inRange\"\n [attr.aria-label]=\"cell.label\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"_selectDay(cell.date)\"\n (mouseenter)=\"_hoverDay(cell.date)\"\n >\n {{ cell.day }}\n </button>\n }\n </div>\n </div>\n <div class=\"neu-drp__cal\">\n <div class=\"neu-drp__cal-nav\">\n <button type=\"button\" [attr.aria-label]=\"_texts().prevMonth\" (click)=\"_prevRight()\">\n ‹\n </button>\n <span class=\"neu-drp__cal-title\">{{ _rightTitle() }}</span>\n <button type=\"button\" [attr.aria-label]=\"_texts().nextMonth\" (click)=\"_nextRight()\">\n ›\n </button>\n </div>\n <div class=\"neu-drp__cal-grid\">\n @for (d of _weekDayLabels(); track d) {\n <span class=\"neu-drp__day-label\">{{ d }}</span>\n }\n @for (cell of _rightDays(); track cell.ts) {\n <button\n type=\"button\"\n class=\"neu-drp__cell\"\n [class.neu-drp__cell--other-month]=\"!cell.current\"\n [class.neu-drp__cell--today]=\"cell.today\"\n [class.neu-drp__cell--selected]=\"cell.selected\"\n [class.neu-drp__cell--range-start]=\"cell.rangeStart\"\n [class.neu-drp__cell--range-end]=\"cell.rangeEnd\"\n [class.neu-drp__cell--in-range]=\"cell.inRange\"\n [attr.aria-label]=\"cell.label\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"_selectDay(cell.date)\"\n (mouseenter)=\"_hoverDay(cell.date)\"\n >\n {{ cell.day }}\n </button>\n }\n </div>\n </div>\n </div>\n <div class=\"neu-drp__footer\">\n <button type=\"button\" class=\"neu-drp__clear\" (click)=\"_clearRange()\">\n {{ _texts().clear }}\n </button>\n <button\n type=\"button\"\n class=\"neu-drp__apply\"\n [disabled]=\"!_canApply()\"\n (click)=\"_applyRange()\"\n >\n {{ _texts().apply }}\n </button>\n </div>\n </div>\n }\n } @else {\n @if (label()) {\n <label class=\"neu-date-input__label\" [for]=\"_id\">{{ label() }}</label>\n }\n <div\n class=\"neu-date-input\"\n [class.neu-date-input--open]=\"isOpen()\"\n [class.neu-date-input--disabled]=\"isDisabledFinal()\"\n [class.neu-date-input--error]=\"hasError()\"\n >\n <button\n class=\"neu-date-input__trigger\"\n type=\"button\"\n [id]=\"_id\"\n [disabled]=\"isDisabledFinal() || readonly()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'dialog'\"\n (click)=\"toggle()\"\n >\n <span class=\"neu-date-input__icon\" aria-hidden=\"true\">\n @if (type() === 'time') {\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n } @else {\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n }\n </span>\n <span\n class=\"neu-date-input__display\"\n [class.neu-date-input__display--placeholder]=\"!_value()\"\n >\n {{ displayValue() || placeholderText() }}\n </span>\n </button>\n @if (isOpen()) {\n <div\n class=\"neu-date-input__panel\"\n [class.neu-date-input__panel--time-only]=\"type() === 'time'\"\n role=\"dialog\"\n [attr.aria-label]=\"_texts().chooseDate + (monthLabel() ? ': ' + monthLabel() : '')\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (type() !== 'time') {\n <div class=\"neu-date-input__calendar\">\n <div class=\"neu-date-input__cal-nav\">\n <button\n class=\"neu-date-input__cal-arrow\"\n type=\"button\"\n (click)=\"prevMonth()\"\n [attr.aria-label]=\"_texts().prevMonth\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span class=\"neu-date-input__cal-title\">{{ monthLabel() }}</span>\n <button\n class=\"neu-date-input__cal-arrow\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"_texts().nextMonth\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n <div class=\"neu-date-input__cal-weekdays\">\n @for (d of weekdays(); track d) {\n <span>{{ d }}</span>\n }\n </div>\n <div class=\"neu-date-input__cal-grid\">\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n class=\"neu-date-input__cal-day\"\n type=\"button\"\n [class.neu-date-input__cal-day--other]=\"!day.inMonth\"\n [class.neu-date-input__cal-day--today]=\"day.isToday\"\n [class.neu-date-input__cal-day--selected]=\"day.isSelected\"\n [attr.aria-label]=\"formatDayLabel(day.date)\"\n [attr.aria-pressed]=\"day.isSelected\"\n (click)=\"selectDay(day)\"\n >\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n <div class=\"neu-date-input__cal-footer\">\n <button class=\"neu-date-input__cal-footer-btn\" type=\"button\" (click)=\"clear()\">\n {{ _texts().delete }}\n </button>\n <button\n class=\"neu-date-input__cal-footer-btn neu-date-input__cal-footer-btn--today\"\n type=\"button\"\n (click)=\"today()\"\n >\n {{ _texts().today }}\n </button>\n </div>\n </div>\n }\n @if (type() === 'datetime-local') {\n <div class=\"neu-date-input__sep\"></div>\n }\n @if (type() !== 'date') {\n <div class=\"neu-date-input__time\">\n <div class=\"neu-date-input__drum\">\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeHour(-1)\"\n [attr.aria-label]=\"_texts().prevHour\"\n >\n <svg\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 <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n </button>\n <div class=\"neu-date-input__drum-track\" (wheel)=\"onHourWheel($event)\">\n @for (slot of hourSlots(); track slot.offset) {\n <div\n class=\"neu-date-input__drum-item\"\n [class.neu-date-input__drum-item--selected]=\"slot.offset === 0\"\n [class.neu-date-input__drum-item--adjacent]=\"slot.offset !== 0\"\n (click)=\"slot.offset !== 0 && changeHour(slot.offset)\"\n >\n {{ slot.label }}\n </div>\n }\n </div>\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeHour(1)\"\n [attr.aria-label]=\"_texts().nextHour\"\n >\n <svg\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n </div>\n <span class=\"neu-date-input__time-colon\">:</span>\n <div class=\"neu-date-input__drum\">\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeMinute(-1)\"\n [attr.aria-label]=\"_texts().prevMinute\"\n >\n <svg\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 <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n </button>\n <div class=\"neu-date-input__drum-track\" (wheel)=\"onMinuteWheel($event)\">\n @for (slot of minuteSlots(); track slot.offset) {\n <div\n class=\"neu-date-input__drum-item\"\n [class.neu-date-input__drum-item--selected]=\"slot.offset === 0\"\n [class.neu-date-input__drum-item--adjacent]=\"slot.offset !== 0\"\n (click)=\"slot.offset !== 0 && changeMinute(slot.offset)\"\n >\n {{ slot.label }}\n </div>\n }\n </div>\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeMinute(1)\"\n [attr.aria-label]=\"_texts().nextMinute\"\n >\n <svg\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n @if (hasError()) {\n <p class=\"neu-date-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n } @else if (hint()) {\n <p class=\"neu-date-input__hint\">{{ hint() }}</p>\n }\n }\n `,\n styleUrl: './neu-date-input.component.scss',\n})\nexport class NeuDateInputComponent implements ControlValueAccessor, OnDestroy {\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly doc = inject(DOCUMENT);\n private _langObserver?: MutationObserver;\n\n /** Tipo del campo / Field type */\n type = input<'date' | 'time' | 'datetime-local' | 'range'>('date');\n /** Etiqueta / Label */\n label = input<string>('');\n /** Texto de ayuda / Help text */\n hint = input<string>('');\n /** Mensaje de error / Error message */\n errorMessage = input<string>('');\n /** Deshabilita / Disabled */\n disabled = input<boolean>(false);\n /** Tamaño del campo: 'sm' = 36px | 'md' = 48px | 'lg' = 56px / Field size */\n size = input<'sm' | 'md' | 'lg'>('md');\n /** Solo lectura / Read only */\n readonly = input<boolean>(false);\n /** Nombre / Field name */\n name = input<string>('');\n /** ID accesible / Accessible ID */\n inputId = input<string>('');\n /** Requerido / Required */\n required = input<boolean>(false);\n /** Mínimo / Minimum */\n min = input<string | null>(null);\n /** Máximo / Maximum */\n max = input<string | null>(null);\n /** Paso / Step */\n step = input<number | null>(null);\n /** Locale explícito opcional / Optional explicit locale */\n locale = input<string | null>(null);\n\n // ── Range-mode inputs ────────────────────────────────────────────\n /** Placeholder del trigger de rango / Range trigger placeholder */\n placeholder = input<string>('');\n /** Formato de fecha en modo rango / Date display format in range mode */\n dateFormat = input<'short' | 'medium' | 'long' | 'full' | 'numeric'>('short');\n\n // ── Outputs ──────────────────────────────────────────────────────\n /** Emitido al confirmar el rango / Emitted when range is confirmed */\n readonly rangeChange = output<NeuDateRange>();\n\n // ── Estado interno / Internal state ──────────────────────────────\n protected readonly _id = `neu-date-input-${++_neuDateInputIdSeq}`;\n readonly isOpen = signal(false);\n readonly _isRange = computed(() => this.type() === 'range');\n private readonly _cvaDisabled = signal(false);\n readonly isDisabledFinal = computed(() => this.disabled() || this._cvaDisabled());\n readonly hasError = computed(() => !!this.errorMessage());\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _onChange: (v: any) => void = () => {};\n private _onTouched: () => void = () => {};\n\n // ── State — single ────────────────────────────────────────────────\n protected readonly _value = signal<string>('');\n protected readonly _viewYear = signal(new Date().getFullYear());\n protected readonly _viewMonth = signal(new Date().getMonth());\n protected readonly _selYear = signal<number | null>(null);\n protected readonly _selMonth = signal<number | null>(null);\n protected readonly _selDay = signal<number | null>(null);\n protected readonly _selHour = signal(0);\n protected readonly _selMinute = signal(0);\n\n // ── State — range ─────────────────────────────────────────────────\n private readonly _today = new Date();\n private readonly _documentLang = signal(\n this.#normalizedLocale(this.doc.documentElement.lang) || 'es',\n );\n private readonly _pickStart = signal<Date | null>(null);\n private readonly _pickEnd = signal<Date | null>(null);\n private readonly _hoverDate = signal<Date | null>(null);\n readonly _leftCursor = signal<Date>(\n new Date(this._today.getFullYear(), this._today.getMonth(), 1),\n );\n readonly _rightCursor = computed(() => {\n const l = this._leftCursor();\n return new Date(l.getFullYear(), l.getMonth() + 1, 1);\n });\n readonly _hasRange = computed(() => !!this._pickStart());\n readonly _canApply = computed(() => this._pickStart() !== null && this._pickEnd() !== null);\n readonly _resolvedLocale = computed(\n () => this.#normalizedLocale(this.locale()) || this._documentLang() || 'es',\n );\n readonly _texts = computed(() => {\n const spanish = this._resolvedLocale().toLowerCase().startsWith('es');\n return spanish\n ? {\n rangeAriaLabel: 'Seleccionar rango de fechas',\n prevMonth: 'Mes anterior',\n nextMonth: 'Mes siguiente',\n clear: 'Limpiar',\n apply: 'Aplicar',\n chooseDate: 'Seleccionar fecha',\n delete: 'Borrar',\n today: 'Hoy',\n prevHour: 'Hora anterior',\n nextHour: 'Hora siguiente',\n prevMinute: 'Minuto anterior',\n nextMinute: 'Minuto siguiente',\n rangePlaceholder: 'Seleccionar fechas',\n timePlaceholder: 'hh:mm',\n datePlaceholder: 'dd/mm/aaaa',\n dateTimePlaceholder: 'dd/mm/aaaa, hh:mm',\n }\n : {\n rangeAriaLabel: 'Select date range',\n prevMonth: 'Previous month',\n nextMonth: 'Next month',\n clear: 'Clear',\n apply: 'Apply',\n chooseDate: 'Choose date',\n delete: 'Clear',\n today: 'Today',\n prevHour: 'Previous hour',\n nextHour: 'Next hour',\n prevMinute: 'Previous minute',\n nextMinute: 'Next minute',\n rangePlaceholder: 'Select dates',\n timePlaceholder: 'hh:mm',\n datePlaceholder: 'mm/dd/yyyy',\n dateTimePlaceholder: 'mm/dd/yyyy, hh:mm',\n };\n });\n\n readonly _weekDayLabels = computed(() => this.#buildWeekdayLabels('short'));\n readonly _leftTitle = computed(() => this._monthTitle(this._leftCursor()));\n readonly _rightTitle = computed(() => this._monthTitle(this._rightCursor()));\n readonly _leftDays = computed(() => this._buildRangeMonth(this._leftCursor()));\n readonly _rightDays = computed(() => this._buildRangeMonth(this._rightCursor()));\n readonly _rangePlaceholderText = computed(\n () => this.placeholder() || this._texts().rangePlaceholder,\n );\n\n constructor() {\n if (typeof MutationObserver !== 'undefined') {\n this._langObserver = new MutationObserver(() => {\n this._documentLang.set(this.#normalizedLocale(this.doc.documentElement.lang) || 'es');\n });\n this._langObserver.observe(this.doc.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n });\n }\n }\n\n ngOnDestroy(): void {\n this._langObserver?.disconnect();\n }\n\n private _monthTitle(d: Date): string {\n return this.#capitalize(\n new Intl.DateTimeFormat(this._resolvedLocale(), { month: 'long', year: 'numeric' }).format(d),\n );\n }\n\n readonly _rangeDisplayValue = computed(() => {\n const s = this._pickStart();\n const e = this._pickEnd();\n if (!s) return this.placeholder();\n if (!e) return this._fmtDate(s);\n return `${this._fmtDate(s)} – ${this._fmtDate(e)}`;\n });\n\n private _fmtDate(d: Date): string {\n const fmt = this.dateFormat();\n const opts: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: '2-digit', month: '2-digit', year: 'numeric' },\n medium: { day: '2-digit', month: 'short', year: 'numeric' },\n long: { day: 'numeric', month: 'long', year: 'numeric' },\n full: { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' },\n numeric: { day: 'numeric', month: 'numeric', year: '2-digit' },\n };\n return d.toLocaleDateString(this._resolvedLocale(), opts[fmt] ?? opts['short']);\n }\n\n private _buildRangeMonth(cursor: Date): RangeCell[] {\n const year = cursor.getFullYear();\n const month = cursor.getMonth();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const startOffset = (firstDay.getDay() + 6) % 7;\n const cells: RangeCell[] = [];\n for (let i = startOffset - 1; i >= 0; i--) {\n cells.push(this._rangeCell(new Date(year, month, -i), false));\n }\n for (let d = 1; d <= lastDay.getDate(); d++) {\n cells.push(this._rangeCell(new Date(year, month, d), true));\n }\n while (cells.length % 7 !== 0 || cells.length < 42) {\n cells.push(\n this._rangeCell(\n new Date(year, month + 1, cells.length - startOffset - lastDay.getDate() + 1),\n false,\n ),\n );\n }\n return cells;\n }\n\n private _rangeCell(date: Date, current: boolean): RangeCell {\n const s = this._pickStart();\n const e = this._pickEnd();\n const h = this._hoverDate();\n const rangeEnd = e ?? h;\n const inRange =\n s && rangeEnd\n ? (date > s && date < rangeEnd) || (rangeEnd < s && date > rangeEnd && date < s)\n : false;\n return {\n date,\n day: date.getDate(),\n ts: date.getTime(),\n current,\n today: sameDay(date, this._today),\n selected: (s && sameDay(date, s)) || (e && sameDay(date, e)) || false,\n rangeStart: s ? sameDay(date, s) : false,\n rangeEnd: e ? sameDay(date, e) : false,\n inRange: !!inRange,\n label: date.toLocaleDateString(this._resolvedLocale()),\n };\n }\n\n // ── Range actions ─────────────────────────────────────────────────\n _prevLeft(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() - 1, 1));\n }\n _nextLeft(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() + 1, 1));\n }\n _prevRight(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() - 1, 1));\n }\n _nextRight(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() + 1, 1));\n }\n\n _selectDay(date: Date): void {\n const s = this._pickStart();\n if (!s || this._pickEnd()) {\n this._pickStart.set(cloneDate(date));\n this._pickEnd.set(null);\n this._hoverDate.set(null);\n } else {\n if (date < s) {\n this._pickEnd.set(cloneDate(s));\n this._pickStart.set(cloneDate(date));\n } else {\n this._pickEnd.set(cloneDate(date));\n }\n this._hoverDate.set(null);\n }\n }\n\n _hoverDay(date: Date): void {\n if (this._pickStart() && !this._pickEnd()) this._hoverDate.set(date);\n }\n\n _applyRange(): void {\n const range: NeuDateRange = { start: this._pickStart(), end: this._pickEnd() };\n this._onChange(range);\n this.rangeChange.emit(range);\n this._onTouched();\n this.isOpen.set(false);\n }\n\n _clearRange(): void {\n this._pickStart.set(null);\n this._pickEnd.set(null);\n this._hoverDate.set(null);\n const range: NeuDateRange = { start: null, end: null };\n this._onChange(range);\n this.rangeChange.emit(range);\n }\n\n // ── Single computed ───────────────────────────────────────────────\n readonly displayValue = computed(() => {\n const v = this._value();\n if (!v) return '';\n const t = this.type();\n if (t === 'date') {\n const d = new Date(v + 'T00:00:00');\n return isNaN(d.getTime())\n ? v\n : d.toLocaleDateString(this._resolvedLocale(), {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n });\n }\n if (t === 'time') return v;\n const [datePart, timePart] = v.split('T');\n const d = new Date(datePart + 'T00:00:00');\n return (\n (isNaN(d.getTime())\n ? datePart\n : d.toLocaleDateString(this._resolvedLocale(), {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n })) +\n ', ' +\n (timePart?.slice(0, 5) ?? '')\n );\n });\n\n readonly placeholderText = computed(() => {\n switch (this.type()) {\n case 'time':\n return this._texts().timePlaceholder;\n case 'datetime-local':\n return this._texts().dateTimePlaceholder;\n default:\n return this._texts().datePlaceholder;\n }\n });\n\n readonly monthLabel = computed(() =>\n this.#capitalize(\n new Date(this._viewYear(), this._viewMonth(), 1).toLocaleDateString(this._resolvedLocale(), {\n month: 'long',\n year: 'numeric',\n }),\n ),\n );\n\n readonly weekdays = computed(() => this.#buildWeekdayLabels('narrow'));\n\n readonly calendarDays = computed((): CalendarDay[] => {\n const year = this._viewYear();\n const month = this._viewMonth();\n const today = new Date();\n const firstDay = new Date(year, month, 1);\n const startDow = (firstDay.getDay() + 6) % 7;\n const days: CalendarDay[] = [];\n for (let i = startDow; i > 0; i--) {\n days.push({\n date: new Date(year, month, 1 - i),\n inMonth: false,\n isToday: false,\n isSelected: false,\n });\n }\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= daysInMonth; d++) {\n const date = new Date(year, month, d);\n days.push({\n date,\n inMonth: true,\n isToday: date.toDateString() === today.toDateString(),\n isSelected: this._selYear() === year && this._selMonth() === month && this._selDay() === d,\n });\n }\n let next = 1;\n while (days.length < 42) {\n days.push({\n date: new Date(year, month + 1, next++),\n inMonth: false,\n isToday: false,\n isSelected: false,\n });\n }\n return days;\n });\n\n readonly hourSlots = computed(() => this._drumSlots(this._selHour(), 24));\n readonly minuteSlots = computed(() => this._drumSlots(this._selMinute(), 60));\n\n private _drumSlots(value: number, max: number): DrumSlot[] {\n return [-1, 0, 1].map((offset) => {\n const v = (((value + offset) % max) + max) % max;\n return { value: v, offset, label: String(v).padStart(2, '0') };\n });\n }\n\n // ── Single actions ────────────────────────────────────────────────\n toggle(): void {\n if (this.isDisabledFinal()) return;\n if (!this._isRange() && this.readonly()) return;\n this.isOpen.update((v) => !v);\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.el.nativeElement.contains(event.target as Node)) this.close();\n }\n\n prevMonth(): void {\n if (this._viewMonth() === 0) {\n this._viewMonth.set(11);\n this._viewYear.update((y) => y - 1);\n } else this._viewMonth.update((m) => m - 1);\n }\n\n nextMonth(): void {\n if (this._viewMonth() === 11) {\n this._viewMonth.set(0);\n this._viewYear.update((y) => y + 1);\n } else this._viewMonth.update((m) => m + 1);\n }\n\n selectDay(day: CalendarDay): void {\n if (!day.inMonth) return;\n this._selYear.set(day.date.getFullYear());\n this._selMonth.set(day.date.getMonth());\n this._selDay.set(day.date.getDate());\n this._emitValue();\n if (this.type() === 'date') this.close();\n }\n\n formatDayLabel(date: Date): string {\n return date.toLocaleDateString(this._resolvedLocale(), {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n }\n\n today(): void {\n const d = new Date();\n this._viewYear.set(d.getFullYear());\n this._viewMonth.set(d.getMonth());\n this.selectDay({ date: d, inMonth: true, isToday: true, isSelected: false });\n }\n\n clear(): void {\n this._selYear.set(null);\n this._selMonth.set(null);\n this._selDay.set(null);\n this._value.set('');\n this._onChange('');\n this.close();\n }\n\n changeHour(delta: number): void {\n this._selHour.update((h) => (((h + delta) % 24) + 24) % 24);\n this._emitValue();\n }\n\n changeMinute(delta: number): void {\n this._selMinute.update((m) => (((m + delta) % 60) + 60) % 60);\n this._emitValue();\n }\n\n onHourWheel(e: WheelEvent): void {\n e.preventDefault();\n this.changeHour(e.deltaY > 0 ? 1 : -1);\n }\n onMinuteWheel(e: WheelEvent): void {\n e.preventDefault();\n this.changeMinute(e.deltaY > 0 ? 1 : -1);\n }\n\n private _emitValue(): void {\n const t = this.type();\n let v = '';\n if (t === 'date' || t === 'datetime-local') {\n if (this._selYear() === null) return;\n const y = this._selYear()!;\n const mo = String(this._selMonth()! + 1).padStart(2, '0');\n const d = String(this._selDay()!).padStart(2, '0');\n const ds = `${y}-${mo}-${d}`;\n v =\n t === 'date'\n ? ds\n : `${ds}T${String(this._selHour()).padStart(2, '0')}:${String(this._selMinute()).padStart(2, '0')}`;\n } else {\n v = `${String(this._selHour()).padStart(2, '0')}:${String(this._selMinute()).padStart(2, '0')}`;\n }\n this._value.set(v);\n this._onChange(v);\n }\n\n // ── CVA ───────────────────────────────────────────────────────────\n writeValue(value: string | NeuDateRange | null): void {\n if (this.type() === 'range') {\n const v = value as NeuDateRange | null;\n this._pickStart.set(v?.start ?? null);\n this._pickEnd.set(v?.end ?? null);\n } else {\n const v = (value as string) ?? '';\n this._value.set(v);\n if (!v) return;\n const t = this.type();\n if (t === 'date') {\n const d = new Date(v + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n this._selYear.set(d.getFullYear());\n this._selMonth.set(d.getMonth());\n this._selDay.set(d.getDate());\n this._viewYear.set(d.getFullYear());\n this._viewMonth.set(d.getMonth());\n }\n } else if (t === 'time') {\n const [h, m] = v.split(':').map(Number);\n if (!isNaN(h)) this._selHour.set(h);\n if (!isNaN(m)) this._selMinute.set(m);\n } else {\n const [datePart, timePart] = v.split('T');\n if (datePart) {\n const d = new Date(datePart + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n this._selYear.set(d.getFullYear());\n this._selMonth.set(d.getMonth());\n this._selDay.set(d.getDate());\n this._viewYear.set(d.getFullYear());\n this._viewMonth.set(d.getMonth());\n }\n }\n if (timePart) {\n const [h, m] = timePart.split(':').map(Number);\n if (!isNaN(h)) this._selHour.set(h);\n if (!isNaN(m)) this._selMinute.set(m);\n }\n }\n }\n }\n\n registerOnChange(fn: (v: string | NeuDateRange) => void): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this._cvaDisabled.set(isDisabled);\n }\n\n #normalizedLocale(locale: string | null | undefined): string {\n return locale?.trim() || '';\n }\n\n #capitalize(value: string): string {\n return value ? value.charAt(0).toUpperCase() + value.slice(1) : value;\n }\n\n #buildWeekdayLabels(style: 'short' | 'narrow'): string[] {\n const formatter = new Intl.DateTimeFormat(this._resolvedLocale(), {\n weekday: style,\n timeZone: 'UTC',\n });\n return Array.from({ length: 7 }, (_, index) => {\n const label = formatter\n .format(new Date(Date.UTC(2024, 0, 1 + index)))\n .replace(/\\.$/, '')\n .trim();\n if (style === 'narrow') {\n return label.slice(0, 1).toUpperCase();\n }\n return this.#capitalize(label);\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-date-input.mjs","sources":["../../../../projects/ui-core/date-input/neu-date-input.component.ts","../../../../projects/ui-core/date-input/neural-ui-core-date-input.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// ── Exported types ───────────────────────────────────────────────────────────\n\n/** Rango de fechas seleccionado / Selected date range */\nexport interface NeuDateRange {\n start: Date | null;\n end: Date | null;\n}\n\n// ── Private helpers ──────────────────────────────────────────────────────────\n\nlet _neuDateInputIdSeq = 0;\n\ninterface CalendarDay {\n date: Date;\n inMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n}\n\ninterface DrumSlot {\n value: number;\n offset: number;\n label: string;\n}\n\ninterface RangeCell {\n date: Date;\n day: number;\n ts: number;\n current: boolean;\n today: boolean;\n selected: boolean;\n rangeStart: boolean;\n rangeEnd: boolean;\n inRange: boolean;\n label: string;\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 cloneDate(d: Date): Date {\n return new Date(d.getTime());\n}\n\n// ── Component ────────────────────────────────────────────────────────────────\n\n/**\n * NeuralUI DateInput — campo de fecha/hora unificado con modo rango.\n * Unified date/time field with range mode.\n *\n * Uso básico / Basic usage:\n * <neu-date-input type=\"date\" [formControl]=\"dateCtrl\" />\n * <neu-date-input type=\"time\" [formControl]=\"timeCtrl\" />\n * <neu-date-input type=\"datetime-local\" [formControl]=\"dateTimeCtrl\" />\n * <neu-date-input type=\"range\" [formControl]=\"rangeCtrl\" />\n */\n@Component({\n selector: 'neu-date-input',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-date-input-host',\n '[class.neu-date-input-host--sm]': 'size() === \"sm\"',\n '[class.neu-date-input-host--lg]': 'size() === \"lg\"',\n '[class.neu-drp]': '_isRange()',\n '[class.neu-drp--open]': '_isRange() && isOpen()',\n '[class.neu-drp--disabled]': '_isRange() && isDisabledFinal()',\n '(keydown.escape)': 'close()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NeuDateInputComponent),\n multi: true,\n },\n ],\n template: `\n @if (_isRange()) {\n @if (label()) {\n <label class=\"neu-drp__label\" [for]=\"_id\">{{ label() }}</label>\n }\n <button\n type=\"button\"\n [id]=\"_id\"\n class=\"neu-drp__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"label() || _texts().rangeAriaLabel\"\n [disabled]=\"isDisabledFinal()\"\n (click)=\"toggle()\"\n >\n <span class=\"neu-drp__icon\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </span>\n <span class=\"neu-drp__value\" [class.neu-drp__value--placeholder]=\"!_hasRange()\">\n {{ _hasRange() ? _rangeDisplayValue() : _rangePlaceholderText() }}\n </span>\n </button>\n @if (isOpen()) {\n <div\n class=\"neu-drp__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"_texts().rangeAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"neu-drp__calendars\">\n <div class=\"neu-drp__cal\">\n <div class=\"neu-drp__cal-nav\">\n <button type=\"button\" [attr.aria-label]=\"_texts().prevMonth\" (click)=\"_prevLeft()\">\n ‹\n </button>\n <span class=\"neu-drp__cal-title\">{{ _leftTitle() }}</span>\n <button type=\"button\" [attr.aria-label]=\"_texts().nextMonth\" (click)=\"_nextLeft()\">\n ›\n </button>\n </div>\n <div class=\"neu-drp__cal-grid\">\n @for (d of _weekDayLabels(); track d) {\n <span class=\"neu-drp__day-label\">{{ d }}</span>\n }\n @for (cell of _leftDays(); track cell.ts) {\n <button\n type=\"button\"\n class=\"neu-drp__cell\"\n [class.neu-drp__cell--other-month]=\"!cell.current\"\n [class.neu-drp__cell--today]=\"cell.today\"\n [class.neu-drp__cell--selected]=\"cell.selected\"\n [class.neu-drp__cell--range-start]=\"cell.rangeStart\"\n [class.neu-drp__cell--range-end]=\"cell.rangeEnd\"\n [class.neu-drp__cell--in-range]=\"cell.inRange\"\n [attr.aria-label]=\"cell.label\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"_selectDay(cell.date)\"\n (mouseenter)=\"_hoverDay(cell.date)\"\n >\n {{ cell.day }}\n </button>\n }\n </div>\n </div>\n <div class=\"neu-drp__cal\">\n <div class=\"neu-drp__cal-nav\">\n <button type=\"button\" [attr.aria-label]=\"_texts().prevMonth\" (click)=\"_prevRight()\">\n ‹\n </button>\n <span class=\"neu-drp__cal-title\">{{ _rightTitle() }}</span>\n <button type=\"button\" [attr.aria-label]=\"_texts().nextMonth\" (click)=\"_nextRight()\">\n ›\n </button>\n </div>\n <div class=\"neu-drp__cal-grid\">\n @for (d of _weekDayLabels(); track d) {\n <span class=\"neu-drp__day-label\">{{ d }}</span>\n }\n @for (cell of _rightDays(); track cell.ts) {\n <button\n type=\"button\"\n class=\"neu-drp__cell\"\n [class.neu-drp__cell--other-month]=\"!cell.current\"\n [class.neu-drp__cell--today]=\"cell.today\"\n [class.neu-drp__cell--selected]=\"cell.selected\"\n [class.neu-drp__cell--range-start]=\"cell.rangeStart\"\n [class.neu-drp__cell--range-end]=\"cell.rangeEnd\"\n [class.neu-drp__cell--in-range]=\"cell.inRange\"\n [attr.aria-label]=\"cell.label\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"_selectDay(cell.date)\"\n (mouseenter)=\"_hoverDay(cell.date)\"\n >\n {{ cell.day }}\n </button>\n }\n </div>\n </div>\n </div>\n <div class=\"neu-drp__footer\">\n <button type=\"button\" class=\"neu-drp__clear\" (click)=\"_clearRange()\">\n {{ _texts().clear }}\n </button>\n <button\n type=\"button\"\n class=\"neu-drp__apply\"\n [disabled]=\"!_canApply()\"\n (click)=\"_applyRange()\"\n >\n {{ _texts().apply }}\n </button>\n </div>\n </div>\n }\n } @else {\n @if (!floatingLabel() && label()) {\n <label class=\"neu-date-input__label\" [for]=\"_id\">{{ label() }}</label>\n }\n <div\n class=\"neu-date-input\"\n [class.neu-date-input--open]=\"isOpen()\"\n [class.neu-date-input--disabled]=\"isDisabledFinal()\"\n [class.neu-date-input--error]=\"hasError()\"\n [class.neu-date-input--has-value]=\"_value()\"\n [class.neu-date-input--float]=\"floatingLabel()\"\n >\n <button\n class=\"neu-date-input__trigger\"\n type=\"button\"\n [id]=\"_id\"\n [disabled]=\"isDisabledFinal() || readonly()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'dialog'\"\n (click)=\"toggle()\"\n >\n <span class=\"neu-date-input__icon\" aria-hidden=\"true\">\n @if (type() === 'time') {\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n } @else {\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n }\n </span>\n <span\n class=\"neu-date-input__display\"\n [class.neu-date-input__display--placeholder]=\"!_value()\"\n >\n {{ displayValue() || (floatingLabel() ? '' : placeholderText()) }}\n </span>\n </button>\n @if (floatingLabel() && label()) {\n <label class=\"neu-date-input__float-label\" [for]=\"_id\">{{ label() }}</label>\n }\n @if (isOpen()) {\n <div\n class=\"neu-date-input__panel\"\n [class.neu-date-input__panel--time-only]=\"type() === 'time'\"\n role=\"dialog\"\n [attr.aria-label]=\"_texts().chooseDate + (monthLabel() ? ': ' + monthLabel() : '')\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (type() !== 'time') {\n <div class=\"neu-date-input__calendar\">\n <div class=\"neu-date-input__cal-nav\">\n <button\n class=\"neu-date-input__cal-arrow\"\n type=\"button\"\n (click)=\"prevMonth()\"\n [attr.aria-label]=\"_texts().prevMonth\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span class=\"neu-date-input__cal-title\">{{ monthLabel() }}</span>\n <button\n class=\"neu-date-input__cal-arrow\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"_texts().nextMonth\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n <div class=\"neu-date-input__cal-weekdays\">\n @for (d of weekdays(); track d) {\n <span>{{ d }}</span>\n }\n </div>\n <div class=\"neu-date-input__cal-grid\">\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n class=\"neu-date-input__cal-day\"\n type=\"button\"\n [class.neu-date-input__cal-day--other]=\"!day.inMonth\"\n [class.neu-date-input__cal-day--today]=\"day.isToday\"\n [class.neu-date-input__cal-day--selected]=\"day.isSelected\"\n [attr.aria-label]=\"formatDayLabel(day.date)\"\n [attr.aria-pressed]=\"day.isSelected\"\n (click)=\"selectDay(day)\"\n >\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n <div class=\"neu-date-input__cal-footer\">\n <button class=\"neu-date-input__cal-footer-btn\" type=\"button\" (click)=\"clear()\">\n {{ _texts().delete }}\n </button>\n <button\n class=\"neu-date-input__cal-footer-btn neu-date-input__cal-footer-btn--today\"\n type=\"button\"\n (click)=\"today()\"\n >\n {{ _texts().today }}\n </button>\n </div>\n </div>\n }\n @if (type() === 'datetime-local') {\n <div class=\"neu-date-input__sep\"></div>\n }\n @if (type() !== 'date') {\n <div class=\"neu-date-input__time\">\n <div class=\"neu-date-input__drum\">\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeHour(-1)\"\n [attr.aria-label]=\"_texts().prevHour\"\n >\n <svg\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 <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n </button>\n <div class=\"neu-date-input__drum-track\" (wheel)=\"onHourWheel($event)\">\n @for (slot of hourSlots(); track slot.offset) {\n <div\n class=\"neu-date-input__drum-item\"\n [class.neu-date-input__drum-item--selected]=\"slot.offset === 0\"\n [class.neu-date-input__drum-item--adjacent]=\"slot.offset !== 0\"\n (click)=\"slot.offset !== 0 && changeHour(slot.offset)\"\n >\n {{ slot.label }}\n </div>\n }\n </div>\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeHour(1)\"\n [attr.aria-label]=\"_texts().nextHour\"\n >\n <svg\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n </div>\n <span class=\"neu-date-input__time-colon\">:</span>\n <div class=\"neu-date-input__drum\">\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeMinute(-1)\"\n [attr.aria-label]=\"_texts().prevMinute\"\n >\n <svg\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 <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n </button>\n <div class=\"neu-date-input__drum-track\" (wheel)=\"onMinuteWheel($event)\">\n @for (slot of minuteSlots(); track slot.offset) {\n <div\n class=\"neu-date-input__drum-item\"\n [class.neu-date-input__drum-item--selected]=\"slot.offset === 0\"\n [class.neu-date-input__drum-item--adjacent]=\"slot.offset !== 0\"\n (click)=\"slot.offset !== 0 && changeMinute(slot.offset)\"\n >\n {{ slot.label }}\n </div>\n }\n </div>\n <button\n class=\"neu-date-input__drum-arrow\"\n type=\"button\"\n (click)=\"changeMinute(1)\"\n [attr.aria-label]=\"_texts().nextMinute\"\n >\n <svg\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n @if (hasError()) {\n <p class=\"neu-date-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n } @else if (hint()) {\n <p class=\"neu-date-input__hint\">{{ hint() }}</p>\n }\n }\n `,\n styleUrl: './neu-date-input.component.scss',\n})\nexport class NeuDateInputComponent implements ControlValueAccessor, OnDestroy {\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly doc = inject(DOCUMENT);\n private _langObserver?: MutationObserver;\n\n /** Tipo del campo / Field type */\n type = input<'date' | 'time' | 'datetime-local' | 'range'>('date');\n /** Etiqueta / Label */\n label = input<string>('');\n /** Texto de ayuda / Help text */\n hint = input<string>('');\n /** Mensaje de error / Error message */\n errorMessage = input<string>('');\n /** Deshabilita / Disabled */\n disabled = input<boolean>(false);\n /** Tamaño del campo: 'sm' = 36px | 'md' = 48px | 'lg' = 56px / Field size */\n size = input<'sm' | 'md' | 'lg'>('md');\n /** Solo lectura / Read only */\n readonly = input<boolean>(false);\n /** Nombre / Field name */\n name = input<string>('');\n /** ID accesible / Accessible ID */\n inputId = input<string>('');\n /** Requerido / Required */\n required = input<boolean>(false);\n /** Mínimo / Minimum */\n min = input<string | null>(null);\n /** Máximo / Maximum */\n max = input<string | null>(null);\n /** Paso / Step */\n step = input<number | null>(null);\n /** Locale explícito opcional / Optional explicit locale */\n locale = input<string | null>(null);\n\n // ── Range-mode inputs ────────────────────────────────────────────\n /** Placeholder del trigger de rango / Range trigger placeholder */\n placeholder = input<string>('');\n /** Formato de fecha en modo rango / Date display format in range mode */\n dateFormat = input<'short' | 'medium' | 'long' | 'full' | 'numeric'>('short');\n /** Etiqueta flotante / Floating label */\n floatingLabel = input<boolean>(false);\n\n // ── Outputs ──────────────────────────────────────────────────────\n /** Emitido al confirmar el rango / Emitted when range is confirmed */\n readonly rangeChange = output<NeuDateRange>();\n\n // ── Estado interno / Internal state ──────────────────────────────\n protected readonly _id = `neu-date-input-${++_neuDateInputIdSeq}`;\n readonly isOpen = signal(false);\n readonly _isRange = computed(() => this.type() === 'range');\n private readonly _cvaDisabled = signal(false);\n readonly isDisabledFinal = computed(() => this.disabled() || this._cvaDisabled());\n readonly hasError = computed(() => !!this.errorMessage());\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _onChange: (v: any) => void = () => {};\n private _onTouched: () => void = () => {};\n\n // ── State — single ────────────────────────────────────────────────\n protected readonly _value = signal<string>('');\n protected readonly _viewYear = signal(new Date().getFullYear());\n protected readonly _viewMonth = signal(new Date().getMonth());\n protected readonly _selYear = signal<number | null>(null);\n protected readonly _selMonth = signal<number | null>(null);\n protected readonly _selDay = signal<number | null>(null);\n protected readonly _selHour = signal(0);\n protected readonly _selMinute = signal(0);\n\n // ── State — range ─────────────────────────────────────────────────\n private readonly _today = new Date();\n private readonly _documentLang = signal(\n this.#normalizedLocale(this.doc.documentElement.lang) || 'es',\n );\n private readonly _pickStart = signal<Date | null>(null);\n private readonly _pickEnd = signal<Date | null>(null);\n private readonly _hoverDate = signal<Date | null>(null);\n readonly _leftCursor = signal<Date>(\n new Date(this._today.getFullYear(), this._today.getMonth(), 1),\n );\n readonly _rightCursor = computed(() => {\n const l = this._leftCursor();\n return new Date(l.getFullYear(), l.getMonth() + 1, 1);\n });\n readonly _hasRange = computed(() => !!this._pickStart());\n readonly _canApply = computed(() => this._pickStart() !== null && this._pickEnd() !== null);\n readonly _resolvedLocale = computed(\n () => this.#normalizedLocale(this.locale()) || this._documentLang() || 'es',\n );\n readonly _texts = computed(() => {\n const spanish = this._resolvedLocale().toLowerCase().startsWith('es');\n return spanish\n ? {\n rangeAriaLabel: 'Seleccionar rango de fechas',\n prevMonth: 'Mes anterior',\n nextMonth: 'Mes siguiente',\n clear: 'Limpiar',\n apply: 'Aplicar',\n chooseDate: 'Seleccionar fecha',\n delete: 'Borrar',\n today: 'Hoy',\n prevHour: 'Hora anterior',\n nextHour: 'Hora siguiente',\n prevMinute: 'Minuto anterior',\n nextMinute: 'Minuto siguiente',\n rangePlaceholder: 'Seleccionar fechas',\n timePlaceholder: 'hh:mm',\n datePlaceholder: 'dd/mm/aaaa',\n dateTimePlaceholder: 'dd/mm/aaaa, hh:mm',\n }\n : {\n rangeAriaLabel: 'Select date range',\n prevMonth: 'Previous month',\n nextMonth: 'Next month',\n clear: 'Clear',\n apply: 'Apply',\n chooseDate: 'Choose date',\n delete: 'Clear',\n today: 'Today',\n prevHour: 'Previous hour',\n nextHour: 'Next hour',\n prevMinute: 'Previous minute',\n nextMinute: 'Next minute',\n rangePlaceholder: 'Select dates',\n timePlaceholder: 'hh:mm',\n datePlaceholder: 'mm/dd/yyyy',\n dateTimePlaceholder: 'mm/dd/yyyy, hh:mm',\n };\n });\n\n readonly _weekDayLabels = computed(() => this.#buildWeekdayLabels('short'));\n readonly _leftTitle = computed(() => this._monthTitle(this._leftCursor()));\n readonly _rightTitle = computed(() => this._monthTitle(this._rightCursor()));\n readonly _leftDays = computed(() => this._buildRangeMonth(this._leftCursor()));\n readonly _rightDays = computed(() => this._buildRangeMonth(this._rightCursor()));\n readonly _rangePlaceholderText = computed(\n () => this.placeholder() || this._texts().rangePlaceholder,\n );\n\n constructor() {\n if (typeof MutationObserver !== 'undefined') {\n this._langObserver = new MutationObserver(() => {\n this._documentLang.set(this.#normalizedLocale(this.doc.documentElement.lang) || 'es');\n });\n this._langObserver.observe(this.doc.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n });\n }\n }\n\n ngOnDestroy(): void {\n this._langObserver?.disconnect();\n }\n\n private _monthTitle(d: Date): string {\n return this.#capitalize(\n new Intl.DateTimeFormat(this._resolvedLocale(), { month: 'long', year: 'numeric' }).format(d),\n );\n }\n\n readonly _rangeDisplayValue = computed(() => {\n const s = this._pickStart();\n const e = this._pickEnd();\n if (!s) return this.placeholder();\n if (!e) return this._fmtDate(s);\n return `${this._fmtDate(s)} – ${this._fmtDate(e)}`;\n });\n\n private _fmtDate(d: Date): string {\n const fmt = this.dateFormat();\n const opts: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: '2-digit', month: '2-digit', year: 'numeric' },\n medium: { day: '2-digit', month: 'short', year: 'numeric' },\n long: { day: 'numeric', month: 'long', year: 'numeric' },\n full: { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' },\n numeric: { day: 'numeric', month: 'numeric', year: '2-digit' },\n };\n return d.toLocaleDateString(this._resolvedLocale(), opts[fmt] ?? opts['short']);\n }\n\n private _buildRangeMonth(cursor: Date): RangeCell[] {\n const year = cursor.getFullYear();\n const month = cursor.getMonth();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const startOffset = (firstDay.getDay() + 6) % 7;\n const cells: RangeCell[] = [];\n for (let i = startOffset - 1; i >= 0; i--) {\n cells.push(this._rangeCell(new Date(year, month, -i), false));\n }\n for (let d = 1; d <= lastDay.getDate(); d++) {\n cells.push(this._rangeCell(new Date(year, month, d), true));\n }\n while (cells.length % 7 !== 0 || cells.length < 42) {\n cells.push(\n this._rangeCell(\n new Date(year, month + 1, cells.length - startOffset - lastDay.getDate() + 1),\n false,\n ),\n );\n }\n return cells;\n }\n\n private _rangeCell(date: Date, current: boolean): RangeCell {\n const s = this._pickStart();\n const e = this._pickEnd();\n const h = this._hoverDate();\n const rangeEnd = e ?? h;\n const inRange =\n s && rangeEnd\n ? (date > s && date < rangeEnd) || (rangeEnd < s && date > rangeEnd && date < s)\n : false;\n return {\n date,\n day: date.getDate(),\n ts: date.getTime(),\n current,\n today: sameDay(date, this._today),\n selected: (s && sameDay(date, s)) || (e && sameDay(date, e)) || false,\n rangeStart: s ? sameDay(date, s) : false,\n rangeEnd: e ? sameDay(date, e) : false,\n inRange: !!inRange,\n label: date.toLocaleDateString(this._resolvedLocale()),\n };\n }\n\n // ── Range actions ─────────────────────────────────────────────────\n _prevLeft(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() - 1, 1));\n }\n _nextLeft(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() + 1, 1));\n }\n _prevRight(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() - 1, 1));\n }\n _nextRight(): void {\n this._leftCursor.update((d) => new Date(d.getFullYear(), d.getMonth() + 1, 1));\n }\n\n _selectDay(date: Date): void {\n const s = this._pickStart();\n if (!s || this._pickEnd()) {\n this._pickStart.set(cloneDate(date));\n this._pickEnd.set(null);\n this._hoverDate.set(null);\n } else {\n if (date < s) {\n this._pickEnd.set(cloneDate(s));\n this._pickStart.set(cloneDate(date));\n } else {\n this._pickEnd.set(cloneDate(date));\n }\n this._hoverDate.set(null);\n }\n }\n\n _hoverDay(date: Date): void {\n if (this._pickStart() && !this._pickEnd()) this._hoverDate.set(date);\n }\n\n _applyRange(): void {\n const range: NeuDateRange = { start: this._pickStart(), end: this._pickEnd() };\n this._onChange(range);\n this.rangeChange.emit(range);\n this._onTouched();\n this.isOpen.set(false);\n }\n\n _clearRange(): void {\n this._pickStart.set(null);\n this._pickEnd.set(null);\n this._hoverDate.set(null);\n const range: NeuDateRange = { start: null, end: null };\n this._onChange(range);\n this.rangeChange.emit(range);\n }\n\n // ── Single computed ───────────────────────────────────────────────\n readonly displayValue = computed(() => {\n const v = this._value();\n if (!v) return '';\n const t = this.type();\n if (t === 'date') {\n const d = new Date(v + 'T00:00:00');\n return isNaN(d.getTime())\n ? v\n : d.toLocaleDateString(this._resolvedLocale(), {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n });\n }\n if (t === 'time') return v;\n const [datePart, timePart] = v.split('T');\n const d = new Date(datePart + 'T00:00:00');\n return (\n (isNaN(d.getTime())\n ? datePart\n : d.toLocaleDateString(this._resolvedLocale(), {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n })) +\n ', ' +\n (timePart?.slice(0, 5) ?? '')\n );\n });\n\n readonly placeholderText = computed(() => {\n switch (this.type()) {\n case 'time':\n return this._texts().timePlaceholder;\n case 'datetime-local':\n return this._texts().dateTimePlaceholder;\n default:\n return this._texts().datePlaceholder;\n }\n });\n\n readonly monthLabel = computed(() =>\n this.#capitalize(\n new Date(this._viewYear(), this._viewMonth(), 1).toLocaleDateString(this._resolvedLocale(), {\n month: 'long',\n year: 'numeric',\n }),\n ),\n );\n\n readonly weekdays = computed(() => this.#buildWeekdayLabels('narrow'));\n\n readonly calendarDays = computed((): CalendarDay[] => {\n const year = this._viewYear();\n const month = this._viewMonth();\n const today = new Date();\n const firstDay = new Date(year, month, 1);\n const startDow = (firstDay.getDay() + 6) % 7;\n const days: CalendarDay[] = [];\n for (let i = startDow; i > 0; i--) {\n days.push({\n date: new Date(year, month, 1 - i),\n inMonth: false,\n isToday: false,\n isSelected: false,\n });\n }\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= daysInMonth; d++) {\n const date = new Date(year, month, d);\n days.push({\n date,\n inMonth: true,\n isToday: date.toDateString() === today.toDateString(),\n isSelected: this._selYear() === year && this._selMonth() === month && this._selDay() === d,\n });\n }\n let next = 1;\n while (days.length < 42) {\n days.push({\n date: new Date(year, month + 1, next++),\n inMonth: false,\n isToday: false,\n isSelected: false,\n });\n }\n return days;\n });\n\n readonly hourSlots = computed(() => this._drumSlots(this._selHour(), 24));\n readonly minuteSlots = computed(() => this._drumSlots(this._selMinute(), 60));\n\n private _drumSlots(value: number, max: number): DrumSlot[] {\n return [-1, 0, 1].map((offset) => {\n const v = (((value + offset) % max) + max) % max;\n return { value: v, offset, label: String(v).padStart(2, '0') };\n });\n }\n\n // ── Single actions ────────────────────────────────────────────────\n toggle(): void {\n if (this.isDisabledFinal()) return;\n if (!this._isRange() && this.readonly()) return;\n this.isOpen.update((v) => !v);\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.el.nativeElement.contains(event.target as Node)) this.close();\n }\n\n prevMonth(): void {\n if (this._viewMonth() === 0) {\n this._viewMonth.set(11);\n this._viewYear.update((y) => y - 1);\n } else this._viewMonth.update((m) => m - 1);\n }\n\n nextMonth(): void {\n if (this._viewMonth() === 11) {\n this._viewMonth.set(0);\n this._viewYear.update((y) => y + 1);\n } else this._viewMonth.update((m) => m + 1);\n }\n\n selectDay(day: CalendarDay): void {\n if (!day.inMonth) return;\n this._selYear.set(day.date.getFullYear());\n this._selMonth.set(day.date.getMonth());\n this._selDay.set(day.date.getDate());\n this._emitValue();\n if (this.type() === 'date') this.close();\n }\n\n formatDayLabel(date: Date): string {\n return date.toLocaleDateString(this._resolvedLocale(), {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n }\n\n today(): void {\n const d = new Date();\n this._viewYear.set(d.getFullYear());\n this._viewMonth.set(d.getMonth());\n this.selectDay({ date: d, inMonth: true, isToday: true, isSelected: false });\n }\n\n clear(): void {\n this._selYear.set(null);\n this._selMonth.set(null);\n this._selDay.set(null);\n this._value.set('');\n this._onChange('');\n this.close();\n }\n\n changeHour(delta: number): void {\n this._selHour.update((h) => (((h + delta) % 24) + 24) % 24);\n this._emitValue();\n }\n\n changeMinute(delta: number): void {\n this._selMinute.update((m) => (((m + delta) % 60) + 60) % 60);\n this._emitValue();\n }\n\n onHourWheel(e: WheelEvent): void {\n e.preventDefault();\n this.changeHour(e.deltaY > 0 ? 1 : -1);\n }\n onMinuteWheel(e: WheelEvent): void {\n e.preventDefault();\n this.changeMinute(e.deltaY > 0 ? 1 : -1);\n }\n\n private _emitValue(): void {\n const t = this.type();\n let v = '';\n if (t === 'date' || t === 'datetime-local') {\n if (this._selYear() === null) return;\n const y = this._selYear()!;\n const mo = String(this._selMonth()! + 1).padStart(2, '0');\n const d = String(this._selDay()!).padStart(2, '0');\n const ds = `${y}-${mo}-${d}`;\n v =\n t === 'date'\n ? ds\n : `${ds}T${String(this._selHour()).padStart(2, '0')}:${String(this._selMinute()).padStart(2, '0')}`;\n } else {\n v = `${String(this._selHour()).padStart(2, '0')}:${String(this._selMinute()).padStart(2, '0')}`;\n }\n this._value.set(v);\n this._onChange(v);\n }\n\n // ── CVA ───────────────────────────────────────────────────────────\n writeValue(value: string | NeuDateRange | null): void {\n if (this.type() === 'range') {\n const v = value as NeuDateRange | null;\n this._pickStart.set(v?.start ?? null);\n this._pickEnd.set(v?.end ?? null);\n } else {\n const v = (value as string) ?? '';\n this._value.set(v);\n if (!v) return;\n const t = this.type();\n if (t === 'date') {\n const d = new Date(v + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n this._selYear.set(d.getFullYear());\n this._selMonth.set(d.getMonth());\n this._selDay.set(d.getDate());\n this._viewYear.set(d.getFullYear());\n this._viewMonth.set(d.getMonth());\n }\n } else if (t === 'time') {\n const [h, m] = v.split(':').map(Number);\n if (!isNaN(h)) this._selHour.set(h);\n if (!isNaN(m)) this._selMinute.set(m);\n } else {\n const [datePart, timePart] = v.split('T');\n if (datePart) {\n const d = new Date(datePart + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n this._selYear.set(d.getFullYear());\n this._selMonth.set(d.getMonth());\n this._selDay.set(d.getDate());\n this._viewYear.set(d.getFullYear());\n this._viewMonth.set(d.getMonth());\n }\n }\n if (timePart) {\n const [h, m] = timePart.split(':').map(Number);\n if (!isNaN(h)) this._selHour.set(h);\n if (!isNaN(m)) this._selMinute.set(m);\n }\n }\n }\n }\n\n registerOnChange(fn: (v: string | NeuDateRange) => void): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this._cvaDisabled.set(isDisabled);\n }\n\n #normalizedLocale(locale: string | null | undefined): string {\n return locale?.trim() || '';\n }\n\n #capitalize(value: string): string {\n return value ? value.charAt(0).toUpperCase() + value.slice(1) : value;\n }\n\n #buildWeekdayLabels(style: 'short' | 'narrow'): string[] {\n const formatter = new Intl.DateTimeFormat(this._resolvedLocale(), {\n weekday: style,\n timeZone: 'UTC',\n });\n return Array.from({ length: 7 }, (_, index) => {\n const label = formatter\n .format(new Date(Date.UTC(2024, 0, 1 + index)))\n .replace(/\\.$/, '')\n .trim();\n if (style === 'narrow') {\n return label.slice(0, 1).toUpperCase();\n }\n return this.#capitalize(label);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}