@litigiovirtual/ius-design-components 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2001,7 +2001,7 @@ const TONE_NUM = {
2001
2001
  uva: 'var(--ius-uva-600)',
2002
2002
  aguacate: 'var(--ius-aguacate-700)',
2003
2003
  };
2004
- function pad2$3(n) {
2004
+ function pad2$4(n) {
2005
2005
  return n < 10 ? '0' + n : '' + n;
2006
2006
  }
2007
2007
  /** Formatea segundos enteros según el formato pedido. */
@@ -2015,10 +2015,10 @@ function formatTime$1(totalSec, format) {
2015
2015
  case 'ss':
2016
2016
  return String(s);
2017
2017
  case 'hh:mm:ss':
2018
- return `${pad2$3(hh)}:${pad2$3(mm)}:${pad2$3(ss)}`;
2018
+ return `${pad2$4(hh)}:${pad2$4(mm)}:${pad2$4(ss)}`;
2019
2019
  case 'mm:ss':
2020
2020
  default:
2021
- return `${pad2$3(Math.floor(s / 60))}:${pad2$3(ss)}`;
2021
+ return `${pad2$4(Math.floor(s / 60))}:${pad2$4(ss)}`;
2022
2022
  }
2023
2023
  }
2024
2024
  /**
@@ -21990,15 +21990,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
21990
21990
  const MONTHS_ABBR = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
21991
21991
  const WEEKDAYS_MON = ['Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa', 'Do'];
21992
21992
  const WEEKDAYS_SUN = ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'];
21993
- const startOfDay = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
21993
+ const startOfDay$1 = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
21994
21994
  const isSameDay = (a, b) => !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
21995
21995
  const addMonths = (d, n) => new Date(d.getFullYear(), d.getMonth() + n, 1);
21996
- const pad2$2 = (n) => String(n).padStart(2, '0');
21996
+ const pad2$3 = (n) => String(n).padStart(2, '0');
21997
21997
  /** Formatea una fecha como "12/11/2025" (util del paquete, verbatim del golden). */
21998
21998
  function formatDate(d) {
21999
21999
  if (!d)
22000
22000
  return '';
22001
- return `${pad2$2(d.getDate())}/${pad2$2(d.getMonth() + 1)}/${d.getFullYear()}`;
22001
+ return `${pad2$3(d.getDate())}/${pad2$3(d.getMonth() + 1)}/${d.getFullYear()}`;
22002
22002
  }
22003
22003
  function buildGrid(viewDate, weekStartsOn) {
22004
22004
  const y = viewDate.getFullYear();
@@ -22112,7 +22112,7 @@ class CalendarComponent {
22112
22112
  return this.mode === 'range';
22113
22113
  }
22114
22114
  get today() {
22115
- return startOfDay(new Date());
22115
+ return startOfDay$1(new Date());
22116
22116
  }
22117
22117
  get hasFooterSlot() {
22118
22118
  return !!this.footerRef();
@@ -22162,9 +22162,9 @@ class CalendarComponent {
22162
22162
  dayDisabled(d) {
22163
22163
  if (this.cvaDisabled())
22164
22164
  return true;
22165
- if (this.minDate && startOfDay(d) < startOfDay(this.minDate))
22165
+ if (this.minDate && startOfDay$1(d) < startOfDay$1(this.minDate))
22166
22166
  return true;
22167
- if (this.maxDate && startOfDay(d) > startOfDay(this.maxDate))
22167
+ if (this.maxDate && startOfDay$1(d) > startOfDay$1(this.maxDate))
22168
22168
  return true;
22169
22169
  const fn = this.isDateDisabled;
22170
22170
  return fn ? fn(d) : false;
@@ -22181,11 +22181,11 @@ class CalendarComponent {
22181
22181
  const end = this.previewEnd;
22182
22182
  if (!this.isRange || !r.start || !end)
22183
22183
  return false;
22184
- const a = startOfDay(r.start);
22185
- const b = startOfDay(end);
22184
+ const a = startOfDay$1(r.start);
22185
+ const b = startOfDay$1(end);
22186
22186
  const lo = a < b ? a : b;
22187
22187
  const hi = a < b ? b : a;
22188
- const x = startOfDay(d);
22188
+ const x = startOfDay$1(d);
22189
22189
  return x > lo && x < hi;
22190
22190
  }
22191
22191
  isRangeStart(d) {
@@ -22193,7 +22193,7 @@ class CalendarComponent {
22193
22193
  const end = this.previewEnd;
22194
22194
  if (!this.isRange || !r.start)
22195
22195
  return false;
22196
- const startIsLater = !!end && startOfDay(end) < startOfDay(r.start);
22196
+ const startIsLater = !!end && startOfDay$1(end) < startOfDay$1(r.start);
22197
22197
  return isSameDay(d, startIsLater ? end : r.start);
22198
22198
  }
22199
22199
  isRangeEnd(d) {
@@ -22201,7 +22201,7 @@ class CalendarComponent {
22201
22201
  const end = this.previewEnd;
22202
22202
  if (!this.isRange || !end)
22203
22203
  return false;
22204
- const startIsLater = !!r.start && startOfDay(end) < startOfDay(r.start);
22204
+ const startIsLater = !!r.start && startOfDay$1(end) < startOfDay$1(r.start);
22205
22205
  return isSameDay(d, startIsLater ? r.start : end);
22206
22206
  }
22207
22207
  isSelected(d) {
@@ -22294,19 +22294,19 @@ class CalendarComponent {
22294
22294
  if (this.dayDisabled(d))
22295
22295
  return;
22296
22296
  if (!this.isRange) {
22297
- this.commit(startOfDay(d));
22297
+ this.commit(startOfDay$1(d));
22298
22298
  return;
22299
22299
  }
22300
22300
  const r = this.range;
22301
22301
  if (!r.start || r.end) {
22302
- this.commit({ start: startOfDay(d), end: null });
22302
+ this.commit({ start: startOfDay$1(d), end: null });
22303
22303
  return;
22304
22304
  }
22305
- if (startOfDay(d) < startOfDay(r.start)) {
22306
- this.commit({ start: startOfDay(d), end: null });
22305
+ if (startOfDay$1(d) < startOfDay$1(r.start)) {
22306
+ this.commit({ start: startOfDay$1(d), end: null });
22307
22307
  return;
22308
22308
  }
22309
- this.commit({ start: r.start, end: startOfDay(d) });
22309
+ this.commit({ start: r.start, end: startOfDay$1(d) });
22310
22310
  }
22311
22311
  onDayEnter(cell) {
22312
22312
  if (this.isRange)
@@ -22399,12 +22399,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
22399
22399
  type: Output
22400
22400
  }], footerRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusCalendarFooterDirective), { isSignal: true }] }], asideRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusCalendarAsideDirective), { isSignal: true }] }] } });
22401
22401
 
22402
- const pad2$1 = (n) => String(n).padStart(2, '0');
22402
+ const pad2$2 = (n) => String(n).padStart(2, '0');
22403
22403
  /** Formatea un `IusTimeValue` como "01:05 PM" (util del paquete, verbatim del golden). */
22404
22404
  function formatTime(v) {
22405
22405
  if (!v)
22406
22406
  return '';
22407
- return `${pad2$1(v.hours)}:${pad2$1(v.minutes)} ${v.ampm}`;
22407
+ return `${pad2$2(v.hours)}:${pad2$2(v.minutes)} ${v.ampm}`;
22408
22408
  }
22409
22409
  /** Deriva un `IusTimeValue` 12h de un `Date` (util del paquete, verbatim del golden). */
22410
22410
  function timeFromDate(d) {
@@ -22528,7 +22528,7 @@ class TimePanelComponent {
22528
22528
  ];
22529
22529
  }
22530
22530
  pad(n) {
22531
- return pad2$1(n);
22531
+ return pad2$2(n);
22532
22532
  }
22533
22533
  // ── Handlers ───────────────────────────────────────────────────────────
22534
22534
  commit(patch) {
@@ -22604,7 +22604,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
22604
22604
  args: ['colM']
22605
22605
  }] } });
22606
22606
 
22607
- const pad2 = (n) => String(n).padStart(2, '0');
22607
+ const pad2$1 = (n) => String(n).padStart(2, '0');
22608
22608
  const DEFAULT_TIME = { hours: 12, minutes: 0, ampm: 'AM' };
22609
22609
  /**
22610
22610
  * DatePicker — Ius Design v2 (familia inputs, CVA).
@@ -22867,8 +22867,8 @@ class DatePickerComponent {
22867
22867
  const e = {};
22868
22868
  const fill = (date, sfx) => {
22869
22869
  if (date) {
22870
- e['d' + sfx] = pad2(date.getDate());
22871
- e['mo' + sfx] = pad2(date.getMonth() + 1);
22870
+ e['d' + sfx] = pad2$1(date.getDate());
22871
+ e['mo' + sfx] = pad2$1(date.getMonth() + 1);
22872
22872
  e['y' + sfx] = String(date.getFullYear());
22873
22873
  }
22874
22874
  else {
@@ -22887,8 +22887,8 @@ class DatePickerComponent {
22887
22887
  const dt = c;
22888
22888
  fill(dt?.date ?? null, '');
22889
22889
  const t = dt?.time;
22890
- e['hh'] = t?.hours ? pad2(t.hours) : '';
22891
- e['mm'] = t?.minutes != null ? pad2(t.minutes) : '';
22890
+ e['hh'] = t?.hours ? pad2$1(t.hours) : '';
22891
+ e['mm'] = t?.minutes != null ? pad2$1(t.minutes) : '';
22892
22892
  }
22893
22893
  else {
22894
22894
  fill(c, '');
@@ -23123,7 +23123,7 @@ const addDays = (d, n) => {
23123
23123
  x.setDate(x.getDate() + n);
23124
23124
  return x;
23125
23125
  };
23126
- const sameDay = (a, b) => !!a &&
23126
+ const sameDay$1 = (a, b) => !!a &&
23127
23127
  !!b &&
23128
23128
  a.getFullYear() === b.getFullYear() &&
23129
23129
  a.getMonth() === b.getMonth() &&
@@ -23194,12 +23194,12 @@ function presetActive(preset, draft, mode) {
23194
23194
  if (preset.value == null)
23195
23195
  return isEmpty(draft, mode);
23196
23196
  if (mode === 'single') {
23197
- return preset.value instanceof Date && draft instanceof Date && sameDay(preset.value, draft);
23197
+ return preset.value instanceof Date && draft instanceof Date && sameDay$1(preset.value, draft);
23198
23198
  }
23199
23199
  return (isRange(preset.value) &&
23200
23200
  isRange(draft) &&
23201
- sameDay(preset.value.start, draft.start) &&
23202
- sameDay(preset.value.end, draft.end));
23201
+ sameDay$1(preset.value.start, draft.start) &&
23202
+ sameDay$1(preset.value.end, draft.end));
23203
23203
  }
23204
23204
  /**
23205
23205
  * DateFilter — Ius Design v2 (familia navigation).
@@ -26969,6 +26969,326 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
26969
26969
  type: Output
26970
26970
  }] } });
26971
26971
 
26972
+ const pad2 = (n) => String(n).padStart(2, '0');
26973
+ const ymd = (d) => `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
26974
+ /** 'YYYY-MM-DD' se lee por componentes (fecha local); un Date se usa tal cual. */
26975
+ function toDate(v) {
26976
+ if (v instanceof Date)
26977
+ return v;
26978
+ if (typeof v === 'string') {
26979
+ const p = v.split('-').map(Number);
26980
+ return new Date(p[0], (p[1] || 1) - 1, p[2] || 1);
26981
+ }
26982
+ return v != null ? new Date(v) : null;
26983
+ }
26984
+ function sameDay(a, b) {
26985
+ return !!(a && b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate());
26986
+ }
26987
+ const startOfDay = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
26988
+ const dayDiff = (a, b) => Math.round((startOfDay(a).getTime() - startOfDay(b).getTime()) / 86400000);
26989
+ const cap = (s) => (s ? s.charAt(0).toUpperCase() + s.slice(1) : s);
26990
+ /** Hora: 'H:MM' | Date | minutos del día → minutos (golden `parseHM`). */
26991
+ function parseHM(v) {
26992
+ if (v instanceof Date)
26993
+ return v.getHours() * 60 + v.getMinutes();
26994
+ if (typeof v === 'number')
26995
+ return v;
26996
+ if (typeof v === 'string') {
26997
+ const m = v.match(/(\d{1,2}):(\d{2})/);
26998
+ if (m)
26999
+ return +m[1] * 60 + +m[2];
27000
+ }
27001
+ return null;
27002
+ }
27003
+ function fmtHM(min, fmt) {
27004
+ const h = Math.floor(min / 60);
27005
+ const mm = min % 60;
27006
+ if (fmt === '24')
27007
+ return `${h}:${pad2(mm)}`;
27008
+ const ap = h < 12 ? 'a.m.' : 'p.m.';
27009
+ let hh = h % 12;
27010
+ if (hh === 0)
27011
+ hh = 12;
27012
+ return mm === 0 ? `${hh} ${ap}` : `${hh}:${pad2(mm)} ${ap}`;
27013
+ }
27014
+ /** Hora de un evento por horas: `time` literal o el rango `start`–`end`. */
27015
+ function timeLabelOf(ev, fmt) {
27016
+ if (ev.time)
27017
+ return ev.time;
27018
+ const s = parseHM(ev.start);
27019
+ if (s == null)
27020
+ return null;
27021
+ const e = parseHM(ev.end);
27022
+ return e != null ? `${fmtHM(s, fmt)}–${fmtHM(e, fmt)}` : fmtHM(s, fmt);
27023
+ }
27024
+ const fmtDayMon = (d) => d.toLocaleDateString('es-CO', { day: 'numeric', month: 'short' }).replace('.', '');
27025
+ /** Formato único del día del ecosistema: «30 jun 2026» (mes abreviado en minúscula). */
27026
+ const MON_SHORT = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];
27027
+ const fmtDay = (d) => `${d.getDate()} ${MON_SHORT[d.getMonth()]} ${d.getFullYear()}`;
27028
+ const DOW_LONG = ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'];
27029
+ /**
27030
+ * ScheduleList — Ius Design v2 (familia scheduler).
27031
+ *
27032
+ * Vista agenda del Scheduler: agrupa los `events` por día en orden cronológico,
27033
+ * con cabecera de día sticky (número, día de la semana, rótulo «Hoy · 30 jun
27034
+ * 2026» / «Mañana · 1 jul 2026» / «1 abr 2025», conteo) y los eventos del día
27035
+ * como `ius-event-pill` (`block` = agenda completa · `bar` = teaser
27036
+ * «Próximamente»). Resuelve agrupación, orden, eventos de varios días («Día X
27037
+ * de N») y overflow «+N más» (`ius-text-button`); no calcula la cuadrícula del
27038
+ * mes (MonthGrid) ni navega periodos (SchedulerToolbar).
27039
+ *
27040
+ * Notas de port:
27041
+ * - El host es la raíz `.ius-agenda` del golden.
27042
+ * - Los callbacks del golden son outputs que emiten un objeto
27043
+ * (`{ date, event }`, `{ item, event }`, `{ date, hidden, event }`). Como en
27044
+ * React, la cabecera solo es botón si hay listener de `(selectDay)` y los
27045
+ * pills solo si lo hay de `(selectEvent)` (`EventEmitter.observed`).
27046
+ * - `sortByTime` ordena como el golden: los de todo el día primero y el resto
27047
+ * por el primer «H:MM» de `time` (o `start`), sin leer «a. m.»/«p. m.».
27048
+ *
27049
+ * Fuente de verdad: `ScheduleList.jsx` + `ScheduleList.d.ts` + `ScheduleList.ng-spec.md`.
27050
+ */
27051
+ class ScheduleListComponent {
27052
+ constructor() {
27053
+ /** Eventos a listar; se agrupan por día y se ordenan por hora. */
27054
+ this.events = input([], /* @ts-ignore */
27055
+ ...(ngDevMode ? [{ debugName: "events" }] : /* istanbul ignore next */ []));
27056
+ /** Día de hoy. Default `new Date()`. `null` lo desactiva (sin rótulos relativos ni atenuado de pasado). */
27057
+ this.today = input(undefined, /* @ts-ignore */
27058
+ ...(ngDevMode ? [{ debugName: "today" }] : /* istanbul ignore next */ []));
27059
+ /** Día seleccionado (Date o 'YYYY-MM-DD') → `aria-current="date"` en su cabecera. */
27060
+ this.selected = input(undefined, /* @ts-ignore */
27061
+ ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
27062
+ /** Inicio del rango a renderizar — solo con `showEmptyDays`. */
27063
+ this.from = input(undefined, /* @ts-ignore */
27064
+ ...(ngDevMode ? [{ debugName: "from" }] : /* istanbul ignore next */ []));
27065
+ /** Fin del rango a renderizar — solo con `showEmptyDays`. */
27066
+ this.to = input(undefined, /* @ts-ignore */
27067
+ ...(ngDevMode ? [{ debugName: "to" }] : /* istanbul ignore next */ []));
27068
+ /** Mostrar también los días sin eventos dentro de `from`–`to`. */
27069
+ this.showEmptyDays = input(false, { ...(ngDevMode ? { debugName: "showEmptyDays" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27070
+ this.size = input('medium', /* @ts-ignore */
27071
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
27072
+ /** Ordenar los eventos de cada día por hora (todo el día primero). */
27073
+ this.sortByTime = input(true, { ...(ngDevMode ? { debugName: "sortByTime" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27074
+ /** Formato de la hora derivada de `start`/`end`. */
27075
+ this.hourFormat = input('12', /* @ts-ignore */
27076
+ ...(ngDevMode ? [{ debugName: "hourFormat" }] : /* istanbul ignore next */ []));
27077
+ /** Rótulo relativo Hoy/Mañana/Ayer como prefijo del rótulo de fecha. */
27078
+ this.relativeLabels = input(true, { ...(ngDevMode ? { debugName: "relativeLabels" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27079
+ /** Reemplaza el rótulo de fecha de la cabecera (solo casos especiales). */
27080
+ this.formatDayLabel = input(undefined, /* @ts-ignore */
27081
+ ...(ngDevMode ? [{ debugName: "formatDayLabel" }] : /* istanbul ignore next */ []));
27082
+ /** «N compromisos» a la derecha de la cabecera. */
27083
+ this.showCount = input(true, { ...(ngDevMode ? { debugName: "showCount" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27084
+ /** Sangrar los eventos bajo la cabecera (riel alineado al número). */
27085
+ this.showRail = input(true, { ...(ngDevMode ? { debugName: "showRail" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27086
+ /** Cabeceras de día pegajosas al hacer scroll. */
27087
+ this.stickyHeaders = input(true, { ...(ngDevMode ? { debugName: "stickyHeaders" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27088
+ /** Línea entre eventos del día. Solo con `pillVariant="bar"` + `pillFill="plain"`. */
27089
+ this.dividers = input(false, { ...(ngDevMode ? { debugName: "dividers" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27090
+ /** Máximo de eventos por día antes de «+N más». 0 = todos. */
27091
+ this.maxVisible = input(0, { ...(ngDevMode ? { debugName: "maxVisible" } : /* istanbul ignore next */ {}), transform: numberAttribute });
27092
+ /** Alto máximo → scroll propio (habilita el sticky real). Un número son px. */
27093
+ this.maxHeight = input(undefined, /* @ts-ignore */
27094
+ ...(ngDevMode ? [{ debugName: "maxHeight" }] : /* istanbul ignore next */ []));
27095
+ this.pillVariant = input('block', /* @ts-ignore */
27096
+ ...(ngDevMode ? [{ debugName: "pillVariant" }] : /* istanbul ignore next */ []));
27097
+ this.pillFill = input('soft', /* @ts-ignore */
27098
+ ...(ngDevMode ? [{ debugName: "pillFill" }] : /* istanbul ignore next */ []));
27099
+ /** Tamaño de los pills. Por defecto, el `size`. */
27100
+ this.pillSize = input(undefined, /* @ts-ignore */
27101
+ ...(ngDevMode ? [{ debugName: "pillSize" }] : /* istanbul ignore next */ []));
27102
+ this.showIcon = input(true, { ...(ngDevMode ? { debugName: "showIcon" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27103
+ this.showDot = input(true, { ...(ngDevMode ? { debugName: "showDot" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27104
+ /** Estado vacío global (sin ningún evento). */
27105
+ this.emptyTitle = input('Sin compromisos', /* @ts-ignore */
27106
+ ...(ngDevMode ? [{ debugName: "emptyTitle" }] : /* istanbul ignore next */ []));
27107
+ this.emptySubtitle = input('No hay eventos en este periodo.', /* @ts-ignore */
27108
+ ...(ngDevMode ? [{ debugName: "emptySubtitle" }] : /* istanbul ignore next */ []));
27109
+ /** Ícono Material Symbols del estado vacío global. '' lo apaga. */
27110
+ this.emptyIcon = input('event_available', /* @ts-ignore */
27111
+ ...(ngDevMode ? [{ debugName: "emptyIcon" }] : /* istanbul ignore next */ []));
27112
+ /** Texto en un día vacío (solo con `showEmptyDays`). */
27113
+ this.emptyDayLabel = input('Sin compromisos', /* @ts-ignore */
27114
+ ...(ngDevMode ? [{ debugName: "emptyDayLabel" }] : /* istanbul ignore next */ []));
27115
+ /** Texto del overflow (anula «+N más»). */
27116
+ this.moreLabel = input(undefined, /* @ts-ignore */
27117
+ ...(ngDevMode ? [{ debugName: "moreLabel" }] : /* istanbul ignore next */ []));
27118
+ this.selectDay = new EventEmitter();
27119
+ this.selectEvent = new EventEmitter();
27120
+ this.showMore = new EventEmitter();
27121
+ this.maxHeightCss = computed(() => {
27122
+ const mh = this.maxHeight();
27123
+ if (mh == null)
27124
+ return null;
27125
+ return typeof mh === 'number' ? `${mh}px` : mh;
27126
+ }, /* @ts-ignore */
27127
+ ...(ngDevMode ? [{ debugName: "maxHeightCss" }] : /* istanbul ignore next */ []));
27128
+ /** Divisores solo en el par `bar` + `plain` (en cualquier otra combinación se ignoran). */
27129
+ this.showDividers = computed(() => this.dividers() && this.pillVariant() === 'bar' && this.pillFill() === 'plain', /* @ts-ignore */
27130
+ ...(ngDevMode ? [{ debugName: "showDividers" }] : /* istanbul ignore next */ []));
27131
+ /** Días con sus entradas: agrupa, expande los de varios días, ordena y rellena el rango. */
27132
+ this.dias = computed(() => {
27133
+ const mapa = new Map();
27134
+ const fromD = toDate(this.from());
27135
+ const toD = toDate(this.to());
27136
+ const push = (key, date, e) => {
27137
+ const g = mapa.get(key) ?? { date, items: [] };
27138
+ g.items.push(e);
27139
+ mapa.set(key, g);
27140
+ };
27141
+ for (const ev of this.events()) {
27142
+ const sd = toDate(ev.date != null ? ev.date : ev.start);
27143
+ if (!sd)
27144
+ continue;
27145
+ const ed = toDate(ev.endDate);
27146
+ if (ed && startOfDay(ed) > startOfDay(sd)) {
27147
+ const cur = startOfDay(sd);
27148
+ const last = startOfDay(ed);
27149
+ while (cur <= last) {
27150
+ const inRange = (!fromD || cur >= startOfDay(fromD)) && (!toD || cur <= startOfDay(toD));
27151
+ if (inRange) {
27152
+ const seg = sameDay(cur, sd) ? 'start' : sameDay(cur, ed) ? 'end' : 'mid';
27153
+ push(ymd(cur), new Date(cur), { ev, allDay: true, seg, spanStart: sd, spanEnd: ed });
27154
+ }
27155
+ cur.setDate(cur.getDate() + 1);
27156
+ }
27157
+ }
27158
+ else {
27159
+ push(ymd(sd), sd, { ev, allDay: !!ev.allDay, seg: null });
27160
+ }
27161
+ }
27162
+ if (this.sortByTime()) {
27163
+ for (const g of mapa.values()) {
27164
+ g.items.sort((a, b) => {
27165
+ if (a.allDay !== b.allDay)
27166
+ return a.allDay ? -1 : 1;
27167
+ return ((parseHM(a.ev.time != null ? a.ev.time : a.ev.start) || 0) -
27168
+ (parseHM(b.ev.time != null ? b.ev.time : b.ev.start) || 0));
27169
+ });
27170
+ }
27171
+ }
27172
+ if (this.showEmptyDays() && fromD && toD) {
27173
+ const cur = startOfDay(fromD);
27174
+ const end = startOfDay(toD);
27175
+ const out = [];
27176
+ while (cur <= end) {
27177
+ out.push(mapa.get(ymd(cur)) ?? { date: new Date(cur), items: [] });
27178
+ cur.setDate(cur.getDate() + 1);
27179
+ }
27180
+ return out;
27181
+ }
27182
+ return [...mapa.keys()].sort().map((k) => mapa.get(k));
27183
+ }, /* @ts-ignore */
27184
+ ...(ngDevMode ? [{ debugName: "dias" }] : /* istanbul ignore next */ []));
27185
+ /** Sin ningún día que pintar → estado vacío global. */
27186
+ this.vacio = computed(() => this.dias().length === 0, /* @ts-ignore */
27187
+ ...(ngDevMode ? [{ debugName: "vacio" }] : /* istanbul ignore next */ []));
27188
+ this.grupos = computed(() => {
27189
+ const today = this.today();
27190
+ const todayDate = today === undefined ? new Date() : toDate(today);
27191
+ const selDate = toDate(this.selected());
27192
+ const fmt = this.hourFormat();
27193
+ const pillSize = this.pillSize() || this.size();
27194
+ const formatDayLabel = this.formatDayLabel();
27195
+ const maxVisible = this.maxVisible();
27196
+ return this.dias().map((g) => {
27197
+ const d = g.date;
27198
+ const diff = todayDate ? dayDiff(d, todayDate) : null;
27199
+ let rel = null;
27200
+ if (this.relativeLabels() && diff != null) {
27201
+ if (diff === 0)
27202
+ rel = 'Hoy';
27203
+ else if (diff === 1)
27204
+ rel = 'Mañana';
27205
+ else if (diff === -1)
27206
+ rel = 'Ayer';
27207
+ }
27208
+ const limit = maxVisible > 0 ? maxVisible : g.items.length;
27209
+ const pills = g.items.slice(0, limit).map((e, i) => {
27210
+ const ev = e.ev;
27211
+ return {
27212
+ key: ev.id != null ? `id:${ev.id}` : `i:${i}`,
27213
+ ev,
27214
+ time: e.seg
27215
+ ? `Día ${dayDiff(d, e.spanStart) + 1} de ${dayDiff(e.spanEnd, e.spanStart) + 1}`
27216
+ : e.allDay
27217
+ ? 'Todo el día'
27218
+ : timeLabelOf(ev, fmt),
27219
+ meta: e.seg && e.spanStart ? `${fmtDayMon(e.spanStart)}–${fmtDayMon(e.spanEnd)}` : ev.meta,
27220
+ fill: ev.fill || this.pillFill(),
27221
+ size: ev.size || pillSize,
27222
+ showIcon: ev.showIcon != null ? ev.showIcon : this.showIcon(),
27223
+ showDot: ev.showDot != null ? ev.showDot : this.showDot(),
27224
+ past: ev.past != null ? ev.past : false,
27225
+ };
27226
+ });
27227
+ return {
27228
+ key: ymd(d),
27229
+ date: d,
27230
+ num: d.getDate(),
27231
+ dow: cap(DOW_LONG[d.getDay()]),
27232
+ label: formatDayLabel ? formatDayLabel(d) : (rel ? `${rel} · ` : '') + fmtDay(d),
27233
+ total: g.items.length,
27234
+ today: sameDay(d, todayDate),
27235
+ past: diff != null && diff < 0,
27236
+ selected: sameDay(d, selDate),
27237
+ pills,
27238
+ hidden: g.items.slice(limit).map((e) => e.ev),
27239
+ };
27240
+ });
27241
+ }, /* @ts-ignore */
27242
+ ...(ngDevMode ? [{ debugName: "grupos" }] : /* istanbul ignore next */ []));
27243
+ }
27244
+ get headClickable() {
27245
+ return this.selectDay.observed;
27246
+ }
27247
+ get eventsClickable() {
27248
+ return this.selectEvent.observed;
27249
+ }
27250
+ conteo(total) {
27251
+ return total === 0 ? '—' : total === 1 ? '1 compromiso' : `${total} compromisos`;
27252
+ }
27253
+ onHeadClick(date, event) {
27254
+ if (this.headClickable)
27255
+ this.selectDay.emit({ date, event });
27256
+ }
27257
+ onHeadKeydown(date, event) {
27258
+ if (!this.headClickable)
27259
+ return;
27260
+ if (event.key === 'Enter' || event.key === ' ') {
27261
+ event.preventDefault();
27262
+ this.selectDay.emit({ date, event });
27263
+ }
27264
+ }
27265
+ onPillClick(item, event) {
27266
+ this.selectEvent.emit({ item, event });
27267
+ }
27268
+ onMoreClick(date, hidden, event) {
27269
+ this.showMore.emit({ date, hidden, event });
27270
+ }
27271
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScheduleListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27272
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ScheduleListComponent, isStandalone: true, selector: "ius-schedule-list", inputs: { events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, today: { classPropertyName: "today", publicName: "today", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, from: { classPropertyName: "from", publicName: "from", isSignal: true, isRequired: false, transformFunction: null }, to: { classPropertyName: "to", publicName: "to", isSignal: true, isRequired: false, transformFunction: null }, showEmptyDays: { classPropertyName: "showEmptyDays", publicName: "showEmptyDays", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, sortByTime: { classPropertyName: "sortByTime", publicName: "sortByTime", isSignal: true, isRequired: false, transformFunction: null }, hourFormat: { classPropertyName: "hourFormat", publicName: "hourFormat", isSignal: true, isRequired: false, transformFunction: null }, relativeLabels: { classPropertyName: "relativeLabels", publicName: "relativeLabels", isSignal: true, isRequired: false, transformFunction: null }, formatDayLabel: { classPropertyName: "formatDayLabel", publicName: "formatDayLabel", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, showRail: { classPropertyName: "showRail", publicName: "showRail", isSignal: true, isRequired: false, transformFunction: null }, stickyHeaders: { classPropertyName: "stickyHeaders", publicName: "stickyHeaders", isSignal: true, isRequired: false, transformFunction: null }, dividers: { classPropertyName: "dividers", publicName: "dividers", isSignal: true, isRequired: false, transformFunction: null }, maxVisible: { classPropertyName: "maxVisible", publicName: "maxVisible", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, pillVariant: { classPropertyName: "pillVariant", publicName: "pillVariant", isSignal: true, isRequired: false, transformFunction: null }, pillFill: { classPropertyName: "pillFill", publicName: "pillFill", isSignal: true, isRequired: false, transformFunction: null }, pillSize: { classPropertyName: "pillSize", publicName: "pillSize", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, showDot: { classPropertyName: "showDot", publicName: "showDot", isSignal: true, isRequired: false, transformFunction: null }, emptyTitle: { classPropertyName: "emptyTitle", publicName: "emptyTitle", isSignal: true, isRequired: false, transformFunction: null }, emptySubtitle: { classPropertyName: "emptySubtitle", publicName: "emptySubtitle", isSignal: true, isRequired: false, transformFunction: null }, emptyIcon: { classPropertyName: "emptyIcon", publicName: "emptyIcon", isSignal: true, isRequired: false, transformFunction: null }, emptyDayLabel: { classPropertyName: "emptyDayLabel", publicName: "emptyDayLabel", isSignal: true, isRequired: false, transformFunction: null }, moreLabel: { classPropertyName: "moreLabel", publicName: "moreLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectDay: "selectDay", selectEvent: "selectEvent", showMore: "showMore" }, host: { properties: { "attr.data-size": "size()", "attr.data-sticky": "vacio() ? null : (stickyHeaders() ? 'true' : 'false')", "attr.data-rail": "vacio() ? null : (showRail() ? 'true' : 'false')", "attr.data-scroll": "vacio() ? null : (maxHeight() != null ? 'true' : 'false')", "style.max-height": "maxHeightCss()" }, classAttribute: "ius-agenda ius-scroll" }, ngImport: i0, template: "<ng-template #pill let-p>\n @if (eventsClickable) {\n <ius-event-pill\n [variant]=\"pillVariant()\"\n [title]=\"p.ev.title\"\n [time]=\"p.time ?? undefined\"\n [category]=\"p.ev.category\"\n [hue]=\"p.ev.hue\"\n [kind]=\"p.ev.kind\"\n [icon]=\"p.ev.icon\"\n [location]=\"p.ev.location\"\n [meta]=\"p.meta\"\n [assignee]=\"p.ev.assignee\"\n [fill]=\"p.fill\"\n [size]=\"p.size\"\n [showIcon]=\"p.showIcon\"\n [showDot]=\"p.showDot\"\n [selected]=\"!!p.ev.selected\"\n [past]=\"p.past\"\n [ariaLabel]=\"p.ev.ariaLabel\"\n (clicked)=\"onPillClick(p.ev, $event)\"\n />\n } @else {\n <ius-event-pill\n [variant]=\"pillVariant()\"\n [title]=\"p.ev.title\"\n [time]=\"p.time ?? undefined\"\n [category]=\"p.ev.category\"\n [hue]=\"p.ev.hue\"\n [kind]=\"p.ev.kind\"\n [icon]=\"p.ev.icon\"\n [location]=\"p.ev.location\"\n [meta]=\"p.meta\"\n [assignee]=\"p.ev.assignee\"\n [fill]=\"p.fill\"\n [size]=\"p.size\"\n [showIcon]=\"p.showIcon\"\n [showDot]=\"p.showDot\"\n [selected]=\"!!p.ev.selected\"\n [past]=\"p.past\"\n [ariaLabel]=\"p.ev.ariaLabel\"\n />\n }\n</ng-template>\n\n@if (vacio()) {\n <div class=\"ius-agenda__void\">\n @if (emptyIcon()) {\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ emptyIcon() }}</span>\n }\n @if (emptyTitle()) {\n <div class=\"ius-agenda__void-title\">{{ emptyTitle() }}</div>\n }\n @if (emptySubtitle()) {\n <div class=\"ius-agenda__void-sub\">{{ emptySubtitle() }}</div>\n }\n </div>\n} @else {\n @for (g of grupos(); track g.key) {\n <div\n class=\"ius-agenda__group\"\n [attr.data-today]=\"g.today ? 'true' : 'false'\"\n [attr.data-past]=\"g.past ? 'true' : 'false'\"\n [attr.data-selected]=\"g.selected ? 'true' : 'false'\"\n >\n <div\n class=\"ius-agenda__head\"\n [attr.data-clickable]=\"headClickable ? 'true' : 'false'\"\n [attr.role]=\"headClickable ? 'button' : null\"\n [attr.tabindex]=\"headClickable ? 0 : null\"\n [attr.aria-current]=\"g.selected ? 'date' : null\"\n (click)=\"onHeadClick(g.date, $event)\"\n (keydown)=\"onHeadKeydown(g.date, $event)\"\n >\n <span class=\"ius-agenda__num\">{{ g.num }}</span>\n <span class=\"ius-agenda__when\">\n <span class=\"ius-agenda__dow\">{{ g.dow }}</span>\n <span class=\"ius-agenda__month\">{{ g.label }}</span>\n </span>\n @if (showCount()) {\n <span class=\"ius-agenda__count\">{{ conteo(g.total) }}</span>\n }\n </div>\n\n @if (g.total === 0) {\n <div class=\"ius-agenda__empty\">{{ emptyDayLabel() }}</div>\n } @else {\n <div class=\"ius-agenda__events\">\n @for (p of g.pills; track p.key; let first = $first) {\n @if (showDividers() && !first) {\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\n }\n <ng-container *ngTemplateOutlet=\"pill; context: { $implicit: p }\" />\n }\n @if (g.hidden.length > 0) {\n @if (showDividers()) {\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\n }\n <div class=\"ius-agenda__more\">\n <ius-text-button size=\"small\" (clicked)=\"onMoreClick(g.date, g.hidden, $event)\">\n {{ moreLabel() || '+' + g.hidden.length + ' m\u00E1s' }}\n </ius-text-button>\n </div>\n }\n </div>\n }\n </div>\n }\n}\n", styles: ["@charset \"UTF-8\";:host{display:block;box-sizing:border-box;width:100%;font-family:var(--ius-font-body);color:var(--ius-text-primary);--_ag-rail: 116px}:host([data-size=small]){--_ag-rail: 100px;--_ag-num: 22px;--_ag-gap: var(--ius-space-xs);--_ag-pad: 12px}:host([data-size=medium]){--_ag-rail: 116px;--_ag-num: 26px;--_ag-gap: var(--ius-space-xs);--_ag-pad: 16px}:host([data-size=large]){--_ag-rail: 132px;--_ag-num: 32px;--_ag-gap: var(--ius-space-xs);--_ag-pad: 20px}:host([data-scroll=true]){overflow:auto;border-top:1px solid var(--ius-stroke);border-bottom:1px solid var(--ius-stroke);padding-bottom:var(--_ag-gap)}.ius-agenda__group{position:relative}.ius-agenda__group+.ius-agenda__group{margin-top:var(--_ag-gap)}.ius-agenda__head{-webkit-user-select:none;user-select:none;display:flex;align-items:baseline;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--_ag-pad);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card, var(--ius-neutral-white))}:host([data-sticky=true]) .ius-agenda__head{position:sticky;top:0;z-index:2}.ius-agenda__head[data-clickable=true]{cursor:pointer;border-radius:var(--ius-radius-sm);transition:background var(--ius-dur-fast, .12s) var(--ius-ease, ease)}.ius-agenda__head[data-clickable=true]:hover{background:var(--ius-neutral-2)}.ius-agenda__head[data-clickable=true]:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-agenda__num{font-family:var(--ius-font-display);font-weight:700;font-size:var(--_ag-num, 26px);line-height:1;font-variant-numeric:tabular-nums;color:var(--ius-text-primary);min-width:1.4ch;text-align:right}.ius-agenda__group[data-today=true] .ius-agenda__num{color:var(--ius-primary-900)}.ius-agenda__group[data-past=true] .ius-agenda__num{color:var(--ius-text-tertiary)}.ius-agenda__when{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1 1 auto}.ius-agenda__dow{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);font-weight:var(--ius-fw-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-agenda__rel{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1;color:var(--ius-primary-900);background:var(--ius-info-100, var(--ius-neutral-2));border-radius:var(--ius-radius-pill);padding:var(--ius-space-xxs) var(--ius-space-xs)}.ius-agenda__group[data-past=true] .ius-agenda__rel{color:var(--ius-text-tertiary);background:var(--ius-neutral-2)}.ius-agenda__month{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-base);color:var(--ius-text-secondary);font-variant-numeric:tabular-nums}.ius-agenda__count{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);line-height:1;color:var(--ius-text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;align-self:center}.ius-agenda__events{display:flex;flex-direction:column;gap:var(--_ag-gap, var(--ius-space-xs));padding:var(--_ag-pad) var(--_ag-pad) calc(var(--_ag-pad) + var(--ius-space-xxs)) var(--_ag-rail)}:host([data-rail=false]) .ius-agenda__events{padding-left:var(--_ag-pad)}.ius-agenda__group[data-past=true] .ius-agenda__events{opacity:.62}.ius-agenda__more{padding-top:var(--ius-space-xxs)}.ius-agenda__divider{height:1px;background:var(--ius-stroke);margin:calc(var(--ius-space-xxs) * -1) 0}.ius-agenda__empty{padding:var(--ius-space-xs) var(--_ag-pad) var(--ius-space-xs) var(--_ag-rail);font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}:host([data-rail=false]) .ius-agenda__empty{padding-left:var(--_ag-pad)}.ius-agenda__void{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ius-space-xs);padding:var(--ius-space-3xl) var(--ius-space-lg);text-align:center;color:var(--ius-text-tertiary)}.ius-agenda__void .ius-icon{font-size:var(--ius-icon-xl);color:var(--ius-text-disabled)}.ius-agenda__void-title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-lg);color:var(--ius-text-secondary)}.ius-agenda__void-sub{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: EventPillComponent, selector: "ius-event-pill", inputs: ["title", "time", "endTime", "category", "hue", "kind", "icon", "customHues", "customIcons", "variant", "fill", "size", "location", "meta", "assignee", "showAssignee", "showIcon", "showDot", "titleLines", "selected", "past", "hoverable", "ariaLabel"], outputs: ["clicked"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27273
+ }
27274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScheduleListComponent, decorators: [{
27275
+ type: Component,
27276
+ args: [{ selector: 'ius-schedule-list', standalone: true, imports: [NgTemplateOutlet, EventPillComponent, TextButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
27277
+ class: 'ius-agenda ius-scroll',
27278
+ '[attr.data-size]': 'size()',
27279
+ '[attr.data-sticky]': "vacio() ? null : (stickyHeaders() ? 'true' : 'false')",
27280
+ '[attr.data-rail]': "vacio() ? null : (showRail() ? 'true' : 'false')",
27281
+ '[attr.data-scroll]': "vacio() ? null : (maxHeight() != null ? 'true' : 'false')",
27282
+ '[style.max-height]': 'maxHeightCss()',
27283
+ }, template: "<ng-template #pill let-p>\n @if (eventsClickable) {\n <ius-event-pill\n [variant]=\"pillVariant()\"\n [title]=\"p.ev.title\"\n [time]=\"p.time ?? undefined\"\n [category]=\"p.ev.category\"\n [hue]=\"p.ev.hue\"\n [kind]=\"p.ev.kind\"\n [icon]=\"p.ev.icon\"\n [location]=\"p.ev.location\"\n [meta]=\"p.meta\"\n [assignee]=\"p.ev.assignee\"\n [fill]=\"p.fill\"\n [size]=\"p.size\"\n [showIcon]=\"p.showIcon\"\n [showDot]=\"p.showDot\"\n [selected]=\"!!p.ev.selected\"\n [past]=\"p.past\"\n [ariaLabel]=\"p.ev.ariaLabel\"\n (clicked)=\"onPillClick(p.ev, $event)\"\n />\n } @else {\n <ius-event-pill\n [variant]=\"pillVariant()\"\n [title]=\"p.ev.title\"\n [time]=\"p.time ?? undefined\"\n [category]=\"p.ev.category\"\n [hue]=\"p.ev.hue\"\n [kind]=\"p.ev.kind\"\n [icon]=\"p.ev.icon\"\n [location]=\"p.ev.location\"\n [meta]=\"p.meta\"\n [assignee]=\"p.ev.assignee\"\n [fill]=\"p.fill\"\n [size]=\"p.size\"\n [showIcon]=\"p.showIcon\"\n [showDot]=\"p.showDot\"\n [selected]=\"!!p.ev.selected\"\n [past]=\"p.past\"\n [ariaLabel]=\"p.ev.ariaLabel\"\n />\n }\n</ng-template>\n\n@if (vacio()) {\n <div class=\"ius-agenda__void\">\n @if (emptyIcon()) {\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ emptyIcon() }}</span>\n }\n @if (emptyTitle()) {\n <div class=\"ius-agenda__void-title\">{{ emptyTitle() }}</div>\n }\n @if (emptySubtitle()) {\n <div class=\"ius-agenda__void-sub\">{{ emptySubtitle() }}</div>\n }\n </div>\n} @else {\n @for (g of grupos(); track g.key) {\n <div\n class=\"ius-agenda__group\"\n [attr.data-today]=\"g.today ? 'true' : 'false'\"\n [attr.data-past]=\"g.past ? 'true' : 'false'\"\n [attr.data-selected]=\"g.selected ? 'true' : 'false'\"\n >\n <div\n class=\"ius-agenda__head\"\n [attr.data-clickable]=\"headClickable ? 'true' : 'false'\"\n [attr.role]=\"headClickable ? 'button' : null\"\n [attr.tabindex]=\"headClickable ? 0 : null\"\n [attr.aria-current]=\"g.selected ? 'date' : null\"\n (click)=\"onHeadClick(g.date, $event)\"\n (keydown)=\"onHeadKeydown(g.date, $event)\"\n >\n <span class=\"ius-agenda__num\">{{ g.num }}</span>\n <span class=\"ius-agenda__when\">\n <span class=\"ius-agenda__dow\">{{ g.dow }}</span>\n <span class=\"ius-agenda__month\">{{ g.label }}</span>\n </span>\n @if (showCount()) {\n <span class=\"ius-agenda__count\">{{ conteo(g.total) }}</span>\n }\n </div>\n\n @if (g.total === 0) {\n <div class=\"ius-agenda__empty\">{{ emptyDayLabel() }}</div>\n } @else {\n <div class=\"ius-agenda__events\">\n @for (p of g.pills; track p.key; let first = $first) {\n @if (showDividers() && !first) {\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\n }\n <ng-container *ngTemplateOutlet=\"pill; context: { $implicit: p }\" />\n }\n @if (g.hidden.length > 0) {\n @if (showDividers()) {\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\n }\n <div class=\"ius-agenda__more\">\n <ius-text-button size=\"small\" (clicked)=\"onMoreClick(g.date, g.hidden, $event)\">\n {{ moreLabel() || '+' + g.hidden.length + ' m\u00E1s' }}\n </ius-text-button>\n </div>\n }\n </div>\n }\n </div>\n }\n}\n", styles: ["@charset \"UTF-8\";:host{display:block;box-sizing:border-box;width:100%;font-family:var(--ius-font-body);color:var(--ius-text-primary);--_ag-rail: 116px}:host([data-size=small]){--_ag-rail: 100px;--_ag-num: 22px;--_ag-gap: var(--ius-space-xs);--_ag-pad: 12px}:host([data-size=medium]){--_ag-rail: 116px;--_ag-num: 26px;--_ag-gap: var(--ius-space-xs);--_ag-pad: 16px}:host([data-size=large]){--_ag-rail: 132px;--_ag-num: 32px;--_ag-gap: var(--ius-space-xs);--_ag-pad: 20px}:host([data-scroll=true]){overflow:auto;border-top:1px solid var(--ius-stroke);border-bottom:1px solid var(--ius-stroke);padding-bottom:var(--_ag-gap)}.ius-agenda__group{position:relative}.ius-agenda__group+.ius-agenda__group{margin-top:var(--_ag-gap)}.ius-agenda__head{-webkit-user-select:none;user-select:none;display:flex;align-items:baseline;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--_ag-pad);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card, var(--ius-neutral-white))}:host([data-sticky=true]) .ius-agenda__head{position:sticky;top:0;z-index:2}.ius-agenda__head[data-clickable=true]{cursor:pointer;border-radius:var(--ius-radius-sm);transition:background var(--ius-dur-fast, .12s) var(--ius-ease, ease)}.ius-agenda__head[data-clickable=true]:hover{background:var(--ius-neutral-2)}.ius-agenda__head[data-clickable=true]:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-agenda__num{font-family:var(--ius-font-display);font-weight:700;font-size:var(--_ag-num, 26px);line-height:1;font-variant-numeric:tabular-nums;color:var(--ius-text-primary);min-width:1.4ch;text-align:right}.ius-agenda__group[data-today=true] .ius-agenda__num{color:var(--ius-primary-900)}.ius-agenda__group[data-past=true] .ius-agenda__num{color:var(--ius-text-tertiary)}.ius-agenda__when{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1 1 auto}.ius-agenda__dow{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);font-weight:var(--ius-fw-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-agenda__rel{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1;color:var(--ius-primary-900);background:var(--ius-info-100, var(--ius-neutral-2));border-radius:var(--ius-radius-pill);padding:var(--ius-space-xxs) var(--ius-space-xs)}.ius-agenda__group[data-past=true] .ius-agenda__rel{color:var(--ius-text-tertiary);background:var(--ius-neutral-2)}.ius-agenda__month{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-base);color:var(--ius-text-secondary);font-variant-numeric:tabular-nums}.ius-agenda__count{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);line-height:1;color:var(--ius-text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;align-self:center}.ius-agenda__events{display:flex;flex-direction:column;gap:var(--_ag-gap, var(--ius-space-xs));padding:var(--_ag-pad) var(--_ag-pad) calc(var(--_ag-pad) + var(--ius-space-xxs)) var(--_ag-rail)}:host([data-rail=false]) .ius-agenda__events{padding-left:var(--_ag-pad)}.ius-agenda__group[data-past=true] .ius-agenda__events{opacity:.62}.ius-agenda__more{padding-top:var(--ius-space-xxs)}.ius-agenda__divider{height:1px;background:var(--ius-stroke);margin:calc(var(--ius-space-xxs) * -1) 0}.ius-agenda__empty{padding:var(--ius-space-xs) var(--_ag-pad) var(--ius-space-xs) var(--_ag-rail);font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}:host([data-rail=false]) .ius-agenda__empty{padding-left:var(--_ag-pad)}.ius-agenda__void{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ius-space-xs);padding:var(--ius-space-3xl) var(--ius-space-lg);text-align:center;color:var(--ius-text-tertiary)}.ius-agenda__void .ius-icon{font-size:var(--ius-icon-xl);color:var(--ius-text-disabled)}.ius-agenda__void-title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-lg);color:var(--ius-text-secondary)}.ius-agenda__void-sub{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm)}\n"] }]
27284
+ }], propDecorators: { events: [{ type: i0.Input, args: [{ isSignal: true, alias: "events", required: false }] }], today: [{ type: i0.Input, args: [{ isSignal: true, alias: "today", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], from: [{ type: i0.Input, args: [{ isSignal: true, alias: "from", required: false }] }], to: [{ type: i0.Input, args: [{ isSignal: true, alias: "to", required: false }] }], showEmptyDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEmptyDays", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], sortByTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortByTime", required: false }] }], hourFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourFormat", required: false }] }], relativeLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "relativeLabels", required: false }] }], formatDayLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatDayLabel", required: false }] }], showCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCount", required: false }] }], showRail: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRail", required: false }] }], stickyHeaders: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyHeaders", required: false }] }], dividers: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividers", required: false }] }], maxVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisible", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], pillVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "pillVariant", required: false }] }], pillFill: [{ type: i0.Input, args: [{ isSignal: true, alias: "pillFill", required: false }] }], pillSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pillSize", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], showDot: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDot", required: false }] }], emptyTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyTitle", required: false }] }], emptySubtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptySubtitle", required: false }] }], emptyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyIcon", required: false }] }], emptyDayLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyDayLabel", required: false }] }], moreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreLabel", required: false }] }], selectDay: [{
27285
+ type: Output
27286
+ }], selectEvent: [{
27287
+ type: Output
27288
+ }], showMore: [{
27289
+ type: Output
27290
+ }] } });
27291
+
26972
27292
  /*
26973
27293
  * Public API de @litigiovirtual/ius-design-components v2.
26974
27294
  * La librería se está reconstruyendo componente a componente desde las
@@ -26980,5 +27300,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
26980
27300
  * Generated bundle index. Do not edit.
26981
27301
  */
26982
27302
 
26983
- export { ACTUACION_CATALOG, ACTUACION_FUENTES, AccordionComponent, AccountItemComponent, AlertComponent, AnswerFeedbackComponent, AppLayoutComponent, AutocompleteComponent, AvatarComponent, AvatarStackComponent, BarChartComponent, BorderBeamComponent, BreadcrumbComponent, ButtonComponent, CATEGORIES, CATEGORY_DEF, CATEGORY_HUE, CHART_CATEGORICAL_TONES, CHART_SEMANTIC_TONES, CHART_TONES, CLASE_DEF, CalendarComponent, CaptchaFieldComponent, CardComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DateFilterComponent, DatePickerComponent, DescriptionListComponent, DetailSidePanelComponent, DividerComponent, DocumentViewerComponent, DonutChartComponent, DrawerComponent, DropdownComponent, EVENT_KINDS, EVENT_KIND_ICON, EXT_KIND, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, EntityNavigatorComponent, EntityRowComponent, EventPillComponent, FUENTES, FUENTE_DEF, FUENTE_FALLBACK, FileItemComponent, FileTypeIconComponent, FileUploadComponent, FlexComponent, FooterStatusComponent, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_DOCUMENT_VIEWER_ZOOM_STEPS, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDocViewerActionsDirective, IusDocViewerAsideDirective, IusDocViewerBodyDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFooterStatusActionDirective, IusFormFooterDirective, IusInsightActionsDirective, IusKanbanCardBodyDirective, IusKanbanCardLeadingDirective, IusKanbanCardTrailingDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, IusNavRailBrandDirective, IusPageHeaderActionsDirective, IusPageHeaderBreadcrumbDirective, IusPageHeaderOverlineDirective, IusPageHeaderSubtitleDirective, IusPageHeaderTitleDirective, IusPageHeaderToolbarDirective, IusPersonItemNameDirective, IusPersonItemTrailingDirective, IusSectionTitleActionDirective, IusSettingsNavFooterDirective, IusSettingsNavHeaderDirective, IusStageDetailFooterDirective, IusStageDetailHeaderActionsDirective, IusStageDetailMetaDirective, IusStatCaptionDirective, IusStatDeltaDirective, IusStatDeltaLabelDirective, IusStatLabelDirective, IusStatSparklineDirective, IusTagPrefixDirective, IusTagSuffixDirective, IusToastActionDirective, IusUserMenuFooterDirective, KINDS, KIND_DEF, KIND_FALLBACK, KanbanBoardComponent, KanbanCardComponent, KanbanColumnComponent, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavRailComponent, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PaginationComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RadioComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, SelectNumberComponent, SelectionFieldComponent, SettingsNavComponent, ShowMoreComponent, SkeletonComponent, SparklineComponent, SplitterComponent, StageDetailDrawerComponent, StatComponent, StatGroupComponent, StatusChipComponent, StatusStateComponent, StepperComponent, SwitchComponent, TableComponent, TabsComponent, TagComponent, TextAreaComponent, TextButtonComponent, TextComponent, TextFieldComponent, TimePanelComponent, TimelineComponent, ToastComponent, ToastService, ToastViewportComponent, TooltipComponent, UserMenuComponent, WizardComponent, WizardController, WizardNavComponent, categoryColors, categoryOptions, chartAxisTicks, chartFormatValue, chartLinearPath, chartNiceNum, chartPath, chartPrefersReducedMotion, chartSmoothPath, chartToneAt, chartToneVar, createWizard, eventKindOptions, extOf, formatBytes, formatDate, formatTime, fuenteColors, fuenteOptions, iusSegColor, kindHue, kindIcon, kindLabel, kindMeta, kindOptions, naturalezaMeta, naturalezaOptions, normalizeTipo, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveActuacion, resolveCategoryHue, resolveEventIcon, resolveFuente, resolveIllustration, resolveKind, resolveStatus, resolveViewKind, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
27303
+ export { ACTUACION_CATALOG, ACTUACION_FUENTES, AccordionComponent, AccountItemComponent, AlertComponent, AnswerFeedbackComponent, AppLayoutComponent, AutocompleteComponent, AvatarComponent, AvatarStackComponent, BarChartComponent, BorderBeamComponent, BreadcrumbComponent, ButtonComponent, CATEGORIES, CATEGORY_DEF, CATEGORY_HUE, CHART_CATEGORICAL_TONES, CHART_SEMANTIC_TONES, CHART_TONES, CLASE_DEF, CalendarComponent, CaptchaFieldComponent, CardComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DateFilterComponent, DatePickerComponent, DescriptionListComponent, DetailSidePanelComponent, DividerComponent, DocumentViewerComponent, DonutChartComponent, DrawerComponent, DropdownComponent, EVENT_KINDS, EVENT_KIND_ICON, EXT_KIND, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, EntityNavigatorComponent, EntityRowComponent, EventPillComponent, FUENTES, FUENTE_DEF, FUENTE_FALLBACK, FileItemComponent, FileTypeIconComponent, FileUploadComponent, FlexComponent, FooterStatusComponent, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_DOCUMENT_VIEWER_ZOOM_STEPS, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDocViewerActionsDirective, IusDocViewerAsideDirective, IusDocViewerBodyDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFooterStatusActionDirective, IusFormFooterDirective, IusInsightActionsDirective, IusKanbanCardBodyDirective, IusKanbanCardLeadingDirective, IusKanbanCardTrailingDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, IusNavRailBrandDirective, IusPageHeaderActionsDirective, IusPageHeaderBreadcrumbDirective, IusPageHeaderOverlineDirective, IusPageHeaderSubtitleDirective, IusPageHeaderTitleDirective, IusPageHeaderToolbarDirective, IusPersonItemNameDirective, IusPersonItemTrailingDirective, IusSectionTitleActionDirective, IusSettingsNavFooterDirective, IusSettingsNavHeaderDirective, IusStageDetailFooterDirective, IusStageDetailHeaderActionsDirective, IusStageDetailMetaDirective, IusStatCaptionDirective, IusStatDeltaDirective, IusStatDeltaLabelDirective, IusStatLabelDirective, IusStatSparklineDirective, IusTagPrefixDirective, IusTagSuffixDirective, IusToastActionDirective, IusUserMenuFooterDirective, KINDS, KIND_DEF, KIND_FALLBACK, KanbanBoardComponent, KanbanCardComponent, KanbanColumnComponent, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavRailComponent, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PaginationComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RadioComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScheduleListComponent, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, SelectNumberComponent, SelectionFieldComponent, SettingsNavComponent, ShowMoreComponent, SkeletonComponent, SparklineComponent, SplitterComponent, StageDetailDrawerComponent, StatComponent, StatGroupComponent, StatusChipComponent, StatusStateComponent, StepperComponent, SwitchComponent, TableComponent, TabsComponent, TagComponent, TextAreaComponent, TextButtonComponent, TextComponent, TextFieldComponent, TimePanelComponent, TimelineComponent, ToastComponent, ToastService, ToastViewportComponent, TooltipComponent, UserMenuComponent, WizardComponent, WizardController, WizardNavComponent, categoryColors, categoryOptions, chartAxisTicks, chartFormatValue, chartLinearPath, chartNiceNum, chartPath, chartPrefersReducedMotion, chartSmoothPath, chartToneAt, chartToneVar, createWizard, eventKindOptions, extOf, formatBytes, formatDate, formatTime, fuenteColors, fuenteOptions, iusSegColor, kindHue, kindIcon, kindLabel, kindMeta, kindOptions, naturalezaMeta, naturalezaOptions, normalizeTipo, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveActuacion, resolveCategoryHue, resolveEventIcon, resolveFuente, resolveIllustration, resolveKind, resolveStatus, resolveViewKind, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
26984
27304
  //# sourceMappingURL=litigiovirtual-ius-design-components.mjs.map