@neural-ui/core 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/fesm2022/neural-ui-core-accordion.mjs +13 -9
  2. package/fesm2022/neural-ui-core-accordion.mjs.map +1 -1
  3. package/fesm2022/neural-ui-core-alert.mjs +25 -14
  4. package/fesm2022/neural-ui-core-alert.mjs.map +1 -1
  5. package/fesm2022/neural-ui-core-autocomplete.mjs +53 -28
  6. package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -1
  7. package/fesm2022/neural-ui-core-avatar.mjs +23 -13
  8. package/fesm2022/neural-ui-core-avatar.mjs.map +1 -1
  9. package/fesm2022/neural-ui-core-badge.mjs +15 -9
  10. package/fesm2022/neural-ui-core-badge.mjs.map +1 -1
  11. package/fesm2022/neural-ui-core-block-ui.mjs +16 -11
  12. package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -1
  13. package/fesm2022/neural-ui-core-breadcrumb.mjs +8 -6
  14. package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -1
  15. package/fesm2022/neural-ui-core-button.mjs +29 -16
  16. package/fesm2022/neural-ui-core-button.mjs.map +1 -1
  17. package/fesm2022/neural-ui-core-calendar.mjs +75 -50
  18. package/fesm2022/neural-ui-core-calendar.mjs.map +1 -1
  19. package/fesm2022/neural-ui-core-card.mjs +13 -8
  20. package/fesm2022/neural-ui-core-card.mjs.map +1 -1
  21. package/fesm2022/neural-ui-core-chart.mjs +45 -24
  22. package/fesm2022/neural-ui-core-chart.mjs.map +1 -1
  23. package/fesm2022/neural-ui-core-checkbox.mjs +15 -9
  24. package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -1
  25. package/fesm2022/neural-ui-core-chip.mjs +23 -13
  26. package/fesm2022/neural-ui-core-chip.mjs.map +1 -1
  27. package/fesm2022/neural-ui-core-code-block.mjs +32 -17
  28. package/fesm2022/neural-ui-core-code-block.mjs.map +1 -1
  29. package/fesm2022/neural-ui-core-color-picker.mjs +19 -11
  30. package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -1
  31. package/fesm2022/neural-ui-core-command-palette.mjs +16 -11
  32. package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -1
  33. package/fesm2022/neural-ui-core-confirm-dialog.mjs +6 -6
  34. package/fesm2022/neural-ui-core-context-menu.mjs +12 -9
  35. package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -1
  36. package/fesm2022/neural-ui-core-dashboard-grid.mjs +11 -7
  37. package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -1
  38. package/fesm2022/neural-ui-core-date-input.mjs +111 -57
  39. package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
  40. package/fesm2022/neural-ui-core-divider.mjs +7 -5
  41. package/fesm2022/neural-ui-core-divider.mjs.map +1 -1
  42. package/fesm2022/neural-ui-core-empty-state.mjs +13 -8
  43. package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -1
  44. package/fesm2022/neural-ui-core-filter-bar.mjs +19 -11
  45. package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -1
  46. package/fesm2022/neural-ui-core-icon.mjs +11 -7
  47. package/fesm2022/neural-ui-core-icon.mjs.map +1 -1
  48. package/fesm2022/neural-ui-core-image-gallery.mjs +23 -13
  49. package/fesm2022/neural-ui-core-image-gallery.mjs.map +1 -1
  50. package/fesm2022/neural-ui-core-image-viewer.mjs +22 -14
  51. package/fesm2022/neural-ui-core-image-viewer.mjs.map +1 -1
  52. package/fesm2022/neural-ui-core-input-otp.mjs +19 -11
  53. package/fesm2022/neural-ui-core-input-otp.mjs.map +1 -1
  54. package/fesm2022/neural-ui-core-input.mjs +67 -35
  55. package/fesm2022/neural-ui-core-input.mjs.map +1 -1
  56. package/fesm2022/neural-ui-core-kanban.mjs +17 -11
  57. package/fesm2022/neural-ui-core-kanban.mjs.map +1 -1
  58. package/fesm2022/neural-ui-core-knob.mjs +41 -22
  59. package/fesm2022/neural-ui-core-knob.mjs.map +1 -1
  60. package/fesm2022/neural-ui-core-meter-group.mjs +23 -13
  61. package/fesm2022/neural-ui-core-meter-group.mjs.map +1 -1
  62. package/fesm2022/neural-ui-core-modal.mjs +16 -11
  63. package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
  64. package/fesm2022/neural-ui-core-multiselect.mjs +72 -39
  65. package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
  66. package/fesm2022/neural-ui-core-nav.mjs +22 -13
  67. package/fesm2022/neural-ui-core-nav.mjs.map +1 -1
  68. package/fesm2022/neural-ui-core-notification-center.mjs +27 -10
  69. package/fesm2022/neural-ui-core-notification-center.mjs.map +1 -1
  70. package/fesm2022/neural-ui-core-number-input.mjs +35 -19
  71. package/fesm2022/neural-ui-core-number-input.mjs.map +1 -1
  72. package/fesm2022/neural-ui-core-pagination.mjs +15 -9
  73. package/fesm2022/neural-ui-core-pagination.mjs.map +1 -1
  74. package/fesm2022/neural-ui-core-popover.mjs +22 -14
  75. package/fesm2022/neural-ui-core-popover.mjs.map +1 -1
  76. package/fesm2022/neural-ui-core-progress-bar.mjs +19 -11
  77. package/fesm2022/neural-ui-core-progress-bar.mjs.map +1 -1
  78. package/fesm2022/neural-ui-core-radio.mjs +24 -15
  79. package/fesm2022/neural-ui-core-radio.mjs.map +1 -1
  80. package/fesm2022/neural-ui-core-rating.mjs +13 -8
  81. package/fesm2022/neural-ui-core-rating.mjs.map +1 -1
  82. package/fesm2022/neural-ui-core-rich-text-editor.mjs +63 -30
  83. package/fesm2022/neural-ui-core-rich-text-editor.mjs.map +1 -1
  84. package/fesm2022/neural-ui-core-scheduler-gantt.mjs +41 -22
  85. package/fesm2022/neural-ui-core-scheduler-gantt.mjs.map +1 -1
  86. package/fesm2022/neural-ui-core-select.mjs +77 -43
  87. package/fesm2022/neural-ui-core-select.mjs.map +1 -1
  88. package/fesm2022/neural-ui-core-sidebar.mjs +23 -14
  89. package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
  90. package/fesm2022/neural-ui-core-skeleton.mjs +11 -7
  91. package/fesm2022/neural-ui-core-skeleton.mjs.map +1 -1
  92. package/fesm2022/neural-ui-core-slider.mjs +23 -13
  93. package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
  94. package/fesm2022/neural-ui-core-spinner.mjs +17 -10
  95. package/fesm2022/neural-ui-core-spinner.mjs.map +1 -1
  96. package/fesm2022/neural-ui-core-split-button.mjs +27 -15
  97. package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
  98. package/fesm2022/neural-ui-core-splitter.mjs +9 -6
  99. package/fesm2022/neural-ui-core-splitter.mjs.map +1 -1
  100. package/fesm2022/neural-ui-core-stats-card.mjs +19 -11
  101. package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -1
  102. package/fesm2022/neural-ui-core-stepper.mjs +13 -8
  103. package/fesm2022/neural-ui-core-stepper.mjs.map +1 -1
  104. package/fesm2022/neural-ui-core-switch.mjs +15 -9
  105. package/fesm2022/neural-ui-core-switch.mjs.map +1 -1
  106. package/fesm2022/neural-ui-core-table.mjs +242 -124
  107. package/fesm2022/neural-ui-core-table.mjs.map +1 -1
  108. package/fesm2022/neural-ui-core-tabs.mjs +30 -18
  109. package/fesm2022/neural-ui-core-tabs.mjs.map +1 -1
  110. package/fesm2022/neural-ui-core-textarea.mjs +43 -23
  111. package/fesm2022/neural-ui-core-textarea.mjs.map +1 -1
  112. package/fesm2022/neural-ui-core-timeline-grid.mjs +21 -12
  113. package/fesm2022/neural-ui-core-timeline-grid.mjs.map +1 -1
  114. package/fesm2022/neural-ui-core-timeline.mjs +5 -4
  115. package/fesm2022/neural-ui-core-timeline.mjs.map +1 -1
  116. package/fesm2022/neural-ui-core-toast.mjs +25 -9
  117. package/fesm2022/neural-ui-core-toast.mjs.map +1 -1
  118. package/fesm2022/neural-ui-core-toggle-button-group.mjs +17 -10
  119. package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
  120. package/fesm2022/neural-ui-core-toolbar.mjs +13 -8
  121. package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -1
  122. package/fesm2022/neural-ui-core-tooltip.mjs +16 -11
  123. package/fesm2022/neural-ui-core-tooltip.mjs.map +1 -1
  124. package/fesm2022/neural-ui-core-tree-table.mjs +57 -30
  125. package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -1
  126. package/fesm2022/neural-ui-core-tree.mjs +31 -17
  127. package/fesm2022/neural-ui-core-tree.mjs.map +1 -1
  128. package/fesm2022/neural-ui-core-uploader.mjs +91 -47
  129. package/fesm2022/neural-ui-core-uploader.mjs.map +1 -1
  130. package/fesm2022/neural-ui-core-url-state.mjs +7 -5
  131. package/fesm2022/neural-ui-core-url-state.mjs.map +1 -1
  132. package/fesm2022/neural-ui-core-virtual-list.mjs +32 -19
  133. package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -1
  134. package/package.json +1 -1
  135. package/types/neural-ui-core-notification-center.d.ts +2 -0
  136. package/types/neural-ui-core-toast.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"neural-ui-core-scheduler-gantt.mjs","sources":["../../../../projects/ui-core/scheduler-gantt/neu-scheduler-gantt.component.ts","../../../../projects/ui-core/scheduler-gantt/neural-ui-core-scheduler-gantt.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport {\n NeuTimelineGridComponent,\n type NeuTimelineGridColumn,\n type NeuTimelineGridItem,\n type NeuTimelineGridItemVariant,\n type NeuTimelineGridRow,\n type NeuTimelineGridSlotSelection,\n} from '@neural-ui/core/timeline-grid';\n\nexport type NeuSchedulerGanttScale = 'day' | 'week';\n\nexport interface NeuSchedulerGanttTask {\n id: string;\n title: string;\n start: string | Date;\n end?: string | Date;\n subtitle?: string;\n meta?: string;\n variant?: NeuTimelineGridItemVariant;\n progress?: number;\n}\n\nexport interface NeuSchedulerGanttRow {\n id: string;\n label: string;\n description?: string;\n tasks: NeuSchedulerGanttTask[];\n}\n\nexport interface NeuSchedulerGanttTaskClick {\n rowId: string;\n rowLabel: string;\n task: NeuSchedulerGanttTask;\n}\n\nexport interface NeuSchedulerGanttSlotClick {\n rowId: string;\n columnId: string;\n date: string;\n scale: NeuSchedulerGanttScale;\n}\n\nexport interface NeuSchedulerGanttSelectedSlot {\n rowId: string;\n date: string | Date;\n}\n\n@Component({\n selector: 'neu-scheduler-gantt',\n standalone: true,\n imports: [NeuTimelineGridComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-scheduler-gantt',\n },\n template: `\n @if (showSummary()) {\n <header class=\"neu-scheduler-gantt__summary\">\n <div class=\"neu-scheduler-gantt__summary-copy\">\n <span class=\"neu-scheduler-gantt__title\">{{ title() }}</span>\n <span class=\"neu-scheduler-gantt__range\">{{ rangeLabel() }}</span>\n </div>\n <span class=\"neu-scheduler-gantt__count\">{{ taskCount() }} tasks</span>\n </header>\n }\n\n <neu-timeline-grid\n [columns]=\"gridColumns()\"\n [rows]=\"gridRows()\"\n [compact]=\"compact()\"\n [stickyLabels]=\"stickyLabels()\"\n [minColumnWidth]=\"minColumnWidth()\"\n [selectedItemId]=\"selectedTaskId()\"\n [selectedSlot]=\"gridSelectedSlot()\"\n (itemClick)=\"onTaskClick($event)\"\n (slotClick)=\"onSlotClick($event)\"\n />\n `,\n styleUrl: './neu-scheduler-gantt.component.scss',\n})\nexport class NeuSchedulerGanttComponent {\n readonly rows = input<NeuSchedulerGanttRow[]>([]);\n readonly startDate = input<string | Date | null>(null);\n readonly endDate = input<string | Date | null>(null);\n readonly locale = input<string | undefined>(undefined);\n readonly scale = input<NeuSchedulerGanttScale>('day');\n readonly title = input('Delivery timeline');\n readonly compact = input(false);\n readonly stickyLabels = input(true);\n readonly minColumnWidth = input('112px');\n readonly showSummary = input(true);\n readonly selectedTaskId = input<string | null>(null);\n readonly selectedSlot = input<NeuSchedulerGanttSelectedSlot | null>(null);\n\n readonly taskClick = output<NeuSchedulerGanttTaskClick>();\n readonly slotClick = output<NeuSchedulerGanttSlotClick>();\n\n readonly _bounds = computed(() => {\n const explicitStart = normalizeDate(this.startDate());\n const explicitEnd = normalizeDate(this.endDate());\n const inferred = inferBounds(this.rows());\n const rawStart = explicitStart ?? inferred.start ?? normalizeDate(new Date())!;\n const rawEnd = explicitEnd ?? inferred.end ?? rawStart;\n const min = rawStart.getTime() <= rawEnd.getTime() ? rawStart : rawEnd;\n const max = rawStart.getTime() <= rawEnd.getTime() ? rawEnd : rawStart;\n\n if (this.scale() === 'week') {\n return {\n start: startOfUtcWeek(min),\n end: endOfUtcWeek(max),\n };\n }\n\n return { start: min, end: max };\n });\n\n readonly gridColumns = computed<NeuTimelineGridColumn[]>(() =>\n buildColumns(this._bounds().start, this._bounds().end, this.scale(), this.locale()),\n );\n\n readonly gridRows = computed<NeuTimelineGridRow[]>(() => {\n const bounds = this._bounds();\n const scale = this.scale();\n\n return this.rows().map((row) => ({\n id: row.id,\n label: row.label,\n description: row.description,\n items: row.tasks\n .map((task) => mapTask(task, bounds.start, bounds.end, scale))\n .filter((task): task is NeuTimelineGridItem => task !== null),\n }));\n });\n\n readonly taskCount = computed(() =>\n this.rows().reduce((total, row) => total + row.tasks.length, 0),\n );\n\n readonly rangeLabel = computed(() => {\n const bounds = this._bounds();\n return `${formatRangeDate(bounds.start, this.locale())} - ${formatRangeDate(bounds.end, this.locale())}`;\n });\n\n readonly gridSelectedSlot = computed<NeuTimelineGridSlotSelection | null>(() => {\n const selectedSlot = this.selectedSlot();\n const date = normalizeDate(selectedSlot?.date ?? null);\n if (!selectedSlot || !date) {\n return null;\n }\n\n const columnId =\n this.scale() === 'week' ? toDateKey(startOfUtcWeek(date)) : toDateKey(startOfUtcDay(date));\n\n return { rowId: selectedSlot.rowId, columnId };\n });\n\n private readonly _taskIndex = computed(\n () =>\n new Map(\n this.rows().flatMap((row) =>\n row.tasks.map((task) => [task.id, { rowId: row.id, rowLabel: row.label, task }] as const),\n ),\n ),\n );\n\n onTaskClick(item: NeuTimelineGridItem): void {\n const match = this._taskIndex().get(item.id);\n if (!match) {\n return;\n }\n\n this.taskClick.emit(match);\n }\n\n onSlotClick(selection: NeuTimelineGridSlotSelection): void {\n this.slotClick.emit({\n rowId: selection.rowId,\n columnId: selection.columnId,\n date: selection.columnId,\n scale: this.scale(),\n });\n }\n}\n\nfunction inferBounds(rows: NeuSchedulerGanttRow[]): { start: Date | null; end: Date | null } {\n let start: Date | null = null;\n let end: Date | null = null;\n\n for (const row of rows) {\n for (const task of row.tasks) {\n const taskStart = normalizeDate(task.start);\n const taskEnd = normalizeDate(task.end ?? task.start);\n if (taskStart && (!start || taskStart.getTime() < start.getTime())) {\n start = taskStart;\n }\n if (taskEnd && (!end || taskEnd.getTime() > end.getTime())) {\n end = taskEnd;\n }\n }\n }\n\n return { start, end };\n}\n\nfunction buildColumns(\n start: Date,\n end: Date,\n scale: NeuSchedulerGanttScale,\n locale?: string,\n): NeuTimelineGridColumn[] {\n const columns: NeuTimelineGridColumn[] = [];\n let cursor = scale === 'week' ? startOfUtcWeek(start) : startOfUtcDay(start);\n const limit = scale === 'week' ? startOfUtcWeek(end) : startOfUtcDay(end);\n\n while (cursor.getTime() <= limit.getTime()) {\n columns.push(\n scale === 'week'\n ? {\n id: toDateKey(cursor),\n label: `W${getIsoWeek(cursor)}`,\n description: formatRangeDate(cursor, locale),\n }\n : {\n id: toDateKey(cursor),\n label: formatWeekday(cursor, locale),\n description: formatShortDate(cursor, locale),\n },\n );\n cursor = scale === 'week' ? addUtcDays(cursor, 7) : addUtcDays(cursor, 1);\n }\n\n return columns;\n}\n\nfunction mapTask(\n task: NeuSchedulerGanttTask,\n min: Date,\n max: Date,\n scale: NeuSchedulerGanttScale,\n): NeuTimelineGridItem | null {\n const rawStart = normalizeDate(task.start);\n const rawEnd = normalizeDate(task.end ?? task.start);\n if (!rawStart || !rawEnd) {\n return null;\n }\n\n const start = rawStart.getTime() <= rawEnd.getTime() ? rawStart : rawEnd;\n const end = rawStart.getTime() <= rawEnd.getTime() ? rawEnd : rawStart;\n if (end.getTime() < min.getTime() || start.getTime() > max.getTime()) {\n return null;\n }\n\n const clampedStart = clampDate(start, min, max);\n const clampedEnd = clampDate(end, min, max);\n if (clampedStart.getTime() > clampedEnd.getTime()) {\n return null;\n }\n\n if (scale === 'week') {\n const weekStart = startOfUtcWeek(clampedStart);\n const weekEnd = startOfUtcWeek(clampedEnd);\n return {\n id: task.id,\n title: task.title,\n start: toDateKey(weekStart),\n span: diffInWeeks(weekStart, weekEnd) + 1,\n subtitle: task.subtitle,\n meta: taskMeta(task),\n variant: task.variant,\n };\n }\n\n return {\n id: task.id,\n title: task.title,\n start: toDateKey(clampedStart),\n span: diffInDays(clampedStart, clampedEnd) + 1,\n subtitle: task.subtitle,\n meta: taskMeta(task),\n variant: task.variant,\n };\n}\n\nfunction taskMeta(task: NeuSchedulerGanttTask): string | undefined {\n const progress = task.progress == null ? null : `${Math.max(0, Math.min(100, task.progress))}%`;\n if (task.meta && progress) {\n return `${task.meta} · ${progress}`;\n }\n return task.meta ?? progress ?? undefined;\n}\n\nfunction normalizeDate(value: string | Date | null | undefined): Date | null {\n if (!value) {\n return null;\n }\n\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) {\n return null;\n }\n\n return startOfUtcDay(date);\n}\n\nfunction startOfUtcDay(date: Date): Date {\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));\n}\n\nfunction startOfUtcWeek(date: Date): Date {\n const day = date.getUTCDay() || 7;\n return addUtcDays(startOfUtcDay(date), 1 - day);\n}\n\nfunction endOfUtcWeek(date: Date): Date {\n return addUtcDays(startOfUtcWeek(date), 6);\n}\n\nfunction addUtcDays(date: Date, days: number): Date {\n const copy = new Date(date);\n copy.setUTCDate(copy.getUTCDate() + days);\n return startOfUtcDay(copy);\n}\n\nfunction diffInDays(start: Date, end: Date): number {\n return Math.round((end.getTime() - start.getTime()) / 86400000);\n}\n\nfunction diffInWeeks(start: Date, end: Date): number {\n return Math.round((startOfUtcWeek(end).getTime() - startOfUtcWeek(start).getTime()) / 604800000);\n}\n\nfunction clampDate(date: Date, min: Date, max: Date): Date {\n if (date.getTime() < min.getTime()) {\n return min;\n }\n if (date.getTime() > max.getTime()) {\n return max;\n }\n return date;\n}\n\nfunction toDateKey(date: Date): string {\n return date.toISOString().slice(0, 10);\n}\n\nfunction formatWeekday(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { weekday: 'short', timeZone: 'UTC' }).format(date);\n}\n\nfunction formatShortDate(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n timeZone: 'UTC',\n }).format(date);\n}\n\nfunction formatRangeDate(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n }).format(date);\n}\n\nfunction getIsoWeek(date: Date): number {\n const target = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));\n const dayNr = target.getUTCDay() || 7;\n target.setUTCDate(target.getUTCDate() + 4 - dayNr);\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\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-scheduler-gantt.mjs","sources":["../../../../projects/ui-core/scheduler-gantt/neu-scheduler-gantt.component.ts","../../../../projects/ui-core/scheduler-gantt/neural-ui-core-scheduler-gantt.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport {\n NeuTimelineGridComponent,\n type NeuTimelineGridColumn,\n type NeuTimelineGridItem,\n type NeuTimelineGridItemVariant,\n type NeuTimelineGridRow,\n type NeuTimelineGridSlotSelection,\n} from '@neural-ui/core/timeline-grid';\n\nexport type NeuSchedulerGanttScale = 'day' | 'week';\n\nexport interface NeuSchedulerGanttTask {\n id: string;\n title: string;\n start: string | Date;\n end?: string | Date;\n subtitle?: string;\n meta?: string;\n variant?: NeuTimelineGridItemVariant;\n progress?: number;\n}\n\nexport interface NeuSchedulerGanttRow {\n id: string;\n label: string;\n description?: string;\n tasks: NeuSchedulerGanttTask[];\n}\n\nexport interface NeuSchedulerGanttTaskClick {\n rowId: string;\n rowLabel: string;\n task: NeuSchedulerGanttTask;\n}\n\nexport interface NeuSchedulerGanttSlotClick {\n rowId: string;\n columnId: string;\n date: string;\n scale: NeuSchedulerGanttScale;\n}\n\nexport interface NeuSchedulerGanttSelectedSlot {\n rowId: string;\n date: string | Date;\n}\n\n@Component({\n selector: 'neu-scheduler-gantt',\n standalone: true,\n imports: [NeuTimelineGridComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'neu-scheduler-gantt',\n },\n template: `\n @if (showSummary()) {\n <header class=\"neu-scheduler-gantt__summary\">\n <div class=\"neu-scheduler-gantt__summary-copy\">\n <span class=\"neu-scheduler-gantt__title\">{{ title() }}</span>\n <span class=\"neu-scheduler-gantt__range\">{{ rangeLabel() }}</span>\n </div>\n <span class=\"neu-scheduler-gantt__count\">{{ taskCount() }} tasks</span>\n </header>\n }\n\n <neu-timeline-grid\n [columns]=\"gridColumns()\"\n [rows]=\"gridRows()\"\n [compact]=\"compact()\"\n [stickyLabels]=\"stickyLabels()\"\n [minColumnWidth]=\"minColumnWidth()\"\n [selectedItemId]=\"selectedTaskId()\"\n [selectedSlot]=\"gridSelectedSlot()\"\n (itemClick)=\"onTaskClick($event)\"\n (slotClick)=\"onSlotClick($event)\"\n />\n `,\n styleUrl: './neu-scheduler-gantt.component.scss',\n})\nexport class NeuSchedulerGanttComponent {\n readonly rows = input<NeuSchedulerGanttRow[]>([]);\n readonly startDate = input<string | Date | null>(null);\n readonly endDate = input<string | Date | null>(null);\n readonly locale = input<string | undefined>(undefined);\n readonly scale = input<NeuSchedulerGanttScale>('day');\n readonly title = input('Delivery timeline');\n readonly compact = input(false);\n readonly stickyLabels = input(true);\n readonly minColumnWidth = input('112px');\n readonly showSummary = input(true);\n readonly selectedTaskId = input<string | null>(null);\n readonly selectedSlot = input<NeuSchedulerGanttSelectedSlot | null>(null);\n\n readonly taskClick = output<NeuSchedulerGanttTaskClick>();\n readonly slotClick = output<NeuSchedulerGanttSlotClick>();\n\n readonly _bounds = computed(() => {\n const explicitStart = normalizeDate(this.startDate());\n const explicitEnd = normalizeDate(this.endDate());\n const inferred = inferBounds(this.rows());\n const rawStart = explicitStart ?? inferred.start ?? normalizeDate(new Date())!;\n const rawEnd = explicitEnd ?? inferred.end ?? rawStart;\n const min = rawStart.getTime() <= rawEnd.getTime() ? rawStart : rawEnd;\n const max = rawStart.getTime() <= rawEnd.getTime() ? rawEnd : rawStart;\n\n if (this.scale() === 'week') {\n return {\n start: startOfUtcWeek(min),\n end: endOfUtcWeek(max),\n };\n }\n\n return { start: min, end: max };\n });\n\n readonly gridColumns = computed<NeuTimelineGridColumn[]>(() =>\n buildColumns(this._bounds().start, this._bounds().end, this.scale(), this.locale()),\n );\n\n readonly gridRows = computed<NeuTimelineGridRow[]>(() => {\n const bounds = this._bounds();\n const scale = this.scale();\n\n return this.rows().map((row) => ({\n id: row.id,\n label: row.label,\n description: row.description,\n items: row.tasks\n .map((task) => mapTask(task, bounds.start, bounds.end, scale))\n .filter((task): task is NeuTimelineGridItem => task !== null),\n }));\n });\n\n readonly taskCount = computed(() =>\n this.rows().reduce((total, row) => total + row.tasks.length, 0),\n );\n\n readonly rangeLabel = computed(() => {\n const bounds = this._bounds();\n return `${formatRangeDate(bounds.start, this.locale())} - ${formatRangeDate(bounds.end, this.locale())}`;\n });\n\n readonly gridSelectedSlot = computed<NeuTimelineGridSlotSelection | null>(() => {\n const selectedSlot = this.selectedSlot();\n const date = normalizeDate(selectedSlot?.date ?? null);\n if (!selectedSlot || !date) {\n return null;\n }\n\n const columnId =\n this.scale() === 'week' ? toDateKey(startOfUtcWeek(date)) : toDateKey(startOfUtcDay(date));\n\n return { rowId: selectedSlot.rowId, columnId };\n });\n\n private readonly _taskIndex = computed(\n () =>\n new Map(\n this.rows().flatMap((row) =>\n row.tasks.map((task) => [task.id, { rowId: row.id, rowLabel: row.label, task }] as const),\n ),\n ),\n );\n\n onTaskClick(item: NeuTimelineGridItem): void {\n const match = this._taskIndex().get(item.id);\n if (!match) {\n return;\n }\n\n this.taskClick.emit(match);\n }\n\n onSlotClick(selection: NeuTimelineGridSlotSelection): void {\n this.slotClick.emit({\n rowId: selection.rowId,\n columnId: selection.columnId,\n date: selection.columnId,\n scale: this.scale(),\n });\n }\n}\n\nfunction inferBounds(rows: NeuSchedulerGanttRow[]): { start: Date | null; end: Date | null } {\n let start: Date | null = null;\n let end: Date | null = null;\n\n for (const row of rows) {\n for (const task of row.tasks) {\n const taskStart = normalizeDate(task.start);\n const taskEnd = normalizeDate(task.end ?? task.start);\n if (taskStart && (!start || taskStart.getTime() < start.getTime())) {\n start = taskStart;\n }\n if (taskEnd && (!end || taskEnd.getTime() > end.getTime())) {\n end = taskEnd;\n }\n }\n }\n\n return { start, end };\n}\n\nfunction buildColumns(\n start: Date,\n end: Date,\n scale: NeuSchedulerGanttScale,\n locale?: string,\n): NeuTimelineGridColumn[] {\n const columns: NeuTimelineGridColumn[] = [];\n let cursor = scale === 'week' ? startOfUtcWeek(start) : startOfUtcDay(start);\n const limit = scale === 'week' ? startOfUtcWeek(end) : startOfUtcDay(end);\n\n while (cursor.getTime() <= limit.getTime()) {\n columns.push(\n scale === 'week'\n ? {\n id: toDateKey(cursor),\n label: `W${getIsoWeek(cursor)}`,\n description: formatRangeDate(cursor, locale),\n }\n : {\n id: toDateKey(cursor),\n label: formatWeekday(cursor, locale),\n description: formatShortDate(cursor, locale),\n },\n );\n cursor = scale === 'week' ? addUtcDays(cursor, 7) : addUtcDays(cursor, 1);\n }\n\n return columns;\n}\n\nfunction mapTask(\n task: NeuSchedulerGanttTask,\n min: Date,\n max: Date,\n scale: NeuSchedulerGanttScale,\n): NeuTimelineGridItem | null {\n const rawStart = normalizeDate(task.start);\n const rawEnd = normalizeDate(task.end ?? task.start);\n if (!rawStart || !rawEnd) {\n return null;\n }\n\n const start = rawStart.getTime() <= rawEnd.getTime() ? rawStart : rawEnd;\n const end = rawStart.getTime() <= rawEnd.getTime() ? rawEnd : rawStart;\n if (end.getTime() < min.getTime() || start.getTime() > max.getTime()) {\n return null;\n }\n\n const clampedStart = clampDate(start, min, max);\n const clampedEnd = clampDate(end, min, max);\n if (clampedStart.getTime() > clampedEnd.getTime()) {\n return null;\n }\n\n if (scale === 'week') {\n const weekStart = startOfUtcWeek(clampedStart);\n const weekEnd = startOfUtcWeek(clampedEnd);\n return {\n id: task.id,\n title: task.title,\n start: toDateKey(weekStart),\n span: diffInWeeks(weekStart, weekEnd) + 1,\n subtitle: task.subtitle,\n meta: taskMeta(task),\n variant: task.variant,\n };\n }\n\n return {\n id: task.id,\n title: task.title,\n start: toDateKey(clampedStart),\n span: diffInDays(clampedStart, clampedEnd) + 1,\n subtitle: task.subtitle,\n meta: taskMeta(task),\n variant: task.variant,\n };\n}\n\nfunction taskMeta(task: NeuSchedulerGanttTask): string | undefined {\n const progress = task.progress == null ? null : `${Math.max(0, Math.min(100, task.progress))}%`;\n if (task.meta && progress) {\n return `${task.meta} · ${progress}`;\n }\n return task.meta ?? progress ?? undefined;\n}\n\nfunction normalizeDate(value: string | Date | null | undefined): Date | null {\n if (!value) {\n return null;\n }\n\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) {\n return null;\n }\n\n return startOfUtcDay(date);\n}\n\nfunction startOfUtcDay(date: Date): Date {\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));\n}\n\nfunction startOfUtcWeek(date: Date): Date {\n const day = date.getUTCDay() || 7;\n return addUtcDays(startOfUtcDay(date), 1 - day);\n}\n\nfunction endOfUtcWeek(date: Date): Date {\n return addUtcDays(startOfUtcWeek(date), 6);\n}\n\nfunction addUtcDays(date: Date, days: number): Date {\n const copy = new Date(date);\n copy.setUTCDate(copy.getUTCDate() + days);\n return startOfUtcDay(copy);\n}\n\nfunction diffInDays(start: Date, end: Date): number {\n return Math.round((end.getTime() - start.getTime()) / 86400000);\n}\n\nfunction diffInWeeks(start: Date, end: Date): number {\n return Math.round((startOfUtcWeek(end).getTime() - startOfUtcWeek(start).getTime()) / 604800000);\n}\n\nfunction clampDate(date: Date, min: Date, max: Date): Date {\n if (date.getTime() < min.getTime()) {\n return min;\n }\n if (date.getTime() > max.getTime()) {\n return max;\n }\n return date;\n}\n\nfunction toDateKey(date: Date): string {\n return date.toISOString().slice(0, 10);\n}\n\nfunction formatWeekday(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { weekday: 'short', timeZone: 'UTC' }).format(date);\n}\n\nfunction formatShortDate(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n timeZone: 'UTC',\n }).format(date);\n}\n\nfunction formatRangeDate(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n }).format(date);\n}\n\nfunction getIsoWeek(date: Date): number {\n const target = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));\n const dayNr = target.getUTCDay() || 7;\n target.setUTCDate(target.getUTCDate() + 4 - dayNr);\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -22,10 +22,10 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
22
22
  */
23
23
  class NeuSelectItemDirective {
24
24
  templateRef = inject(TemplateRef);
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuSelectItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
26
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: NeuSelectItemDirective, isStandalone: true, selector: "[neuSelectItem]", ngImport: i0 });
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuSelectItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
26
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: NeuSelectItemDirective, isStandalone: true, selector: "[neuSelectItem]", ngImport: i0 });
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuSelectItemDirective, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuSelectItemDirective, decorators: [{
29
29
  type: Directive,
30
30
  args: [{ selector: '[neuSelectItem]', standalone: true }]
31
31
  }] });
@@ -43,10 +43,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
43
43
  */
44
44
  class NeuSelectSelectedDirective {
45
45
  templateRef = inject(TemplateRef);
46
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuSelectSelectedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
47
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: NeuSelectSelectedDirective, isStandalone: true, selector: "[neuSelectSelected]", ngImport: i0 });
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuSelectSelectedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
47
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: NeuSelectSelectedDirective, isStandalone: true, selector: "[neuSelectSelected]", ngImport: i0 });
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuSelectSelectedDirective, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuSelectSelectedDirective, decorators: [{
50
50
  type: Directive,
51
51
  args: [{ selector: '[neuSelectSelected]', standalone: true }]
52
52
  }] });
@@ -75,7 +75,8 @@ class NeuSelectComponent {
75
75
  _viewportMargin = 16;
76
76
  _panelMaxHeight = 240;
77
77
  _urlParamSignals = new Map();
78
- _viewport = viewChild(CdkVirtualScrollViewport, ...(ngDevMode ? [{ debugName: "_viewport" }] : /* istanbul ignore next */ []));
78
+ _viewport = viewChild(CdkVirtualScrollViewport, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "_viewport" }] : /* istanbul ignore next */ []));
79
80
  _getUrlParamSignal(key) {
80
81
  let paramSignal = this._urlParamSignals.get(key);
81
82
  if (!paramSignal) {
@@ -102,45 +103,63 @@ class NeuSelectComponent {
102
103
  _triggerId = `neu-select-trigger-${_neuSelectIdSeq++}`;
103
104
  _panelId = `${this._triggerId}-panel`;
104
105
  /** Template personalizado para cada opción del dropdown / Custom template for each dropdown option */
105
- itemTpl = contentChild(NeuSelectItemDirective, ...(ngDevMode ? [{ debugName: "itemTpl" }] : /* istanbul ignore next */ []));
106
+ itemTpl = contentChild(NeuSelectItemDirective, /* @ts-ignore */
107
+ ...(ngDevMode ? [{ debugName: "itemTpl" }] : /* istanbul ignore next */ []));
106
108
  /** Template personalizado para el valor seleccionado en el trigger / Custom template for the selected value in the trigger */
107
- selectedItemTpl = contentChild(NeuSelectSelectedDirective, ...(ngDevMode ? [{ debugName: "selectedItemTpl" }] : /* istanbul ignore next */ []));
109
+ selectedItemTpl = contentChild(NeuSelectSelectedDirective, /* @ts-ignore */
110
+ ...(ngDevMode ? [{ debugName: "selectedItemTpl" }] : /* istanbul ignore next */ []));
108
111
  /** Opciones del dropdown / Dropdown options */
109
- options = input([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
112
+ options = input([], /* @ts-ignore */
113
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
110
114
  /** Texto del floating label / Floating label text */
111
- label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
115
+ label = input('', /* @ts-ignore */
116
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
112
117
  /** Placeholder cuando no hay selección / Placeholder when there is no selection */
113
- placeholder = input('Seleccionar...', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
118
+ placeholder = input('Seleccionar...', /* @ts-ignore */
119
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
114
120
  /** Mensaje de error / Error message */
115
- errorMessage = input('', ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
121
+ errorMessage = input('', /* @ts-ignore */
122
+ ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
116
123
  /** Texto de ayuda bajo el campo / Helper text below the field */
117
- hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
124
+ hint = input('', /* @ts-ignore */
125
+ ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
118
126
  /** Deshabilita el select / Disables the select */
119
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
127
+ disabled = input(false, /* @ts-ignore */
128
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
120
129
  /** Muestra el label como flotante (true) o como label estático encima (false, por defecto) / Shows the label as floating (true) or static above (false, default) */
121
- floatingLabel = input(false, ...(ngDevMode ? [{ debugName: "floatingLabel" }] : /* istanbul ignore next */ []));
130
+ floatingLabel = input(false, /* @ts-ignore */
131
+ ...(ngDevMode ? [{ debugName: "floatingLabel" }] : /* istanbul ignore next */ []));
122
132
  /** Tamaño del campo: 'sm' = 36px | 'md' = 48px | 'lg' = 56px / Field size */
123
- size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
133
+ size = input('md', /* @ts-ignore */
134
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
124
135
  /** Activa input de búsqueda/filtro en el panel / Activates the search/filter input in the panel */
125
- searchable = input(false, ...(ngDevMode ? [{ debugName: "searchable" }] : /* istanbul ignore next */ []));
136
+ searchable = input(false, /* @ts-ignore */
137
+ ...(ngDevMode ? [{ debugName: "searchable" }] : /* istanbul ignore next */ []));
126
138
  /** Placeholder del input de búsqueda / Search input placeholder */
127
- searchPlaceholder = input('Buscar...', ...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
139
+ searchPlaceholder = input('Buscar...', /* @ts-ignore */
140
+ ...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
128
141
  /** Muestra un botón para limpiar la selección / Shows a button to clear the selection */
129
- clearable = input(false, ...(ngDevMode ? [{ debugName: "clearable" }] : /* istanbul ignore next */ []));
142
+ clearable = input(false, /* @ts-ignore */
143
+ ...(ngDevMode ? [{ debugName: "clearable" }] : /* istanbul ignore next */ []));
130
144
  /** Habilita scroll virtual para listas largas / Enables virtual scrolling for large option lists */
131
- virtualScroll = input(false, ...(ngDevMode ? [{ debugName: "virtualScroll" }] : /* istanbul ignore next */ []));
145
+ virtualScroll = input(false, /* @ts-ignore */
146
+ ...(ngDevMode ? [{ debugName: "virtualScroll" }] : /* istanbul ignore next */ []));
132
147
  /** Número de opciones visibles en el viewport virtual / Number of visible options in the virtual viewport */
133
- virtualScrollVisibleItems = input(8, ...(ngDevMode ? [{ debugName: "virtualScrollVisibleItems" }] : /* istanbul ignore next */ []));
148
+ virtualScrollVisibleItems = input(8, /* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "virtualScrollVisibleItems" }] : /* istanbul ignore next */ []));
134
150
  /** Texto cuando no hay opciones tras filtrar / Text when no options remain after filtering */
135
- noResultsMessage = input('Sin resultados', ...(ngDevMode ? [{ debugName: "noResultsMessage" }] : /* istanbul ignore next */ []));
151
+ noResultsMessage = input('Sin resultados', /* @ts-ignore */
152
+ ...(ngDevMode ? [{ debugName: "noResultsMessage" }] : /* istanbul ignore next */ []));
136
153
  /** Aria-label del botón de limpiar / Aria-label for the clear button */
137
- clearAriaLabel = input('Limpiar selección', ...(ngDevMode ? [{ debugName: "clearAriaLabel" }] : /* istanbul ignore next */ []));
154
+ clearAriaLabel = input('Limpiar selección', /* @ts-ignore */
155
+ ...(ngDevMode ? [{ debugName: "clearAriaLabel" }] : /* istanbul ignore next */ []));
138
156
  /**
139
157
  * Sincroniza el valor seleccionado con este query param de la URL.
140
158
  * Al seleccionar una opción se añade `?{urlParam}=value` a la URL.
141
159
  * Pasar `null` (default) deshabilita la sincronización.
142
160
  */
143
- urlParam = input(null, ...(ngDevMode ? [{ debugName: "urlParam" }] : /* istanbul ignore next */ []));
161
+ urlParam = input(null, /* @ts-ignore */
162
+ ...(ngDevMode ? [{ debugName: "urlParam" }] : /* istanbul ignore next */ []));
144
163
  /**
145
164
  * Emite el objeto NeuSelectOption completo (incluyendo data) al seleccionar una opción.
146
165
  * Emite null al limpiar la selección.
@@ -148,9 +167,12 @@ class NeuSelectComponent {
148
167
  */
149
168
  selectionChange = output();
150
169
  // Estado interno
151
- _value = signal(null, ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
152
- isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
153
- searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : /* istanbul ignore next */ []));
170
+ _value = signal(null, /* @ts-ignore */
171
+ ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
172
+ isOpen = signal(false, /* @ts-ignore */
173
+ ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
174
+ searchQuery = signal('', /* @ts-ignore */
175
+ ...(ngDevMode ? [{ debugName: "searchQuery" }] : /* istanbul ignore next */ []));
154
176
  overlayPositions = [
155
177
  {
156
178
  originX: 'start',
@@ -189,9 +211,12 @@ class NeuSelectComponent {
189
211
  left: null,
190
212
  width: null,
191
213
  maxHeight: null,
192
- }, ...(ngDevMode ? [{ debugName: "panelPosition" }] : /* istanbul ignore next */ []));
193
- isPanelAbove = signal(false, ...(ngDevMode ? [{ debugName: "isPanelAbove" }] : /* istanbul ignore next */ []));
194
- hasError = computed(() => !!this.errorMessage(), ...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
214
+ }, /* @ts-ignore */
215
+ ...(ngDevMode ? [{ debugName: "panelPosition" }] : /* istanbul ignore next */ []));
216
+ isPanelAbove = signal(false, /* @ts-ignore */
217
+ ...(ngDevMode ? [{ debugName: "isPanelAbove" }] : /* istanbul ignore next */ []));
218
+ hasError = computed(() => !!this.errorMessage(), /* @ts-ignore */
219
+ ...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
195
220
  describedBy = computed(() => {
196
221
  if (this.hasError()) {
197
222
  return `${this._triggerId}-error`;
@@ -200,15 +225,19 @@ class NeuSelectComponent {
200
225
  return `${this._triggerId}-hint`;
201
226
  }
202
227
  return null;
203
- }, ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
228
+ }, /* @ts-ignore */
229
+ ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
204
230
  filteredOptions = computed(() => {
205
231
  const q = this.searchQuery().toLowerCase().trim();
206
232
  if (!q)
207
233
  return this.options();
208
234
  return this.options().filter((o) => o.label.toLowerCase().includes(q));
209
- }, ...(ngDevMode ? [{ debugName: "filteredOptions" }] : /* istanbul ignore next */ []));
210
- selectedLabel = computed(() => this.options().find((o) => o.value === this._value())?.label ?? null, ...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
211
- _selectedOption = computed(() => this.options().find((o) => o.value === this._value()) ?? null, ...(ngDevMode ? [{ debugName: "_selectedOption" }] : /* istanbul ignore next */ []));
235
+ }, /* @ts-ignore */
236
+ ...(ngDevMode ? [{ debugName: "filteredOptions" }] : /* istanbul ignore next */ []));
237
+ selectedLabel = computed(() => this.options().find((o) => o.value === this._value())?.label ?? null, /* @ts-ignore */
238
+ ...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
239
+ _selectedOption = computed(() => this.options().find((o) => o.value === this._value()) ?? null, /* @ts-ignore */
240
+ ...(ngDevMode ? [{ debugName: "_selectedOption" }] : /* istanbul ignore next */ []));
212
241
  resultsAnnouncement = computed(() => {
213
242
  if (!this.isOpen()) {
214
243
  return '';
@@ -218,7 +247,8 @@ class NeuSelectComponent {
218
247
  return this.noResultsMessage();
219
248
  }
220
249
  return total === 1 ? '1 opción disponible' : `${total} opciones disponibles`;
221
- }, ...(ngDevMode ? [{ debugName: "resultsAnnouncement" }] : /* istanbul ignore next */ []));
250
+ }, /* @ts-ignore */
251
+ ...(ngDevMode ? [{ debugName: "resultsAnnouncement" }] : /* istanbul ignore next */ []));
222
252
  virtualScrollItemSize = computed(() => {
223
253
  switch (this.size()) {
224
254
  case 'sm':
@@ -228,7 +258,8 @@ class NeuSelectComponent {
228
258
  default:
229
259
  return 44;
230
260
  }
231
- }, ...(ngDevMode ? [{ debugName: "virtualScrollItemSize" }] : /* istanbul ignore next */ []));
261
+ }, /* @ts-ignore */
262
+ ...(ngDevMode ? [{ debugName: "virtualScrollItemSize" }] : /* istanbul ignore next */ []));
232
263
  virtualViewportHeight = computed(() => {
233
264
  const desiredHeight = this.virtualScrollVisibleItems() * this.virtualScrollItemSize();
234
265
  const panelMaxHeight = this.panelPosition().maxHeight;
@@ -242,7 +273,8 @@ class NeuSelectComponent {
242
273
  const effectivePanelMaxHeight = Math.min(this._panelMaxHeight, parsedMaxHeight);
243
274
  const availableHeight = Math.max(this.virtualScrollItemSize(), effectivePanelMaxHeight - searchOffset);
244
275
  return `${Math.min(desiredHeight, availableHeight)}px`;
245
- }, ...(ngDevMode ? [{ debugName: "virtualViewportHeight" }] : /* istanbul ignore next */ []));
276
+ }, /* @ts-ignore */
277
+ ...(ngDevMode ? [{ debugName: "virtualViewportHeight" }] : /* istanbul ignore next */ []));
246
278
  trackByOptionValue = (_index, option) => option.value;
247
279
  // CVA
248
280
  _onChange = () => { };
@@ -256,11 +288,13 @@ class NeuSelectComponent {
256
288
  registerOnTouched(fn) {
257
289
  this._onTouched = fn;
258
290
  }
259
- _cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []));
291
+ _cvaDisabled = signal(false, /* @ts-ignore */
292
+ ...(ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []));
260
293
  setDisabledState(isDisabled) {
261
294
  this._cvaDisabled.set(isDisabled);
262
295
  }
263
- isDisabledFinal = computed(() => this.disabled() || this._cvaDisabled(), ...(ngDevMode ? [{ debugName: "isDisabledFinal" }] : /* istanbul ignore next */ []));
296
+ isDisabledFinal = computed(() => this.disabled() || this._cvaDisabled(), /* @ts-ignore */
297
+ ...(ngDevMode ? [{ debugName: "isDisabledFinal" }] : /* istanbul ignore next */ []));
264
298
  toggle() {
265
299
  if (this.isDisabledFinal())
266
300
  return;
@@ -416,8 +450,8 @@ class NeuSelectComponent {
416
450
  });
417
451
  this.isPanelAbove.set(false);
418
452
  }
419
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
420
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: NeuSelectComponent, isStandalone: true, selector: "neu-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, floatingLabel: { classPropertyName: "floatingLabel", publicName: "floatingLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollVisibleItems: { classPropertyName: "virtualScrollVisibleItems", publicName: "virtualScrollVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, noResultsMessage: { classPropertyName: "noResultsMessage", publicName: "noResultsMessage", isSignal: true, isRequired: false, transformFunction: null }, clearAriaLabel: { classPropertyName: "clearAriaLabel", publicName: "clearAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, urlParam: { classPropertyName: "urlParam", publicName: "urlParam", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, host: { listeners: { "keydown.escape": "close()", "window:resize": "onWindowResize()" } }, providers: [
453
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
454
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: NeuSelectComponent, isStandalone: true, selector: "neu-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, floatingLabel: { classPropertyName: "floatingLabel", publicName: "floatingLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollVisibleItems: { classPropertyName: "virtualScrollVisibleItems", publicName: "virtualScrollVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, noResultsMessage: { classPropertyName: "noResultsMessage", publicName: "noResultsMessage", isSignal: true, isRequired: false, transformFunction: null }, clearAriaLabel: { classPropertyName: "clearAriaLabel", publicName: "clearAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, urlParam: { classPropertyName: "urlParam", publicName: "urlParam", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, host: { listeners: { "keydown.escape": "close()", "window:resize": "onWindowResize()" } }, providers: [
421
455
  {
422
456
  provide: NG_VALUE_ACCESSOR,
423
457
  useExisting: forwardRef(() => NeuSelectComponent),
@@ -669,7 +703,7 @@ class NeuSelectComponent {
669
703
  }
670
704
  `, isInline: true, styles: [".neu-select{position:relative;display:block}.neu-select--disabled{opacity:.6;pointer-events:none}.neu-select--sm .neu-select__trigger{height:36px;font-size:var(--neu-text-sm)}.neu-select--lg .neu-select__trigger{height:56px}.neu-select__trigger{display:flex;align-items:center;width:100%;height:48px;padding:0 var(--neu-space-3);padding-right:36px;background:var(--neu-surface);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);font-family:var(--neu-font-sans);font-size:var(--neu-text-base);color:var(--neu-text);cursor:pointer;text-align:left;outline:none;transition:border-color var(--neu-transition),box-shadow var(--neu-transition);position:relative}.neu-select__trigger:hover:not([aria-disabled=true]){border-color:var(--neu-border-hover)}.neu-select__trigger[aria-disabled=true]{cursor:not-allowed;background:var(--neu-surface-2)}.neu-select__trigger:focus-visible{border-color:var(--neu-primary);box-shadow:0 0 0 3px #007aff1f}.neu-select--open .neu-select__trigger{border-color:var(--neu-primary);box-shadow:0 0 0 3px #007aff1f;border-bottom-left-radius:0;border-bottom-right-radius:0}.neu-select--open-above .neu-select__trigger{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--neu-radius);border-bottom-right-radius:var(--neu-radius)}.neu-select--error .neu-select__trigger{border-color:var(--neu-error)}.neu-select--error .neu-select__trigger:focus-visible{box-shadow:0 0 0 3px #ef44441f}.neu-select__label{position:absolute;left:var(--neu-space-3);top:50%;transform:translateY(-50%);font-size:var(--neu-text-base);color:color-mix(in srgb,var(--neu-text) 68%,var(--neu-surface) 32%);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - var(--neu-space-6));transition:top var(--neu-transition),font-size var(--neu-transition),color var(--neu-transition),transform var(--neu-transition),padding var(--neu-transition),background var(--neu-transition)}.neu-select--open .neu-select__label,.neu-select--has-value .neu-select__label{top:0;transform:translateY(-50%);font-size:12px;font-weight:600;letter-spacing:.01em;background:var(--neu-surface);padding:0 4px;left:calc(var(--neu-space-3) - 4px)}.neu-select--open .neu-select__label{color:var(--neu-primary)}.neu-select--error .neu-select__label{color:var(--neu-error)}.neu-select--disabled .neu-select__label{background:var(--neu-surface-2)}.neu-select__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neu-select--no-float .neu-select__value{padding-top:0}.neu-select__placeholder{color:color-mix(in srgb,var(--neu-text) 62%,var(--neu-surface) 38%)}.neu-select:not(.neu-select--no-float):not(.neu-select--open) .neu-select__placeholder{visibility:hidden}.neu-select__chevron{position:absolute;right:var(--neu-space-3);top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--neu-text-muted);flex-shrink:0;transition:transform var(--neu-transition)}.neu-select--open .neu-select__chevron{transform:translateY(-50%) rotate(180deg);color:var(--neu-primary)}.neu-select__clear{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:2px;padding:0;border:none;background:transparent;color:var(--neu-text-muted);cursor:pointer;border-radius:var(--neu-radius-sm);flex-shrink:0;transition:color var(--neu-transition),background var(--neu-transition)}.neu-select__clear svg{width:14px;height:14px}.neu-select__clear:hover{color:var(--neu-text);background:var(--neu-surface-3)}.neu-select__clear:focus-visible{outline:2px solid var(--neu-primary);outline-offset:2px}.neu-select__panel{position:relative;z-index:var(--neu-z-dropdown);box-sizing:border-box;width:100%;background:var(--neu-surface);border:1.5px solid var(--neu-primary);border-top:none;border-bottom-left-radius:var(--neu-radius);border-bottom-right-radius:var(--neu-radius);box-shadow:var(--neu-shadow-lg);max-height:240px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--neu-surface-3) transparent;animation:neu-select-open .15s ease forwards}.neu-select__panel::-webkit-scrollbar{width:4px}.neu-select__panel::-webkit-scrollbar-thumb{background:var(--neu-surface-3);border-radius:99px}.neu-select__panel--above{border-top:1.5px solid var(--neu-primary);border-bottom:none;border-top-left-radius:var(--neu-radius);border-top-right-radius:var(--neu-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.neu-select__panel--virtual{overflow:visible}.neu-select__viewport{width:100%}@media(max-width:600px){.neu-select__panel{left:auto;right:0;width:min(max(100%,220px),100vw - 2rem);max-width:calc(100vw - 2rem)}}@keyframes neu-select-open{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.neu-select__option{display:flex;align-items:center;gap:var(--neu-space-2);padding:var(--neu-space-3) var(--neu-space-4);min-height:var(--neu-select-option-height, 44px);box-sizing:border-box;font-size:var(--neu-text-sm);color:var(--neu-text);cursor:pointer;transition:background-color var(--neu-transition)}.neu-select__option:hover:not(.neu-select__option--disabled){background:var(--neu-primary-50);color:var(--neu-primary)}.neu-select__option--selected{color:var(--neu-primary);font-weight:600;background:var(--neu-primary-50)}.neu-select__option--disabled{opacity:.4;cursor:not-allowed}.neu-select__check{width:14px;height:14px;flex-shrink:0}.neu-select__error{margin-top:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-error-text);font-family:var(--neu-font-sans)}.neu-select__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-select__sr-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.neu-select__static-label{display:block;font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);margin-bottom:var(--neu-space-2)}.neu-select__search{padding:var(--neu-space-2);border-bottom:1px solid var(--neu-border);position:sticky;top:0;background:var(--neu-surface);z-index:1}.neu-select__search-input{width:100%;height:34px;padding:0 var(--neu-space-3);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius-sm);background:var(--neu-bg);font-family:var(--neu-font-sans);font-size:var(--neu-text-sm);color:var(--neu-text);outline:none;transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-select__search-input:focus{border-color:var(--neu-primary);box-shadow:0 0 0 2px #007aff1f}.neu-select__search-input::placeholder{color:var(--neu-text-disabled)}.neu-select__empty{padding:var(--neu-space-4);text-align:center;font-size:var(--neu-text-sm);color:var(--neu-text-disabled);font-family:var(--neu-font-sans)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i1.ɵɵCdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i1.ɵɵCdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i1.ɵɵCdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: ScrollingModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
671
705
  }
672
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: NeuSelectComponent, decorators: [{
706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuSelectComponent, decorators: [{
673
707
  type: Component,
674
708
  args: [{ selector: 'neu-select', imports: [NgTemplateOutlet, OverlayModule, ScrollingModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
675
709
  {