@litigiovirtual/ius-design-components 2.5.0 → 2.5.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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, signal, booleanAttribute, Output, Input, ChangeDetectionStrategy, Component, inject, NgZone, ElementRef, numberAttribute, ViewChild, ViewContainerRef, forwardRef, computed, viewChildren, input, output, effect, DestroyRef, Directive, contentChild, isDevMode, TemplateRef, ContentChild, linkedSignal, PLATFORM_ID, viewChild, HostListener, untracked, afterRenderEffect, Injector, afterNextRender, isSignal, Injectable, contentChildren, ViewChildren } from '@angular/core';
2
+ import { EventEmitter, signal, booleanAttribute, Output, Input, ChangeDetectionStrategy, Component, inject, NgZone, ElementRef, numberAttribute, ViewChild, ViewContainerRef, forwardRef, computed, viewChildren, input, output, effect, DestroyRef, Directive, contentChild, isDevMode, TemplateRef, viewChild, afterNextRender, ContentChild, linkedSignal, PLATFORM_ID, HostListener, untracked, afterRenderEffect, Injector, isSignal, Injectable, contentChildren, ViewChildren } from '@angular/core';
3
3
  import { Overlay } from '@angular/cdk/overlay';
4
4
  import { TemplatePortal } from '@angular/cdk/portal';
5
5
  import { Subscription, Subject, timer, of, from } from 'rxjs';
@@ -3448,6 +3448,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3448
3448
  type: Directive,
3449
3449
  args: [{ selector: '[iusDropdownTrigger]', standalone: true }]
3450
3450
  }] });
3451
+ /** Lo que el foco ya alcanza: un disparador propio que lo contiene se monta tal cual (golden `FOCUSABLE`). */
3452
+ const FOCUSABLE = 'button, a[href], input, select, textarea, [tabindex]:not([tabindex="-1"]), [role="button"]';
3453
+ /** Primera opción que se puede activar del menú abierto. */
3454
+ const FIRST_ITEM = '[role="menuitem"]:not([disabled]):not([aria-disabled="true"])';
3451
3455
  /**
3452
3456
  * Dropdown — Ius Design v2 (familia overlays).
3453
3457
  *
@@ -3459,7 +3463,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3459
3463
  * El disparador por defecto es un botón ghost texto+chevron (el chevron gira al
3460
3464
  * abrir); `variant="outline"` replica el contenedor del botón de QueryBuilder
3461
3465
  * (mismo borde/radio/padding/altura) para encajar en barras y SegmentGroup. Con
3462
- * `[iusDropdownTrigger]` se proyecta un disparador propio.
3466
+ * `[iusDropdownTrigger]` se proyecta un disparador propio. Si ese disparador no
3467
+ * contiene nada enfocable (StatusChip, Tag), se envuelve en un
3468
+ * `<button class="ius-dropdown__wrap">` con `aria-haspopup="menu"`, `aria-expanded`
3469
+ * y el foco del sistema: Enter/Espacio abren, Flecha abajo abre y enfoca la primera
3470
+ * opción, y Esc desde el menú lo cierra y devuelve el foco al disparador. Uno ya
3471
+ * interactivo (Button, IconButton) se monta tal cual, sin doble botón.
3463
3472
  *
3464
3473
  * No es campo de formulario — eso es **Select**; para una sola acción →
3465
3474
  * Button/IconButton. Fuente de verdad: `Dropdown.jsx` + `Dropdown.d.ts` +
@@ -3498,7 +3507,7 @@ class DropdownComponent {
3498
3507
  ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
3499
3508
  /** Estado inicial del modo no controlado. */
3500
3509
  this.defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3501
- /** Etiqueta accesible del disparador por defecto. */
3510
+ /** Etiqueta accesible del disparador por defecto o del botón que envuelve a uno propio no interactivo. */
3502
3511
  this.ariaLabel = input(/* @ts-ignore */
3503
3512
  ...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
3504
3513
  /** Modo `selectable` — espejo de `onChange`. */
@@ -3507,6 +3516,18 @@ class DropdownComponent {
3507
3516
  this.openChange = output();
3508
3517
  this.customTrigger = contentChild(IusDropdownTriggerDirective, /* @ts-ignore */
3509
3518
  ...(ngDevMode ? [{ debugName: "customTrigger" }] : /* istanbul ignore next */ []));
3519
+ this.customTriggerEl = contentChild(IusDropdownTriggerDirective, { ...(ngDevMode ? { debugName: "customTriggerEl" } : /* istanbul ignore next */ {}), read: ElementRef });
3520
+ /**
3521
+ * El disparador propio no contiene nada enfocable → va dentro de `.ius-dropdown__wrap`.
3522
+ * Se decide tras el primer render (el golden lo hace en `useLayoutEffect`): antes, el
3523
+ * componente proyectado aún no ha pintado su DOM interno.
3524
+ */
3525
+ this.wrapTrigger = signal(false, /* @ts-ignore */
3526
+ ...(ngDevMode ? [{ debugName: "wrapTrigger" }] : /* istanbul ignore next */ []));
3527
+ this.wrapButton = viewChild('wrapButton', /* @ts-ignore */
3528
+ ...(ngDevMode ? [{ debugName: "wrapButton" }] : /* istanbul ignore next */ []));
3529
+ this.panel = viewChild('panel', /* @ts-ignore */
3530
+ ...(ngDevMode ? [{ debugName: "panel" }] : /* istanbul ignore next */ []));
3510
3531
  /** `null` = el usuario todavía no ha abierto/cerrado → manda `defaultOpen`. */
3511
3532
  this.internalOpen = signal(null, /* @ts-ignore */
3512
3533
  ...(ngDevMode ? [{ debugName: "internalOpen" }] : /* istanbul ignore next */ []));
@@ -3531,6 +3552,11 @@ class DropdownComponent {
3531
3552
  /** El encabezado del menú solo aplica en modo selección (como el golden). */
3532
3553
  this.menuLabel = computed(() => this.selectable() ? this.label() : undefined, /* @ts-ignore */
3533
3554
  ...(ngDevMode ? [{ debugName: "menuLabel" }] : /* istanbul ignore next */ []));
3555
+ afterNextRender(() => {
3556
+ const el = this.customTriggerEl()?.nativeElement;
3557
+ if (el && !el.matches(FOCUSABLE) && !el.querySelector(FOCUSABLE))
3558
+ this.wrapTrigger.set(true);
3559
+ });
3534
3560
  }
3535
3561
  onOpenChange(open) {
3536
3562
  if (this.open() === undefined)
@@ -3545,13 +3571,31 @@ class DropdownComponent {
3545
3571
  if (this.isOpen())
3546
3572
  this.onOpenChange(false);
3547
3573
  }
3574
+ /** Flecha abajo sobre el disparador envuelto: abre (si hace falta) y enfoca la primera opción. */
3575
+ onWrapKeydown(event) {
3576
+ if (event.key !== 'ArrowDown')
3577
+ return;
3578
+ event.preventDefault();
3579
+ if (!this.isOpen())
3580
+ this.onOpenChange(true);
3581
+ requestAnimationFrame(() => this.panel()?.nativeElement.querySelector(FIRST_ITEM)?.focus());
3582
+ }
3583
+ /**
3584
+ * Esc desde el menú: el Popover lo cierra; aquí el foco vuelve al disparador envuelto.
3585
+ * EXTENSIÓN del port: el golden no lo hace; lo pide F8 · HU-3 (verificado en su DC).
3586
+ */
3587
+ onPanelEscape() {
3588
+ if (!this.wrapTrigger())
3589
+ return;
3590
+ requestAnimationFrame(() => this.wrapButton()?.nativeElement.focus());
3591
+ }
3548
3592
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3549
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: DropdownComponent, isStandalone: true, selector: "ius-dropdown", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerIcon: { classPropertyName: "triggerIcon", publicName: "triggerIcon", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", openChange: "openChange" }, host: { classAttribute: "ius-dropdown" }, queries: [{ propertyName: "customTrigger", first: true, predicate: IusDropdownTriggerDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<ius-popover\r\n [placement]=\"placement()\"\r\n trigger=\"click\"\r\n [showArrow]=\"false\"\r\n [open]=\"isOpen()\"\r\n [dismissable]=\"true\"\r\n panelClass=\"ius-dropdown-pop\"\r\n (openChange)=\"onOpenChange($event)\"\r\n>\r\n <!-- Disparador: propio proyectado \u203A ghost/outline texto+chevron por defecto -->\r\n @if (customTrigger()) {\r\n <ng-content select=\"[iusDropdownTrigger]\" />\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"ius-dropdown__trigger\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.data-tone]=\"tone() !== 'primary' ? tone() : null\"\r\n [attr.data-variant]=\"variant() !== 'ghost' ? variant() : null\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n >\r\n @if (triggerIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ triggerIcon() }}</span>\r\n }\r\n {{ triggerText() }}\r\n <span translate=\"no\" class=\"ius-icon ius-dropdown__chev\">expand_more</span>\r\n </button>\r\n }\r\n\r\n <!-- Panel: la superficie Menu (el Popover solo la ancla) -->\r\n <div iusPopoverContent>\r\n <ius-menu\r\n [items]=\"items()\"\r\n [selectable]=\"selectable()\"\r\n [value]=\"value()\"\r\n [label]=\"menuLabel()\"\r\n [ariaLabel]=\"ariaLabel()\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (itemClick)=\"onItemClick()\"\r\n />\r\n </div>\r\n</ius-popover>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}.ius-dropdown__trigger{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-semibold) var(--ius-fs-sm)/1.2 var(--ius-font-body);color:var(--ius-primary-700);padding:var(--ius-space-xxs) var(--ius-space-xs);border-radius:var(--ius-radius-sm);white-space:nowrap;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger:hover{background:var(--ius-neutral-2)}.ius-dropdown__trigger[data-tone=neutral]{color:var(--ius-text-secondary)}.ius-dropdown__trigger[data-tone=neutral]:hover,.ius-dropdown__trigger[data-tone=neutral][data-open=true]{color:var(--ius-text-primary)}.ius-dropdown__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-dropdown__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-dropdown__trigger .ius-dropdown__chev{transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger[data-open=true] .ius-dropdown__chev{transform:rotate(180deg)}.ius-dropdown__trigger[data-variant=outline]{border:1px solid var(--ius-stroke);background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);gap:var(--ius-space-xs);font:var(--ius-fw-regular, 400) var(--ius-fs-base)/1 var(--ius-font-body)}.ius-dropdown__trigger[data-variant=outline]:hover{background:var(--ius-neutral-white);border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-dropdown__trigger[data-variant=outline][data-open=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: MenuComponent, selector: "ius-menu", inputs: ["items", "selectable", "value", "label", "ariaLabel"], outputs: ["valueChange", "itemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3593
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: DropdownComponent, isStandalone: true, selector: "ius-dropdown", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerIcon: { classPropertyName: "triggerIcon", publicName: "triggerIcon", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", openChange: "openChange" }, host: { classAttribute: "ius-dropdown" }, queries: [{ propertyName: "customTrigger", first: true, predicate: IusDropdownTriggerDirective, descendants: true, isSignal: true }, { propertyName: "customTriggerEl", first: true, predicate: IusDropdownTriggerDirective, descendants: true, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "wrapButton", first: true, predicate: ["wrapButton"], descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], ngImport: i0, template: "<ius-popover\r\n [placement]=\"placement()\"\r\n trigger=\"click\"\r\n [showArrow]=\"false\"\r\n [open]=\"isOpen()\"\r\n [dismissable]=\"true\"\r\n panelClass=\"ius-dropdown-pop\"\r\n (openChange)=\"onOpenChange($event)\"\r\n>\r\n <!-- Disparador: propio proyectado \u203A ghost/outline texto+chevron por defecto -->\r\n @if (customTrigger()) {\r\n <!-- Propio NO interactivo (StatusChip, Tag): dentro de un button accesible, como el golden -->\r\n @if (wrapTrigger()) {\r\n <button\r\n #wrapButton\r\n type=\"button\"\r\n class=\"ius-dropdown__wrap\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n (keydown)=\"onWrapKeydown($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"customTriggerTpl\" />\r\n </button>\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"customTriggerTpl\" />\r\n }\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"ius-dropdown__trigger\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.data-tone]=\"tone() !== 'primary' ? tone() : null\"\r\n [attr.data-variant]=\"variant() !== 'ghost' ? variant() : null\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n >\r\n @if (triggerIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ triggerIcon() }}</span>\r\n }\r\n {{ triggerText() }}\r\n <span translate=\"no\" class=\"ius-icon ius-dropdown__chev\">expand_more</span>\r\n </button>\r\n }\r\n\r\n <!-- Panel: la superficie Menu (el Popover solo la ancla) -->\r\n <div iusPopoverContent #panel (keydown.escape)=\"onPanelEscape()\">\r\n <ius-menu\r\n [items]=\"items()\"\r\n [selectable]=\"selectable()\"\r\n [value]=\"value()\"\r\n [label]=\"menuLabel()\"\r\n [ariaLabel]=\"ariaLabel()\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (itemClick)=\"onItemClick()\"\r\n />\r\n </div>\r\n</ius-popover>\r\n\r\n<!-- El disparador propio se proyecta una sola vez; las dos ramas de arriba lo montan desde aqu\u00ED. -->\r\n<ng-template #customTriggerTpl><ng-content select=\"[iusDropdownTrigger]\" /></ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}.ius-dropdown__trigger{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-semibold) var(--ius-fs-sm)/1.2 var(--ius-font-body);color:var(--ius-primary-700);padding:var(--ius-space-xxs) var(--ius-space-xs);border-radius:var(--ius-radius-sm);white-space:nowrap;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger:hover{background:var(--ius-neutral-2)}.ius-dropdown__trigger[data-tone=neutral]{color:var(--ius-text-secondary)}.ius-dropdown__trigger[data-tone=neutral]:hover,.ius-dropdown__trigger[data-tone=neutral][data-open=true]{color:var(--ius-text-primary)}.ius-dropdown__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-dropdown__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-dropdown__trigger .ius-dropdown__chev{transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger[data-open=true] .ius-dropdown__chev{transform:rotate(180deg)}.ius-dropdown__trigger[data-variant=outline]{border:1px solid var(--ius-stroke);background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);gap:var(--ius-space-xs);font:var(--ius-fw-regular, 400) var(--ius-fs-base)/1 var(--ius-font-body)}.ius-dropdown__trigger[data-variant=outline]:hover{background:var(--ius-neutral-white);border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-dropdown__trigger[data-variant=outline][data-open=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-dropdown__wrap{appearance:none;border:0;background:transparent;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;cursor:pointer;display:inline-flex;align-items:center;border-radius:var(--ius-radius-pill)}.ius-dropdown__wrap:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: MenuComponent, selector: "ius-menu", inputs: ["items", "selectable", "value", "label", "ariaLabel"], outputs: ["valueChange", "itemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3550
3594
  }
3551
3595
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: DropdownComponent, decorators: [{
3552
3596
  type: Component,
3553
- args: [{ selector: 'ius-dropdown', standalone: true, imports: [PopoverComponent, MenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'ius-dropdown' }, template: "<ius-popover\r\n [placement]=\"placement()\"\r\n trigger=\"click\"\r\n [showArrow]=\"false\"\r\n [open]=\"isOpen()\"\r\n [dismissable]=\"true\"\r\n panelClass=\"ius-dropdown-pop\"\r\n (openChange)=\"onOpenChange($event)\"\r\n>\r\n <!-- Disparador: propio proyectado \u203A ghost/outline texto+chevron por defecto -->\r\n @if (customTrigger()) {\r\n <ng-content select=\"[iusDropdownTrigger]\" />\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"ius-dropdown__trigger\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.data-tone]=\"tone() !== 'primary' ? tone() : null\"\r\n [attr.data-variant]=\"variant() !== 'ghost' ? variant() : null\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n >\r\n @if (triggerIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ triggerIcon() }}</span>\r\n }\r\n {{ triggerText() }}\r\n <span translate=\"no\" class=\"ius-icon ius-dropdown__chev\">expand_more</span>\r\n </button>\r\n }\r\n\r\n <!-- Panel: la superficie Menu (el Popover solo la ancla) -->\r\n <div iusPopoverContent>\r\n <ius-menu\r\n [items]=\"items()\"\r\n [selectable]=\"selectable()\"\r\n [value]=\"value()\"\r\n [label]=\"menuLabel()\"\r\n [ariaLabel]=\"ariaLabel()\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (itemClick)=\"onItemClick()\"\r\n />\r\n </div>\r\n</ius-popover>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}.ius-dropdown__trigger{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-semibold) var(--ius-fs-sm)/1.2 var(--ius-font-body);color:var(--ius-primary-700);padding:var(--ius-space-xxs) var(--ius-space-xs);border-radius:var(--ius-radius-sm);white-space:nowrap;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger:hover{background:var(--ius-neutral-2)}.ius-dropdown__trigger[data-tone=neutral]{color:var(--ius-text-secondary)}.ius-dropdown__trigger[data-tone=neutral]:hover,.ius-dropdown__trigger[data-tone=neutral][data-open=true]{color:var(--ius-text-primary)}.ius-dropdown__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-dropdown__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-dropdown__trigger .ius-dropdown__chev{transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger[data-open=true] .ius-dropdown__chev{transform:rotate(180deg)}.ius-dropdown__trigger[data-variant=outline]{border:1px solid var(--ius-stroke);background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);gap:var(--ius-space-xs);font:var(--ius-fw-regular, 400) var(--ius-fs-base)/1 var(--ius-font-body)}.ius-dropdown__trigger[data-variant=outline]:hover{background:var(--ius-neutral-white);border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-dropdown__trigger[data-variant=outline][data-open=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}\n"] }]
3554
- }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], triggerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerLabel", required: false }] }], triggerIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerIcon", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], openChange: [{ type: i0.Output, args: ["openChange"] }], customTrigger: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusDropdownTriggerDirective), { isSignal: true }] }] } });
3597
+ args: [{ selector: 'ius-dropdown', standalone: true, imports: [NgTemplateOutlet, PopoverComponent, MenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'ius-dropdown' }, template: "<ius-popover\r\n [placement]=\"placement()\"\r\n trigger=\"click\"\r\n [showArrow]=\"false\"\r\n [open]=\"isOpen()\"\r\n [dismissable]=\"true\"\r\n panelClass=\"ius-dropdown-pop\"\r\n (openChange)=\"onOpenChange($event)\"\r\n>\r\n <!-- Disparador: propio proyectado \u203A ghost/outline texto+chevron por defecto -->\r\n @if (customTrigger()) {\r\n <!-- Propio NO interactivo (StatusChip, Tag): dentro de un button accesible, como el golden -->\r\n @if (wrapTrigger()) {\r\n <button\r\n #wrapButton\r\n type=\"button\"\r\n class=\"ius-dropdown__wrap\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n (keydown)=\"onWrapKeydown($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"customTriggerTpl\" />\r\n </button>\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"customTriggerTpl\" />\r\n }\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"ius-dropdown__trigger\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.data-tone]=\"tone() !== 'primary' ? tone() : null\"\r\n [attr.data-variant]=\"variant() !== 'ghost' ? variant() : null\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n >\r\n @if (triggerIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ triggerIcon() }}</span>\r\n }\r\n {{ triggerText() }}\r\n <span translate=\"no\" class=\"ius-icon ius-dropdown__chev\">expand_more</span>\r\n </button>\r\n }\r\n\r\n <!-- Panel: la superficie Menu (el Popover solo la ancla) -->\r\n <div iusPopoverContent #panel (keydown.escape)=\"onPanelEscape()\">\r\n <ius-menu\r\n [items]=\"items()\"\r\n [selectable]=\"selectable()\"\r\n [value]=\"value()\"\r\n [label]=\"menuLabel()\"\r\n [ariaLabel]=\"ariaLabel()\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (itemClick)=\"onItemClick()\"\r\n />\r\n </div>\r\n</ius-popover>\r\n\r\n<!-- El disparador propio se proyecta una sola vez; las dos ramas de arriba lo montan desde aqu\u00ED. -->\r\n<ng-template #customTriggerTpl><ng-content select=\"[iusDropdownTrigger]\" /></ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}.ius-dropdown__trigger{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-semibold) var(--ius-fs-sm)/1.2 var(--ius-font-body);color:var(--ius-primary-700);padding:var(--ius-space-xxs) var(--ius-space-xs);border-radius:var(--ius-radius-sm);white-space:nowrap;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger:hover{background:var(--ius-neutral-2)}.ius-dropdown__trigger[data-tone=neutral]{color:var(--ius-text-secondary)}.ius-dropdown__trigger[data-tone=neutral]:hover,.ius-dropdown__trigger[data-tone=neutral][data-open=true]{color:var(--ius-text-primary)}.ius-dropdown__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-dropdown__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-dropdown__trigger .ius-dropdown__chev{transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-dropdown__trigger[data-open=true] .ius-dropdown__chev{transform:rotate(180deg)}.ius-dropdown__trigger[data-variant=outline]{border:1px solid var(--ius-stroke);background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);gap:var(--ius-space-xs);font:var(--ius-fw-regular, 400) var(--ius-fs-base)/1 var(--ius-font-body)}.ius-dropdown__trigger[data-variant=outline]:hover{background:var(--ius-neutral-white);border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-dropdown__trigger[data-variant=outline][data-open=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-dropdown__wrap{appearance:none;border:0;background:transparent;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;cursor:pointer;display:inline-flex;align-items:center;border-radius:var(--ius-radius-pill)}.ius-dropdown__wrap:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"] }]
3598
+ }], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], triggerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerLabel", required: false }] }], triggerIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerIcon", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], openChange: [{ type: i0.Output, args: ["openChange"] }], customTrigger: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusDropdownTriggerDirective), { isSignal: true }] }], customTriggerEl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusDropdownTriggerDirective), { ...{ read: ElementRef }, isSignal: true }] }], wrapButton: [{ type: i0.ViewChild, args: ['wrapButton', { isSignal: true }] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }] } });
3555
3599
 
3556
3600
  /** Nombre rico proyectado (alternativa al input `name`). */
3557
3601
  class IusAccountItemNameDirective {
@@ -3688,7 +3732,7 @@ class AccountItemComponent {
3688
3732
  this.clicked.emit(event);
3689
3733
  }
3690
3734
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AccountItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3691
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AccountItemComponent, isStandalone: true, selector: "ius-account-item", inputs: { name: "name", subtitle: "subtitle", avatar: "avatar", icon: "icon", monogram: "monogram", color: "color", shape: "shape", selected: ["selected", "selected", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], actions: "actions", actionsLabel: "actionsLabel", state: "state", ariaLabel: "ariaLabel" }, outputs: { clicked: "clicked" }, host: { properties: { "attr.data-state": "state || null", "attr.data-disabled": "disabled ? 'true' : null", "attr.data-actionable": "actionable ? 'true' : null" }, classAttribute: "ius-acctitem" }, queries: [{ propertyName: "nameRef", first: true, predicate: IusAccountItemNameDirective, descendants: true, isSignal: true }, { propertyName: "subtitleRef", first: true, predicate: IusAccountItemSubtitleDirective, descendants: true, isSignal: true }, { propertyName: "trailingRef", first: true, predicate: IusAccountItemTrailingDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- La superficie la pone ius-card (outlined \u00B7 radius lg \u00B7 padding none), como\n manda la ng-spec: no se reescribe a mano. Con `padding=\"none\"` el padding de\n la fila lo pone .ius-acctitem__row, que es \u00ABel propio cuerpo\u00BB del que habla\n Card (el golden lo escribe sobre .ius-card__body, encapsulado aqu\u00ED).\n\n La ra\u00EDz NO es navegable: el \u00E1rea primaria es el <button> interno\n .ius-acctitem__main, como en la rama `split` del golden \u2014 as\u00ED el \u22EE nunca\n queda anidado dentro de otro control. Ver la nota de port del .ts. -->\n<ius-card\n class=\"ius-acctitem__card\"\n variant=\"outlined\"\n radius=\"lg\"\n padding=\"none\"\n [selected]=\"selected\"\n>\n <div class=\"ius-acctitem__row\">\n <button\n type=\"button\"\n class=\"ius-acctitem__main\"\n [attr.aria-label]=\"label\"\n [attr.aria-pressed]=\"ariaPressed\"\n [disabled]=\"disabled\"\n (click)=\"onMainClick($event)\"\n >\n <ius-avatar\n size=\"small\"\n [shape]=\"shape\"\n [src]=\"avatar\"\n [name]=\"avatarName\"\n [monogram]=\"monogram\"\n [icon]=\"effIcon\"\n [color]=\"color\"\n [ariaLabel]=\"name\"\n />\n\n <span class=\"ius-acctitem__body\">\n <span class=\"ius-acctitem__name\">{{ name }}<ng-content select=\"[iusAccountItemName]\" /></span>\n @if (hasSubtitle) {\n <span class=\"ius-acctitem__sub\">{{ subtitle }}<ng-content select=\"[iusAccountItemSubtitle]\" /></span>\n }\n </span>\n\n @if (selected) {\n <span class=\"ius-acctitem__check\"><span translate=\"no\" class=\"ius-icon\">check_circle</span></span>\n }\n </button>\n\n @if (hasTrailing) {\n <span class=\"ius-acctitem__trailing\"><ng-content select=\"[iusAccountItemTrailing]\" /></span>\n }\n\n @if (showMenu) {\n <!-- Slot de ancho fijo (--_ai-actions-w): alinea todas las listas de\n cuentas del ecosistema. Compone ius-dropdown; su clic no dispara la\n fila (el \u00E1rea primaria es un bot\u00F3n hermano, no un ancestro). -->\n <span class=\"ius-acctitem__actions\">\n <ius-dropdown [items]=\"actions\" placement=\"bottom-end\" [ariaLabel]=\"actionsLabel\">\n <ius-icon-button\n iusDropdownTrigger\n icon=\"more_vert\"\n variant=\"tertiary\"\n size=\"small\"\n [ariaLabel]=\"menuLabel\"\n [disabled]=\"disabled\"\n />\n </ius-dropdown>\n </span>\n }\n </div>\n</ius-card>\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none;text-align:left;--_ai-actions-w: 36px}.ius-acctitem__row{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-acctitem__main{appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-acctitem__main:focus-visible{outline:none}:host(:has(.ius-acctitem__main:focus-visible)) .ius-acctitem__card{box-shadow:var(--ius-focus-ring)}:host([data-actionable=true]:hover) .ius-acctitem__card,:host([data-state=hover]) .ius-acctitem__card{box-shadow:none;transform:none;border-color:var(--ius-info-300)}:host([data-actionable=true]:has(.ius-acctitem__main:active)) .ius-acctitem__card,:host([data-state=pressed]) .ius-acctitem__card{box-shadow:none;transform:none;background:var(--ius-info-100);border-color:var(--ius-info-300)}.ius-acctitem__card[data-selected=true]{background:var(--ius-info-100);border-color:var(--ius-info-300);box-shadow:none}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-acctitem__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-acctitem__name{font-size:var(--ius-fs-base);line-height:1.3;font-weight:var(--ius-fw-medium, 500);color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__check{flex:0 0 auto;display:inline-flex;color:var(--ius-primary-900)}.ius-acctitem__check .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-acctitem__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-acctitem__actions{flex:0 0 auto;width:var(--_ai-actions-w);display:inline-flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "component", type: AvatarComponent, selector: "ius-avatar", inputs: ["alt", "name", "monogram", "icon", "shape", "size", "color", "editable", "editIcon", "ariaLabel", "src"], outputs: ["edit"] }, { kind: "component", type: CardComponent, selector: "ius-card, a[ius-card], button[ius-card], section[ius-card], article[ius-card]", inputs: ["variant", "padding", "radius", "interactive", "selected", "ariaLabel"], outputs: ["clicked"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "directive", type: IusDropdownTriggerDirective, selector: "[iusDropdownTrigger]" }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3735
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AccountItemComponent, isStandalone: true, selector: "ius-account-item", inputs: { name: "name", subtitle: "subtitle", avatar: "avatar", icon: "icon", monogram: "monogram", color: "color", shape: "shape", selected: ["selected", "selected", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], actions: "actions", actionsLabel: "actionsLabel", state: "state", ariaLabel: "ariaLabel" }, outputs: { clicked: "clicked" }, host: { properties: { "attr.data-state": "state || null", "attr.data-disabled": "disabled ? 'true' : null", "attr.data-actionable": "actionable ? 'true' : null" }, classAttribute: "ius-acctitem" }, queries: [{ propertyName: "nameRef", first: true, predicate: IusAccountItemNameDirective, descendants: true, isSignal: true }, { propertyName: "subtitleRef", first: true, predicate: IusAccountItemSubtitleDirective, descendants: true, isSignal: true }, { propertyName: "trailingRef", first: true, predicate: IusAccountItemTrailingDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- La superficie la pone ius-card (outlined \u00B7 radius lg \u00B7 padding none), como\r\n manda la ng-spec: no se reescribe a mano. Con `padding=\"none\"` el padding de\r\n la fila lo pone .ius-acctitem__row, que es \u00ABel propio cuerpo\u00BB del que habla\r\n Card (el golden lo escribe sobre .ius-card__body, encapsulado aqu\u00ED).\r\n\r\n La ra\u00EDz NO es navegable: el \u00E1rea primaria es el <button> interno\r\n .ius-acctitem__main, como en la rama `split` del golden \u2014 as\u00ED el \u22EE nunca\r\n queda anidado dentro de otro control. Ver la nota de port del .ts. -->\r\n<ius-card\r\n class=\"ius-acctitem__card\"\r\n variant=\"outlined\"\r\n radius=\"lg\"\r\n padding=\"none\"\r\n [selected]=\"selected\"\r\n>\r\n <div class=\"ius-acctitem__row\">\r\n <button\r\n type=\"button\"\r\n class=\"ius-acctitem__main\"\r\n [attr.aria-label]=\"label\"\r\n [attr.aria-pressed]=\"ariaPressed\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onMainClick($event)\"\r\n >\r\n <ius-avatar\r\n size=\"small\"\r\n [shape]=\"shape\"\r\n [src]=\"avatar\"\r\n [name]=\"avatarName\"\r\n [monogram]=\"monogram\"\r\n [icon]=\"effIcon\"\r\n [color]=\"color\"\r\n [ariaLabel]=\"name\"\r\n />\r\n\r\n <span class=\"ius-acctitem__body\">\r\n <span class=\"ius-acctitem__name\">{{ name }}<ng-content select=\"[iusAccountItemName]\" /></span>\r\n @if (hasSubtitle) {\r\n <span class=\"ius-acctitem__sub\">{{ subtitle }}<ng-content select=\"[iusAccountItemSubtitle]\" /></span>\r\n }\r\n </span>\r\n\r\n @if (selected) {\r\n <span class=\"ius-acctitem__check\"><span translate=\"no\" class=\"ius-icon\">check_circle</span></span>\r\n }\r\n </button>\r\n\r\n @if (hasTrailing) {\r\n <span class=\"ius-acctitem__trailing\"><ng-content select=\"[iusAccountItemTrailing]\" /></span>\r\n }\r\n\r\n @if (showMenu) {\r\n <!-- Slot de ancho fijo (--_ai-actions-w): alinea todas las listas de\r\n cuentas del ecosistema. Compone ius-dropdown; su clic no dispara la\r\n fila (el \u00E1rea primaria es un bot\u00F3n hermano, no un ancestro). -->\r\n <span class=\"ius-acctitem__actions\">\r\n <ius-dropdown [items]=\"actions\" placement=\"bottom-end\" [ariaLabel]=\"actionsLabel\">\r\n <ius-icon-button\r\n iusDropdownTrigger\r\n icon=\"more_vert\"\r\n variant=\"tertiary\"\r\n size=\"small\"\r\n [ariaLabel]=\"menuLabel\"\r\n [disabled]=\"disabled\"\r\n />\r\n </ius-dropdown>\r\n </span>\r\n }\r\n </div>\r\n</ius-card>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none;text-align:left;--_ai-actions-w: 36px}.ius-acctitem__row{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-acctitem__main{appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-acctitem__main:focus-visible{outline:none}:host(:has(.ius-acctitem__main:focus-visible)) .ius-acctitem__card{box-shadow:var(--ius-focus-ring)}:host([data-actionable=true]:hover) .ius-acctitem__card,:host([data-state=hover]) .ius-acctitem__card{box-shadow:none;transform:none;border-color:var(--ius-info-300)}:host([data-actionable=true]:has(.ius-acctitem__main:active)) .ius-acctitem__card,:host([data-state=pressed]) .ius-acctitem__card{box-shadow:none;transform:none;background:var(--ius-info-100);border-color:var(--ius-info-300)}.ius-acctitem__card[data-selected=true]{background:var(--ius-info-100);border-color:var(--ius-info-300);box-shadow:none}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-acctitem__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-acctitem__name{font-size:var(--ius-fs-base);line-height:1.3;font-weight:var(--ius-fw-medium, 500);color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__check{flex:0 0 auto;display:inline-flex;color:var(--ius-primary-900)}.ius-acctitem__check .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-acctitem__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-acctitem__actions{flex:0 0 auto;width:var(--_ai-actions-w);display:inline-flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "component", type: AvatarComponent, selector: "ius-avatar", inputs: ["alt", "name", "monogram", "icon", "shape", "size", "color", "editable", "editIcon", "ariaLabel", "src"], outputs: ["edit"] }, { kind: "component", type: CardComponent, selector: "ius-card, a[ius-card], button[ius-card], section[ius-card], article[ius-card]", inputs: ["variant", "padding", "radius", "interactive", "selected", "ariaLabel"], outputs: ["clicked"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "directive", type: IusDropdownTriggerDirective, selector: "[iusDropdownTrigger]" }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3692
3736
  }
3693
3737
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AccountItemComponent, decorators: [{
3694
3738
  type: Component,
@@ -3703,7 +3747,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3703
3747
  '[attr.data-state]': 'state || null',
3704
3748
  '[attr.data-disabled]': "disabled ? 'true' : null",
3705
3749
  '[attr.data-actionable]': "actionable ? 'true' : null",
3706
- }, template: "<!-- La superficie la pone ius-card (outlined \u00B7 radius lg \u00B7 padding none), como\n manda la ng-spec: no se reescribe a mano. Con `padding=\"none\"` el padding de\n la fila lo pone .ius-acctitem__row, que es \u00ABel propio cuerpo\u00BB del que habla\n Card (el golden lo escribe sobre .ius-card__body, encapsulado aqu\u00ED).\n\n La ra\u00EDz NO es navegable: el \u00E1rea primaria es el <button> interno\n .ius-acctitem__main, como en la rama `split` del golden \u2014 as\u00ED el \u22EE nunca\n queda anidado dentro de otro control. Ver la nota de port del .ts. -->\n<ius-card\n class=\"ius-acctitem__card\"\n variant=\"outlined\"\n radius=\"lg\"\n padding=\"none\"\n [selected]=\"selected\"\n>\n <div class=\"ius-acctitem__row\">\n <button\n type=\"button\"\n class=\"ius-acctitem__main\"\n [attr.aria-label]=\"label\"\n [attr.aria-pressed]=\"ariaPressed\"\n [disabled]=\"disabled\"\n (click)=\"onMainClick($event)\"\n >\n <ius-avatar\n size=\"small\"\n [shape]=\"shape\"\n [src]=\"avatar\"\n [name]=\"avatarName\"\n [monogram]=\"monogram\"\n [icon]=\"effIcon\"\n [color]=\"color\"\n [ariaLabel]=\"name\"\n />\n\n <span class=\"ius-acctitem__body\">\n <span class=\"ius-acctitem__name\">{{ name }}<ng-content select=\"[iusAccountItemName]\" /></span>\n @if (hasSubtitle) {\n <span class=\"ius-acctitem__sub\">{{ subtitle }}<ng-content select=\"[iusAccountItemSubtitle]\" /></span>\n }\n </span>\n\n @if (selected) {\n <span class=\"ius-acctitem__check\"><span translate=\"no\" class=\"ius-icon\">check_circle</span></span>\n }\n </button>\n\n @if (hasTrailing) {\n <span class=\"ius-acctitem__trailing\"><ng-content select=\"[iusAccountItemTrailing]\" /></span>\n }\n\n @if (showMenu) {\n <!-- Slot de ancho fijo (--_ai-actions-w): alinea todas las listas de\n cuentas del ecosistema. Compone ius-dropdown; su clic no dispara la\n fila (el \u00E1rea primaria es un bot\u00F3n hermano, no un ancestro). -->\n <span class=\"ius-acctitem__actions\">\n <ius-dropdown [items]=\"actions\" placement=\"bottom-end\" [ariaLabel]=\"actionsLabel\">\n <ius-icon-button\n iusDropdownTrigger\n icon=\"more_vert\"\n variant=\"tertiary\"\n size=\"small\"\n [ariaLabel]=\"menuLabel\"\n [disabled]=\"disabled\"\n />\n </ius-dropdown>\n </span>\n }\n </div>\n</ius-card>\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none;text-align:left;--_ai-actions-w: 36px}.ius-acctitem__row{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-acctitem__main{appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-acctitem__main:focus-visible{outline:none}:host(:has(.ius-acctitem__main:focus-visible)) .ius-acctitem__card{box-shadow:var(--ius-focus-ring)}:host([data-actionable=true]:hover) .ius-acctitem__card,:host([data-state=hover]) .ius-acctitem__card{box-shadow:none;transform:none;border-color:var(--ius-info-300)}:host([data-actionable=true]:has(.ius-acctitem__main:active)) .ius-acctitem__card,:host([data-state=pressed]) .ius-acctitem__card{box-shadow:none;transform:none;background:var(--ius-info-100);border-color:var(--ius-info-300)}.ius-acctitem__card[data-selected=true]{background:var(--ius-info-100);border-color:var(--ius-info-300);box-shadow:none}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-acctitem__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-acctitem__name{font-size:var(--ius-fs-base);line-height:1.3;font-weight:var(--ius-fw-medium, 500);color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__check{flex:0 0 auto;display:inline-flex;color:var(--ius-primary-900)}.ius-acctitem__check .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-acctitem__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-acctitem__actions{flex:0 0 auto;width:var(--_ai-actions-w);display:inline-flex;align-items:center;justify-content:center}\n"] }]
3750
+ }, template: "<!-- La superficie la pone ius-card (outlined \u00B7 radius lg \u00B7 padding none), como\r\n manda la ng-spec: no se reescribe a mano. Con `padding=\"none\"` el padding de\r\n la fila lo pone .ius-acctitem__row, que es \u00ABel propio cuerpo\u00BB del que habla\r\n Card (el golden lo escribe sobre .ius-card__body, encapsulado aqu\u00ED).\r\n\r\n La ra\u00EDz NO es navegable: el \u00E1rea primaria es el <button> interno\r\n .ius-acctitem__main, como en la rama `split` del golden \u2014 as\u00ED el \u22EE nunca\r\n queda anidado dentro de otro control. Ver la nota de port del .ts. -->\r\n<ius-card\r\n class=\"ius-acctitem__card\"\r\n variant=\"outlined\"\r\n radius=\"lg\"\r\n padding=\"none\"\r\n [selected]=\"selected\"\r\n>\r\n <div class=\"ius-acctitem__row\">\r\n <button\r\n type=\"button\"\r\n class=\"ius-acctitem__main\"\r\n [attr.aria-label]=\"label\"\r\n [attr.aria-pressed]=\"ariaPressed\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onMainClick($event)\"\r\n >\r\n <ius-avatar\r\n size=\"small\"\r\n [shape]=\"shape\"\r\n [src]=\"avatar\"\r\n [name]=\"avatarName\"\r\n [monogram]=\"monogram\"\r\n [icon]=\"effIcon\"\r\n [color]=\"color\"\r\n [ariaLabel]=\"name\"\r\n />\r\n\r\n <span class=\"ius-acctitem__body\">\r\n <span class=\"ius-acctitem__name\">{{ name }}<ng-content select=\"[iusAccountItemName]\" /></span>\r\n @if (hasSubtitle) {\r\n <span class=\"ius-acctitem__sub\">{{ subtitle }}<ng-content select=\"[iusAccountItemSubtitle]\" /></span>\r\n }\r\n </span>\r\n\r\n @if (selected) {\r\n <span class=\"ius-acctitem__check\"><span translate=\"no\" class=\"ius-icon\">check_circle</span></span>\r\n }\r\n </button>\r\n\r\n @if (hasTrailing) {\r\n <span class=\"ius-acctitem__trailing\"><ng-content select=\"[iusAccountItemTrailing]\" /></span>\r\n }\r\n\r\n @if (showMenu) {\r\n <!-- Slot de ancho fijo (--_ai-actions-w): alinea todas las listas de\r\n cuentas del ecosistema. Compone ius-dropdown; su clic no dispara la\r\n fila (el \u00E1rea primaria es un bot\u00F3n hermano, no un ancestro). -->\r\n <span class=\"ius-acctitem__actions\">\r\n <ius-dropdown [items]=\"actions\" placement=\"bottom-end\" [ariaLabel]=\"actionsLabel\">\r\n <ius-icon-button\r\n iusDropdownTrigger\r\n icon=\"more_vert\"\r\n variant=\"tertiary\"\r\n size=\"small\"\r\n [ariaLabel]=\"menuLabel\"\r\n [disabled]=\"disabled\"\r\n />\r\n </ius-dropdown>\r\n </span>\r\n }\r\n </div>\r\n</ius-card>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none;text-align:left;--_ai-actions-w: 36px}.ius-acctitem__row{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-acctitem__main{appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-acctitem__main:focus-visible{outline:none}:host(:has(.ius-acctitem__main:focus-visible)) .ius-acctitem__card{box-shadow:var(--ius-focus-ring)}:host([data-actionable=true]:hover) .ius-acctitem__card,:host([data-state=hover]) .ius-acctitem__card{box-shadow:none;transform:none;border-color:var(--ius-info-300)}:host([data-actionable=true]:has(.ius-acctitem__main:active)) .ius-acctitem__card,:host([data-state=pressed]) .ius-acctitem__card{box-shadow:none;transform:none;background:var(--ius-info-100);border-color:var(--ius-info-300)}.ius-acctitem__card[data-selected=true]{background:var(--ius-info-100);border-color:var(--ius-info-300);box-shadow:none}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-acctitem__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-acctitem__name{font-size:var(--ius-fs-base);line-height:1.3;font-weight:var(--ius-fw-medium, 500);color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-acctitem__check{flex:0 0 auto;display:inline-flex;color:var(--ius-primary-900)}.ius-acctitem__check .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-acctitem__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-acctitem__actions{flex:0 0 auto;width:var(--_ai-actions-w);display:inline-flex;align-items:center;justify-content:center}\n"] }]
3707
3751
  }], propDecorators: { name: [{
3708
3752
  type: Input
3709
3753
  }], subtitle: [{
@@ -4818,7 +4862,7 @@ class LoadingMarkComponent {
4818
4862
  return this.surface === 'dark' ? 'var(--ius-primary-600)' : 'var(--ius-primary-900)';
4819
4863
  }
4820
4864
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LoadingMarkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4821
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "22.0.8", type: LoadingMarkComponent, isStandalone: true, selector: "ius-loading-mark", inputs: { size: ["size", "size", numberAttribute], surface: "surface", paused: ["paused", "paused", booleanAttribute], ariaLabel: "ariaLabel" }, host: { attributes: { "role": "status", "aria-live": "polite" }, properties: { "attr.data-surface": "surface", "attr.data-paused": "paused ? 'true' : null", "attr.aria-label": "ariaLabel" } }, ngImport: i0, template: "<svg\n class=\"ius-loadmark__svg\"\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n viewBox=\"-16 -16 132 132\"\n aria-hidden=\"true\"\n>\n <defs>\n <!-- Degradado base (navy \u00B7 navy\u2192cian en dark) -->\n <linearGradient\n [attr.id]=\"baseId\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"6\"\n y1=\"94\"\n x2=\"94\"\n y2=\"6\"\n >\n <stop offset=\"0\" [attr.stop-color]=\"baseFrom\" />\n <stop offset=\"1\" [attr.stop-color]=\"baseTo\" />\n </linearGradient>\n\n <!-- Glow del cometa -->\n <radialGradient [attr.id]=\"glowId\">\n <stop offset=\"0%\" stop-color=\"var(--ius-primary-100)\" />\n <stop offset=\"35%\" stop-color=\"var(--ius-primary-400)\" />\n <stop offset=\"100%\" stop-color=\"var(--ius-primary-400)\" stop-opacity=\"0\" />\n </radialGradient>\n\n <!-- Desenfoque de la cola -->\n <filter [attr.id]=\"softId\" x=\"-60%\" y=\"-60%\" width=\"220%\" height=\"220%\">\n <feGaussianBlur stdDeviation=\"5\" />\n </filter>\n\n <!-- M\u00E1scara: tres fichas deslizantes -->\n <mask [attr.id]=\"maskId\" maskUnits=\"userSpaceOnUse\">\n <g class=\"ius-loadmark__tile ius-loadmark__tile--a\">\n <rect\n x=\"0\"\n y=\"0\"\n width=\"38\"\n height=\"38\"\n rx=\"10\"\n fill=\"none\"\n stroke=\"var(--ius-neutral-white)\"\n stroke-width=\"6\"\n stroke-linejoin=\"round\"\n />\n </g>\n <g class=\"ius-loadmark__tile ius-loadmark__tile--b\">\n <rect\n x=\"0\"\n y=\"0\"\n width=\"38\"\n height=\"38\"\n rx=\"10\"\n fill=\"none\"\n stroke=\"var(--ius-neutral-white)\"\n stroke-width=\"6\"\n stroke-linejoin=\"round\"\n />\n </g>\n <g class=\"ius-loadmark__tile ius-loadmark__tile--c\">\n <rect\n x=\"0\"\n y=\"0\"\n width=\"38\"\n height=\"38\"\n rx=\"10\"\n fill=\"none\"\n stroke=\"var(--ius-neutral-white)\"\n stroke-width=\"6\"\n stroke-linejoin=\"round\"\n />\n </g>\n </mask>\n </defs>\n\n <!-- Giro del conjunto -->\n <g class=\"ius-loadmark__spin\">\n <g [attr.mask]=\"'url(#' + maskId + ')'\">\n <rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" [attr.fill]=\"'url(#' + baseId + ')'\" />\n <!-- Cometa orbitando el contorno -->\n <g class=\"ius-loadmark__orbit\">\n <circle\n cx=\"50\"\n cy=\"4\"\n r=\"40\"\n [attr.fill]=\"'url(#' + glowId + ')'\"\n [attr.filter]=\"'url(#' + softId + ')'\"\n />\n </g>\n </g>\n </g>\n</svg>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;line-height:0;color:var(--ius-primary-900)}.ius-loadmark__svg{display:block}.ius-loadmark__spin{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-spin var(--ius-duration-ambient) linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-spin{to{transform:rotate(360deg)}}.ius-loadmark__orbit{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-orbit 2s linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-orbit{to{transform:rotate(360deg)}}.ius-loadmark__tile{animation-duration:5s;animation-iteration-count:infinite;animation-timing-function:var(--ius-ease-ambient);animation-play-state:var(--ius-motion-loop)}.ius-loadmark__tile--a{animation-name:ius-lm-a}.ius-loadmark__tile--b{animation-name:ius-lm-b}.ius-loadmark__tile--c{animation-name:ius-lm-c}@keyframes ius-lm-a{0%{transform:translate(5px,5px)}8.333%{transform:translate(57px,5px)}25%{transform:translate(57px,5px)}33.333%{transform:translate(57px,57px)}50%{transform:translate(57px,57px)}58.333%{transform:translate(5px,57px)}75%{transform:translate(5px,57px)}83.333%{transform:translate(5px,5px)}to{transform:translate(5px,5px)}}@keyframes ius-lm-b{0%{transform:translate(57px,57px)}16.667%{transform:translate(57px,57px)}25%{transform:translate(5px,57px)}41.667%{transform:translate(5px,57px)}50%{transform:translate(5px,5px)}66.667%{transform:translate(5px,5px)}75%{transform:translate(57px,5px)}91.667%{transform:translate(57px,5px)}to{transform:translate(57px,57px)}}@keyframes ius-lm-c{0%{transform:translate(5px,57px)}8.333%{transform:translate(5px,57px)}16.667%{transform:translate(5px,5px)}33.333%{transform:translate(5px,5px)}41.667%{transform:translate(57px,5px)}58.333%{transform:translate(57px,5px)}66.667%{transform:translate(57px,57px)}83.333%{transform:translate(57px,57px)}91.667%{transform:translate(5px,57px)}to{transform:translate(5px,57px)}}:host([data-paused=true]) .ius-loadmark__spin,:host([data-paused=true]) .ius-loadmark__orbit,:host([data-paused=true]) .ius-loadmark__tile{animation-play-state:paused}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4865
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "22.0.8", type: LoadingMarkComponent, isStandalone: true, selector: "ius-loading-mark", inputs: { size: ["size", "size", numberAttribute], surface: "surface", paused: ["paused", "paused", booleanAttribute], ariaLabel: "ariaLabel" }, host: { attributes: { "role": "status", "aria-live": "polite" }, properties: { "attr.data-surface": "surface", "attr.data-paused": "paused ? 'true' : null", "attr.aria-label": "ariaLabel" } }, ngImport: i0, template: "<svg\r\n class=\"ius-loadmark__svg\"\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n viewBox=\"-16 -16 132 132\"\r\n aria-hidden=\"true\"\r\n>\r\n <defs>\r\n <!-- Degradado base (navy \u00B7 navy\u2192cian en dark) -->\r\n <linearGradient\r\n [attr.id]=\"baseId\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n x1=\"6\"\r\n y1=\"94\"\r\n x2=\"94\"\r\n y2=\"6\"\r\n >\r\n <stop offset=\"0\" [attr.stop-color]=\"baseFrom\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"baseTo\" />\r\n </linearGradient>\r\n\r\n <!-- Glow del cometa -->\r\n <radialGradient [attr.id]=\"glowId\">\r\n <stop offset=\"0%\" stop-color=\"var(--ius-primary-100)\" />\r\n <stop offset=\"35%\" stop-color=\"var(--ius-primary-400)\" />\r\n <stop offset=\"100%\" stop-color=\"var(--ius-primary-400)\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n\r\n <!-- Desenfoque de la cola -->\r\n <filter [attr.id]=\"softId\" x=\"-60%\" y=\"-60%\" width=\"220%\" height=\"220%\">\r\n <feGaussianBlur stdDeviation=\"5\" />\r\n </filter>\r\n\r\n <!-- M\u00E1scara: tres fichas deslizantes -->\r\n <mask [attr.id]=\"maskId\" maskUnits=\"userSpaceOnUse\">\r\n <g class=\"ius-loadmark__tile ius-loadmark__tile--a\">\r\n <rect\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"38\"\r\n height=\"38\"\r\n rx=\"10\"\r\n fill=\"none\"\r\n stroke=\"var(--ius-neutral-white)\"\r\n stroke-width=\"6\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <g class=\"ius-loadmark__tile ius-loadmark__tile--b\">\r\n <rect\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"38\"\r\n height=\"38\"\r\n rx=\"10\"\r\n fill=\"none\"\r\n stroke=\"var(--ius-neutral-white)\"\r\n stroke-width=\"6\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <g class=\"ius-loadmark__tile ius-loadmark__tile--c\">\r\n <rect\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"38\"\r\n height=\"38\"\r\n rx=\"10\"\r\n fill=\"none\"\r\n stroke=\"var(--ius-neutral-white)\"\r\n stroke-width=\"6\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n </mask>\r\n </defs>\r\n\r\n <!-- Giro del conjunto -->\r\n <g class=\"ius-loadmark__spin\">\r\n <g [attr.mask]=\"'url(#' + maskId + ')'\">\r\n <rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" [attr.fill]=\"'url(#' + baseId + ')'\" />\r\n <!-- Cometa orbitando el contorno -->\r\n <g class=\"ius-loadmark__orbit\">\r\n <circle\r\n cx=\"50\"\r\n cy=\"4\"\r\n r=\"40\"\r\n [attr.fill]=\"'url(#' + glowId + ')'\"\r\n [attr.filter]=\"'url(#' + softId + ')'\"\r\n />\r\n </g>\r\n </g>\r\n </g>\r\n</svg>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;line-height:0;color:var(--ius-primary-900)}.ius-loadmark__svg{display:block}.ius-loadmark__spin{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-spin var(--ius-duration-ambient) linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-spin{to{transform:rotate(360deg)}}.ius-loadmark__orbit{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-orbit 2s linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-orbit{to{transform:rotate(360deg)}}.ius-loadmark__tile{animation-duration:5s;animation-iteration-count:infinite;animation-timing-function:var(--ius-ease-ambient);animation-play-state:var(--ius-motion-loop)}.ius-loadmark__tile--a{animation-name:ius-lm-a}.ius-loadmark__tile--b{animation-name:ius-lm-b}.ius-loadmark__tile--c{animation-name:ius-lm-c}@keyframes ius-lm-a{0%{transform:translate(5px,5px)}8.333%{transform:translate(57px,5px)}25%{transform:translate(57px,5px)}33.333%{transform:translate(57px,57px)}50%{transform:translate(57px,57px)}58.333%{transform:translate(5px,57px)}75%{transform:translate(5px,57px)}83.333%{transform:translate(5px,5px)}to{transform:translate(5px,5px)}}@keyframes ius-lm-b{0%{transform:translate(57px,57px)}16.667%{transform:translate(57px,57px)}25%{transform:translate(5px,57px)}41.667%{transform:translate(5px,57px)}50%{transform:translate(5px,5px)}66.667%{transform:translate(5px,5px)}75%{transform:translate(57px,5px)}91.667%{transform:translate(57px,5px)}to{transform:translate(57px,57px)}}@keyframes ius-lm-c{0%{transform:translate(5px,57px)}8.333%{transform:translate(5px,57px)}16.667%{transform:translate(5px,5px)}33.333%{transform:translate(5px,5px)}41.667%{transform:translate(57px,5px)}58.333%{transform:translate(57px,5px)}66.667%{transform:translate(57px,57px)}83.333%{transform:translate(57px,57px)}91.667%{transform:translate(5px,57px)}to{transform:translate(5px,57px)}}:host([data-paused=true]) .ius-loadmark__spin,:host([data-paused=true]) .ius-loadmark__orbit,:host([data-paused=true]) .ius-loadmark__tile{animation-play-state:paused}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4822
4866
  }
4823
4867
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LoadingMarkComponent, decorators: [{
4824
4868
  type: Component,
@@ -4828,7 +4872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
4828
4872
  '[attr.data-surface]': 'surface',
4829
4873
  '[attr.data-paused]': "paused ? 'true' : null",
4830
4874
  '[attr.aria-label]': 'ariaLabel',
4831
- }, template: "<svg\n class=\"ius-loadmark__svg\"\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n viewBox=\"-16 -16 132 132\"\n aria-hidden=\"true\"\n>\n <defs>\n <!-- Degradado base (navy \u00B7 navy\u2192cian en dark) -->\n <linearGradient\n [attr.id]=\"baseId\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"6\"\n y1=\"94\"\n x2=\"94\"\n y2=\"6\"\n >\n <stop offset=\"0\" [attr.stop-color]=\"baseFrom\" />\n <stop offset=\"1\" [attr.stop-color]=\"baseTo\" />\n </linearGradient>\n\n <!-- Glow del cometa -->\n <radialGradient [attr.id]=\"glowId\">\n <stop offset=\"0%\" stop-color=\"var(--ius-primary-100)\" />\n <stop offset=\"35%\" stop-color=\"var(--ius-primary-400)\" />\n <stop offset=\"100%\" stop-color=\"var(--ius-primary-400)\" stop-opacity=\"0\" />\n </radialGradient>\n\n <!-- Desenfoque de la cola -->\n <filter [attr.id]=\"softId\" x=\"-60%\" y=\"-60%\" width=\"220%\" height=\"220%\">\n <feGaussianBlur stdDeviation=\"5\" />\n </filter>\n\n <!-- M\u00E1scara: tres fichas deslizantes -->\n <mask [attr.id]=\"maskId\" maskUnits=\"userSpaceOnUse\">\n <g class=\"ius-loadmark__tile ius-loadmark__tile--a\">\n <rect\n x=\"0\"\n y=\"0\"\n width=\"38\"\n height=\"38\"\n rx=\"10\"\n fill=\"none\"\n stroke=\"var(--ius-neutral-white)\"\n stroke-width=\"6\"\n stroke-linejoin=\"round\"\n />\n </g>\n <g class=\"ius-loadmark__tile ius-loadmark__tile--b\">\n <rect\n x=\"0\"\n y=\"0\"\n width=\"38\"\n height=\"38\"\n rx=\"10\"\n fill=\"none\"\n stroke=\"var(--ius-neutral-white)\"\n stroke-width=\"6\"\n stroke-linejoin=\"round\"\n />\n </g>\n <g class=\"ius-loadmark__tile ius-loadmark__tile--c\">\n <rect\n x=\"0\"\n y=\"0\"\n width=\"38\"\n height=\"38\"\n rx=\"10\"\n fill=\"none\"\n stroke=\"var(--ius-neutral-white)\"\n stroke-width=\"6\"\n stroke-linejoin=\"round\"\n />\n </g>\n </mask>\n </defs>\n\n <!-- Giro del conjunto -->\n <g class=\"ius-loadmark__spin\">\n <g [attr.mask]=\"'url(#' + maskId + ')'\">\n <rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" [attr.fill]=\"'url(#' + baseId + ')'\" />\n <!-- Cometa orbitando el contorno -->\n <g class=\"ius-loadmark__orbit\">\n <circle\n cx=\"50\"\n cy=\"4\"\n r=\"40\"\n [attr.fill]=\"'url(#' + glowId + ')'\"\n [attr.filter]=\"'url(#' + softId + ')'\"\n />\n </g>\n </g>\n </g>\n</svg>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;line-height:0;color:var(--ius-primary-900)}.ius-loadmark__svg{display:block}.ius-loadmark__spin{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-spin var(--ius-duration-ambient) linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-spin{to{transform:rotate(360deg)}}.ius-loadmark__orbit{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-orbit 2s linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-orbit{to{transform:rotate(360deg)}}.ius-loadmark__tile{animation-duration:5s;animation-iteration-count:infinite;animation-timing-function:var(--ius-ease-ambient);animation-play-state:var(--ius-motion-loop)}.ius-loadmark__tile--a{animation-name:ius-lm-a}.ius-loadmark__tile--b{animation-name:ius-lm-b}.ius-loadmark__tile--c{animation-name:ius-lm-c}@keyframes ius-lm-a{0%{transform:translate(5px,5px)}8.333%{transform:translate(57px,5px)}25%{transform:translate(57px,5px)}33.333%{transform:translate(57px,57px)}50%{transform:translate(57px,57px)}58.333%{transform:translate(5px,57px)}75%{transform:translate(5px,57px)}83.333%{transform:translate(5px,5px)}to{transform:translate(5px,5px)}}@keyframes ius-lm-b{0%{transform:translate(57px,57px)}16.667%{transform:translate(57px,57px)}25%{transform:translate(5px,57px)}41.667%{transform:translate(5px,57px)}50%{transform:translate(5px,5px)}66.667%{transform:translate(5px,5px)}75%{transform:translate(57px,5px)}91.667%{transform:translate(57px,5px)}to{transform:translate(57px,57px)}}@keyframes ius-lm-c{0%{transform:translate(5px,57px)}8.333%{transform:translate(5px,57px)}16.667%{transform:translate(5px,5px)}33.333%{transform:translate(5px,5px)}41.667%{transform:translate(57px,5px)}58.333%{transform:translate(57px,5px)}66.667%{transform:translate(57px,57px)}83.333%{transform:translate(57px,57px)}91.667%{transform:translate(5px,57px)}to{transform:translate(5px,57px)}}:host([data-paused=true]) .ius-loadmark__spin,:host([data-paused=true]) .ius-loadmark__orbit,:host([data-paused=true]) .ius-loadmark__tile{animation-play-state:paused}\n"] }]
4875
+ }, template: "<svg\r\n class=\"ius-loadmark__svg\"\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n viewBox=\"-16 -16 132 132\"\r\n aria-hidden=\"true\"\r\n>\r\n <defs>\r\n <!-- Degradado base (navy \u00B7 navy\u2192cian en dark) -->\r\n <linearGradient\r\n [attr.id]=\"baseId\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n x1=\"6\"\r\n y1=\"94\"\r\n x2=\"94\"\r\n y2=\"6\"\r\n >\r\n <stop offset=\"0\" [attr.stop-color]=\"baseFrom\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"baseTo\" />\r\n </linearGradient>\r\n\r\n <!-- Glow del cometa -->\r\n <radialGradient [attr.id]=\"glowId\">\r\n <stop offset=\"0%\" stop-color=\"var(--ius-primary-100)\" />\r\n <stop offset=\"35%\" stop-color=\"var(--ius-primary-400)\" />\r\n <stop offset=\"100%\" stop-color=\"var(--ius-primary-400)\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n\r\n <!-- Desenfoque de la cola -->\r\n <filter [attr.id]=\"softId\" x=\"-60%\" y=\"-60%\" width=\"220%\" height=\"220%\">\r\n <feGaussianBlur stdDeviation=\"5\" />\r\n </filter>\r\n\r\n <!-- M\u00E1scara: tres fichas deslizantes -->\r\n <mask [attr.id]=\"maskId\" maskUnits=\"userSpaceOnUse\">\r\n <g class=\"ius-loadmark__tile ius-loadmark__tile--a\">\r\n <rect\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"38\"\r\n height=\"38\"\r\n rx=\"10\"\r\n fill=\"none\"\r\n stroke=\"var(--ius-neutral-white)\"\r\n stroke-width=\"6\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <g class=\"ius-loadmark__tile ius-loadmark__tile--b\">\r\n <rect\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"38\"\r\n height=\"38\"\r\n rx=\"10\"\r\n fill=\"none\"\r\n stroke=\"var(--ius-neutral-white)\"\r\n stroke-width=\"6\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <g class=\"ius-loadmark__tile ius-loadmark__tile--c\">\r\n <rect\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"38\"\r\n height=\"38\"\r\n rx=\"10\"\r\n fill=\"none\"\r\n stroke=\"var(--ius-neutral-white)\"\r\n stroke-width=\"6\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n </mask>\r\n </defs>\r\n\r\n <!-- Giro del conjunto -->\r\n <g class=\"ius-loadmark__spin\">\r\n <g [attr.mask]=\"'url(#' + maskId + ')'\">\r\n <rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" [attr.fill]=\"'url(#' + baseId + ')'\" />\r\n <!-- Cometa orbitando el contorno -->\r\n <g class=\"ius-loadmark__orbit\">\r\n <circle\r\n cx=\"50\"\r\n cy=\"4\"\r\n r=\"40\"\r\n [attr.fill]=\"'url(#' + glowId + ')'\"\r\n [attr.filter]=\"'url(#' + softId + ')'\"\r\n />\r\n </g>\r\n </g>\r\n </g>\r\n</svg>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;line-height:0;color:var(--ius-primary-900)}.ius-loadmark__svg{display:block}.ius-loadmark__spin{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-spin var(--ius-duration-ambient) linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-spin{to{transform:rotate(360deg)}}.ius-loadmark__orbit{transform-box:view-box;transform-origin:50px 50px;animation:ius-lm-orbit 2s linear infinite;animation-play-state:var(--ius-motion-loop)}@keyframes ius-lm-orbit{to{transform:rotate(360deg)}}.ius-loadmark__tile{animation-duration:5s;animation-iteration-count:infinite;animation-timing-function:var(--ius-ease-ambient);animation-play-state:var(--ius-motion-loop)}.ius-loadmark__tile--a{animation-name:ius-lm-a}.ius-loadmark__tile--b{animation-name:ius-lm-b}.ius-loadmark__tile--c{animation-name:ius-lm-c}@keyframes ius-lm-a{0%{transform:translate(5px,5px)}8.333%{transform:translate(57px,5px)}25%{transform:translate(57px,5px)}33.333%{transform:translate(57px,57px)}50%{transform:translate(57px,57px)}58.333%{transform:translate(5px,57px)}75%{transform:translate(5px,57px)}83.333%{transform:translate(5px,5px)}to{transform:translate(5px,5px)}}@keyframes ius-lm-b{0%{transform:translate(57px,57px)}16.667%{transform:translate(57px,57px)}25%{transform:translate(5px,57px)}41.667%{transform:translate(5px,57px)}50%{transform:translate(5px,5px)}66.667%{transform:translate(5px,5px)}75%{transform:translate(57px,5px)}91.667%{transform:translate(57px,5px)}to{transform:translate(57px,57px)}}@keyframes ius-lm-c{0%{transform:translate(5px,57px)}8.333%{transform:translate(5px,57px)}16.667%{transform:translate(5px,5px)}33.333%{transform:translate(5px,5px)}41.667%{transform:translate(57px,5px)}58.333%{transform:translate(57px,5px)}66.667%{transform:translate(57px,57px)}83.333%{transform:translate(57px,57px)}91.667%{transform:translate(5px,57px)}to{transform:translate(5px,57px)}}:host([data-paused=true]) .ius-loadmark__spin,:host([data-paused=true]) .ius-loadmark__orbit,:host([data-paused=true]) .ius-loadmark__tile{animation-play-state:paused}\n"] }]
4832
4876
  }], propDecorators: { size: [{
4833
4877
  type: Input,
4834
4878
  args: [{ transform: numberAttribute }]
@@ -7805,13 +7849,13 @@ class SelectComponent {
7805
7849
  this.menuWidth.set(origin.getBoundingClientRect().width);
7806
7850
  }
7807
7851
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7808
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SelectComponent, isStandalone: true, selector: "ius-select", inputs: { options: "options", multiple: ["multiple", "multiple", booleanAttribute], size: "size", disabled: ["disabled", "disabled", booleanAttribute], error: ["error", "error", booleanAttribute], state: "state", open: ["open", "open", booleanAttribute], value: "value", label: "label", required: ["required", "required", booleanAttribute], placeholder: "placeholder", prefixIcon: "prefixIcon", searchable: ["searchable", "searchable", booleanAttribute], searchPlaceholder: "searchPlaceholder", emptyText: "emptyText", creatable: ["creatable", "creatable", booleanAttribute], createPlaceholder: "createPlaceholder", createLabel: "createLabel", createFactory: "createFactory", maxVisible: ["maxVisible", "maxVisible", numberAttribute], helpText: "helpText", errorText: "errorText", showHelpText: ["showHelpText", "showHelpText", booleanAttribute], showIconHelp: ["showIconHelp", "showIconHelp", booleanAttribute], iconHelpTitle: "iconHelpTitle", iconHelpContent: "iconHelpContent", showClear: ["showClear", "showClear", booleanAttribute], defaultOpen: ["defaultOpen", "defaultOpen", booleanAttribute], compact: ["compact", "compact", booleanAttribute], defaultValue: "defaultValue", id: "id", name: "name" }, outputs: { valueChange: "valueChange", cleared: "cleared", openChange: "openChange", created: "created" }, host: { listeners: { "document:mousedown": "onDocumentMouseDown($event)", "document:keydown.escape": "onEscape($event)" }, properties: { "class.ius-tf--compact": "compact", "attr.data-size": "size !== 'medium' ? size : null", "attr.data-focused": "focusedAttr()", "attr.data-error": "isError() || null", "attr.data-disabled": "isDisabled() || null", "attr.data-force": "stateInput() || null" }, classAttribute: "ius-tf ius-tf--select" }, providers: [
7852
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SelectComponent, isStandalone: true, selector: "ius-select", inputs: { options: "options", multiple: ["multiple", "multiple", booleanAttribute], size: "size", disabled: ["disabled", "disabled", booleanAttribute], error: ["error", "error", booleanAttribute], state: "state", open: ["open", "open", booleanAttribute], value: "value", label: "label", ariaLabel: "ariaLabel", required: ["required", "required", booleanAttribute], placeholder: "placeholder", prefixIcon: "prefixIcon", searchable: ["searchable", "searchable", booleanAttribute], searchPlaceholder: "searchPlaceholder", emptyText: "emptyText", creatable: ["creatable", "creatable", booleanAttribute], createPlaceholder: "createPlaceholder", createLabel: "createLabel", createFactory: "createFactory", maxVisible: ["maxVisible", "maxVisible", numberAttribute], helpText: "helpText", errorText: "errorText", showHelpText: ["showHelpText", "showHelpText", booleanAttribute], showIconHelp: ["showIconHelp", "showIconHelp", booleanAttribute], iconHelpTitle: "iconHelpTitle", iconHelpContent: "iconHelpContent", showClear: ["showClear", "showClear", booleanAttribute], defaultOpen: ["defaultOpen", "defaultOpen", booleanAttribute], compact: ["compact", "compact", booleanAttribute], defaultValue: "defaultValue", id: "id", name: "name" }, outputs: { valueChange: "valueChange", cleared: "cleared", openChange: "openChange", created: "created" }, host: { listeners: { "document:mousedown": "onDocumentMouseDown($event)", "document:keydown.escape": "onEscape($event)" }, properties: { "class.ius-tf--compact": "compact", "attr.data-size": "size !== 'medium' ? size : null", "attr.data-focused": "focusedAttr()", "attr.data-error": "isError() || null", "attr.data-disabled": "isDisabled() || null", "attr.data-force": "stateInput() || null" }, classAttribute: "ius-tf ius-tf--select" }, providers: [
7809
7853
  {
7810
7854
  provide: NG_VALUE_ACCESSOR,
7811
7855
  useExisting: forwardRef(() => SelectComponent),
7812
7856
  multi: true,
7813
7857
  },
7814
- ], viewQueries: [{ propertyName: "field", first: true, predicate: ["field"], descendants: true, isSignal: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true, isSignal: true }, { propertyName: "search", first: true, predicate: ["search"], descendants: true, isSignal: true }, { propertyName: "createInput", first: true, predicate: ["createInput"], descendants: true, isSignal: true }, { propertyName: "menuTpl", first: true, predicate: ["menuTpl"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (label != null) {\r\n <label [for]=\"baseId\" class=\"ius-tf__label\">\r\n @if (required) {\r\n <span class=\"ius-tf__required\" aria-hidden=\"true\"></span>\r\n }\r\n <span>{{ label }}</span>\r\n @if (showIconHelp) {\r\n <!-- El golden envuelve el \u00EDcono en <Popover placement=\"top\" trigger=\"hover\">\r\n (ambos son los defaults de `ius-popover`) \u2014 mismo patr\u00F3n que TextField. -->\r\n <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"iconHelpEmpty\"\r\n >\r\n <span\r\n class=\"ius-tf__help-icon\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n aria-label=\"Ayuda\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">help</span>\r\n </span>\r\n </ius-popover>\r\n }\r\n <span class=\"ius-tf__colon\">:</span>\r\n </label>\r\n}\r\n\r\n<div\r\n #field\r\n [id]=\"baseId\"\r\n class=\"ius-tf__field\"\r\n role=\"combobox\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-controls]=\"menuId\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"isError() || null\"\r\n (click)=\"toggleOpen()\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n>\r\n @if (prefixIcon) {\r\n <span class=\"ius-tf__prefix\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ prefixIcon }}</span>\r\n </span>\r\n }\r\n\r\n @if (multiple && hasValue()) {\r\n <div class=\"ius-select__chips\">\r\n @for (val of valueArray(); track val) {\r\n <ius-chip\r\n [removable]=\"!isDisabled()\"\r\n [size]=\"chipSize\"\r\n [label]=\"labelFor(val)\"\r\n [disabled]=\"isDisabled()\"\r\n (removed)=\"removeChip(val)\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n <span class=\"ius-select__value\" [attr.data-placeholder]=\"!hasValue() || null\">\r\n {{ hasValue() ? labelFor(singleValue()!) : placeholder }}\r\n </span>\r\n }\r\n\r\n <!--\r\n Espejo de `clearReserved` del golden: el bot\u00F3n entra en el flujo solo si el\r\n campo es \"clearable-capable\" (showClear !== false y habilitado). Dentro de\r\n ese caso el slot S\u00CD queda reservado con `visibility`, para que el chevron no\r\n se desplace al aparecer/quitar el valor (auditor\u00EDa 2026-07-24). Con\r\n `showClear=false` o `disabled` desaparece del flujo, como el golden.\r\n -->\r\n @if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n aria-label=\"Limpiar campo\"\r\n tabindex=\"-1\"\r\n [style.visibility]=\"showClearComputed ? 'visible' : 'hidden'\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n\r\n <span class=\"ius-select__chevron\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ isOpen() ? 'expand_less' : 'expand_more' }}</span>\r\n </span>\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n <div\r\n #menu\r\n [id]=\"menuId\"\r\n class=\"ius-selectmenu\"\r\n role=\"listbox\"\r\n [attr.aria-multiselectable]=\"multiple || null\"\r\n [attr.data-size]=\"size !== 'medium' ? size : null\"\r\n [style.width.px]=\"menuWidth()\"\r\n >\r\n @if (searchable) {\r\n <div class=\"ius-selectmenu__search\">\r\n <span translate=\"no\" class=\"ius-icon\">search</span>\r\n <input\r\n #search\r\n type=\"text\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [attr.aria-label]=\"searchPlaceholder\"\r\n [value]=\"query()\"\r\n (input)=\"onSearch($event)\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ius-selectmenu__list ius-scroll ius-scroll--sm\"\r\n [style.max-height.px]=\"listMaxH\"\r\n >\r\n @if (visible().flat.length === 0) {\r\n <div class=\"ius-selectmenu__empty\">{{ emptyText }}</div>\r\n } @else {\r\n @for (g of visible().groups; track $index) {\r\n @if (g.label) {\r\n <div class=\"ius-selectmenu__group-label\">{{ g.label }}</div>\r\n }\r\n @for (item of g.items; track item.opt.value) {\r\n <ius-option-item\r\n [label]=\"item.opt.label\"\r\n [overline]=\"item.opt.overline\"\r\n [description]=\"item.opt.description\"\r\n [icon]=\"item.opt.icon\"\r\n [size]=\"size\"\r\n [value]=\"item.opt.value\"\r\n [selected]=\"isChosen(item.opt.value)\"\r\n [multi]=\"multiple\"\r\n [active]=\"item.flatIndex === activeIndex()\"\r\n [disabled]=\"item.opt.disabled || false\"\r\n (selectClicked)=\"handleSelect(item.opt)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n @if (creatable) {\r\n <!-- Pie \u00ABagregar opci\u00F3n\u00BB: campo propio (independiente de la b\u00FAsqueda) +\r\n `ius-text-button` con \u00EDcono `add`. El bot\u00F3n se compone, no se\r\n reimplementa; su interior es inalcanzable desde este SCSS\r\n (encapsulaci\u00F3n), por eso el `flex: 0 0 auto` del golden se aplica al\r\n envoltorio `.ius-selectmenu__create-action`, no al `.ius-txtbtn`. -->\r\n <div class=\"ius-selectmenu__create\">\r\n <div class=\"ius-selectmenu__create-field\">\r\n <input\r\n #createInput\r\n type=\"text\"\r\n [placeholder]=\"createPlaceholder\"\r\n [attr.aria-label]=\"createPlaceholder\"\r\n [value]=\"draft()\"\r\n (input)=\"onCreateInput($event)\"\r\n (keydown)=\"onCreateKeyDown($event)\"\r\n />\r\n </div>\r\n <span class=\"ius-selectmenu__create-action\">\r\n <ius-text-button\r\n prefixIcon=\"add\"\r\n [label]=\"createLabel\"\r\n [size]=\"createButtonSize\"\r\n [disabled]=\"createDisabled()\"\r\n (clicked)=\"addItem()\"\r\n />\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-primary);--_tf-placeholder: var(--ius-text-tertiary);--_tf-icon: var(--ius-text-secondary);--_tf-clear: var(--ius-neutral-7);--_tf-py: 9px;--_tf-px: 12px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-md);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);min-width:200px;width:100%;max-width:360px}:host(.ius-tf--compact){min-width:0;width:auto;max-width:none}.ius-tf__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary)}.ius-tf__required{width:5px;height:5px;border-radius:50%;background:var(--ius-danger-500);display:inline-block;margin-right:var(--ius-space-xxs)}.ius-tf__help-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-tf__help-icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-tf__colon{color:var(--ius-text-secondary)}.ius-tf__field{display:flex;align-items:center;gap:var(--ius-space-xxs);padding:var(--_tf-py) var(--_tf-px);background:var(--_tf-bg);border:1px solid var(--_tf-border);border-radius:var(--ius-radius-md);transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),border-color var(--ius-duration-fast) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-tf__field:hover,:host([data-force=hover]) .ius-tf__field{--_tf-bg: var(--ius-info-100);--_tf-border: transparent;--_tf-clear: var(--ius-primary-900)}:host([data-focused=true]) .ius-tf__field,:host([data-force=focused]) .ius-tf__field,.ius-tf__field:focus-within{--_tf-bg: var(--ius-info-100);--_tf-border: var(--ius-primary-500);--_tf-clear: var(--ius-primary-900);box-shadow:var(--ius-focus-ring)}:host([data-error=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{--_tf-bg: var(--ius-danger-100);--_tf-border: var(--ius-danger-700);--_tf-clear: var(--ius-danger-700);box-shadow:none}:host([data-error=true][data-focused=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{box-shadow:0 0 0 3px var(--ius-danger-200)}:host([data-disabled=true]) .ius-tf__field,:host([data-force=disabled]) .ius-tf__field{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-disabled);--_tf-placeholder: var(--ius-text-disabled);--_tf-icon: var(--ius-text-disabled);box-shadow:none}:host([data-disabled=true]) .ius-tf__label,:host([data-force=disabled]) .ius-tf__label{color:var(--ius-text-disabled)}:host([data-disabled=true]) .ius-tf__required,:host([data-force=disabled]) .ius-tf__required{background:var(--ius-neutral-5)}.ius-tf__prefix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}.ius-tf__clear{appearance:none;border:0;padding:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--_tf-clear);cursor:pointer;flex:0 0 auto}.ius-tf__clear:hover{color:var(--ius-neutral-9)}.ius-tf__clear .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1}:host([data-error=true]) .ius-tf__clear{color:var(--ius-danger-700)}:host([data-error=true]) .ius-tf__clear:hover{color:var(--ius-danger-800)}.ius-tf__hint{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);font-weight:var(--ius-fw-medium);font-style:italic;color:var(--ius-text-secondary);letter-spacing:.02em}:host([data-error=true]) .ius-tf__hint,:host([data-force=error]) .ius-tf__hint{color:var(--ius-danger-700)}:host([data-disabled=true]) .ius-tf__hint,:host([data-force=disabled]) .ius-tf__hint{color:var(--ius-text-disabled)}:host([data-size=small]){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}:host([data-size=large]){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}}.ius-tf__field{cursor:pointer;gap:var(--ius-space-xs)}.ius-tf__field{flex-wrap:nowrap;align-items:center}:host(:has(.ius-select__chips)) .ius-tf__field{flex-wrap:wrap;align-items:flex-start}.ius-select__value,.ius-tf__prefix,.ius-select__chevron,.ius-tf__clear{align-self:center}:host(:has(.ius-select__chips)) .ius-select__chevron,:host(:has(.ius-select__chips)) .ius-tf__clear{align-self:flex-start}:host([data-disabled=true]) .ius-tf__field{cursor:not-allowed}.ius-select__value{flex:1 1 auto;min-width:0;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-select__value[data-placeholder=true]{color:var(--_tf-placeholder)}.ius-select__chevron{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-select__chevron .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1;transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-select__chips{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs);flex:1 1 0;min-width:0}.ius-selectmenu{box-sizing:border-box;background:var(--ius-neutral-white);border-radius:var(--ius-radius-lg);box-shadow:var(--ius-elevation-300);padding:var(--ius-space-xs);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);animation:ius-selectmenu-in .12s var(--ius-ease-decelerate)}@keyframes ius-selectmenu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ius-selectmenu__search{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__search:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__search .ius-icon{font-size:var(--ius-icon-md);color:var(--ius-text-tertiary);flex:0 0 auto}.ius-selectmenu__search input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu[data-size=large] .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu[data-size=large] .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}@container style(--ius-control-size: large){.ius-selectmenu:not([data-size]) .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu:not([data-size]) .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}}.ius-selectmenu__list{overflow-y:auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-selectmenu__group-label{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);padding:var(--ius-space-xs) var(--ius-space-sm) var(--ius-space-xxs)}.ius-selectmenu__empty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-selectmenu__create{display:flex;align-items:center;gap:var(--ius-space-xs);border-top:1px solid var(--ius-stroke);margin-top:var(--ius-space-xxs);padding-top:var(--ius-space-xs)}.ius-selectmenu__create-field{flex:1 1 auto;min-width:0;display:flex;align-items:center;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__create-field:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__create-field input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu__create-action{display:inline-flex;align-items:center;flex:0 0 auto}.ius-selectmenu[data-size=large] .ius-selectmenu__create-field input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}\n"], dependencies: [{ kind: "component", type: OptionItemComponent, selector: "ius-option-item", inputs: ["label", "overline", "description", "icon", "selected", "multi", "active", "disabled", "size", "value", "state"], outputs: ["selectClicked"] }, { kind: "component", type: ChipComponent, selector: "ius-chip", inputs: ["label", "icon", "removable", "size", "disabled", "state", "removeLabel"], outputs: ["removed"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7858
+ ], viewQueries: [{ propertyName: "field", first: true, predicate: ["field"], descendants: true, isSignal: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true, isSignal: true }, { propertyName: "search", first: true, predicate: ["search"], descendants: true, isSignal: true }, { propertyName: "createInput", first: true, predicate: ["createInput"], descendants: true, isSignal: true }, { propertyName: "menuTpl", first: true, predicate: ["menuTpl"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (label != null) {\r\n <label [for]=\"baseId\" class=\"ius-tf__label\">\r\n @if (required) {\r\n <span class=\"ius-tf__required\" aria-hidden=\"true\"></span>\r\n }\r\n <span>{{ label }}</span>\r\n @if (showIconHelp) {\r\n <!-- El golden envuelve el \u00EDcono en <Popover placement=\"top\" trigger=\"hover\">\r\n (ambos son los defaults de `ius-popover`) \u2014 mismo patr\u00F3n que TextField. -->\r\n <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"iconHelpEmpty\"\r\n >\r\n <span\r\n class=\"ius-tf__help-icon\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n aria-label=\"Ayuda\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">help</span>\r\n </span>\r\n </ius-popover>\r\n }\r\n <span class=\"ius-tf__colon\">:</span>\r\n </label>\r\n}\r\n\r\n<div\r\n #field\r\n [id]=\"baseId\"\r\n class=\"ius-tf__field\"\r\n role=\"combobox\"\r\n [attr.aria-label]=\"label == null ? ariaLabel : null\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-controls]=\"menuId\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"isError() || null\"\r\n (click)=\"toggleOpen()\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n>\r\n @if (prefixIcon) {\r\n <span class=\"ius-tf__prefix\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ prefixIcon }}</span>\r\n </span>\r\n }\r\n\r\n @if (multiple && hasValue()) {\r\n <div class=\"ius-select__chips\">\r\n @for (val of valueArray(); track val) {\r\n <ius-chip\r\n [removable]=\"!isDisabled()\"\r\n [size]=\"chipSize\"\r\n [label]=\"labelFor(val)\"\r\n [disabled]=\"isDisabled()\"\r\n (removed)=\"removeChip(val)\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n <span class=\"ius-select__value\" [attr.data-placeholder]=\"!hasValue() || null\">\r\n {{ hasValue() ? labelFor(singleValue()!) : placeholder }}\r\n </span>\r\n }\r\n\r\n <!--\r\n Espejo de `clearReserved` del golden: el bot\u00F3n entra en el flujo solo si el\r\n campo es \"clearable-capable\" (showClear !== false y habilitado). Dentro de\r\n ese caso el slot S\u00CD queda reservado con `visibility`, para que el chevron no\r\n se desplace al aparecer/quitar el valor (auditor\u00EDa 2026-07-24). Con\r\n `showClear=false` o `disabled` desaparece del flujo, como el golden.\r\n -->\r\n @if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n aria-label=\"Limpiar campo\"\r\n tabindex=\"-1\"\r\n [style.visibility]=\"showClearComputed ? 'visible' : 'hidden'\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n\r\n <span class=\"ius-select__chevron\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ isOpen() ? 'expand_less' : 'expand_more' }}</span>\r\n </span>\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n <div\r\n #menu\r\n [id]=\"menuId\"\r\n class=\"ius-selectmenu\"\r\n role=\"listbox\"\r\n [attr.aria-multiselectable]=\"multiple || null\"\r\n [attr.data-size]=\"size !== 'medium' ? size : null\"\r\n [style.width.px]=\"menuWidth()\"\r\n >\r\n @if (searchable) {\r\n <div class=\"ius-selectmenu__search\">\r\n <span translate=\"no\" class=\"ius-icon\">search</span>\r\n <input\r\n #search\r\n type=\"text\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [attr.aria-label]=\"searchPlaceholder\"\r\n [value]=\"query()\"\r\n (input)=\"onSearch($event)\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ius-selectmenu__list ius-scroll ius-scroll--sm\"\r\n [style.max-height.px]=\"listMaxH\"\r\n >\r\n @if (visible().flat.length === 0) {\r\n <div class=\"ius-selectmenu__empty\">{{ emptyText }}</div>\r\n } @else {\r\n @for (g of visible().groups; track $index) {\r\n @if (g.label) {\r\n <div class=\"ius-selectmenu__group-label\">{{ g.label }}</div>\r\n }\r\n @for (item of g.items; track item.opt.value) {\r\n <ius-option-item\r\n [label]=\"item.opt.label\"\r\n [overline]=\"item.opt.overline\"\r\n [description]=\"item.opt.description\"\r\n [icon]=\"item.opt.icon\"\r\n [size]=\"size\"\r\n [value]=\"item.opt.value\"\r\n [selected]=\"isChosen(item.opt.value)\"\r\n [multi]=\"multiple\"\r\n [active]=\"item.flatIndex === activeIndex()\"\r\n [disabled]=\"item.opt.disabled || false\"\r\n (selectClicked)=\"handleSelect(item.opt)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n @if (creatable) {\r\n <!-- Pie \u00ABagregar opci\u00F3n\u00BB: campo propio (independiente de la b\u00FAsqueda) +\r\n `ius-text-button` con \u00EDcono `add`. El bot\u00F3n se compone, no se\r\n reimplementa; su interior es inalcanzable desde este SCSS\r\n (encapsulaci\u00F3n), por eso el `flex: 0 0 auto` del golden se aplica al\r\n envoltorio `.ius-selectmenu__create-action`, no al `.ius-txtbtn`. -->\r\n <div class=\"ius-selectmenu__create\">\r\n <div class=\"ius-selectmenu__create-field\">\r\n <input\r\n #createInput\r\n type=\"text\"\r\n [placeholder]=\"createPlaceholder\"\r\n [attr.aria-label]=\"createPlaceholder\"\r\n [value]=\"draft()\"\r\n (input)=\"onCreateInput($event)\"\r\n (keydown)=\"onCreateKeyDown($event)\"\r\n />\r\n </div>\r\n <span class=\"ius-selectmenu__create-action\">\r\n <ius-text-button\r\n prefixIcon=\"add\"\r\n [label]=\"createLabel\"\r\n [size]=\"createButtonSize\"\r\n [disabled]=\"createDisabled()\"\r\n (clicked)=\"addItem()\"\r\n />\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-primary);--_tf-placeholder: var(--ius-text-tertiary);--_tf-icon: var(--ius-text-secondary);--_tf-clear: var(--ius-neutral-7);--_tf-py: 9px;--_tf-px: 12px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-md);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);min-width:200px;width:100%;max-width:360px}:host(.ius-tf--compact){min-width:0;width:auto;max-width:none}.ius-tf__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary)}.ius-tf__required{width:5px;height:5px;border-radius:50%;background:var(--ius-danger-500);display:inline-block;margin-right:var(--ius-space-xxs)}.ius-tf__help-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-tf__help-icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-tf__colon{color:var(--ius-text-secondary)}.ius-tf__field{display:flex;align-items:center;gap:var(--ius-space-xxs);padding:var(--_tf-py) var(--_tf-px);background:var(--_tf-bg);border:1px solid var(--_tf-border);border-radius:var(--ius-radius-md);transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),border-color var(--ius-duration-fast) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-tf__field:hover,:host([data-force=hover]) .ius-tf__field{--_tf-bg: var(--ius-info-100);--_tf-border: transparent;--_tf-clear: var(--ius-primary-900)}:host([data-focused=true]) .ius-tf__field,:host([data-force=focused]) .ius-tf__field,.ius-tf__field:focus-within{--_tf-bg: var(--ius-info-100);--_tf-border: var(--ius-primary-500);--_tf-clear: var(--ius-primary-900);box-shadow:var(--ius-focus-ring)}:host([data-error=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{--_tf-bg: var(--ius-danger-100);--_tf-border: var(--ius-danger-700);--_tf-clear: var(--ius-danger-700);box-shadow:none}:host([data-error=true][data-focused=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{box-shadow:0 0 0 3px var(--ius-danger-200)}:host([data-disabled=true]) .ius-tf__field,:host([data-force=disabled]) .ius-tf__field{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-disabled);--_tf-placeholder: var(--ius-text-disabled);--_tf-icon: var(--ius-text-disabled);box-shadow:none}:host([data-disabled=true]) .ius-tf__label,:host([data-force=disabled]) .ius-tf__label{color:var(--ius-text-disabled)}:host([data-disabled=true]) .ius-tf__required,:host([data-force=disabled]) .ius-tf__required{background:var(--ius-neutral-5)}.ius-tf__prefix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}.ius-tf__clear{appearance:none;border:0;padding:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--_tf-clear);cursor:pointer;flex:0 0 auto}.ius-tf__clear:hover{color:var(--ius-neutral-9)}.ius-tf__clear .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1}:host([data-error=true]) .ius-tf__clear{color:var(--ius-danger-700)}:host([data-error=true]) .ius-tf__clear:hover{color:var(--ius-danger-800)}.ius-tf__hint{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);font-weight:var(--ius-fw-medium);font-style:italic;color:var(--ius-text-secondary);letter-spacing:.02em}:host([data-error=true]) .ius-tf__hint,:host([data-force=error]) .ius-tf__hint{color:var(--ius-danger-700)}:host([data-disabled=true]) .ius-tf__hint,:host([data-force=disabled]) .ius-tf__hint{color:var(--ius-text-disabled)}:host([data-size=small]){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}:host([data-size=large]){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}}.ius-tf__field{cursor:pointer;gap:var(--ius-space-xs)}.ius-tf__field{flex-wrap:nowrap;align-items:center}:host(:has(.ius-select__chips)) .ius-tf__field{flex-wrap:wrap;align-items:flex-start}.ius-select__value,.ius-tf__prefix,.ius-select__chevron,.ius-tf__clear{align-self:center}:host(:has(.ius-select__chips)) .ius-select__chevron,:host(:has(.ius-select__chips)) .ius-tf__clear{align-self:flex-start}:host([data-disabled=true]) .ius-tf__field{cursor:not-allowed}.ius-select__value{flex:1 1 auto;min-width:0;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-select__value[data-placeholder=true]{color:var(--_tf-placeholder)}.ius-select__chevron{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-select__chevron .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1;transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-select__chips{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs);flex:1 1 0;min-width:0}.ius-selectmenu{box-sizing:border-box;background:var(--ius-neutral-white);border-radius:var(--ius-radius-lg);box-shadow:var(--ius-elevation-300);padding:var(--ius-space-xs);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);animation:ius-selectmenu-in .12s var(--ius-ease-decelerate)}@keyframes ius-selectmenu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ius-selectmenu__search{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__search:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__search .ius-icon{font-size:var(--ius-icon-md);color:var(--ius-text-tertiary);flex:0 0 auto}.ius-selectmenu__search input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu[data-size=large] .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu[data-size=large] .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}@container style(--ius-control-size: large){.ius-selectmenu:not([data-size]) .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu:not([data-size]) .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}}.ius-selectmenu__list{overflow-y:auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-selectmenu__group-label{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);padding:var(--ius-space-xs) var(--ius-space-sm) var(--ius-space-xxs)}.ius-selectmenu__empty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-selectmenu__create{display:flex;align-items:center;gap:var(--ius-space-xs);border-top:1px solid var(--ius-stroke);margin-top:var(--ius-space-xxs);padding-top:var(--ius-space-xs)}.ius-selectmenu__create-field{flex:1 1 auto;min-width:0;display:flex;align-items:center;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__create-field:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__create-field input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu__create-action{display:inline-flex;align-items:center;flex:0 0 auto}.ius-selectmenu[data-size=large] .ius-selectmenu__create-field input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}\n"], dependencies: [{ kind: "component", type: OptionItemComponent, selector: "ius-option-item", inputs: ["label", "overline", "description", "icon", "selected", "multi", "active", "disabled", "size", "value", "state"], outputs: ["selectClicked"] }, { kind: "component", type: ChipComponent, selector: "ius-chip", inputs: ["label", "icon", "removable", "size", "disabled", "state", "removeLabel"], outputs: ["removed"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7815
7859
  }
7816
7860
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SelectComponent, decorators: [{
7817
7861
  type: Component,
@@ -7829,7 +7873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
7829
7873
  '[attr.data-error]': 'isError() || null',
7830
7874
  '[attr.data-disabled]': 'isDisabled() || null',
7831
7875
  '[attr.data-force]': 'stateInput() || null',
7832
- }, template: "@if (label != null) {\r\n <label [for]=\"baseId\" class=\"ius-tf__label\">\r\n @if (required) {\r\n <span class=\"ius-tf__required\" aria-hidden=\"true\"></span>\r\n }\r\n <span>{{ label }}</span>\r\n @if (showIconHelp) {\r\n <!-- El golden envuelve el \u00EDcono en <Popover placement=\"top\" trigger=\"hover\">\r\n (ambos son los defaults de `ius-popover`) \u2014 mismo patr\u00F3n que TextField. -->\r\n <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"iconHelpEmpty\"\r\n >\r\n <span\r\n class=\"ius-tf__help-icon\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n aria-label=\"Ayuda\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">help</span>\r\n </span>\r\n </ius-popover>\r\n }\r\n <span class=\"ius-tf__colon\">:</span>\r\n </label>\r\n}\r\n\r\n<div\r\n #field\r\n [id]=\"baseId\"\r\n class=\"ius-tf__field\"\r\n role=\"combobox\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-controls]=\"menuId\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"isError() || null\"\r\n (click)=\"toggleOpen()\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n>\r\n @if (prefixIcon) {\r\n <span class=\"ius-tf__prefix\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ prefixIcon }}</span>\r\n </span>\r\n }\r\n\r\n @if (multiple && hasValue()) {\r\n <div class=\"ius-select__chips\">\r\n @for (val of valueArray(); track val) {\r\n <ius-chip\r\n [removable]=\"!isDisabled()\"\r\n [size]=\"chipSize\"\r\n [label]=\"labelFor(val)\"\r\n [disabled]=\"isDisabled()\"\r\n (removed)=\"removeChip(val)\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n <span class=\"ius-select__value\" [attr.data-placeholder]=\"!hasValue() || null\">\r\n {{ hasValue() ? labelFor(singleValue()!) : placeholder }}\r\n </span>\r\n }\r\n\r\n <!--\r\n Espejo de `clearReserved` del golden: el bot\u00F3n entra en el flujo solo si el\r\n campo es \"clearable-capable\" (showClear !== false y habilitado). Dentro de\r\n ese caso el slot S\u00CD queda reservado con `visibility`, para que el chevron no\r\n se desplace al aparecer/quitar el valor (auditor\u00EDa 2026-07-24). Con\r\n `showClear=false` o `disabled` desaparece del flujo, como el golden.\r\n -->\r\n @if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n aria-label=\"Limpiar campo\"\r\n tabindex=\"-1\"\r\n [style.visibility]=\"showClearComputed ? 'visible' : 'hidden'\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n\r\n <span class=\"ius-select__chevron\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ isOpen() ? 'expand_less' : 'expand_more' }}</span>\r\n </span>\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n <div\r\n #menu\r\n [id]=\"menuId\"\r\n class=\"ius-selectmenu\"\r\n role=\"listbox\"\r\n [attr.aria-multiselectable]=\"multiple || null\"\r\n [attr.data-size]=\"size !== 'medium' ? size : null\"\r\n [style.width.px]=\"menuWidth()\"\r\n >\r\n @if (searchable) {\r\n <div class=\"ius-selectmenu__search\">\r\n <span translate=\"no\" class=\"ius-icon\">search</span>\r\n <input\r\n #search\r\n type=\"text\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [attr.aria-label]=\"searchPlaceholder\"\r\n [value]=\"query()\"\r\n (input)=\"onSearch($event)\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ius-selectmenu__list ius-scroll ius-scroll--sm\"\r\n [style.max-height.px]=\"listMaxH\"\r\n >\r\n @if (visible().flat.length === 0) {\r\n <div class=\"ius-selectmenu__empty\">{{ emptyText }}</div>\r\n } @else {\r\n @for (g of visible().groups; track $index) {\r\n @if (g.label) {\r\n <div class=\"ius-selectmenu__group-label\">{{ g.label }}</div>\r\n }\r\n @for (item of g.items; track item.opt.value) {\r\n <ius-option-item\r\n [label]=\"item.opt.label\"\r\n [overline]=\"item.opt.overline\"\r\n [description]=\"item.opt.description\"\r\n [icon]=\"item.opt.icon\"\r\n [size]=\"size\"\r\n [value]=\"item.opt.value\"\r\n [selected]=\"isChosen(item.opt.value)\"\r\n [multi]=\"multiple\"\r\n [active]=\"item.flatIndex === activeIndex()\"\r\n [disabled]=\"item.opt.disabled || false\"\r\n (selectClicked)=\"handleSelect(item.opt)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n @if (creatable) {\r\n <!-- Pie \u00ABagregar opci\u00F3n\u00BB: campo propio (independiente de la b\u00FAsqueda) +\r\n `ius-text-button` con \u00EDcono `add`. El bot\u00F3n se compone, no se\r\n reimplementa; su interior es inalcanzable desde este SCSS\r\n (encapsulaci\u00F3n), por eso el `flex: 0 0 auto` del golden se aplica al\r\n envoltorio `.ius-selectmenu__create-action`, no al `.ius-txtbtn`. -->\r\n <div class=\"ius-selectmenu__create\">\r\n <div class=\"ius-selectmenu__create-field\">\r\n <input\r\n #createInput\r\n type=\"text\"\r\n [placeholder]=\"createPlaceholder\"\r\n [attr.aria-label]=\"createPlaceholder\"\r\n [value]=\"draft()\"\r\n (input)=\"onCreateInput($event)\"\r\n (keydown)=\"onCreateKeyDown($event)\"\r\n />\r\n </div>\r\n <span class=\"ius-selectmenu__create-action\">\r\n <ius-text-button\r\n prefixIcon=\"add\"\r\n [label]=\"createLabel\"\r\n [size]=\"createButtonSize\"\r\n [disabled]=\"createDisabled()\"\r\n (clicked)=\"addItem()\"\r\n />\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-primary);--_tf-placeholder: var(--ius-text-tertiary);--_tf-icon: var(--ius-text-secondary);--_tf-clear: var(--ius-neutral-7);--_tf-py: 9px;--_tf-px: 12px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-md);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);min-width:200px;width:100%;max-width:360px}:host(.ius-tf--compact){min-width:0;width:auto;max-width:none}.ius-tf__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary)}.ius-tf__required{width:5px;height:5px;border-radius:50%;background:var(--ius-danger-500);display:inline-block;margin-right:var(--ius-space-xxs)}.ius-tf__help-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-tf__help-icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-tf__colon{color:var(--ius-text-secondary)}.ius-tf__field{display:flex;align-items:center;gap:var(--ius-space-xxs);padding:var(--_tf-py) var(--_tf-px);background:var(--_tf-bg);border:1px solid var(--_tf-border);border-radius:var(--ius-radius-md);transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),border-color var(--ius-duration-fast) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-tf__field:hover,:host([data-force=hover]) .ius-tf__field{--_tf-bg: var(--ius-info-100);--_tf-border: transparent;--_tf-clear: var(--ius-primary-900)}:host([data-focused=true]) .ius-tf__field,:host([data-force=focused]) .ius-tf__field,.ius-tf__field:focus-within{--_tf-bg: var(--ius-info-100);--_tf-border: var(--ius-primary-500);--_tf-clear: var(--ius-primary-900);box-shadow:var(--ius-focus-ring)}:host([data-error=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{--_tf-bg: var(--ius-danger-100);--_tf-border: var(--ius-danger-700);--_tf-clear: var(--ius-danger-700);box-shadow:none}:host([data-error=true][data-focused=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{box-shadow:0 0 0 3px var(--ius-danger-200)}:host([data-disabled=true]) .ius-tf__field,:host([data-force=disabled]) .ius-tf__field{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-disabled);--_tf-placeholder: var(--ius-text-disabled);--_tf-icon: var(--ius-text-disabled);box-shadow:none}:host([data-disabled=true]) .ius-tf__label,:host([data-force=disabled]) .ius-tf__label{color:var(--ius-text-disabled)}:host([data-disabled=true]) .ius-tf__required,:host([data-force=disabled]) .ius-tf__required{background:var(--ius-neutral-5)}.ius-tf__prefix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}.ius-tf__clear{appearance:none;border:0;padding:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--_tf-clear);cursor:pointer;flex:0 0 auto}.ius-tf__clear:hover{color:var(--ius-neutral-9)}.ius-tf__clear .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1}:host([data-error=true]) .ius-tf__clear{color:var(--ius-danger-700)}:host([data-error=true]) .ius-tf__clear:hover{color:var(--ius-danger-800)}.ius-tf__hint{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);font-weight:var(--ius-fw-medium);font-style:italic;color:var(--ius-text-secondary);letter-spacing:.02em}:host([data-error=true]) .ius-tf__hint,:host([data-force=error]) .ius-tf__hint{color:var(--ius-danger-700)}:host([data-disabled=true]) .ius-tf__hint,:host([data-force=disabled]) .ius-tf__hint{color:var(--ius-text-disabled)}:host([data-size=small]){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}:host([data-size=large]){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}}.ius-tf__field{cursor:pointer;gap:var(--ius-space-xs)}.ius-tf__field{flex-wrap:nowrap;align-items:center}:host(:has(.ius-select__chips)) .ius-tf__field{flex-wrap:wrap;align-items:flex-start}.ius-select__value,.ius-tf__prefix,.ius-select__chevron,.ius-tf__clear{align-self:center}:host(:has(.ius-select__chips)) .ius-select__chevron,:host(:has(.ius-select__chips)) .ius-tf__clear{align-self:flex-start}:host([data-disabled=true]) .ius-tf__field{cursor:not-allowed}.ius-select__value{flex:1 1 auto;min-width:0;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-select__value[data-placeholder=true]{color:var(--_tf-placeholder)}.ius-select__chevron{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-select__chevron .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1;transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-select__chips{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs);flex:1 1 0;min-width:0}.ius-selectmenu{box-sizing:border-box;background:var(--ius-neutral-white);border-radius:var(--ius-radius-lg);box-shadow:var(--ius-elevation-300);padding:var(--ius-space-xs);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);animation:ius-selectmenu-in .12s var(--ius-ease-decelerate)}@keyframes ius-selectmenu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ius-selectmenu__search{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__search:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__search .ius-icon{font-size:var(--ius-icon-md);color:var(--ius-text-tertiary);flex:0 0 auto}.ius-selectmenu__search input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu[data-size=large] .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu[data-size=large] .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}@container style(--ius-control-size: large){.ius-selectmenu:not([data-size]) .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu:not([data-size]) .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}}.ius-selectmenu__list{overflow-y:auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-selectmenu__group-label{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);padding:var(--ius-space-xs) var(--ius-space-sm) var(--ius-space-xxs)}.ius-selectmenu__empty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-selectmenu__create{display:flex;align-items:center;gap:var(--ius-space-xs);border-top:1px solid var(--ius-stroke);margin-top:var(--ius-space-xxs);padding-top:var(--ius-space-xs)}.ius-selectmenu__create-field{flex:1 1 auto;min-width:0;display:flex;align-items:center;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__create-field:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__create-field input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu__create-action{display:inline-flex;align-items:center;flex:0 0 auto}.ius-selectmenu[data-size=large] .ius-selectmenu__create-field input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}\n"] }]
7876
+ }, template: "@if (label != null) {\r\n <label [for]=\"baseId\" class=\"ius-tf__label\">\r\n @if (required) {\r\n <span class=\"ius-tf__required\" aria-hidden=\"true\"></span>\r\n }\r\n <span>{{ label }}</span>\r\n @if (showIconHelp) {\r\n <!-- El golden envuelve el \u00EDcono en <Popover placement=\"top\" trigger=\"hover\">\r\n (ambos son los defaults de `ius-popover`) \u2014 mismo patr\u00F3n que TextField. -->\r\n <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"iconHelpEmpty\"\r\n >\r\n <span\r\n class=\"ius-tf__help-icon\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n aria-label=\"Ayuda\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">help</span>\r\n </span>\r\n </ius-popover>\r\n }\r\n <span class=\"ius-tf__colon\">:</span>\r\n </label>\r\n}\r\n\r\n<div\r\n #field\r\n [id]=\"baseId\"\r\n class=\"ius-tf__field\"\r\n role=\"combobox\"\r\n [attr.aria-label]=\"label == null ? ariaLabel : null\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-controls]=\"menuId\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"isError() || null\"\r\n (click)=\"toggleOpen()\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n>\r\n @if (prefixIcon) {\r\n <span class=\"ius-tf__prefix\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ prefixIcon }}</span>\r\n </span>\r\n }\r\n\r\n @if (multiple && hasValue()) {\r\n <div class=\"ius-select__chips\">\r\n @for (val of valueArray(); track val) {\r\n <ius-chip\r\n [removable]=\"!isDisabled()\"\r\n [size]=\"chipSize\"\r\n [label]=\"labelFor(val)\"\r\n [disabled]=\"isDisabled()\"\r\n (removed)=\"removeChip(val)\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n <span class=\"ius-select__value\" [attr.data-placeholder]=\"!hasValue() || null\">\r\n {{ hasValue() ? labelFor(singleValue()!) : placeholder }}\r\n </span>\r\n }\r\n\r\n <!--\r\n Espejo de `clearReserved` del golden: el bot\u00F3n entra en el flujo solo si el\r\n campo es \"clearable-capable\" (showClear !== false y habilitado). Dentro de\r\n ese caso el slot S\u00CD queda reservado con `visibility`, para que el chevron no\r\n se desplace al aparecer/quitar el valor (auditor\u00EDa 2026-07-24). Con\r\n `showClear=false` o `disabled` desaparece del flujo, como el golden.\r\n -->\r\n @if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n aria-label=\"Limpiar campo\"\r\n tabindex=\"-1\"\r\n [style.visibility]=\"showClearComputed ? 'visible' : 'hidden'\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n\r\n <span class=\"ius-select__chevron\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ isOpen() ? 'expand_less' : 'expand_more' }}</span>\r\n </span>\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n <div\r\n #menu\r\n [id]=\"menuId\"\r\n class=\"ius-selectmenu\"\r\n role=\"listbox\"\r\n [attr.aria-multiselectable]=\"multiple || null\"\r\n [attr.data-size]=\"size !== 'medium' ? size : null\"\r\n [style.width.px]=\"menuWidth()\"\r\n >\r\n @if (searchable) {\r\n <div class=\"ius-selectmenu__search\">\r\n <span translate=\"no\" class=\"ius-icon\">search</span>\r\n <input\r\n #search\r\n type=\"text\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [attr.aria-label]=\"searchPlaceholder\"\r\n [value]=\"query()\"\r\n (input)=\"onSearch($event)\"\r\n (keydown)=\"onTriggerKeyDown($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ius-selectmenu__list ius-scroll ius-scroll--sm\"\r\n [style.max-height.px]=\"listMaxH\"\r\n >\r\n @if (visible().flat.length === 0) {\r\n <div class=\"ius-selectmenu__empty\">{{ emptyText }}</div>\r\n } @else {\r\n @for (g of visible().groups; track $index) {\r\n @if (g.label) {\r\n <div class=\"ius-selectmenu__group-label\">{{ g.label }}</div>\r\n }\r\n @for (item of g.items; track item.opt.value) {\r\n <ius-option-item\r\n [label]=\"item.opt.label\"\r\n [overline]=\"item.opt.overline\"\r\n [description]=\"item.opt.description\"\r\n [icon]=\"item.opt.icon\"\r\n [size]=\"size\"\r\n [value]=\"item.opt.value\"\r\n [selected]=\"isChosen(item.opt.value)\"\r\n [multi]=\"multiple\"\r\n [active]=\"item.flatIndex === activeIndex()\"\r\n [disabled]=\"item.opt.disabled || false\"\r\n (selectClicked)=\"handleSelect(item.opt)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n @if (creatable) {\r\n <!-- Pie \u00ABagregar opci\u00F3n\u00BB: campo propio (independiente de la b\u00FAsqueda) +\r\n `ius-text-button` con \u00EDcono `add`. El bot\u00F3n se compone, no se\r\n reimplementa; su interior es inalcanzable desde este SCSS\r\n (encapsulaci\u00F3n), por eso el `flex: 0 0 auto` del golden se aplica al\r\n envoltorio `.ius-selectmenu__create-action`, no al `.ius-txtbtn`. -->\r\n <div class=\"ius-selectmenu__create\">\r\n <div class=\"ius-selectmenu__create-field\">\r\n <input\r\n #createInput\r\n type=\"text\"\r\n [placeholder]=\"createPlaceholder\"\r\n [attr.aria-label]=\"createPlaceholder\"\r\n [value]=\"draft()\"\r\n (input)=\"onCreateInput($event)\"\r\n (keydown)=\"onCreateKeyDown($event)\"\r\n />\r\n </div>\r\n <span class=\"ius-selectmenu__create-action\">\r\n <ius-text-button\r\n prefixIcon=\"add\"\r\n [label]=\"createLabel\"\r\n [size]=\"createButtonSize\"\r\n [disabled]=\"createDisabled()\"\r\n (clicked)=\"addItem()\"\r\n />\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-primary);--_tf-placeholder: var(--ius-text-tertiary);--_tf-icon: var(--ius-text-secondary);--_tf-clear: var(--ius-neutral-7);--_tf-py: 9px;--_tf-px: 12px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-md);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);min-width:200px;width:100%;max-width:360px}:host(.ius-tf--compact){min-width:0;width:auto;max-width:none}.ius-tf__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary)}.ius-tf__required{width:5px;height:5px;border-radius:50%;background:var(--ius-danger-500);display:inline-block;margin-right:var(--ius-space-xxs)}.ius-tf__help-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-tf__help-icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-tf__colon{color:var(--ius-text-secondary)}.ius-tf__field{display:flex;align-items:center;gap:var(--ius-space-xxs);padding:var(--_tf-py) var(--_tf-px);background:var(--_tf-bg);border:1px solid var(--_tf-border);border-radius:var(--ius-radius-md);transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),border-color var(--ius-duration-fast) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-tf__field:hover,:host([data-force=hover]) .ius-tf__field{--_tf-bg: var(--ius-info-100);--_tf-border: transparent;--_tf-clear: var(--ius-primary-900)}:host([data-focused=true]) .ius-tf__field,:host([data-force=focused]) .ius-tf__field,.ius-tf__field:focus-within{--_tf-bg: var(--ius-info-100);--_tf-border: var(--ius-primary-500);--_tf-clear: var(--ius-primary-900);box-shadow:var(--ius-focus-ring)}:host([data-error=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{--_tf-bg: var(--ius-danger-100);--_tf-border: var(--ius-danger-700);--_tf-clear: var(--ius-danger-700);box-shadow:none}:host([data-error=true][data-focused=true]) .ius-tf__field,:host([data-force=error]) .ius-tf__field{box-shadow:0 0 0 3px var(--ius-danger-200)}:host([data-disabled=true]) .ius-tf__field,:host([data-force=disabled]) .ius-tf__field{--_tf-bg: var(--ius-neutral-2);--_tf-border: transparent;--_tf-fg: var(--ius-text-disabled);--_tf-placeholder: var(--ius-text-disabled);--_tf-icon: var(--ius-text-disabled);box-shadow:none}:host([data-disabled=true]) .ius-tf__label,:host([data-force=disabled]) .ius-tf__label{color:var(--ius-text-disabled)}:host([data-disabled=true]) .ius-tf__required,:host([data-force=disabled]) .ius-tf__required{background:var(--ius-neutral-5)}.ius-tf__prefix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}.ius-tf__clear{appearance:none;border:0;padding:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--_tf-clear);cursor:pointer;flex:0 0 auto}.ius-tf__clear:hover{color:var(--ius-neutral-9)}.ius-tf__clear .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1}:host([data-error=true]) .ius-tf__clear{color:var(--ius-danger-700)}:host([data-error=true]) .ius-tf__clear:hover{color:var(--ius-danger-800)}.ius-tf__hint{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);font-weight:var(--ius-fw-medium);font-style:italic;color:var(--ius-text-secondary);letter-spacing:.02em}:host([data-error=true]) .ius-tf__hint,:host([data-force=error]) .ius-tf__hint{color:var(--ius-danger-700)}:host([data-disabled=true]) .ius-tf__hint,:host([data-force=disabled]) .ius-tf__hint{color:var(--ius-text-disabled)}:host([data-size=small]){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}:host([data-size=large]){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_tf-py: 6px;--_tf-px: 10px;--_tf-fs: var(--ius-fs-base);--_tf-lh: var(--ius-lh-base);--_tf-icon-size: var(--ius-icon-sm)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_tf-py: 12px;--_tf-px: 14px;--_tf-fs: var(--ius-fs-lg);--_tf-lh: var(--ius-lh-lg);--_tf-icon-size: var(--ius-icon-lg)}}.ius-tf__field{cursor:pointer;gap:var(--ius-space-xs)}.ius-tf__field{flex-wrap:nowrap;align-items:center}:host(:has(.ius-select__chips)) .ius-tf__field{flex-wrap:wrap;align-items:flex-start}.ius-select__value,.ius-tf__prefix,.ius-select__chevron,.ius-tf__clear{align-self:center}:host(:has(.ius-select__chips)) .ius-select__chevron,:host(:has(.ius-select__chips)) .ius-tf__clear{align-self:flex-start}:host([data-disabled=true]) .ius-tf__field{cursor:not-allowed}.ius-select__value{flex:1 1 auto;min-width:0;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-select__value[data-placeholder=true]{color:var(--_tf-placeholder)}.ius-select__chevron{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-select__chevron .ius-icon{font-size:calc(var(--_tf-icon-size) + 2px);line-height:1;transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-select__chips{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs);flex:1 1 0;min-width:0}.ius-selectmenu{box-sizing:border-box;background:var(--ius-neutral-white);border-radius:var(--ius-radius-lg);box-shadow:var(--ius-elevation-300);padding:var(--ius-space-xs);display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);animation:ius-selectmenu-in .12s var(--ius-ease-decelerate)}@keyframes ius-selectmenu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ius-selectmenu__search{display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__search:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__search .ius-icon{font-size:var(--ius-icon-md);color:var(--ius-text-tertiary);flex:0 0 auto}.ius-selectmenu__search input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu[data-size=large] .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu[data-size=large] .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}@container style(--ius-control-size: large){.ius-selectmenu:not([data-size]) .ius-selectmenu__search{padding:var(--ius-space-xs) var(--ius-space-sm)}.ius-selectmenu:not([data-size]) .ius-selectmenu__search input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}}.ius-selectmenu__list{overflow-y:auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-selectmenu__group-label{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);padding:var(--ius-space-xs) var(--ius-space-sm) var(--ius-space-xxs)}.ius-selectmenu__empty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-selectmenu__create{display:flex;align-items:center;gap:var(--ius-space-xs);border-top:1px solid var(--ius-stroke);margin-top:var(--ius-space-xxs);padding-top:var(--ius-space-xs)}.ius-selectmenu__create-field{flex:1 1 auto;min-width:0;display:flex;align-items:center;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-neutral-2);border:1px solid transparent;border-radius:var(--ius-radius-md)}.ius-selectmenu__create-field:focus-within{background:var(--ius-info-100);border-color:var(--ius-primary-500);box-shadow:var(--ius-focus-ring)}.ius-selectmenu__create-field input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);min-width:0}.ius-selectmenu__create-action{display:inline-flex;align-items:center;flex:0 0 auto}.ius-selectmenu[data-size=large] .ius-selectmenu__create-field input{font-size:var(--ius-fs-lg);line-height:var(--ius-lh-lg)}\n"] }]
7833
7877
  }], propDecorators: { options: [{
7834
7878
  type: Input
7835
7879
  }], multiple: [{
@@ -7852,6 +7896,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
7852
7896
  type: Input
7853
7897
  }], label: [{
7854
7898
  type: Input
7899
+ }], ariaLabel: [{
7900
+ type: Input
7855
7901
  }], required: [{
7856
7902
  type: Input,
7857
7903
  args: [{ transform: booleanAttribute }]
@@ -8066,7 +8112,7 @@ class ListViewPaginationComponent {
8066
8112
  this.pageSizeChange.emit(n);
8067
8113
  }
8068
8114
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ListViewPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8069
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ListViewPaginationComponent, isStandalone: true, selector: "ius-list-view-pagination", inputs: { variant: "variant", page: "page", defaultPage: ["defaultPage", "defaultPage", numberAttribute], totalPages: "totalPages", total: "total", pageSize: ["pageSize", "pageSize", numberAttribute], pageSizeOptions: "pageSizeOptions", showCount: ["showCount", "showCount", booleanAttribute], countNoun: "countNoun", siblingCount: ["siblingCount", "siblingCount", numberAttribute], boundaryCount: ["boundaryCount", "boundaryCount", numberAttribute], size: "size", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, host: { attributes: { "role": "navigation", "aria-label": "Paginaci\u00F3n" }, properties: { "attr.data-variant": "variant", "attr.data-block": "showCountBlock ? 'true' : null", "style.--_pg-h": "preset.h + 'px'", "style.--_pg-icon": "preset.icon", "style.--_pg-fs": "preset.fs", "style.--_pg-gap": "preset.gap + 'px'" }, classAttribute: "ius-pagination" }, ngImport: i0, template: "<!-- Conteo X\u2013Y de Z (opcional, empuja el resto a la derecha v\u00EDa data-block) -->\r\n@if (showCountBlock) {\r\n <div class=\"ius-pagination__count\">\r\n @if (countRanged) {\r\n <b>{{ countFrom }}</b>\u2013<b>{{ countTo }}</b> de <b>{{ fmt(total!) }}</b> {{ countNoun }}\r\n } @else {\r\n <b>{{ fmt(total!) }}</b> {{ countNoun }}\r\n }\r\n </div>\r\n}\r\n\r\n<div class=\"ius-pagination__main\">\r\n <!-- Selector \"Filas por p\u00E1gina\" -->\r\n @if (pageSizeSelectOptions.length) {\r\n <div class=\"ius-pagination__sizer\">\r\n <span>Filas</span>\r\n <span class=\"ius-pagination__numsel\">\r\n <ius-select\r\n [options]=\"pageSizeSelectOptions\"\r\n [value]=\"pageSize\"\r\n (valueChange)=\"onSelectPageSize($event)\"\r\n compact\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n placeholder=\"\"\r\n />\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (variant === 'compact') {\r\n <div class=\"ius-pagination__nav\">\r\n <ius-icon-button\r\n icon=\"first_page\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"Primera p\u00E1gina\"\r\n [disabled]=\"disabled || atStart\"\r\n (clicked)=\"goTo(1)\"\r\n />\r\n <ius-icon-button\r\n icon=\"chevron_left\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina anterior\"\r\n [disabled]=\"disabled || atStart\"\r\n (clicked)=\"goTo(currentPage - 1)\"\r\n />\r\n <span class=\"ius-pagination__compact\">\r\n P\u00E1gina&nbsp;\r\n <span class=\"ius-pagination__numsel\">\r\n <ius-select\r\n [options]=\"pageOptions\"\r\n [value]=\"currentPage\"\r\n (valueChange)=\"onSelectPage($event)\"\r\n compact\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled || effTotalPages <= 1\"\r\n placeholder=\"\"\r\n />\r\n </span>\r\n <span>&nbsp;de&nbsp;</span>\r\n <b>{{ fmt(effTotalPages) }}</b>\r\n </span>\r\n <ius-icon-button\r\n icon=\"chevron_right\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina siguiente\"\r\n [disabled]=\"disabled || atEnd\"\r\n (clicked)=\"goTo(currentPage + 1)\"\r\n />\r\n <ius-icon-button\r\n icon=\"last_page\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"\u00DAltima p\u00E1gina\"\r\n [disabled]=\"disabled || atEnd\"\r\n (clicked)=\"goTo(effTotalPages)\"\r\n />\r\n </div>\r\n } @else {\r\n <div class=\"ius-pagination__nav\">\r\n <ius-icon-button\r\n icon=\"chevron_left\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina anterior\"\r\n [disabled]=\"disabled || atStart\"\r\n (clicked)=\"goTo(currentPage - 1)\"\r\n />\r\n <div class=\"ius-pagination__pages\">\r\n @for (row of pageRows; track $index) {\r\n @if (row.ellipsis) {\r\n <span class=\"ius-pagination__ellipsis\" aria-hidden=\"true\">\u2026</span>\r\n } @else {\r\n <ius-button\r\n class=\"ius-pagination__num\"\r\n [variant]=\"row.value === currentPage ? 'primary' : 'tertiary'\"\r\n [size]=\"size\"\r\n [label]=\"fmt(row.value!)\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-current]=\"row.value === currentPage ? 'page' : null\"\r\n (clicked)=\"goTo(row.value!)\"\r\n />\r\n }\r\n }\r\n </div>\r\n <ius-icon-button\r\n icon=\"chevron_right\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina siguiente\"\r\n [disabled]=\"disabled || atEnd\"\r\n (clicked)=\"goTo(currentPage + 1)\"\r\n />\r\n </div>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:var(--ius-space-lg);font-family:var(--ius-font-body);color:var(--ius-text-secondary)}:host([data-block=true]){width:100%;justify-content:space-between}.ius-pagination__count{font-size:var(--_pg-fs, 14px);line-height:1.4;color:var(--ius-text-secondary);white-space:nowrap}.ius-pagination__count b{font-weight:var(--ius-fw-medium);color:var(--ius-text-primary);font-variant-numeric:tabular-nums}.ius-pagination__main{display:flex;align-items:center;gap:var(--ius-space-lg)}.ius-pagination__nav,.ius-pagination__pages{display:flex;align-items:center;gap:var(--_pg-gap, var(--ius-space-xs))}.ius-pagination__nav ::ng-deep .ius-iconbtn{--_ib-size: var(--_pg-h, 40px);--_ib-icon: var(--_pg-icon, var(--ius-icon-md))}.ius-pagination__num ::ng-deep .ius-btn{min-width:var(--_pg-h, 40px);height:var(--_pg-h, 40px);padding-left:var(--ius-space-xs);padding-right:var(--ius-space-xs);font-variant-numeric:tabular-nums}.ius-pagination__ellipsis{min-width:var(--_pg-h, 40px);height:var(--_pg-h, 40px);display:inline-flex;align-items:flex-end;justify-content:center;padding-bottom:var(--ius-space-xs);color:var(--ius-text-tertiary);font-size:var(--_pg-fs, 14px);line-height:1}.ius-pagination__compact{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-size:var(--_pg-fs, 14px);color:var(--ius-text-secondary)}.ius-pagination__compact b{color:var(--ius-text-primary);font-weight:var(--ius-fw-medium);font-variant-numeric:tabular-nums}.ius-pagination__sizer{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-size:var(--_pg-fs, 14px);color:var(--ius-text-secondary);white-space:nowrap}.ius-pagination__numsel ::ng-deep .ius-tf__field{padding-right:var(--ius-space-xs);padding-left:var(--ius-space-sm);gap:var(--ius-space-xxs)}.ius-pagination__numsel ::ng-deep .ius-select__value{font-variant-numeric:tabular-nums;min-width:16px}.ius-pagination__numsel ::ng-deep .ius-select__chevron .ius-icon{font-size:var(--ius-icon-md)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "ariaCurrent", "action", "size"], outputs: ["clicked"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ListViewPaginationComponent, isStandalone: true, selector: "ius-list-view-pagination", inputs: { variant: "variant", page: "page", defaultPage: ["defaultPage", "defaultPage", numberAttribute], totalPages: "totalPages", total: "total", pageSize: ["pageSize", "pageSize", numberAttribute], pageSizeOptions: "pageSizeOptions", showCount: ["showCount", "showCount", booleanAttribute], countNoun: "countNoun", siblingCount: ["siblingCount", "siblingCount", numberAttribute], boundaryCount: ["boundaryCount", "boundaryCount", numberAttribute], size: "size", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, host: { attributes: { "role": "navigation", "aria-label": "Paginaci\u00F3n" }, properties: { "attr.data-variant": "variant", "attr.data-block": "showCountBlock ? 'true' : null", "style.--_pg-h": "preset.h + 'px'", "style.--_pg-icon": "preset.icon", "style.--_pg-fs": "preset.fs", "style.--_pg-gap": "preset.gap + 'px'" }, classAttribute: "ius-pagination" }, ngImport: i0, template: "<!-- Conteo X\u2013Y de Z (opcional, empuja el resto a la derecha v\u00EDa data-block) -->\r\n@if (showCountBlock) {\r\n <div class=\"ius-pagination__count\">\r\n @if (countRanged) {\r\n <b>{{ countFrom }}</b>\u2013<b>{{ countTo }}</b> de <b>{{ fmt(total!) }}</b> {{ countNoun }}\r\n } @else {\r\n <b>{{ fmt(total!) }}</b> {{ countNoun }}\r\n }\r\n </div>\r\n}\r\n\r\n<div class=\"ius-pagination__main\">\r\n <!-- Selector \"Filas por p\u00E1gina\" -->\r\n @if (pageSizeSelectOptions.length) {\r\n <div class=\"ius-pagination__sizer\">\r\n <span>Filas</span>\r\n <span class=\"ius-pagination__numsel\">\r\n <ius-select\r\n [options]=\"pageSizeSelectOptions\"\r\n [value]=\"pageSize\"\r\n (valueChange)=\"onSelectPageSize($event)\"\r\n compact\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n placeholder=\"\"\r\n />\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (variant === 'compact') {\r\n <div class=\"ius-pagination__nav\">\r\n <ius-icon-button\r\n icon=\"first_page\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"Primera p\u00E1gina\"\r\n [disabled]=\"disabled || atStart\"\r\n (clicked)=\"goTo(1)\"\r\n />\r\n <ius-icon-button\r\n icon=\"chevron_left\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina anterior\"\r\n [disabled]=\"disabled || atStart\"\r\n (clicked)=\"goTo(currentPage - 1)\"\r\n />\r\n <span class=\"ius-pagination__compact\">\r\n P\u00E1gina&nbsp;\r\n <span class=\"ius-pagination__numsel\">\r\n <ius-select\r\n [options]=\"pageOptions\"\r\n [value]=\"currentPage\"\r\n (valueChange)=\"onSelectPage($event)\"\r\n compact\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled || effTotalPages <= 1\"\r\n placeholder=\"\"\r\n />\r\n </span>\r\n <span>&nbsp;de&nbsp;</span>\r\n <b>{{ fmt(effTotalPages) }}</b>\r\n </span>\r\n <ius-icon-button\r\n icon=\"chevron_right\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina siguiente\"\r\n [disabled]=\"disabled || atEnd\"\r\n (clicked)=\"goTo(currentPage + 1)\"\r\n />\r\n <ius-icon-button\r\n icon=\"last_page\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"\u00DAltima p\u00E1gina\"\r\n [disabled]=\"disabled || atEnd\"\r\n (clicked)=\"goTo(effTotalPages)\"\r\n />\r\n </div>\r\n } @else {\r\n <div class=\"ius-pagination__nav\">\r\n <ius-icon-button\r\n icon=\"chevron_left\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina anterior\"\r\n [disabled]=\"disabled || atStart\"\r\n (clicked)=\"goTo(currentPage - 1)\"\r\n />\r\n <div class=\"ius-pagination__pages\">\r\n @for (row of pageRows; track $index) {\r\n @if (row.ellipsis) {\r\n <span class=\"ius-pagination__ellipsis\" aria-hidden=\"true\">\u2026</span>\r\n } @else {\r\n <ius-button\r\n class=\"ius-pagination__num\"\r\n [variant]=\"row.value === currentPage ? 'primary' : 'tertiary'\"\r\n [size]=\"size\"\r\n [label]=\"fmt(row.value!)\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-current]=\"row.value === currentPage ? 'page' : null\"\r\n (clicked)=\"goTo(row.value!)\"\r\n />\r\n }\r\n }\r\n </div>\r\n <ius-icon-button\r\n icon=\"chevron_right\"\r\n variant=\"tertiary\"\r\n ariaLabel=\"P\u00E1gina siguiente\"\r\n [disabled]=\"disabled || atEnd\"\r\n (clicked)=\"goTo(currentPage + 1)\"\r\n />\r\n </div>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:var(--ius-space-lg);font-family:var(--ius-font-body);color:var(--ius-text-secondary)}:host([data-block=true]){width:100%;justify-content:space-between}.ius-pagination__count{font-size:var(--_pg-fs, 14px);line-height:1.4;color:var(--ius-text-secondary);white-space:nowrap}.ius-pagination__count b{font-weight:var(--ius-fw-medium);color:var(--ius-text-primary);font-variant-numeric:tabular-nums}.ius-pagination__main{display:flex;align-items:center;gap:var(--ius-space-lg)}.ius-pagination__nav,.ius-pagination__pages{display:flex;align-items:center;gap:var(--_pg-gap, var(--ius-space-xs))}.ius-pagination__nav ::ng-deep .ius-iconbtn{--_ib-size: var(--_pg-h, 40px);--_ib-icon: var(--_pg-icon, var(--ius-icon-md))}.ius-pagination__num ::ng-deep .ius-btn{min-width:var(--_pg-h, 40px);height:var(--_pg-h, 40px);padding-left:var(--ius-space-xs);padding-right:var(--ius-space-xs);font-variant-numeric:tabular-nums}.ius-pagination__ellipsis{min-width:var(--_pg-h, 40px);height:var(--_pg-h, 40px);display:inline-flex;align-items:flex-end;justify-content:center;padding-bottom:var(--ius-space-xs);color:var(--ius-text-tertiary);font-size:var(--_pg-fs, 14px);line-height:1}.ius-pagination__compact{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-size:var(--_pg-fs, 14px);color:var(--ius-text-secondary)}.ius-pagination__compact b{color:var(--ius-text-primary);font-weight:var(--ius-fw-medium);font-variant-numeric:tabular-nums}.ius-pagination__sizer{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-size:var(--_pg-fs, 14px);color:var(--ius-text-secondary);white-space:nowrap}.ius-pagination__numsel ::ng-deep .ius-tf__field{padding-right:var(--ius-space-xs);padding-left:var(--ius-space-sm);gap:var(--ius-space-xxs)}.ius-pagination__numsel ::ng-deep .ius-select__value{font-variant-numeric:tabular-nums;min-width:16px}.ius-pagination__numsel ::ng-deep .ius-select__chevron .ius-icon{font-size:var(--ius-icon-md)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "ariaCurrent", "action", "size"], outputs: ["clicked"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "ariaLabel", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8070
8116
  }
8071
8117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ListViewPaginationComponent, decorators: [{
8072
8118
  type: Component,
@@ -8216,6 +8262,8 @@ class ListViewComponent {
8216
8262
  this.someSelected = false;
8217
8263
  /** Texto junto al checkbox de selección. */
8218
8264
  this.selectLabel = 'Seleccionar todo';
8265
+ /** Nombre accesible del checkbox en modo selección, donde no lleva texto visible. */
8266
+ this.selectAriaLabel = 'Seleccionar todo';
8219
8267
  /** Opciones de orden → dropdown de selección única en el header. */
8220
8268
  this.sortOptions = [];
8221
8269
  /** Acciones utilitarias de lista (refrescar, marcar leídos…) → IconButtons. */
@@ -8323,7 +8371,7 @@ class ListViewComponent {
8323
8371
  this.sortChange.emit(payload.value);
8324
8372
  }
8325
8373
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8326
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ListViewComponent, isStandalone: true, selector: "ius-list-view", inputs: { hideHeader: ["hideHeader", "hideHeader", booleanAttribute], selectable: ["selectable", "selectable", booleanAttribute], allSelected: ["allSelected", "allSelected", booleanAttribute], someSelected: ["someSelected", "someSelected", booleanAttribute], selectLabel: "selectLabel", sortOptions: "sortOptions", sortValue: "sortValue", actions: "actions", selectedCount: ["selectedCount", "selectedCount", numberAttribute], selectionActions: "selectionActions", gap: "gap", bodyPadding: "bodyPadding", bordered: ["bordered", "bordered", booleanAttribute], scrollTrackMargin: "scrollTrackMargin", fit: ["fit", "fit", booleanAttribute], fieldWidths: "fieldWidths", hideFooter: ["hideFooter", "hideFooter", booleanAttribute], total: "total", countNoun: "countNoun", pagination: ["pagination", "pagination", booleanAttribute], paginationVariant: "paginationVariant", page: "page", pageSize: ["pageSize", "pageSize", numberAttribute], pageSizeOptions: "pageSizeOptions", size: "size" }, outputs: { selectAll: "selectAll", sortChange: "sortChange", clearSelection: "clearSelection", pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, host: { properties: { "attr.data-size": "size !== 'medium' ? size : null", "attr.data-bordered": "bordered ? 'true' : 'false'", "attr.data-fit": "fit ? 'height' : null" }, classAttribute: "ius-listview" }, queries: [{ propertyName: "filtersRef", first: true, predicate: IusListViewFiltersDirective, descendants: true, isSignal: true }, { propertyName: "headerStartRef", first: true, predicate: IusListViewHeaderStartDirective, descendants: true, isSignal: true }, { propertyName: "headerEndRef", first: true, predicate: IusListViewHeaderEndDirective, descendants: true, isSignal: true }, { propertyName: "toolbarRef", first: true, predicate: IusListViewToolbarDirective, descendants: true, isSignal: true }, { propertyName: "footerStartRef", first: true, predicate: IusListViewFooterStartDirective, descendants: true, isSignal: true }, { propertyName: "footerEndRef", first: true, predicate: IusListViewFooterEndDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Header: modo selecci\u00F3n > toolbar > integrado -->\r\n@if (!hideHeader) {\r\n @if (inSelection) {\r\n <div class=\"ius-listview__header\" data-mode=\"selection\">\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n <span class=\"ius-listview__selcount\">{{ selCountText }}</span>\r\n @if (selectionActions.length) {\r\n <span class=\"ius-listview__divider\"></span>\r\n }\r\n <div class=\"ius-listview__actions\">\r\n @for (a of selectionActions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n <span class=\"ius-listview__spacer\"></span>\r\n @if (showClear) {\r\n <ius-text-button label=\"Limpiar\" (clicked)=\"clearSelection.emit()\" />\r\n }\r\n </div>\r\n } @else if (hasToolbar) {\r\n <div class=\"ius-listview__header ius-listview__header--toolbar\">\r\n <ng-content select=\"[iusListViewToolbar]\" />\r\n </div>\r\n } @else {\r\n <div class=\"ius-listview__header\">\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--grow\">\r\n <ng-content select=\"[iusListViewHeaderStart]\" />\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n [label]=\"selectLabel\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n @if (sortOptions.length) {\r\n <!-- orden: Dropdown de selecci\u00F3n \u00FAnica (trigger ghost swap_vert, tone neutral) -->\r\n <span class=\"ius-listview__sort\">\r\n <ius-dropdown\r\n selectable\r\n [items]=\"sortOptions\"\r\n [value]=\"sortValue\"\r\n [triggerLabel]=\"sortTriggerFallback\"\r\n triggerIcon=\"swap_vert\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Ordenar\"\r\n (valueChange)=\"onSortChange($event)\"\r\n />\r\n </span>\r\n }\r\n @if (hasFilters) {\r\n <div class=\"ius-listview__filters\"><ng-content select=\"[iusListViewFilters]\" /></div>\r\n }\r\n </div>\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--end\">\r\n @if (actions.length) {\r\n <div class=\"ius-listview__actions\">\r\n @for (a of actions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n <ng-content select=\"[iusListViewHeaderEnd]\" />\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n<!-- Body: \u00FAnico scroller; emite la rejilla --_lc-col-N a los ListCard proyectados -->\r\n<div\r\n class=\"ius-listview__body ius-scroll\"\r\n [style.gap]=\"px(gap)\"\r\n [style.padding]=\"px(bodyPadding)\"\r\n [style.--_sb-track-margin]=\"px(scrollTrackMargin)\"\r\n [style.--_lc-col-1]=\"colVar(0)\"\r\n [style.--_lc-col-2]=\"colVar(1)\"\r\n [style.--_lc-col-3]=\"colVar(2)\"\r\n [style.--_lc-col-4]=\"colVar(3)\"\r\n [style.--_lc-col-5]=\"colVar(4)\"\r\n [style.--_lc-col-6]=\"colVar(5)\"\r\n>\r\n <ng-content />\r\n</div>\r\n\r\n<!-- Footer: total a la izquierda + paginaci\u00F3n a la derecha -->\r\n@if (showFooter) {\r\n <div class=\"ius-listview__footer\">\r\n <ng-content select=\"[iusListViewFooterStart]\" />\r\n @if (countText) {\r\n <span class=\"ius-listview__count\">{{ countText }}</span>\r\n }\r\n @if (pagination) {\r\n <!-- FALLBACK Pagination: port interno (reemplazar por ius-pagination cuando exista) -->\r\n <ius-list-view-pagination\r\n [variant]=\"paginationVariant\"\r\n [total]=\"total\"\r\n [page]=\"page\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n size=\"small\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n (pageSizeChange)=\"pageSizeChange.emit($event)\"\r\n />\r\n }\r\n <ng-content select=\"[iusListViewFooterEnd]\" />\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-height:0;width:100%;height:100%;font-family:var(--ius-font-body);box-sizing:border-box}:host([data-bordered=true]){background:var(--ius-surface-card);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-lg);overflow:hidden}.ius-listview__header{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);flex-wrap:nowrap;padding:var(--ius-space-xs) var(--ius-space-md);min-height:40px}.ius-listview__hgroup{display:flex;align-items:center;gap:var(--ius-space-sm);min-width:0;flex-wrap:wrap}.ius-listview__hgroup--grow{flex:1 1 auto}.ius-listview__hgroup--end{flex:0 0 auto;flex-wrap:nowrap;justify-content:flex-end}:host([data-bordered=true]) .ius-listview__header{border-bottom:1px solid var(--ius-stroke)}.ius-listview__header--toolbar{flex-wrap:wrap;min-height:0}:host([data-size=small]) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}@container style(--ius-density: small){:host(:not([data-size])) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}}.ius-listview__spacer{flex:1 1 auto}.ius-listview__divider{align-self:stretch;width:1px;background:var(--ius-stroke);margin:var(--ius-space-xxs) var(--ius-space-xs)}.ius-listview__filters{display:flex;align-items:center;gap:var(--ius-space-xs);flex-wrap:wrap}.ius-listview__actions{display:flex;align-items:center;gap:var(--ius-space-xxs)}.ius-listview__selcount{font:var(--ius-fw-regular, 400) var(--ius-fs-base)/var(--ius-lh-base) var(--ius-font-body);color:var(--ius-primary-900);font-variant-numeric:tabular-nums}.ius-listview__body{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column}:host([data-fit=height]){flex:1 1 auto;min-height:0;overflow:hidden}.ius-listview__body ::ng-deep .ius-listcard:hover{z-index:2}.ius-listview__footer{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);padding:var(--ius-space-xs) var(--ius-space-md)}:host([data-bordered=true]) .ius-listview__footer{border-top:1px solid var(--ius-stroke)}.ius-listview__count{font:var(--ius-fw-regular, 400) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary);font-variant-numeric:tabular-nums}.ius-listview__footer .ius-pagination{margin-left:auto;flex:0 0 auto}.ius-listview__sort{display:inline-flex}\n"], dependencies: [{ kind: "component", type: CheckboxComponent, selector: "ius-checkbox", inputs: ["label", "labelPosition", "showIconHelp", "iconHelpTitle", "iconHelpContent", "name", "value", "ariaLabel", "size", "checked", "defaultChecked", "indeterminate", "disabled"], outputs: ["checkedChange"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }, { kind: "component", type: ListViewPaginationComponent, selector: "ius-list-view-pagination", inputs: ["variant", "page", "defaultPage", "totalPages", "total", "pageSize", "pageSizeOptions", "showCount", "countNoun", "siblingCount", "boundaryCount", "size", "disabled"], outputs: ["pageChange", "pageSizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8374
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ListViewComponent, isStandalone: true, selector: "ius-list-view", inputs: { hideHeader: ["hideHeader", "hideHeader", booleanAttribute], selectable: ["selectable", "selectable", booleanAttribute], allSelected: ["allSelected", "allSelected", booleanAttribute], someSelected: ["someSelected", "someSelected", booleanAttribute], selectLabel: "selectLabel", selectAriaLabel: "selectAriaLabel", sortOptions: "sortOptions", sortValue: "sortValue", actions: "actions", selectedCount: ["selectedCount", "selectedCount", numberAttribute], selectionActions: "selectionActions", gap: "gap", bodyPadding: "bodyPadding", bordered: ["bordered", "bordered", booleanAttribute], scrollTrackMargin: "scrollTrackMargin", fit: ["fit", "fit", booleanAttribute], fieldWidths: "fieldWidths", hideFooter: ["hideFooter", "hideFooter", booleanAttribute], total: "total", countNoun: "countNoun", pagination: ["pagination", "pagination", booleanAttribute], paginationVariant: "paginationVariant", page: "page", pageSize: ["pageSize", "pageSize", numberAttribute], pageSizeOptions: "pageSizeOptions", size: "size" }, outputs: { selectAll: "selectAll", sortChange: "sortChange", clearSelection: "clearSelection", pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, host: { properties: { "attr.data-size": "size !== 'medium' ? size : null", "attr.data-bordered": "bordered ? 'true' : 'false'", "attr.data-fit": "fit ? 'height' : null" }, classAttribute: "ius-listview" }, queries: [{ propertyName: "filtersRef", first: true, predicate: IusListViewFiltersDirective, descendants: true, isSignal: true }, { propertyName: "headerStartRef", first: true, predicate: IusListViewHeaderStartDirective, descendants: true, isSignal: true }, { propertyName: "headerEndRef", first: true, predicate: IusListViewHeaderEndDirective, descendants: true, isSignal: true }, { propertyName: "toolbarRef", first: true, predicate: IusListViewToolbarDirective, descendants: true, isSignal: true }, { propertyName: "footerStartRef", first: true, predicate: IusListViewFooterStartDirective, descendants: true, isSignal: true }, { propertyName: "footerEndRef", first: true, predicate: IusListViewFooterEndDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Header: modo selecci\u00F3n > toolbar > integrado -->\r\n@if (!hideHeader) {\r\n @if (inSelection) {\r\n <div class=\"ius-listview__header\" data-mode=\"selection\">\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n [ariaLabel]=\"selectAriaLabel\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n <span class=\"ius-listview__selcount\">{{ selCountText }}</span>\r\n @if (selectionActions.length) {\r\n <span class=\"ius-listview__divider\"></span>\r\n }\r\n <div class=\"ius-listview__actions\">\r\n @for (a of selectionActions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [tooltip]=\"a.tooltip ?? a.label ?? a.ariaLabel\"\r\n [tooltipPlacement]=\"a.tooltipPlacement ?? 'top'\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n <span class=\"ius-listview__spacer\"></span>\r\n @if (showClear) {\r\n <ius-text-button label=\"Limpiar\" (clicked)=\"clearSelection.emit()\" />\r\n }\r\n </div>\r\n } @else if (hasToolbar) {\r\n <div class=\"ius-listview__header ius-listview__header--toolbar\">\r\n <ng-content select=\"[iusListViewToolbar]\" />\r\n </div>\r\n } @else {\r\n <div class=\"ius-listview__header\">\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--grow\">\r\n <ng-content select=\"[iusListViewHeaderStart]\" />\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n [label]=\"selectLabel\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n @if (sortOptions.length) {\r\n <!-- orden: Dropdown de selecci\u00F3n \u00FAnica (trigger ghost swap_vert, tone neutral) -->\r\n <span class=\"ius-listview__sort\">\r\n <ius-dropdown\r\n selectable\r\n [items]=\"sortOptions\"\r\n [value]=\"sortValue\"\r\n [triggerLabel]=\"sortTriggerFallback\"\r\n triggerIcon=\"swap_vert\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Ordenar\"\r\n (valueChange)=\"onSortChange($event)\"\r\n />\r\n </span>\r\n }\r\n @if (hasFilters) {\r\n <div class=\"ius-listview__filters\"><ng-content select=\"[iusListViewFilters]\" /></div>\r\n }\r\n </div>\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--end\">\r\n @if (actions.length) {\r\n <div class=\"ius-listview__actions\">\r\n @for (a of actions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [tooltip]=\"a.tooltip ?? a.label ?? a.ariaLabel\"\r\n [tooltipPlacement]=\"a.tooltipPlacement ?? 'top'\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n <ng-content select=\"[iusListViewHeaderEnd]\" />\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n<!-- Body: \u00FAnico scroller; emite la rejilla --_lc-col-N a los ListCard proyectados -->\r\n<div\r\n class=\"ius-listview__body ius-scroll\"\r\n [style.gap]=\"px(gap)\"\r\n [style.padding]=\"px(bodyPadding)\"\r\n [style.--_sb-track-margin]=\"px(scrollTrackMargin)\"\r\n [style.--_lc-col-1]=\"colVar(0)\"\r\n [style.--_lc-col-2]=\"colVar(1)\"\r\n [style.--_lc-col-3]=\"colVar(2)\"\r\n [style.--_lc-col-4]=\"colVar(3)\"\r\n [style.--_lc-col-5]=\"colVar(4)\"\r\n [style.--_lc-col-6]=\"colVar(5)\"\r\n>\r\n <ng-content />\r\n</div>\r\n\r\n<!-- Footer: total a la izquierda + paginaci\u00F3n a la derecha -->\r\n@if (showFooter) {\r\n <div class=\"ius-listview__footer\">\r\n <ng-content select=\"[iusListViewFooterStart]\" />\r\n @if (countText) {\r\n <span class=\"ius-listview__count\">{{ countText }}</span>\r\n }\r\n @if (pagination) {\r\n <!-- FALLBACK Pagination: port interno (reemplazar por ius-pagination cuando exista) -->\r\n <ius-list-view-pagination\r\n [variant]=\"paginationVariant\"\r\n [total]=\"total\"\r\n [page]=\"page\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n size=\"small\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n (pageSizeChange)=\"pageSizeChange.emit($event)\"\r\n />\r\n }\r\n <ng-content select=\"[iusListViewFooterEnd]\" />\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-height:0;width:100%;height:100%;font-family:var(--ius-font-body);box-sizing:border-box}:host([data-bordered=true]){background:var(--ius-surface-card);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-lg);overflow:hidden}.ius-listview__header{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);flex-wrap:nowrap;padding:var(--ius-space-xs) var(--ius-space-md);min-height:40px}.ius-listview__hgroup{display:flex;align-items:center;gap:var(--ius-space-sm);min-width:0;flex-wrap:wrap}.ius-listview__hgroup--grow{flex:1 1 auto}.ius-listview__hgroup--end{flex:0 0 auto;flex-wrap:nowrap;justify-content:flex-end}:host([data-bordered=true]) .ius-listview__header{border-bottom:1px solid var(--ius-stroke)}.ius-listview__header--toolbar{flex-wrap:wrap;min-height:0}:host([data-size=small]) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}@container style(--ius-density: small){:host(:not([data-size])) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}}.ius-listview__spacer{flex:1 1 auto}.ius-listview__divider{align-self:stretch;width:1px;background:var(--ius-stroke);margin:var(--ius-space-xxs) var(--ius-space-xs)}.ius-listview__filters{display:flex;align-items:center;gap:var(--ius-space-xs);flex-wrap:wrap}.ius-listview__actions{display:flex;align-items:center;gap:var(--ius-space-xxs)}.ius-listview__selcount{font:var(--ius-fw-regular, 400) var(--ius-fs-base)/var(--ius-lh-base) var(--ius-font-body);color:var(--ius-primary-900);font-variant-numeric:tabular-nums}.ius-listview__body{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column}:host([data-fit=height]){flex:1 1 auto;min-height:0;overflow:hidden}.ius-listview__body ::ng-deep .ius-listcard:hover{z-index:2}.ius-listview__footer{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);padding:var(--ius-space-xs) var(--ius-space-md)}:host([data-bordered=true]) .ius-listview__footer{border-top:1px solid var(--ius-stroke)}.ius-listview__count{font:var(--ius-fw-regular, 400) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary);font-variant-numeric:tabular-nums}.ius-listview__footer .ius-pagination{margin-left:auto;flex:0 0 auto}.ius-listview__sort{display:inline-flex}\n"], dependencies: [{ kind: "component", type: CheckboxComponent, selector: "ius-checkbox", inputs: ["label", "labelPosition", "showIconHelp", "iconHelpTitle", "iconHelpContent", "name", "value", "ariaLabel", "size", "checked", "defaultChecked", "indeterminate", "disabled"], outputs: ["checkedChange"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }, { kind: "component", type: ListViewPaginationComponent, selector: "ius-list-view-pagination", inputs: ["variant", "page", "defaultPage", "totalPages", "total", "pageSize", "pageSizeOptions", "showCount", "countNoun", "siblingCount", "boundaryCount", "size", "disabled"], outputs: ["pageChange", "pageSizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8327
8375
  }
8328
8376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ListViewComponent, decorators: [{
8329
8377
  type: Component,
@@ -8338,7 +8386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8338
8386
  '[attr.data-size]': "size !== 'medium' ? size : null",
8339
8387
  '[attr.data-bordered]': "bordered ? 'true' : 'false'",
8340
8388
  '[attr.data-fit]': "fit ? 'height' : null",
8341
- }, template: "<!-- Header: modo selecci\u00F3n > toolbar > integrado -->\r\n@if (!hideHeader) {\r\n @if (inSelection) {\r\n <div class=\"ius-listview__header\" data-mode=\"selection\">\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n <span class=\"ius-listview__selcount\">{{ selCountText }}</span>\r\n @if (selectionActions.length) {\r\n <span class=\"ius-listview__divider\"></span>\r\n }\r\n <div class=\"ius-listview__actions\">\r\n @for (a of selectionActions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n <span class=\"ius-listview__spacer\"></span>\r\n @if (showClear) {\r\n <ius-text-button label=\"Limpiar\" (clicked)=\"clearSelection.emit()\" />\r\n }\r\n </div>\r\n } @else if (hasToolbar) {\r\n <div class=\"ius-listview__header ius-listview__header--toolbar\">\r\n <ng-content select=\"[iusListViewToolbar]\" />\r\n </div>\r\n } @else {\r\n <div class=\"ius-listview__header\">\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--grow\">\r\n <ng-content select=\"[iusListViewHeaderStart]\" />\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n [label]=\"selectLabel\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n @if (sortOptions.length) {\r\n <!-- orden: Dropdown de selecci\u00F3n \u00FAnica (trigger ghost swap_vert, tone neutral) -->\r\n <span class=\"ius-listview__sort\">\r\n <ius-dropdown\r\n selectable\r\n [items]=\"sortOptions\"\r\n [value]=\"sortValue\"\r\n [triggerLabel]=\"sortTriggerFallback\"\r\n triggerIcon=\"swap_vert\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Ordenar\"\r\n (valueChange)=\"onSortChange($event)\"\r\n />\r\n </span>\r\n }\r\n @if (hasFilters) {\r\n <div class=\"ius-listview__filters\"><ng-content select=\"[iusListViewFilters]\" /></div>\r\n }\r\n </div>\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--end\">\r\n @if (actions.length) {\r\n <div class=\"ius-listview__actions\">\r\n @for (a of actions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n <ng-content select=\"[iusListViewHeaderEnd]\" />\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n<!-- Body: \u00FAnico scroller; emite la rejilla --_lc-col-N a los ListCard proyectados -->\r\n<div\r\n class=\"ius-listview__body ius-scroll\"\r\n [style.gap]=\"px(gap)\"\r\n [style.padding]=\"px(bodyPadding)\"\r\n [style.--_sb-track-margin]=\"px(scrollTrackMargin)\"\r\n [style.--_lc-col-1]=\"colVar(0)\"\r\n [style.--_lc-col-2]=\"colVar(1)\"\r\n [style.--_lc-col-3]=\"colVar(2)\"\r\n [style.--_lc-col-4]=\"colVar(3)\"\r\n [style.--_lc-col-5]=\"colVar(4)\"\r\n [style.--_lc-col-6]=\"colVar(5)\"\r\n>\r\n <ng-content />\r\n</div>\r\n\r\n<!-- Footer: total a la izquierda + paginaci\u00F3n a la derecha -->\r\n@if (showFooter) {\r\n <div class=\"ius-listview__footer\">\r\n <ng-content select=\"[iusListViewFooterStart]\" />\r\n @if (countText) {\r\n <span class=\"ius-listview__count\">{{ countText }}</span>\r\n }\r\n @if (pagination) {\r\n <!-- FALLBACK Pagination: port interno (reemplazar por ius-pagination cuando exista) -->\r\n <ius-list-view-pagination\r\n [variant]=\"paginationVariant\"\r\n [total]=\"total\"\r\n [page]=\"page\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n size=\"small\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n (pageSizeChange)=\"pageSizeChange.emit($event)\"\r\n />\r\n }\r\n <ng-content select=\"[iusListViewFooterEnd]\" />\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-height:0;width:100%;height:100%;font-family:var(--ius-font-body);box-sizing:border-box}:host([data-bordered=true]){background:var(--ius-surface-card);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-lg);overflow:hidden}.ius-listview__header{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);flex-wrap:nowrap;padding:var(--ius-space-xs) var(--ius-space-md);min-height:40px}.ius-listview__hgroup{display:flex;align-items:center;gap:var(--ius-space-sm);min-width:0;flex-wrap:wrap}.ius-listview__hgroup--grow{flex:1 1 auto}.ius-listview__hgroup--end{flex:0 0 auto;flex-wrap:nowrap;justify-content:flex-end}:host([data-bordered=true]) .ius-listview__header{border-bottom:1px solid var(--ius-stroke)}.ius-listview__header--toolbar{flex-wrap:wrap;min-height:0}:host([data-size=small]) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}@container style(--ius-density: small){:host(:not([data-size])) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}}.ius-listview__spacer{flex:1 1 auto}.ius-listview__divider{align-self:stretch;width:1px;background:var(--ius-stroke);margin:var(--ius-space-xxs) var(--ius-space-xs)}.ius-listview__filters{display:flex;align-items:center;gap:var(--ius-space-xs);flex-wrap:wrap}.ius-listview__actions{display:flex;align-items:center;gap:var(--ius-space-xxs)}.ius-listview__selcount{font:var(--ius-fw-regular, 400) var(--ius-fs-base)/var(--ius-lh-base) var(--ius-font-body);color:var(--ius-primary-900);font-variant-numeric:tabular-nums}.ius-listview__body{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column}:host([data-fit=height]){flex:1 1 auto;min-height:0;overflow:hidden}.ius-listview__body ::ng-deep .ius-listcard:hover{z-index:2}.ius-listview__footer{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);padding:var(--ius-space-xs) var(--ius-space-md)}:host([data-bordered=true]) .ius-listview__footer{border-top:1px solid var(--ius-stroke)}.ius-listview__count{font:var(--ius-fw-regular, 400) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary);font-variant-numeric:tabular-nums}.ius-listview__footer .ius-pagination{margin-left:auto;flex:0 0 auto}.ius-listview__sort{display:inline-flex}\n"] }]
8389
+ }, template: "<!-- Header: modo selecci\u00F3n > toolbar > integrado -->\r\n@if (!hideHeader) {\r\n @if (inSelection) {\r\n <div class=\"ius-listview__header\" data-mode=\"selection\">\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n [ariaLabel]=\"selectAriaLabel\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n <span class=\"ius-listview__selcount\">{{ selCountText }}</span>\r\n @if (selectionActions.length) {\r\n <span class=\"ius-listview__divider\"></span>\r\n }\r\n <div class=\"ius-listview__actions\">\r\n @for (a of selectionActions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [tooltip]=\"a.tooltip ?? a.label ?? a.ariaLabel\"\r\n [tooltipPlacement]=\"a.tooltipPlacement ?? 'top'\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n <span class=\"ius-listview__spacer\"></span>\r\n @if (showClear) {\r\n <ius-text-button label=\"Limpiar\" (clicked)=\"clearSelection.emit()\" />\r\n }\r\n </div>\r\n } @else if (hasToolbar) {\r\n <div class=\"ius-listview__header ius-listview__header--toolbar\">\r\n <ng-content select=\"[iusListViewToolbar]\" />\r\n </div>\r\n } @else {\r\n <div class=\"ius-listview__header\">\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--grow\">\r\n <ng-content select=\"[iusListViewHeaderStart]\" />\r\n @if (selectable) {\r\n <ius-checkbox\r\n [checked]=\"allSelected\"\r\n [indeterminate]=\"someSelected\"\r\n size=\"small\"\r\n [label]=\"selectLabel\"\r\n (checkedChange)=\"selectAll.emit($event)\"\r\n />\r\n }\r\n @if (sortOptions.length) {\r\n <!-- orden: Dropdown de selecci\u00F3n \u00FAnica (trigger ghost swap_vert, tone neutral) -->\r\n <span class=\"ius-listview__sort\">\r\n <ius-dropdown\r\n selectable\r\n [items]=\"sortOptions\"\r\n [value]=\"sortValue\"\r\n [triggerLabel]=\"sortTriggerFallback\"\r\n triggerIcon=\"swap_vert\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Ordenar\"\r\n (valueChange)=\"onSortChange($event)\"\r\n />\r\n </span>\r\n }\r\n @if (hasFilters) {\r\n <div class=\"ius-listview__filters\"><ng-content select=\"[iusListViewFilters]\" /></div>\r\n }\r\n </div>\r\n <div class=\"ius-listview__hgroup ius-listview__hgroup--end\">\r\n @if (actions.length) {\r\n <div class=\"ius-listview__actions\">\r\n @for (a of actions; track a.key ?? $index) {\r\n <ius-icon-button\r\n [icon]=\"a.icon\"\r\n variant=\"tertiary\"\r\n [size]=\"iconSize\"\r\n [ariaLabel]=\"a.ariaLabel || a.label || a.icon\"\r\n [tooltip]=\"a.tooltip ?? a.label ?? a.ariaLabel\"\r\n [tooltipPlacement]=\"a.tooltipPlacement ?? 'top'\"\r\n [disabled]=\"a.disabled ?? false\"\r\n (clicked)=\"onAction(a, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n <ng-content select=\"[iusListViewHeaderEnd]\" />\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n<!-- Body: \u00FAnico scroller; emite la rejilla --_lc-col-N a los ListCard proyectados -->\r\n<div\r\n class=\"ius-listview__body ius-scroll\"\r\n [style.gap]=\"px(gap)\"\r\n [style.padding]=\"px(bodyPadding)\"\r\n [style.--_sb-track-margin]=\"px(scrollTrackMargin)\"\r\n [style.--_lc-col-1]=\"colVar(0)\"\r\n [style.--_lc-col-2]=\"colVar(1)\"\r\n [style.--_lc-col-3]=\"colVar(2)\"\r\n [style.--_lc-col-4]=\"colVar(3)\"\r\n [style.--_lc-col-5]=\"colVar(4)\"\r\n [style.--_lc-col-6]=\"colVar(5)\"\r\n>\r\n <ng-content />\r\n</div>\r\n\r\n<!-- Footer: total a la izquierda + paginaci\u00F3n a la derecha -->\r\n@if (showFooter) {\r\n <div class=\"ius-listview__footer\">\r\n <ng-content select=\"[iusListViewFooterStart]\" />\r\n @if (countText) {\r\n <span class=\"ius-listview__count\">{{ countText }}</span>\r\n }\r\n @if (pagination) {\r\n <!-- FALLBACK Pagination: port interno (reemplazar por ius-pagination cuando exista) -->\r\n <ius-list-view-pagination\r\n [variant]=\"paginationVariant\"\r\n [total]=\"total\"\r\n [page]=\"page\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n size=\"small\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n (pageSizeChange)=\"pageSizeChange.emit($event)\"\r\n />\r\n }\r\n <ng-content select=\"[iusListViewFooterEnd]\" />\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-height:0;width:100%;height:100%;font-family:var(--ius-font-body);box-sizing:border-box}:host([data-bordered=true]){background:var(--ius-surface-card);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-lg);overflow:hidden}.ius-listview__header{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);flex-wrap:nowrap;padding:var(--ius-space-xs) var(--ius-space-md);min-height:40px}.ius-listview__hgroup{display:flex;align-items:center;gap:var(--ius-space-sm);min-width:0;flex-wrap:wrap}.ius-listview__hgroup--grow{flex:1 1 auto}.ius-listview__hgroup--end{flex:0 0 auto;flex-wrap:nowrap;justify-content:flex-end}:host([data-bordered=true]) .ius-listview__header{border-bottom:1px solid var(--ius-stroke)}.ius-listview__header--toolbar{flex-wrap:wrap;min-height:0}:host([data-size=small]) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}@container style(--ius-density: small){:host(:not([data-size])) .ius-listview__header{gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-sm);min-height:36px}}.ius-listview__spacer{flex:1 1 auto}.ius-listview__divider{align-self:stretch;width:1px;background:var(--ius-stroke);margin:var(--ius-space-xxs) var(--ius-space-xs)}.ius-listview__filters{display:flex;align-items:center;gap:var(--ius-space-xs);flex-wrap:wrap}.ius-listview__actions{display:flex;align-items:center;gap:var(--ius-space-xxs)}.ius-listview__selcount{font:var(--ius-fw-regular, 400) var(--ius-fs-base)/var(--ius-lh-base) var(--ius-font-body);color:var(--ius-primary-900);font-variant-numeric:tabular-nums}.ius-listview__body{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column}:host([data-fit=height]){flex:1 1 auto;min-height:0;overflow:hidden}.ius-listview__body ::ng-deep .ius-listcard:hover{z-index:2}.ius-listview__footer{flex:0 0 auto;display:flex;align-items:center;gap:var(--ius-space-sm);padding:var(--ius-space-xs) var(--ius-space-md)}:host([data-bordered=true]) .ius-listview__footer{border-top:1px solid var(--ius-stroke)}.ius-listview__count{font:var(--ius-fw-regular, 400) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary);font-variant-numeric:tabular-nums}.ius-listview__footer .ius-pagination{margin-left:auto;flex:0 0 auto}.ius-listview__sort{display:inline-flex}\n"] }]
8342
8390
  }], propDecorators: { hideHeader: [{
8343
8391
  type: Input,
8344
8392
  args: [{ transform: booleanAttribute }]
@@ -8353,6 +8401,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8353
8401
  args: [{ transform: booleanAttribute }]
8354
8402
  }], selectLabel: [{
8355
8403
  type: Input
8404
+ }], selectAriaLabel: [{
8405
+ type: Input
8356
8406
  }], sortOptions: [{
8357
8407
  type: Input
8358
8408
  }], sortValue: [{
@@ -10903,7 +10953,7 @@ class SelectNumberComponent {
10903
10953
  useExisting: forwardRef(() => SelectNumberComponent),
10904
10954
  multi: true,
10905
10955
  },
10906
- ], ngImport: i0, template: "<ius-select\r\n class=\"ius-tf--num\"\r\n compact\r\n placeholder=\"\"\r\n [searchable]=\"false\"\r\n [multiple]=\"false\"\r\n [showHelpText]=\"false\"\r\n [options]=\"selectOptions()\"\r\n [value]=\"current()\"\r\n [showClear]=\"showClear\"\r\n [maxVisible]=\"maxVisible\"\r\n [error]=\"error\"\r\n [disabled]=\"isDisabled()\"\r\n [state]=\"state\"\r\n [size]=\"size\"\r\n [id]=\"id\"\r\n (valueChange)=\"onSelect($event)\"\r\n/>\r\n", styles: ["@charset \"UTF-8\";:host{display:contents}:host ::ng-deep .ius-tf--select.ius-tf--num{min-width:0;width:auto}:host ::ng-deep .ius-tf--num .ius-tf__field{padding:var(--_tf-py) var(--ius-space-xs) var(--_tf-py) var(--ius-space-sm);gap:var(--ius-space-xxs)}:host ::ng-deep .ius-tf--num .ius-select__value{font-variant-numeric:tabular-nums;min-width:16px}:host ::ng-deep .ius-tf--select.ius-tf--num .ius-select__chevron .ius-icon{font-size:var(--ius-icon-md)}\n"], dependencies: [{ kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10956
+ ], ngImport: i0, template: "<ius-select\r\n class=\"ius-tf--num\"\r\n compact\r\n placeholder=\"\"\r\n [searchable]=\"false\"\r\n [multiple]=\"false\"\r\n [showHelpText]=\"false\"\r\n [options]=\"selectOptions()\"\r\n [value]=\"current()\"\r\n [showClear]=\"showClear\"\r\n [maxVisible]=\"maxVisible\"\r\n [error]=\"error\"\r\n [disabled]=\"isDisabled()\"\r\n [state]=\"state\"\r\n [size]=\"size\"\r\n [id]=\"id\"\r\n (valueChange)=\"onSelect($event)\"\r\n/>\r\n", styles: ["@charset \"UTF-8\";:host{display:contents}:host ::ng-deep .ius-tf--select.ius-tf--num{min-width:0;width:auto}:host ::ng-deep .ius-tf--num .ius-tf__field{padding:var(--_tf-py) var(--ius-space-xs) var(--_tf-py) var(--ius-space-sm);gap:var(--ius-space-xxs)}:host ::ng-deep .ius-tf--num .ius-select__value{font-variant-numeric:tabular-nums;min-width:16px}:host ::ng-deep .ius-tf--select.ius-tf--num .ius-select__chevron .ius-icon{font-size:var(--ius-icon-md)}\n"], dependencies: [{ kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "ariaLabel", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10907
10957
  }
10908
10958
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SelectNumberComponent, decorators: [{
10909
10959
  type: Component,
@@ -12248,7 +12298,7 @@ class ScrollAreaComponent {
12248
12298
  }
12249
12299
  }
12250
12300
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12251
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: ScrollAreaComponent, isStandalone: true, selector: "ius-scroll-area", inputs: { axis: "axis", size: "size", autoHide: ["autoHide", "autoHide", booleanAttribute], fade: ["fade", "fade", booleanAttribute], maxHeight: "maxHeight", maxWidth: "maxWidth", viewClassName: "viewClassName" }, outputs: { scrolled: "scrolled" }, host: { properties: { "attr.data-axis": "axis", "attr.data-fade": "fade ? 'true' : 'false'" }, classAttribute: "ius-sa" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["view"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #view\n [class]=\"viewClasses\"\n [style.max-height]=\"maxHeightCss\"\n [style.max-width]=\"maxWidthCss\"\n>\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";:host{position:relative;box-sizing:border-box;display:block;min-height:0;min-width:0}.ius-sa__view{box-sizing:border-box;width:100%;height:100%}:host([data-axis=y]) .ius-sa__view{overflow-y:auto;overflow-x:hidden}:host([data-axis=x]) .ius-sa__view{overflow-x:auto;overflow-y:hidden}:host([data-axis=both]) .ius-sa__view{overflow:auto}:host([data-fade=true][data-axis=y]) .ius-sa__view{--_sa-top: 0px;--_sa-bot: 0px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%)}:host([data-fade=true][data-axis=x]) .ius-sa__view{--_sa-l: 0px;--_sa-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12301
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: ScrollAreaComponent, isStandalone: true, selector: "ius-scroll-area", inputs: { axis: "axis", size: "size", autoHide: ["autoHide", "autoHide", booleanAttribute], fade: ["fade", "fade", booleanAttribute], maxHeight: "maxHeight", maxWidth: "maxWidth", viewClassName: "viewClassName" }, outputs: { scrolled: "scrolled" }, host: { properties: { "attr.data-axis": "axis", "attr.data-fade": "fade ? 'true' : 'false'" }, classAttribute: "ius-sa" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["view"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n #view\r\n [class]=\"viewClasses\"\r\n [style.max-height]=\"maxHeightCss\"\r\n [style.max-width]=\"maxWidthCss\"\r\n>\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{position:relative;box-sizing:border-box;display:block;min-height:0;min-width:0}.ius-sa__view{box-sizing:border-box;width:100%;height:100%}:host([data-axis=y]) .ius-sa__view{overflow-y:auto;overflow-x:hidden}:host([data-axis=x]) .ius-sa__view{overflow-x:auto;overflow-y:hidden}:host([data-axis=both]) .ius-sa__view{overflow:auto}:host([data-fade=true][data-axis=y]) .ius-sa__view{--_sa-top: 0px;--_sa-bot: 0px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%)}:host([data-fade=true][data-axis=x]) .ius-sa__view{--_sa-l: 0px;--_sa-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12252
12302
  }
12253
12303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollAreaComponent, decorators: [{
12254
12304
  type: Component,
@@ -12256,7 +12306,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
12256
12306
  class: 'ius-sa',
12257
12307
  '[attr.data-axis]': 'axis',
12258
12308
  '[attr.data-fade]': "fade ? 'true' : 'false'",
12259
- }, template: "<div\n #view\n [class]=\"viewClasses\"\n [style.max-height]=\"maxHeightCss\"\n [style.max-width]=\"maxWidthCss\"\n>\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";:host{position:relative;box-sizing:border-box;display:block;min-height:0;min-width:0}.ius-sa__view{box-sizing:border-box;width:100%;height:100%}:host([data-axis=y]) .ius-sa__view{overflow-y:auto;overflow-x:hidden}:host([data-axis=x]) .ius-sa__view{overflow-x:auto;overflow-y:hidden}:host([data-axis=both]) .ius-sa__view{overflow:auto}:host([data-fade=true][data-axis=y]) .ius-sa__view{--_sa-top: 0px;--_sa-bot: 0px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%)}:host([data-fade=true][data-axis=x]) .ius-sa__view{--_sa-l: 0px;--_sa-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%)}\n"] }]
12309
+ }, template: "<div\r\n #view\r\n [class]=\"viewClasses\"\r\n [style.max-height]=\"maxHeightCss\"\r\n [style.max-width]=\"maxWidthCss\"\r\n>\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{position:relative;box-sizing:border-box;display:block;min-height:0;min-width:0}.ius-sa__view{box-sizing:border-box;width:100%;height:100%}:host([data-axis=y]) .ius-sa__view{overflow-y:auto;overflow-x:hidden}:host([data-axis=x]) .ius-sa__view{overflow-x:auto;overflow-y:hidden}:host([data-axis=both]) .ius-sa__view{overflow:auto}:host([data-fade=true][data-axis=y]) .ius-sa__view{--_sa-top: 0px;--_sa-bot: 0px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--_sa-top),#000 calc(100% - var(--_sa-bot)),transparent 100%)}:host([data-fade=true][data-axis=x]) .ius-sa__view{--_sa-l: 0px;--_sa-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_sa-l),#000 calc(100% - var(--_sa-r)),transparent 100%)}\n"] }]
12260
12310
  }], propDecorators: { axis: [{
12261
12311
  type: Input
12262
12312
  }], size: [{
@@ -13120,7 +13170,7 @@ class QueryBuilderComponent {
13120
13170
  this.isOpen.set(false);
13121
13171
  }
13122
13172
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: QueryBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: QueryBuilderComponent, isStandalone: true, selector: "ius-query-builder", inputs: { fields: { classPropertyName: "fields", publicName: "fields", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, maxRows: { classPropertyName: "maxRows", publicName: "maxRows", isSignal: true, isRequired: false, transformFunction: null }, addLabel: { classPropertyName: "addLabel", publicName: "addLabel", isSignal: true, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null }, applyLabel: { classPropertyName: "applyLabel", publicName: "applyLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyTitle: { classPropertyName: "emptyTitle", publicName: "emptyTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyHint: { classPropertyName: "emptyHint", publicName: "emptyHint", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply" }, host: { classAttribute: "ius-querybuilder" }, ngImport: i0, template: "<!--\r\n QueryBuilder \u2014 el Popover es el motor de anclaje; el disparador se proyecta\r\n como children y el panel como `[iusPopoverContent]`. Modo controlado\r\n (`[open]` + `(openChange)`) porque el borrador se re-siembra al abrir.\r\n `dismissable` queda apagado a prop\u00F3sito: ver el TSDoc de cabecera.\r\n-->\r\n<ius-popover\r\n trigger=\"click\"\r\n [placement]=\"placement()\"\r\n [showArrow]=\"false\"\r\n [offset]=\"8\"\r\n [open]=\"isOpen()\"\r\n panelClass=\"ius-querybuilder-pop\"\r\n (openChange)=\"onOpenChange($event)\"\r\n>\r\n <!-- \u2500\u2500 Disparador: bot\u00F3n \"Filtros\" con contador de reglas aplicadas \u2500\u2500 -->\r\n <button\r\n type=\"button\"\r\n class=\"ius-querybuilder__trigger\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.data-active]=\"count() > 0 ? 'true' : null\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">filter_list</span>\r\n <span>{{ triggerLabel() }}</span>\r\n @if (count() > 0) {\r\n <span class=\"ius-querybuilder__count\">{{ count() }}</span>\r\n }\r\n <!-- Ligadura Material Symbols: el texto va pegado, sin espacios sueltos. -->\r\n <span translate=\"no\" class=\"ius-icon ius-querybuilder__chev\" aria-hidden=\"true\">expand_more</span>\r\n </button>\r\n\r\n <!-- \u2500\u2500 Panel: filas de criterio + footer (se estampa en el overlay) \u2500\u2500 -->\r\n <div iusPopoverContent class=\"ius-querybuilder__panel\">\r\n @if (draft().length === 0) {\r\n <div class=\"ius-querybuilder__empty\">\r\n <span class=\"ius-querybuilder__empty-t\">{{ emptyTitle() }}</span>\r\n <span class=\"ius-querybuilder__empty-h\">{{ emptyHint() }}</span>\r\n </div>\r\n } @else {\r\n <div class=\"ius-querybuilder__rows\">\r\n <!--\r\n `track row.id` (el RID incremental), NUNCA `$index`: al quitar una\r\n fila intermedia se reciclar\u00EDan los controles y los valores se\r\n cruzar\u00EDan entre filas.\r\n -->\r\n @for (row of draft(); track row.id; let i = $index) {\r\n <div class=\"ius-querybuilder__rule\">\r\n @if (i > 0) {\r\n <span class=\"ius-querybuilder__conj\">y</span>\r\n }\r\n\r\n <!--\r\n Orden de elementos del grid (lo usa el `:nth-child(3)` del\r\n responsive): campo \u00B7 operador \u00B7 valor \u00B7 quitar. Los bloques\r\n `@if` solo dejan comentarios, que no cuentan como elementos.\r\n -->\r\n <div class=\"ius-querybuilder__row\">\r\n <ius-select\r\n [options]=\"fieldOptionsFor(row.id)\"\r\n [value]=\"row.field\"\r\n [size]=\"size()\"\r\n [searchable]=\"fieldsSearchable()\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n (valueChange)=\"onFieldChange(row.id, $event)\"\r\n />\r\n\r\n <ius-select\r\n [options]=\"operatorOptions(row.field)\"\r\n [value]=\"row.operator\"\r\n [size]=\"size()\"\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n (valueChange)=\"onOperatorChange(row.id, $event)\"\r\n />\r\n\r\n @if (typeOf(row.field) === 'enum') {\r\n <ius-select\r\n [options]=\"valueOptions(row.field)\"\r\n [value]=\"selectValue(row.value)\"\r\n placeholder=\"Selecciona un valor\"\r\n [size]=\"size()\"\r\n [searchable]=\"valueSearchable(row.field)\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n (valueChange)=\"onValueChange(row.id, $event)\"\r\n />\r\n } @else {\r\n <!--\r\n `[ngModel]` de una v\u00EDa: TextField expone su valor solo por\r\n CVA y hace falta poder vaciarlo al cambiar el campo.\r\n -->\r\n <ius-text-field\r\n [ngModel]=\"textValue(row.value)\"\r\n (ngModelChange)=\"onTextValueChange(row.id, $event)\"\r\n [placeholder]=\"valuePlaceholder(row.field)\"\r\n [size]=\"size()\"\r\n [showHelpText]=\"false\"\r\n />\r\n }\r\n\r\n <ius-icon-button\r\n icon=\"close\"\r\n variant=\"tertiary\"\r\n [size]=\"size()\"\r\n ariaLabel=\"Quitar filtro\"\r\n (clicked)=\"removeRow(row.id)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- \u2500\u2500 Footer: a\u00F1adir \u00B7 limpiar \u00B7 aplicar (staged) \u2500\u2500 -->\r\n <div class=\"ius-querybuilder__foot\">\r\n <ius-text-button\r\n [label]=\"addLabel()\"\r\n prefixIcon=\"add\"\r\n [size]=\"size()\"\r\n [disabled]=\"atCap()\"\r\n (clicked)=\"addRow()\"\r\n />\r\n <span class=\"ius-querybuilder__foot-r\">\r\n @if (draft().length) {\r\n <ius-text-button\r\n [label]=\"clearLabel()\"\r\n [size]=\"size()\"\r\n (clicked)=\"clearAll()\"\r\n />\r\n }\r\n <ius-button\r\n variant=\"primary\"\r\n [size]=\"size()\"\r\n [label]=\"applyText()\"\r\n [disabled]=\"applyDisabled()\"\r\n (clicked)=\"applyDraft()\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n</ius-popover>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-querybuilder__trigger{appearance:none;display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--ius-fs-base);line-height:1;color:var(--ius-text-primary);background:var(--ius-neutral-white);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);cursor:pointer;transition:border-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard);-webkit-user-select:none;user-select:none}.ius-querybuilder__trigger:hover{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-querybuilder__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-querybuilder__trigger[data-active=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-querybuilder__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-querybuilder__count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:var(--ius-primary-900);color:var(--ius-neutral-white);font-size:var(--ius-fs-sm);font-variant-numeric:tabular-nums;line-height:1}.ius-querybuilder__chev{font-size:var(--ius-icon-md);color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-querybuilder__trigger[data-open=true] .ius-querybuilder__chev{transform:rotate(180deg)}.ius-querybuilder__panel{display:flex;flex-direction:column;gap:var(--ius-space-md);width:min(720px,100vw - var(--ius-space-2xl));max-width:100%;box-sizing:border-box}.ius-querybuilder__rows{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-querybuilder__rule{display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-querybuilder__conj{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary);padding-left:var(--ius-space-xxs)}.ius-querybuilder__row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.85fr) minmax(0,1.7fr) auto;gap:var(--ius-space-sm);align-items:center}.ius-querybuilder__row>*{min-width:0}.ius-querybuilder__row ::ng-deep .ius-tf__field{flex-wrap:nowrap}.ius-querybuilder__empty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ius-space-xs);padding:var(--ius-space-xs) 0}.ius-querybuilder__empty-t{font-family:var(--ius-font-display);font-weight:var(--ius-fw-bold, 700);font-size:var(--ius-fs-base);color:var(--ius-text-primary)}.ius-querybuilder__empty-h{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-querybuilder__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-sm);border-top:1px solid var(--ius-stroke);padding-top:var(--ius-space-md)}.ius-querybuilder__foot-r{display:inline-flex;align-items:center;gap:var(--ius-space-sm)}@media(max-width:600px){.ius-querybuilder__row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.ius-querybuilder__row>:nth-child(3){grid-column:1/3}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }, { kind: "component", type: TextFieldComponent, selector: "ius-text-field", inputs: ["label", "placeholder", "required", "prefixIcon", "showClear", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "error", "name", "autocomplete", "type", "inputMode", "maxLength", "size", "disabled"], outputs: ["valueChange", "cleared"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "ariaCurrent", "action", "size"], 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 }); }
13173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: QueryBuilderComponent, isStandalone: true, selector: "ius-query-builder", inputs: { fields: { classPropertyName: "fields", publicName: "fields", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, maxRows: { classPropertyName: "maxRows", publicName: "maxRows", isSignal: true, isRequired: false, transformFunction: null }, addLabel: { classPropertyName: "addLabel", publicName: "addLabel", isSignal: true, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null }, applyLabel: { classPropertyName: "applyLabel", publicName: "applyLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyTitle: { classPropertyName: "emptyTitle", publicName: "emptyTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyHint: { classPropertyName: "emptyHint", publicName: "emptyHint", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply" }, host: { classAttribute: "ius-querybuilder" }, ngImport: i0, template: "<!--\r\n QueryBuilder \u2014 el Popover es el motor de anclaje; el disparador se proyecta\r\n como children y el panel como `[iusPopoverContent]`. Modo controlado\r\n (`[open]` + `(openChange)`) porque el borrador se re-siembra al abrir.\r\n `dismissable` queda apagado a prop\u00F3sito: ver el TSDoc de cabecera.\r\n-->\r\n<ius-popover\r\n trigger=\"click\"\r\n [placement]=\"placement()\"\r\n [showArrow]=\"false\"\r\n [offset]=\"8\"\r\n [open]=\"isOpen()\"\r\n panelClass=\"ius-querybuilder-pop\"\r\n (openChange)=\"onOpenChange($event)\"\r\n>\r\n <!-- \u2500\u2500 Disparador: bot\u00F3n \"Filtros\" con contador de reglas aplicadas \u2500\u2500 -->\r\n <button\r\n type=\"button\"\r\n class=\"ius-querybuilder__trigger\"\r\n [attr.data-open]=\"isOpen() ? 'true' : null\"\r\n [attr.data-active]=\"count() > 0 ? 'true' : null\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">filter_list</span>\r\n <span>{{ triggerLabel() }}</span>\r\n @if (count() > 0) {\r\n <span class=\"ius-querybuilder__count\">{{ count() }}</span>\r\n }\r\n <!-- Ligadura Material Symbols: el texto va pegado, sin espacios sueltos. -->\r\n <span translate=\"no\" class=\"ius-icon ius-querybuilder__chev\" aria-hidden=\"true\">expand_more</span>\r\n </button>\r\n\r\n <!-- \u2500\u2500 Panel: filas de criterio + footer (se estampa en el overlay) \u2500\u2500 -->\r\n <div iusPopoverContent class=\"ius-querybuilder__panel\">\r\n @if (draft().length === 0) {\r\n <div class=\"ius-querybuilder__empty\">\r\n <span class=\"ius-querybuilder__empty-t\">{{ emptyTitle() }}</span>\r\n <span class=\"ius-querybuilder__empty-h\">{{ emptyHint() }}</span>\r\n </div>\r\n } @else {\r\n <div class=\"ius-querybuilder__rows\">\r\n <!--\r\n `track row.id` (el RID incremental), NUNCA `$index`: al quitar una\r\n fila intermedia se reciclar\u00EDan los controles y los valores se\r\n cruzar\u00EDan entre filas.\r\n -->\r\n @for (row of draft(); track row.id; let i = $index) {\r\n <div class=\"ius-querybuilder__rule\">\r\n @if (i > 0) {\r\n <span class=\"ius-querybuilder__conj\">y</span>\r\n }\r\n\r\n <!--\r\n Orden de elementos del grid (lo usa el `:nth-child(3)` del\r\n responsive): campo \u00B7 operador \u00B7 valor \u00B7 quitar. Los bloques\r\n `@if` solo dejan comentarios, que no cuentan como elementos.\r\n -->\r\n <div class=\"ius-querybuilder__row\">\r\n <ius-select\r\n [options]=\"fieldOptionsFor(row.id)\"\r\n [value]=\"row.field\"\r\n [size]=\"size()\"\r\n [searchable]=\"fieldsSearchable()\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n (valueChange)=\"onFieldChange(row.id, $event)\"\r\n />\r\n\r\n <ius-select\r\n [options]=\"operatorOptions(row.field)\"\r\n [value]=\"row.operator\"\r\n [size]=\"size()\"\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n (valueChange)=\"onOperatorChange(row.id, $event)\"\r\n />\r\n\r\n @if (typeOf(row.field) === 'enum') {\r\n <ius-select\r\n [options]=\"valueOptions(row.field)\"\r\n [value]=\"selectValue(row.value)\"\r\n placeholder=\"Selecciona un valor\"\r\n [size]=\"size()\"\r\n [searchable]=\"valueSearchable(row.field)\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n (valueChange)=\"onValueChange(row.id, $event)\"\r\n />\r\n } @else {\r\n <!--\r\n `[ngModel]` de una v\u00EDa: TextField expone su valor solo por\r\n CVA y hace falta poder vaciarlo al cambiar el campo.\r\n -->\r\n <ius-text-field\r\n [ngModel]=\"textValue(row.value)\"\r\n (ngModelChange)=\"onTextValueChange(row.id, $event)\"\r\n [placeholder]=\"valuePlaceholder(row.field)\"\r\n [size]=\"size()\"\r\n [showHelpText]=\"false\"\r\n />\r\n }\r\n\r\n <ius-icon-button\r\n icon=\"close\"\r\n variant=\"tertiary\"\r\n [size]=\"size()\"\r\n ariaLabel=\"Quitar filtro\"\r\n (clicked)=\"removeRow(row.id)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- \u2500\u2500 Footer: a\u00F1adir \u00B7 limpiar \u00B7 aplicar (staged) \u2500\u2500 -->\r\n <div class=\"ius-querybuilder__foot\">\r\n <ius-text-button\r\n [label]=\"addLabel()\"\r\n prefixIcon=\"add\"\r\n [size]=\"size()\"\r\n [disabled]=\"atCap()\"\r\n (clicked)=\"addRow()\"\r\n />\r\n <span class=\"ius-querybuilder__foot-r\">\r\n @if (draft().length) {\r\n <ius-text-button\r\n [label]=\"clearLabel()\"\r\n [size]=\"size()\"\r\n (clicked)=\"clearAll()\"\r\n />\r\n }\r\n <ius-button\r\n variant=\"primary\"\r\n [size]=\"size()\"\r\n [label]=\"applyText()\"\r\n [disabled]=\"applyDisabled()\"\r\n (clicked)=\"applyDraft()\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n</ius-popover>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-querybuilder__trigger{appearance:none;display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--ius-fs-base);line-height:1;color:var(--ius-text-primary);background:var(--ius-neutral-white);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);cursor:pointer;transition:border-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard);-webkit-user-select:none;user-select:none}.ius-querybuilder__trigger:hover{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-querybuilder__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-querybuilder__trigger[data-active=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-querybuilder__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-querybuilder__count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:var(--ius-primary-900);color:var(--ius-neutral-white);font-size:var(--ius-fs-sm);font-variant-numeric:tabular-nums;line-height:1}.ius-querybuilder__chev{font-size:var(--ius-icon-md);color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-querybuilder__trigger[data-open=true] .ius-querybuilder__chev{transform:rotate(180deg)}.ius-querybuilder__panel{display:flex;flex-direction:column;gap:var(--ius-space-md);width:min(720px,100vw - var(--ius-space-2xl));max-width:100%;box-sizing:border-box}.ius-querybuilder__rows{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-querybuilder__rule{display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-querybuilder__conj{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary);padding-left:var(--ius-space-xxs)}.ius-querybuilder__row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.85fr) minmax(0,1.7fr) auto;gap:var(--ius-space-sm);align-items:center}.ius-querybuilder__row>*{min-width:0}.ius-querybuilder__row ::ng-deep .ius-tf__field{flex-wrap:nowrap}.ius-querybuilder__empty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ius-space-xs);padding:var(--ius-space-xs) 0}.ius-querybuilder__empty-t{font-family:var(--ius-font-display);font-weight:var(--ius-fw-bold, 700);font-size:var(--ius-fs-base);color:var(--ius-text-primary)}.ius-querybuilder__empty-h{font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-querybuilder__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-sm);border-top:1px solid var(--ius-stroke);padding-top:var(--ius-space-md)}.ius-querybuilder__foot-r{display:inline-flex;align-items:center;gap:var(--ius-space-sm)}@media(max-width:600px){.ius-querybuilder__row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.ius-querybuilder__row>:nth-child(3){grid-column:1/3}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "ariaLabel", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }, { kind: "component", type: TextFieldComponent, selector: "ius-text-field", inputs: ["label", "placeholder", "required", "prefixIcon", "showClear", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "error", "name", "autocomplete", "type", "inputMode", "maxLength", "size", "disabled"], outputs: ["valueChange", "cleared"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "ariaCurrent", "action", "size"], 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 }); }
13124
13174
  }
13125
13175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: QueryBuilderComponent, decorators: [{
13126
13176
  type: Component,
@@ -13963,7 +14013,7 @@ class SettingsNavComponent {
13963
14013
  this.visibleCount.set(count);
13964
14014
  }
13965
14015
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SettingsNavComponent, isStandalone: true, selector: "ius-settings-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, selectedId: { classPropertyName: "selectedId", publicName: "selectedId", isSignal: true, isRequired: false, transformFunction: null }, accent: { classPropertyName: "accent", publicName: "accent", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultCollapsed: { classPropertyName: "defaultCollapsed", publicName: "defaultCollapsed", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, overflowLabel: { classPropertyName: "overflowLabel", publicName: "overflowLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIdChange: "selectedIdChange", itemClick: "itemClick", collapsedChange: "collapsedChange" }, host: { attributes: { "role": "navigation" }, properties: { "attr.aria-label": "ariaLabel()", "attr.data-collapsed": "isCollapsed() ? 'true' : null", "attr.title": "null", "style.--_sn-w": "widthCss()", "style.--_sn-cico-h": "cicoH()", "style.--_sn-fg": "accentFg()", "style.--_sn-tint": "accentTint()" }, classAttribute: "ius-settings-nav" }, queries: [{ propertyName: "headerRef", first: true, predicate: IusSettingsNavHeaderDirective, descendants: true, isSignal: true }, { propertyName: "footerRef", first: true, predicate: IusSettingsNavFooterDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "wrapRef", first: true, predicate: ["wrap"], descendants: true, isSignal: true }, { propertyName: "measRef", first: true, predicate: ["meas"], descendants: true, isSignal: true }], ngImport: i0, template: "<!--\n SettingsNav \u2014 el HOST es el `<nav>` (ver `host:` del .ts), as\u00ED que aqu\u00ED\n arranca directamente el contenido: encabezado \u00B7 columna de filas \u00B7 pie.\n-->\n\n<!--\n Encabezado. El slot `[iusSettingsNavHeader]` MANDA sobre `title`, y `title`\n se oculta al colapsar (ambas condiciones viven en `showTitle()`).\n El `ng-content` va en un \u00FAnico `@if` (nunca anidado): con `@if` anidados el\n compilador solo iza el atributo `select` un nivel y la proyecci\u00F3n fallar\u00EDa en\n silencio.\n-->\n@if (headerRef() || showTitle()) {\n <div class=\"ius-settings-nav__header\">\n <ng-content select=\"[iusSettingsNavHeader]\" />\n @if (showTitle()) {\n <div class=\"ius-settings-nav__title\">{{ title() }}</div>\n }\n </div>\n}\n\n<!-- Columna de filas: NO scrollea (priority+ recoge lo que no cabe). -->\n<div class=\"ius-settings-nav__items\" #wrap>\n @for (it of visibleItems(); track it.id) {\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\n }\n\n <!-- Desborde: lo que no cabe en alto se recoge en un Popover a la derecha. -->\n @if (hasOverflow()) {\n <ius-popover\n [open]=\"moreOpen()\"\n trigger=\"click\"\n placement=\"right-start\"\n [showArrow]=\"false\"\n [offset]=\"8\"\n [dismissable]=\"true\"\n (openChange)=\"moreOpen.set($event)\"\n >\n @if (isCollapsed()) {\n <button\n type=\"button\"\n class=\"ius-settings-nav__cico\"\n [attr.data-selected]=\"anyHiddenSelected() ? 'true' : null\"\n [attr.aria-label]=\"overflowLabel()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"moreOpen()\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">more_horiz</span>\n @if (anyHiddenSelected()) {\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\n }\n </button>\n } @else {\n <ius-menu-item\n variant=\"rail\"\n [size]=\"size()\"\n icon=\"more_horiz\"\n [label]=\"overflowLabel()\"\n [selected]=\"anyHiddenSelected()\"\n [ariaLabel]=\"overflowLabel() + ' secciones'\"\n />\n }\n\n <!--\n Panel del desborde. Se estampa en el overlay del CDK (FUERA del host),\n as\u00ED que las variables de acento NO se heredan: se repiten en l\u00EDnea, tal\n como el golden repite `accentVars(accent)` en este mismo nodo.\n -->\n <div\n iusPopoverContent\n class=\"ius-settings-nav__pop\"\n role=\"menu\"\n [style.--_sn-fg]=\"accentFg()\"\n [style.--_sn-tint]=\"accentTint()\"\n >\n @for (it of hiddenItems(); track it.id) {\n <ius-menu-item\n variant=\"menu\"\n itemRole=\"menuitem\"\n [size]=\"size()\"\n [icon]=\"it.icon\"\n [label]=\"it.label\"\n [badge]=\"it.badge\"\n [selected]=\"it.id === selectedId()\"\n [disabled]=\"!!it.disabled\"\n [href]=\"it.href\"\n (clicked)=\"handleFromOverflow(it)\"\n />\n }\n </div>\n </ius-popover>\n }\n\n <!--\n Contenedor de MEDICI\u00D3N (priority+): clona TODAS las filas fuera de vista\n (`position: absolute` + `visibility: hidden`, as\u00ED que no aporta alto ni\n entra en el orden de tabulaci\u00F3n) y de ah\u00ED se leen los `offsetHeight`.\n Cada clon va envuelto en `__mrow` porque el host de `ius-menu-item` es\n `display: contents` y no generar\u00EDa caja que medir.\n -->\n <div class=\"ius-settings-nav__measure\" #meas aria-hidden=\"true\">\n @for (it of items(); track it.id) {\n <div class=\"ius-settings-nav__mrow\">\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\n </div>\n }\n </div>\n</div>\n\n<!-- Pie: slot libre + bot\u00F3n propio de colapso, sobre una l\u00EDnea separadora. -->\n@if (hasFooter()) {\n <div class=\"ius-settings-nav__sep\"></div>\n <div class=\"ius-settings-nav__footer\">\n <ng-content select=\"[iusSettingsNavFooter]\" />\n\n @if (collapsible()) {\n @if (isCollapsed()) {\n <ius-tooltip [label]=\"toggleLabel()\" placement=\"right\">\n <button\n type=\"button\"\n class=\"ius-settings-nav__cico\"\n [attr.aria-label]=\"toggleLabel()\"\n aria-expanded=\"false\"\n (click)=\"toggleCollapsed()\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ toggleIcon() }}</span>\n </button>\n </ius-tooltip>\n } @else {\n <ius-menu-item\n variant=\"rail\"\n [size]=\"size()\"\n [icon]=\"toggleIcon()\"\n [label]=\"toggleLabel()\"\n [ariaLabel]=\"toggleLabel()\"\n (clicked)=\"toggleCollapsed()\"\n />\n }\n }\n </div>\n}\n\n<!--\n UNA sola plantilla de fila, estampada con `NgTemplateOutlet` en la columna\n visible y en el contenedor de medici\u00F3n. El contexto de un `ng-template` no\n est\u00E1 tipado, as\u00ED que `asItem()` le devuelve el tipo y `strictTemplates`\n vuelve a comprobar todo el cuerpo.\n-->\n<ng-template #fila let-raw=\"it\">\n @let it = asItem(raw);\n @let sel = it.id === selectedId();\n\n @if (isCollapsed()) {\n <!-- Colapsado: solo \u00EDcono; el nombre accesible lo dan Tooltip + aria-label. -->\n <ius-tooltip [label]=\"it.label\" placement=\"right\">\n @if (isLink(it)) {\n <a\n class=\"ius-settings-nav__cico\"\n [href]=\"it.href\"\n [attr.data-selected]=\"sel ? 'true' : null\"\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\n [attr.aria-current]=\"sel ? 'page' : null\"\n [attr.aria-label]=\"it.label\"\n (click)=\"handle(it)\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\n @if (it.badge) {\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"ius-settings-nav__cico\"\n [disabled]=\"!it.href && !!it.disabled\"\n [attr.data-selected]=\"sel ? 'true' : null\"\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\n [attr.aria-current]=\"sel ? 'page' : null\"\n [attr.aria-label]=\"it.label\"\n (click)=\"handle(it)\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\n @if (it.badge) {\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\n }\n </button>\n }\n </ius-tooltip>\n } @else {\n <!-- Expandido: la fila ES un MenuItem `rail` (idle/hover/pressed heredados). -->\n <ius-menu-item\n variant=\"rail\"\n [size]=\"size()\"\n [icon]=\"it.icon\"\n [label]=\"it.label\"\n [badge]=\"it.badge\"\n [selected]=\"sel\"\n [disabled]=\"!!it.disabled\"\n [href]=\"it.href\"\n (clicked)=\"handle(it)\"\n />\n }\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:var(--_sn-w, 240px);min-width:var(--_sn-w, 240px);height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);padding:var(--ius-space-sm) var(--ius-space-xs);gap:var(--ius-space-xxs);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:var(--_sn-wc, 64px);min-width:var(--_sn-wc, 64px)}.ius-settings-nav__header{flex:0 0 auto;padding:var(--ius-space-xs) var(--ius-space-xs) var(--ius-space-sm);min-height:0}.ius-settings-nav__title{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);line-height:1.2;text-transform:uppercase;letter-spacing:.04em;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-settings-nav__items{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:var(--ius-space-xxs);overflow:hidden;position:relative}.ius-settings-nav__measure{position:absolute;top:0;left:0;right:0;visibility:hidden;pointer-events:none;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__mrow{display:flex;flex-direction:column}.ius-settings-nav__footer{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__sep{height:1px;background:var(--ius-stroke);margin:var(--ius-space-xs) var(--ius-space-xs);flex:0 0 auto}:host ::ng-deep .ius-menuitem[data-variant=rail]{--_mi-icon: var(--ius-neutral-8)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}:host ::ng-deep ius-tooltip{align-items:stretch}:host ::ng-deep ius-tooltip>ius-popover{flex:1 1 auto;min-width:0;align-items:stretch}.ius-settings-nav__cico{appearance:none;border:0;background:transparent;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:var(--_sn-cico-h, var(--ius-hit-target-min));border-radius:var(--ius-radius-md);color:var(--ius-neutral-8);text-decoration:none;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-settings-nav__cico:hover{background:var(--ius-neutral-2)}.ius-settings-nav__cico:active{background:var(--ius-neutral-3)}.ius-settings-nav__cico:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-settings-nav__cico[data-disabled=true]{opacity:.5;pointer-events:none;cursor:default}.ius-settings-nav__cico[data-selected=true]{background:var(--_sn-tint);color:var(--_sn-fg)}.ius-settings-nav__cico .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-settings-nav__cico-badge{position:absolute;top:7px;right:12px;width:8px;height:8px;border-radius:var(--ius-radius-pill);background:var(--ius-info-500);box-shadow:0 0 0 2px var(--ius-surface-card)}.ius-settings-nav__pop{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:208px;padding:var(--ius-space-xxs)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MenuItemComponent, selector: "ius-menu-item", inputs: ["icon", "label", "description", "badge", "variant", "size", "selected", "disabled", "danger", "state", "href", "ariaLabel", "itemRole"], outputs: ["clicked"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: TooltipComponent, selector: "ius-tooltip", inputs: ["label", "placement", "trigger", "offset", "showArrow", "disabled", "open", "defaultOpen"], outputs: ["openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14016
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SettingsNavComponent, isStandalone: true, selector: "ius-settings-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, selectedId: { classPropertyName: "selectedId", publicName: "selectedId", isSignal: true, isRequired: false, transformFunction: null }, accent: { classPropertyName: "accent", publicName: "accent", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultCollapsed: { classPropertyName: "defaultCollapsed", publicName: "defaultCollapsed", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, overflowLabel: { classPropertyName: "overflowLabel", publicName: "overflowLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIdChange: "selectedIdChange", itemClick: "itemClick", collapsedChange: "collapsedChange" }, host: { attributes: { "role": "navigation" }, properties: { "attr.aria-label": "ariaLabel()", "attr.data-collapsed": "isCollapsed() ? 'true' : null", "attr.title": "null", "style.--_sn-w": "widthCss()", "style.--_sn-cico-h": "cicoH()", "style.--_sn-fg": "accentFg()", "style.--_sn-tint": "accentTint()" }, classAttribute: "ius-settings-nav" }, queries: [{ propertyName: "headerRef", first: true, predicate: IusSettingsNavHeaderDirective, descendants: true, isSignal: true }, { propertyName: "footerRef", first: true, predicate: IusSettingsNavFooterDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "wrapRef", first: true, predicate: ["wrap"], descendants: true, isSignal: true }, { propertyName: "measRef", first: true, predicate: ["meas"], descendants: true, isSignal: true }], ngImport: i0, template: "<!--\r\n SettingsNav \u2014 el HOST es el `<nav>` (ver `host:` del .ts), as\u00ED que aqu\u00ED\r\n arranca directamente el contenido: encabezado \u00B7 columna de filas \u00B7 pie.\r\n-->\r\n\r\n<!--\r\n Encabezado. El slot `[iusSettingsNavHeader]` MANDA sobre `title`, y `title`\r\n se oculta al colapsar (ambas condiciones viven en `showTitle()`).\r\n El `ng-content` va en un \u00FAnico `@if` (nunca anidado): con `@if` anidados el\r\n compilador solo iza el atributo `select` un nivel y la proyecci\u00F3n fallar\u00EDa en\r\n silencio.\r\n-->\r\n@if (headerRef() || showTitle()) {\r\n <div class=\"ius-settings-nav__header\">\r\n <ng-content select=\"[iusSettingsNavHeader]\" />\r\n @if (showTitle()) {\r\n <div class=\"ius-settings-nav__title\">{{ title() }}</div>\r\n }\r\n </div>\r\n}\r\n\r\n<!-- Columna de filas: NO scrollea (priority+ recoge lo que no cabe). -->\r\n<div class=\"ius-settings-nav__items\" #wrap>\r\n @for (it of visibleItems(); track it.id) {\r\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\r\n }\r\n\r\n <!-- Desborde: lo que no cabe en alto se recoge en un Popover a la derecha. -->\r\n @if (hasOverflow()) {\r\n <ius-popover\r\n [open]=\"moreOpen()\"\r\n trigger=\"click\"\r\n placement=\"right-start\"\r\n [showArrow]=\"false\"\r\n [offset]=\"8\"\r\n [dismissable]=\"true\"\r\n (openChange)=\"moreOpen.set($event)\"\r\n >\r\n @if (isCollapsed()) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-settings-nav__cico\"\r\n [attr.data-selected]=\"anyHiddenSelected() ? 'true' : null\"\r\n [attr.aria-label]=\"overflowLabel()\"\r\n aria-haspopup=\"menu\"\r\n [attr.aria-expanded]=\"moreOpen()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">more_horiz</span>\r\n @if (anyHiddenSelected()) {\r\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\r\n }\r\n </button>\r\n } @else {\r\n <ius-menu-item\r\n variant=\"rail\"\r\n [size]=\"size()\"\r\n icon=\"more_horiz\"\r\n [label]=\"overflowLabel()\"\r\n [selected]=\"anyHiddenSelected()\"\r\n [ariaLabel]=\"overflowLabel() + ' secciones'\"\r\n />\r\n }\r\n\r\n <!--\r\n Panel del desborde. Se estampa en el overlay del CDK (FUERA del host),\r\n as\u00ED que las variables de acento NO se heredan: se repiten en l\u00EDnea, tal\r\n como el golden repite `accentVars(accent)` en este mismo nodo.\r\n -->\r\n <div\r\n iusPopoverContent\r\n class=\"ius-settings-nav__pop\"\r\n role=\"menu\"\r\n [style.--_sn-fg]=\"accentFg()\"\r\n [style.--_sn-tint]=\"accentTint()\"\r\n >\r\n @for (it of hiddenItems(); track it.id) {\r\n <ius-menu-item\r\n variant=\"menu\"\r\n itemRole=\"menuitem\"\r\n [size]=\"size()\"\r\n [icon]=\"it.icon\"\r\n [label]=\"it.label\"\r\n [badge]=\"it.badge\"\r\n [selected]=\"it.id === selectedId()\"\r\n [disabled]=\"!!it.disabled\"\r\n [href]=\"it.href\"\r\n (clicked)=\"handleFromOverflow(it)\"\r\n />\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n\r\n <!--\r\n Contenedor de MEDICI\u00D3N (priority+): clona TODAS las filas fuera de vista\r\n (`position: absolute` + `visibility: hidden`, as\u00ED que no aporta alto ni\r\n entra en el orden de tabulaci\u00F3n) y de ah\u00ED se leen los `offsetHeight`.\r\n Cada clon va envuelto en `__mrow` porque el host de `ius-menu-item` es\r\n `display: contents` y no generar\u00EDa caja que medir.\r\n -->\r\n <div class=\"ius-settings-nav__measure\" #meas aria-hidden=\"true\">\r\n @for (it of items(); track it.id) {\r\n <div class=\"ius-settings-nav__mrow\">\r\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Pie: slot libre + bot\u00F3n propio de colapso, sobre una l\u00EDnea separadora. -->\r\n@if (hasFooter()) {\r\n <div class=\"ius-settings-nav__sep\"></div>\r\n <div class=\"ius-settings-nav__footer\">\r\n <ng-content select=\"[iusSettingsNavFooter]\" />\r\n\r\n @if (collapsible()) {\r\n @if (isCollapsed()) {\r\n <ius-tooltip [label]=\"toggleLabel()\" placement=\"right\">\r\n <button\r\n type=\"button\"\r\n class=\"ius-settings-nav__cico\"\r\n [attr.aria-label]=\"toggleLabel()\"\r\n aria-expanded=\"false\"\r\n (click)=\"toggleCollapsed()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ toggleIcon() }}</span>\r\n </button>\r\n </ius-tooltip>\r\n } @else {\r\n <ius-menu-item\r\n variant=\"rail\"\r\n [size]=\"size()\"\r\n [icon]=\"toggleIcon()\"\r\n [label]=\"toggleLabel()\"\r\n [ariaLabel]=\"toggleLabel()\"\r\n (clicked)=\"toggleCollapsed()\"\r\n />\r\n }\r\n }\r\n </div>\r\n}\r\n\r\n<!--\r\n UNA sola plantilla de fila, estampada con `NgTemplateOutlet` en la columna\r\n visible y en el contenedor de medici\u00F3n. El contexto de un `ng-template` no\r\n est\u00E1 tipado, as\u00ED que `asItem()` le devuelve el tipo y `strictTemplates`\r\n vuelve a comprobar todo el cuerpo.\r\n-->\r\n<ng-template #fila let-raw=\"it\">\r\n @let it = asItem(raw);\r\n @let sel = it.id === selectedId();\r\n\r\n @if (isCollapsed()) {\r\n <!-- Colapsado: solo \u00EDcono; el nombre accesible lo dan Tooltip + aria-label. -->\r\n <ius-tooltip [label]=\"it.label\" placement=\"right\">\r\n @if (isLink(it)) {\r\n <a\r\n class=\"ius-settings-nav__cico\"\r\n [href]=\"it.href\"\r\n [attr.data-selected]=\"sel ? 'true' : null\"\r\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\r\n [attr.aria-current]=\"sel ? 'page' : null\"\r\n [attr.aria-label]=\"it.label\"\r\n (click)=\"handle(it)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\r\n @if (it.badge) {\r\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\r\n }\r\n </a>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"ius-settings-nav__cico\"\r\n [disabled]=\"!it.href && !!it.disabled\"\r\n [attr.data-selected]=\"sel ? 'true' : null\"\r\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\r\n [attr.aria-current]=\"sel ? 'page' : null\"\r\n [attr.aria-label]=\"it.label\"\r\n (click)=\"handle(it)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\r\n @if (it.badge) {\r\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\r\n }\r\n </button>\r\n }\r\n </ius-tooltip>\r\n } @else {\r\n <!-- Expandido: la fila ES un MenuItem `rail` (idle/hover/pressed heredados). -->\r\n <ius-menu-item\r\n variant=\"rail\"\r\n [size]=\"size()\"\r\n [icon]=\"it.icon\"\r\n [label]=\"it.label\"\r\n [badge]=\"it.badge\"\r\n [selected]=\"sel\"\r\n [disabled]=\"!!it.disabled\"\r\n [href]=\"it.href\"\r\n (clicked)=\"handle(it)\"\r\n />\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:var(--_sn-w, 240px);min-width:var(--_sn-w, 240px);height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);padding:var(--ius-space-sm) var(--ius-space-xs);gap:var(--ius-space-xxs);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:var(--_sn-wc, 64px);min-width:var(--_sn-wc, 64px)}.ius-settings-nav__header{flex:0 0 auto;padding:var(--ius-space-xs) var(--ius-space-xs) var(--ius-space-sm);min-height:0}.ius-settings-nav__title{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);line-height:1.2;text-transform:uppercase;letter-spacing:.04em;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-settings-nav__items{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:var(--ius-space-xxs);overflow:hidden;position:relative}.ius-settings-nav__measure{position:absolute;top:0;left:0;right:0;visibility:hidden;pointer-events:none;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__mrow{display:flex;flex-direction:column}.ius-settings-nav__footer{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__sep{height:1px;background:var(--ius-stroke);margin:var(--ius-space-xs) var(--ius-space-xs);flex:0 0 auto}:host ::ng-deep .ius-menuitem[data-variant=rail]{--_mi-icon: var(--ius-neutral-8)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}:host ::ng-deep ius-tooltip{align-items:stretch}:host ::ng-deep ius-tooltip>ius-popover{flex:1 1 auto;min-width:0;align-items:stretch}.ius-settings-nav__cico{appearance:none;border:0;background:transparent;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:var(--_sn-cico-h, var(--ius-hit-target-min));border-radius:var(--ius-radius-md);color:var(--ius-neutral-8);text-decoration:none;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-settings-nav__cico:hover{background:var(--ius-neutral-2)}.ius-settings-nav__cico:active{background:var(--ius-neutral-3)}.ius-settings-nav__cico:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-settings-nav__cico[data-disabled=true]{opacity:.5;pointer-events:none;cursor:default}.ius-settings-nav__cico[data-selected=true]{background:var(--_sn-tint);color:var(--_sn-fg)}.ius-settings-nav__cico .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-settings-nav__cico-badge{position:absolute;top:7px;right:12px;width:8px;height:8px;border-radius:var(--ius-radius-pill);background:var(--ius-info-500);box-shadow:0 0 0 2px var(--ius-surface-card)}.ius-settings-nav__pop{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:208px;padding:var(--ius-space-xxs)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MenuItemComponent, selector: "ius-menu-item", inputs: ["icon", "label", "description", "badge", "variant", "size", "selected", "disabled", "danger", "state", "href", "ariaLabel", "itemRole"], outputs: ["clicked"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: TooltipComponent, selector: "ius-tooltip", inputs: ["label", "placement", "trigger", "offset", "showArrow", "disabled", "open", "defaultOpen"], outputs: ["openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13967
14017
  }
13968
14018
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsNavComponent, decorators: [{
13969
14019
  type: Component,
@@ -13982,7 +14032,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
13982
14032
  '[style.--_sn-cico-h]': 'cicoH()',
13983
14033
  '[style.--_sn-fg]': 'accentFg()',
13984
14034
  '[style.--_sn-tint]': 'accentTint()',
13985
- }, template: "<!--\n SettingsNav \u2014 el HOST es el `<nav>` (ver `host:` del .ts), as\u00ED que aqu\u00ED\n arranca directamente el contenido: encabezado \u00B7 columna de filas \u00B7 pie.\n-->\n\n<!--\n Encabezado. El slot `[iusSettingsNavHeader]` MANDA sobre `title`, y `title`\n se oculta al colapsar (ambas condiciones viven en `showTitle()`).\n El `ng-content` va en un \u00FAnico `@if` (nunca anidado): con `@if` anidados el\n compilador solo iza el atributo `select` un nivel y la proyecci\u00F3n fallar\u00EDa en\n silencio.\n-->\n@if (headerRef() || showTitle()) {\n <div class=\"ius-settings-nav__header\">\n <ng-content select=\"[iusSettingsNavHeader]\" />\n @if (showTitle()) {\n <div class=\"ius-settings-nav__title\">{{ title() }}</div>\n }\n </div>\n}\n\n<!-- Columna de filas: NO scrollea (priority+ recoge lo que no cabe). -->\n<div class=\"ius-settings-nav__items\" #wrap>\n @for (it of visibleItems(); track it.id) {\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\n }\n\n <!-- Desborde: lo que no cabe en alto se recoge en un Popover a la derecha. -->\n @if (hasOverflow()) {\n <ius-popover\n [open]=\"moreOpen()\"\n trigger=\"click\"\n placement=\"right-start\"\n [showArrow]=\"false\"\n [offset]=\"8\"\n [dismissable]=\"true\"\n (openChange)=\"moreOpen.set($event)\"\n >\n @if (isCollapsed()) {\n <button\n type=\"button\"\n class=\"ius-settings-nav__cico\"\n [attr.data-selected]=\"anyHiddenSelected() ? 'true' : null\"\n [attr.aria-label]=\"overflowLabel()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"moreOpen()\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">more_horiz</span>\n @if (anyHiddenSelected()) {\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\n }\n </button>\n } @else {\n <ius-menu-item\n variant=\"rail\"\n [size]=\"size()\"\n icon=\"more_horiz\"\n [label]=\"overflowLabel()\"\n [selected]=\"anyHiddenSelected()\"\n [ariaLabel]=\"overflowLabel() + ' secciones'\"\n />\n }\n\n <!--\n Panel del desborde. Se estampa en el overlay del CDK (FUERA del host),\n as\u00ED que las variables de acento NO se heredan: se repiten en l\u00EDnea, tal\n como el golden repite `accentVars(accent)` en este mismo nodo.\n -->\n <div\n iusPopoverContent\n class=\"ius-settings-nav__pop\"\n role=\"menu\"\n [style.--_sn-fg]=\"accentFg()\"\n [style.--_sn-tint]=\"accentTint()\"\n >\n @for (it of hiddenItems(); track it.id) {\n <ius-menu-item\n variant=\"menu\"\n itemRole=\"menuitem\"\n [size]=\"size()\"\n [icon]=\"it.icon\"\n [label]=\"it.label\"\n [badge]=\"it.badge\"\n [selected]=\"it.id === selectedId()\"\n [disabled]=\"!!it.disabled\"\n [href]=\"it.href\"\n (clicked)=\"handleFromOverflow(it)\"\n />\n }\n </div>\n </ius-popover>\n }\n\n <!--\n Contenedor de MEDICI\u00D3N (priority+): clona TODAS las filas fuera de vista\n (`position: absolute` + `visibility: hidden`, as\u00ED que no aporta alto ni\n entra en el orden de tabulaci\u00F3n) y de ah\u00ED se leen los `offsetHeight`.\n Cada clon va envuelto en `__mrow` porque el host de `ius-menu-item` es\n `display: contents` y no generar\u00EDa caja que medir.\n -->\n <div class=\"ius-settings-nav__measure\" #meas aria-hidden=\"true\">\n @for (it of items(); track it.id) {\n <div class=\"ius-settings-nav__mrow\">\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\n </div>\n }\n </div>\n</div>\n\n<!-- Pie: slot libre + bot\u00F3n propio de colapso, sobre una l\u00EDnea separadora. -->\n@if (hasFooter()) {\n <div class=\"ius-settings-nav__sep\"></div>\n <div class=\"ius-settings-nav__footer\">\n <ng-content select=\"[iusSettingsNavFooter]\" />\n\n @if (collapsible()) {\n @if (isCollapsed()) {\n <ius-tooltip [label]=\"toggleLabel()\" placement=\"right\">\n <button\n type=\"button\"\n class=\"ius-settings-nav__cico\"\n [attr.aria-label]=\"toggleLabel()\"\n aria-expanded=\"false\"\n (click)=\"toggleCollapsed()\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ toggleIcon() }}</span>\n </button>\n </ius-tooltip>\n } @else {\n <ius-menu-item\n variant=\"rail\"\n [size]=\"size()\"\n [icon]=\"toggleIcon()\"\n [label]=\"toggleLabel()\"\n [ariaLabel]=\"toggleLabel()\"\n (clicked)=\"toggleCollapsed()\"\n />\n }\n }\n </div>\n}\n\n<!--\n UNA sola plantilla de fila, estampada con `NgTemplateOutlet` en la columna\n visible y en el contenedor de medici\u00F3n. El contexto de un `ng-template` no\n est\u00E1 tipado, as\u00ED que `asItem()` le devuelve el tipo y `strictTemplates`\n vuelve a comprobar todo el cuerpo.\n-->\n<ng-template #fila let-raw=\"it\">\n @let it = asItem(raw);\n @let sel = it.id === selectedId();\n\n @if (isCollapsed()) {\n <!-- Colapsado: solo \u00EDcono; el nombre accesible lo dan Tooltip + aria-label. -->\n <ius-tooltip [label]=\"it.label\" placement=\"right\">\n @if (isLink(it)) {\n <a\n class=\"ius-settings-nav__cico\"\n [href]=\"it.href\"\n [attr.data-selected]=\"sel ? 'true' : null\"\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\n [attr.aria-current]=\"sel ? 'page' : null\"\n [attr.aria-label]=\"it.label\"\n (click)=\"handle(it)\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\n @if (it.badge) {\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"ius-settings-nav__cico\"\n [disabled]=\"!it.href && !!it.disabled\"\n [attr.data-selected]=\"sel ? 'true' : null\"\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\n [attr.aria-current]=\"sel ? 'page' : null\"\n [attr.aria-label]=\"it.label\"\n (click)=\"handle(it)\"\n >\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\n @if (it.badge) {\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\n }\n </button>\n }\n </ius-tooltip>\n } @else {\n <!-- Expandido: la fila ES un MenuItem `rail` (idle/hover/pressed heredados). -->\n <ius-menu-item\n variant=\"rail\"\n [size]=\"size()\"\n [icon]=\"it.icon\"\n [label]=\"it.label\"\n [badge]=\"it.badge\"\n [selected]=\"sel\"\n [disabled]=\"!!it.disabled\"\n [href]=\"it.href\"\n (clicked)=\"handle(it)\"\n />\n }\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:var(--_sn-w, 240px);min-width:var(--_sn-w, 240px);height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);padding:var(--ius-space-sm) var(--ius-space-xs);gap:var(--ius-space-xxs);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:var(--_sn-wc, 64px);min-width:var(--_sn-wc, 64px)}.ius-settings-nav__header{flex:0 0 auto;padding:var(--ius-space-xs) var(--ius-space-xs) var(--ius-space-sm);min-height:0}.ius-settings-nav__title{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);line-height:1.2;text-transform:uppercase;letter-spacing:.04em;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-settings-nav__items{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:var(--ius-space-xxs);overflow:hidden;position:relative}.ius-settings-nav__measure{position:absolute;top:0;left:0;right:0;visibility:hidden;pointer-events:none;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__mrow{display:flex;flex-direction:column}.ius-settings-nav__footer{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__sep{height:1px;background:var(--ius-stroke);margin:var(--ius-space-xs) var(--ius-space-xs);flex:0 0 auto}:host ::ng-deep .ius-menuitem[data-variant=rail]{--_mi-icon: var(--ius-neutral-8)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}:host ::ng-deep ius-tooltip{align-items:stretch}:host ::ng-deep ius-tooltip>ius-popover{flex:1 1 auto;min-width:0;align-items:stretch}.ius-settings-nav__cico{appearance:none;border:0;background:transparent;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:var(--_sn-cico-h, var(--ius-hit-target-min));border-radius:var(--ius-radius-md);color:var(--ius-neutral-8);text-decoration:none;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-settings-nav__cico:hover{background:var(--ius-neutral-2)}.ius-settings-nav__cico:active{background:var(--ius-neutral-3)}.ius-settings-nav__cico:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-settings-nav__cico[data-disabled=true]{opacity:.5;pointer-events:none;cursor:default}.ius-settings-nav__cico[data-selected=true]{background:var(--_sn-tint);color:var(--_sn-fg)}.ius-settings-nav__cico .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-settings-nav__cico-badge{position:absolute;top:7px;right:12px;width:8px;height:8px;border-radius:var(--ius-radius-pill);background:var(--ius-info-500);box-shadow:0 0 0 2px var(--ius-surface-card)}.ius-settings-nav__pop{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:208px;padding:var(--ius-space-xxs)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}\n"] }]
14035
+ }, template: "<!--\r\n SettingsNav \u2014 el HOST es el `<nav>` (ver `host:` del .ts), as\u00ED que aqu\u00ED\r\n arranca directamente el contenido: encabezado \u00B7 columna de filas \u00B7 pie.\r\n-->\r\n\r\n<!--\r\n Encabezado. El slot `[iusSettingsNavHeader]` MANDA sobre `title`, y `title`\r\n se oculta al colapsar (ambas condiciones viven en `showTitle()`).\r\n El `ng-content` va en un \u00FAnico `@if` (nunca anidado): con `@if` anidados el\r\n compilador solo iza el atributo `select` un nivel y la proyecci\u00F3n fallar\u00EDa en\r\n silencio.\r\n-->\r\n@if (headerRef() || showTitle()) {\r\n <div class=\"ius-settings-nav__header\">\r\n <ng-content select=\"[iusSettingsNavHeader]\" />\r\n @if (showTitle()) {\r\n <div class=\"ius-settings-nav__title\">{{ title() }}</div>\r\n }\r\n </div>\r\n}\r\n\r\n<!-- Columna de filas: NO scrollea (priority+ recoge lo que no cabe). -->\r\n<div class=\"ius-settings-nav__items\" #wrap>\r\n @for (it of visibleItems(); track it.id) {\r\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\r\n }\r\n\r\n <!-- Desborde: lo que no cabe en alto se recoge en un Popover a la derecha. -->\r\n @if (hasOverflow()) {\r\n <ius-popover\r\n [open]=\"moreOpen()\"\r\n trigger=\"click\"\r\n placement=\"right-start\"\r\n [showArrow]=\"false\"\r\n [offset]=\"8\"\r\n [dismissable]=\"true\"\r\n (openChange)=\"moreOpen.set($event)\"\r\n >\r\n @if (isCollapsed()) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-settings-nav__cico\"\r\n [attr.data-selected]=\"anyHiddenSelected() ? 'true' : null\"\r\n [attr.aria-label]=\"overflowLabel()\"\r\n aria-haspopup=\"menu\"\r\n [attr.aria-expanded]=\"moreOpen()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">more_horiz</span>\r\n @if (anyHiddenSelected()) {\r\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\r\n }\r\n </button>\r\n } @else {\r\n <ius-menu-item\r\n variant=\"rail\"\r\n [size]=\"size()\"\r\n icon=\"more_horiz\"\r\n [label]=\"overflowLabel()\"\r\n [selected]=\"anyHiddenSelected()\"\r\n [ariaLabel]=\"overflowLabel() + ' secciones'\"\r\n />\r\n }\r\n\r\n <!--\r\n Panel del desborde. Se estampa en el overlay del CDK (FUERA del host),\r\n as\u00ED que las variables de acento NO se heredan: se repiten en l\u00EDnea, tal\r\n como el golden repite `accentVars(accent)` en este mismo nodo.\r\n -->\r\n <div\r\n iusPopoverContent\r\n class=\"ius-settings-nav__pop\"\r\n role=\"menu\"\r\n [style.--_sn-fg]=\"accentFg()\"\r\n [style.--_sn-tint]=\"accentTint()\"\r\n >\r\n @for (it of hiddenItems(); track it.id) {\r\n <ius-menu-item\r\n variant=\"menu\"\r\n itemRole=\"menuitem\"\r\n [size]=\"size()\"\r\n [icon]=\"it.icon\"\r\n [label]=\"it.label\"\r\n [badge]=\"it.badge\"\r\n [selected]=\"it.id === selectedId()\"\r\n [disabled]=\"!!it.disabled\"\r\n [href]=\"it.href\"\r\n (clicked)=\"handleFromOverflow(it)\"\r\n />\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n\r\n <!--\r\n Contenedor de MEDICI\u00D3N (priority+): clona TODAS las filas fuera de vista\r\n (`position: absolute` + `visibility: hidden`, as\u00ED que no aporta alto ni\r\n entra en el orden de tabulaci\u00F3n) y de ah\u00ED se leen los `offsetHeight`.\r\n Cada clon va envuelto en `__mrow` porque el host de `ius-menu-item` es\r\n `display: contents` y no generar\u00EDa caja que medir.\r\n -->\r\n <div class=\"ius-settings-nav__measure\" #meas aria-hidden=\"true\">\r\n @for (it of items(); track it.id) {\r\n <div class=\"ius-settings-nav__mrow\">\r\n <ng-container [ngTemplateOutlet]=\"fila\" [ngTemplateOutletContext]=\"{ it: it }\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Pie: slot libre + bot\u00F3n propio de colapso, sobre una l\u00EDnea separadora. -->\r\n@if (hasFooter()) {\r\n <div class=\"ius-settings-nav__sep\"></div>\r\n <div class=\"ius-settings-nav__footer\">\r\n <ng-content select=\"[iusSettingsNavFooter]\" />\r\n\r\n @if (collapsible()) {\r\n @if (isCollapsed()) {\r\n <ius-tooltip [label]=\"toggleLabel()\" placement=\"right\">\r\n <button\r\n type=\"button\"\r\n class=\"ius-settings-nav__cico\"\r\n [attr.aria-label]=\"toggleLabel()\"\r\n aria-expanded=\"false\"\r\n (click)=\"toggleCollapsed()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ toggleIcon() }}</span>\r\n </button>\r\n </ius-tooltip>\r\n } @else {\r\n <ius-menu-item\r\n variant=\"rail\"\r\n [size]=\"size()\"\r\n [icon]=\"toggleIcon()\"\r\n [label]=\"toggleLabel()\"\r\n [ariaLabel]=\"toggleLabel()\"\r\n (clicked)=\"toggleCollapsed()\"\r\n />\r\n }\r\n }\r\n </div>\r\n}\r\n\r\n<!--\r\n UNA sola plantilla de fila, estampada con `NgTemplateOutlet` en la columna\r\n visible y en el contenedor de medici\u00F3n. El contexto de un `ng-template` no\r\n est\u00E1 tipado, as\u00ED que `asItem()` le devuelve el tipo y `strictTemplates`\r\n vuelve a comprobar todo el cuerpo.\r\n-->\r\n<ng-template #fila let-raw=\"it\">\r\n @let it = asItem(raw);\r\n @let sel = it.id === selectedId();\r\n\r\n @if (isCollapsed()) {\r\n <!-- Colapsado: solo \u00EDcono; el nombre accesible lo dan Tooltip + aria-label. -->\r\n <ius-tooltip [label]=\"it.label\" placement=\"right\">\r\n @if (isLink(it)) {\r\n <a\r\n class=\"ius-settings-nav__cico\"\r\n [href]=\"it.href\"\r\n [attr.data-selected]=\"sel ? 'true' : null\"\r\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\r\n [attr.aria-current]=\"sel ? 'page' : null\"\r\n [attr.aria-label]=\"it.label\"\r\n (click)=\"handle(it)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\r\n @if (it.badge) {\r\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\r\n }\r\n </a>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"ius-settings-nav__cico\"\r\n [disabled]=\"!it.href && !!it.disabled\"\r\n [attr.data-selected]=\"sel ? 'true' : null\"\r\n [attr.data-disabled]=\"it.disabled ? 'true' : null\"\r\n [attr.aria-current]=\"sel ? 'page' : null\"\r\n [attr.aria-label]=\"it.label\"\r\n (click)=\"handle(it)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ it.icon }}</span>\r\n @if (it.badge) {\r\n <span class=\"ius-settings-nav__cico-badge\" aria-hidden=\"true\"></span>\r\n }\r\n </button>\r\n }\r\n </ius-tooltip>\r\n } @else {\r\n <!-- Expandido: la fila ES un MenuItem `rail` (idle/hover/pressed heredados). -->\r\n <ius-menu-item\r\n variant=\"rail\"\r\n [size]=\"size()\"\r\n [icon]=\"it.icon\"\r\n [label]=\"it.label\"\r\n [badge]=\"it.badge\"\r\n [selected]=\"sel\"\r\n [disabled]=\"!!it.disabled\"\r\n [href]=\"it.href\"\r\n (clicked)=\"handle(it)\"\r\n />\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:var(--_sn-w, 240px);min-width:var(--_sn-w, 240px);height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);padding:var(--ius-space-sm) var(--ius-space-xs);gap:var(--ius-space-xxs);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:var(--_sn-wc, 64px);min-width:var(--_sn-wc, 64px)}.ius-settings-nav__header{flex:0 0 auto;padding:var(--ius-space-xs) var(--ius-space-xs) var(--ius-space-sm);min-height:0}.ius-settings-nav__title{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);line-height:1.2;text-transform:uppercase;letter-spacing:.04em;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-settings-nav__items{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:var(--ius-space-xxs);overflow:hidden;position:relative}.ius-settings-nav__measure{position:absolute;top:0;left:0;right:0;visibility:hidden;pointer-events:none;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__mrow{display:flex;flex-direction:column}.ius-settings-nav__footer{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-settings-nav__sep{height:1px;background:var(--ius-stroke);margin:var(--ius-space-xs) var(--ius-space-xs);flex:0 0 auto}:host ::ng-deep .ius-menuitem[data-variant=rail]{--_mi-icon: var(--ius-neutral-8)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}:host ::ng-deep .ius-menuitem[data-variant=rail][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}:host ::ng-deep ius-tooltip{align-items:stretch}:host ::ng-deep ius-tooltip>ius-popover{flex:1 1 auto;min-width:0;align-items:stretch}.ius-settings-nav__cico{appearance:none;border:0;background:transparent;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:var(--_sn-cico-h, var(--ius-hit-target-min));border-radius:var(--ius-radius-md);color:var(--ius-neutral-8);text-decoration:none;transition:background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-settings-nav__cico:hover{background:var(--ius-neutral-2)}.ius-settings-nav__cico:active{background:var(--ius-neutral-3)}.ius-settings-nav__cico:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-settings-nav__cico[data-disabled=true]{opacity:.5;pointer-events:none;cursor:default}.ius-settings-nav__cico[data-selected=true]{background:var(--_sn-tint);color:var(--_sn-fg)}.ius-settings-nav__cico .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-settings-nav__cico-badge{position:absolute;top:7px;right:12px;width:8px;height:8px;border-radius:var(--ius-radius-pill);background:var(--ius-info-500);box-shadow:0 0 0 2px var(--ius-surface-card)}.ius-settings-nav__pop{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:208px;padding:var(--ius-space-xxs)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true]{background:var(--_sn-tint);--_mi-icon: var(--_sn-fg)}.ius-settings-nav__pop ::ng-deep .ius-menuitem[data-variant=menu][data-selected=true] .ius-menuitem__label{color:var(--_sn-fg)}\n"] }]
13986
14036
  }], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selectedId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedId", required: false }] }], accent: [{ type: i0.Input, args: [{ isSignal: true, alias: "accent", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], defaultCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultCollapsed", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], overflowLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "overflowLabel", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], selectedIdChange: [{ type: i0.Output, args: ["selectedIdChange"] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], collapsedChange: [{ type: i0.Output, args: ["collapsedChange"] }], headerRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusSettingsNavHeaderDirective), { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusSettingsNavFooterDirective), { isSignal: true }] }], wrapRef: [{ type: i0.ViewChild, args: ['wrap', { isSignal: true }] }], measRef: [{ type: i0.ViewChild, args: ['meas', { isSignal: true }] }] } });
13987
14037
 
13988
14038
  /**
@@ -18502,7 +18552,7 @@ class SwitchComponent {
18502
18552
  useExisting: forwardRef(() => SwitchComponent),
18503
18553
  multi: true,
18504
18554
  },
18505
- ], ngImport: i0, template: "<label class=\"ius-sw__inner\" [attr.data-label-position]=\"labelPosition\">\n <!-- Input primero + pista inmediatamente despu\u00E9s: el halo de foco usa el\n selector adyacente `.ius-sw__input:focus-visible + .ius-sw__track`, as\u00ED\n que el orden DOM se fija aqu\u00ED y la posici\u00F3n visual del label la resuelve\n `order` en el SCSS (labelPosition left/right). -->\n <input\n [id]=\"inputId\"\n class=\"ius-sw__input\"\n type=\"checkbox\"\n role=\"switch\"\n [name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-label]=\"ariaLabel ?? null\"\n (change)=\"onToggle()\"\n (blur)=\"onBlur()\"\n />\n\n <span class=\"ius-sw__track\" aria-hidden=\"true\">\n <span class=\"ius-sw__knob\"></span>\n </span>\n\n @if (label != null) {\n <span class=\"ius-sw__label\">\n <span>{{ label }}</span>\n @if (showIconHelp) {\n <ius-popover\n [title]=\"iconHelpTitle\"\n [content]=\"iconHelpContent\"\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\n >\n <span\n class=\"ius-sw__help\"\n tabindex=\"0\"\n aria-label=\"Ayuda\"\n (click)=\"$event.preventDefault()\"\n >\n <span translate=\"no\" class=\"ius-icon\">help</span>\n </span>\n </ius-popover>\n }\n </span>\n }\n</label>\n", styles: ["@charset \"UTF-8\";:host{--_sw-w: 44px;--_sw-h: 24px;--_sw-knob: 18px;--_sw-fs: var(--ius-fs-base);display:inline-block;vertical-align:middle}:host([data-size=small]){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}:host([data-size=large]){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}}.ius-sw__inner{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--_sw-fs);color:var(--ius-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ius-sw__inner[data-label-position=left] .ius-sw__label{order:-1}:host([data-disabled=true]) .ius-sw__inner{cursor:not-allowed;color:var(--ius-text-disabled)}.ius-sw__input{position:absolute;opacity:0;width:0;height:0;margin:0}.ius-sw__track{position:relative;flex:0 0 auto;width:var(--_sw-w);height:var(--_sw-h);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-4);transition:background-color var(--ius-duration-base) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-sw__knob{position:absolute;top:50%;left:calc((var(--_sw-h) - var(--_sw-knob)) / 2);transform:translateY(-50%);width:var(--_sw-knob);height:var(--_sw-knob);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-white);box-shadow:var(--ius-elevation-100);transition:left var(--ius-duration-base) var(--ius-ease-standard)}:host(:hover) .ius-sw__track,:host([data-force=hover]) .ius-sw__track{background:var(--ius-neutral-5)}:host(:active) .ius-sw__track,:host([data-force=pressed]) .ius-sw__track{background:var(--ius-neutral-6)}:host([data-checked=true]) .ius-sw__track{background:var(--ius-primary-900)}:host([data-checked=true]) .ius-sw__knob{left:calc(var(--_sw-w) - var(--_sw-knob) - (var(--_sw-h) - var(--_sw-knob)) / 2)}:host([data-checked=true]:hover) .ius-sw__track,:host([data-checked=true][data-force=hover]) .ius-sw__track{background:var(--ius-primary-800)}:host([data-checked=true]:active) .ius-sw__track,:host([data-checked=true][data-force=pressed]) .ius-sw__track{background:var(--ius-info-700)}:host([data-force=focused]) .ius-sw__track,.ius-sw__input:focus-visible+.ius-sw__track{box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]) .ius-sw__track{background:var(--ius-neutral-3)}:host([data-disabled=true][data-checked=true]) .ius-sw__track{background:var(--ius-info-200)}:host([data-disabled=true]) .ius-sw__knob{box-shadow:none;background:var(--ius-neutral-1)}.ius-sw__label{display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-sw__help{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-sw__help .ius-icon{font-size:calc(var(--_sw-fs) + 4px);line-height:1}:host([data-disabled=true]) .ius-sw__help{color:var(--ius-text-disabled)}\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18555
+ ], ngImport: i0, template: "<label class=\"ius-sw__inner\" [attr.data-label-position]=\"labelPosition\">\r\n <!-- Input primero + pista inmediatamente despu\u00E9s: el halo de foco usa el\r\n selector adyacente `.ius-sw__input:focus-visible + .ius-sw__track`, as\u00ED\r\n que el orden DOM se fija aqu\u00ED y la posici\u00F3n visual del label la resuelve\r\n `order` en el SCSS (labelPosition left/right). -->\r\n <input\r\n [id]=\"inputId\"\r\n class=\"ius-sw__input\"\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n [name]=\"name\"\r\n [attr.value]=\"value\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-checked]=\"ariaChecked\"\r\n [attr.aria-label]=\"ariaLabel ?? null\"\r\n (change)=\"onToggle()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"ius-sw__track\" aria-hidden=\"true\">\r\n <span class=\"ius-sw__knob\"></span>\r\n </span>\r\n\r\n @if (label != null) {\r\n <span class=\"ius-sw__label\">\r\n <span>{{ label }}</span>\r\n @if (showIconHelp) {\r\n <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\r\n >\r\n <span\r\n class=\"ius-sw__help\"\r\n tabindex=\"0\"\r\n aria-label=\"Ayuda\"\r\n (click)=\"$event.preventDefault()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">help</span>\r\n </span>\r\n </ius-popover>\r\n }\r\n </span>\r\n }\r\n</label>\r\n", styles: ["@charset \"UTF-8\";:host{--_sw-w: 44px;--_sw-h: 24px;--_sw-knob: 18px;--_sw-fs: var(--ius-fs-base);display:inline-block;vertical-align:middle}:host([data-size=small]){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}:host([data-size=large]){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}}.ius-sw__inner{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--_sw-fs);color:var(--ius-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ius-sw__inner[data-label-position=left] .ius-sw__label{order:-1}:host([data-disabled=true]) .ius-sw__inner{cursor:not-allowed;color:var(--ius-text-disabled)}.ius-sw__input{position:absolute;opacity:0;width:0;height:0;margin:0}.ius-sw__track{position:relative;flex:0 0 auto;width:var(--_sw-w);height:var(--_sw-h);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-4);transition:background-color var(--ius-duration-base) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-sw__knob{position:absolute;top:50%;left:calc((var(--_sw-h) - var(--_sw-knob)) / 2);transform:translateY(-50%);width:var(--_sw-knob);height:var(--_sw-knob);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-white);box-shadow:var(--ius-elevation-100);transition:left var(--ius-duration-base) var(--ius-ease-standard)}:host(:hover) .ius-sw__track,:host([data-force=hover]) .ius-sw__track{background:var(--ius-neutral-5)}:host(:active) .ius-sw__track,:host([data-force=pressed]) .ius-sw__track{background:var(--ius-neutral-6)}:host([data-checked=true]) .ius-sw__track{background:var(--ius-primary-900)}:host([data-checked=true]) .ius-sw__knob{left:calc(var(--_sw-w) - var(--_sw-knob) - (var(--_sw-h) - var(--_sw-knob)) / 2)}:host([data-checked=true]:hover) .ius-sw__track,:host([data-checked=true][data-force=hover]) .ius-sw__track{background:var(--ius-primary-800)}:host([data-checked=true]:active) .ius-sw__track,:host([data-checked=true][data-force=pressed]) .ius-sw__track{background:var(--ius-info-700)}:host([data-force=focused]) .ius-sw__track,.ius-sw__input:focus-visible+.ius-sw__track{box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]) .ius-sw__track{background:var(--ius-neutral-3)}:host([data-disabled=true][data-checked=true]) .ius-sw__track{background:var(--ius-info-200)}:host([data-disabled=true]) .ius-sw__knob{box-shadow:none;background:var(--ius-neutral-1)}.ius-sw__label{display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-sw__help{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-sw__help .ius-icon{font-size:calc(var(--_sw-fs) + 4px);line-height:1}:host([data-disabled=true]) .ius-sw__help{color:var(--ius-text-disabled)}\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18506
18556
  }
18507
18557
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SwitchComponent, decorators: [{
18508
18558
  type: Component,
@@ -18517,7 +18567,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18517
18567
  '[attr.data-size]': "size !== 'medium' ? size : null",
18518
18568
  '[attr.data-checked]': "checked ? 'true' : null",
18519
18569
  '[attr.data-disabled]': "disabled ? 'true' : null",
18520
- }, template: "<label class=\"ius-sw__inner\" [attr.data-label-position]=\"labelPosition\">\n <!-- Input primero + pista inmediatamente despu\u00E9s: el halo de foco usa el\n selector adyacente `.ius-sw__input:focus-visible + .ius-sw__track`, as\u00ED\n que el orden DOM se fija aqu\u00ED y la posici\u00F3n visual del label la resuelve\n `order` en el SCSS (labelPosition left/right). -->\n <input\n [id]=\"inputId\"\n class=\"ius-sw__input\"\n type=\"checkbox\"\n role=\"switch\"\n [name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-label]=\"ariaLabel ?? null\"\n (change)=\"onToggle()\"\n (blur)=\"onBlur()\"\n />\n\n <span class=\"ius-sw__track\" aria-hidden=\"true\">\n <span class=\"ius-sw__knob\"></span>\n </span>\n\n @if (label != null) {\n <span class=\"ius-sw__label\">\n <span>{{ label }}</span>\n @if (showIconHelp) {\n <ius-popover\n [title]=\"iconHelpTitle\"\n [content]=\"iconHelpContent\"\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\n >\n <span\n class=\"ius-sw__help\"\n tabindex=\"0\"\n aria-label=\"Ayuda\"\n (click)=\"$event.preventDefault()\"\n >\n <span translate=\"no\" class=\"ius-icon\">help</span>\n </span>\n </ius-popover>\n }\n </span>\n }\n</label>\n", styles: ["@charset \"UTF-8\";:host{--_sw-w: 44px;--_sw-h: 24px;--_sw-knob: 18px;--_sw-fs: var(--ius-fs-base);display:inline-block;vertical-align:middle}:host([data-size=small]){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}:host([data-size=large]){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}}.ius-sw__inner{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--_sw-fs);color:var(--ius-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ius-sw__inner[data-label-position=left] .ius-sw__label{order:-1}:host([data-disabled=true]) .ius-sw__inner{cursor:not-allowed;color:var(--ius-text-disabled)}.ius-sw__input{position:absolute;opacity:0;width:0;height:0;margin:0}.ius-sw__track{position:relative;flex:0 0 auto;width:var(--_sw-w);height:var(--_sw-h);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-4);transition:background-color var(--ius-duration-base) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-sw__knob{position:absolute;top:50%;left:calc((var(--_sw-h) - var(--_sw-knob)) / 2);transform:translateY(-50%);width:var(--_sw-knob);height:var(--_sw-knob);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-white);box-shadow:var(--ius-elevation-100);transition:left var(--ius-duration-base) var(--ius-ease-standard)}:host(:hover) .ius-sw__track,:host([data-force=hover]) .ius-sw__track{background:var(--ius-neutral-5)}:host(:active) .ius-sw__track,:host([data-force=pressed]) .ius-sw__track{background:var(--ius-neutral-6)}:host([data-checked=true]) .ius-sw__track{background:var(--ius-primary-900)}:host([data-checked=true]) .ius-sw__knob{left:calc(var(--_sw-w) - var(--_sw-knob) - (var(--_sw-h) - var(--_sw-knob)) / 2)}:host([data-checked=true]:hover) .ius-sw__track,:host([data-checked=true][data-force=hover]) .ius-sw__track{background:var(--ius-primary-800)}:host([data-checked=true]:active) .ius-sw__track,:host([data-checked=true][data-force=pressed]) .ius-sw__track{background:var(--ius-info-700)}:host([data-force=focused]) .ius-sw__track,.ius-sw__input:focus-visible+.ius-sw__track{box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]) .ius-sw__track{background:var(--ius-neutral-3)}:host([data-disabled=true][data-checked=true]) .ius-sw__track{background:var(--ius-info-200)}:host([data-disabled=true]) .ius-sw__knob{box-shadow:none;background:var(--ius-neutral-1)}.ius-sw__label{display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-sw__help{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-sw__help .ius-icon{font-size:calc(var(--_sw-fs) + 4px);line-height:1}:host([data-disabled=true]) .ius-sw__help{color:var(--ius-text-disabled)}\n"] }]
18570
+ }, template: "<label class=\"ius-sw__inner\" [attr.data-label-position]=\"labelPosition\">\r\n <!-- Input primero + pista inmediatamente despu\u00E9s: el halo de foco usa el\r\n selector adyacente `.ius-sw__input:focus-visible + .ius-sw__track`, as\u00ED\r\n que el orden DOM se fija aqu\u00ED y la posici\u00F3n visual del label la resuelve\r\n `order` en el SCSS (labelPosition left/right). -->\r\n <input\r\n [id]=\"inputId\"\r\n class=\"ius-sw__input\"\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n [name]=\"name\"\r\n [attr.value]=\"value\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-checked]=\"ariaChecked\"\r\n [attr.aria-label]=\"ariaLabel ?? null\"\r\n (change)=\"onToggle()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"ius-sw__track\" aria-hidden=\"true\">\r\n <span class=\"ius-sw__knob\"></span>\r\n </span>\r\n\r\n @if (label != null) {\r\n <span class=\"ius-sw__label\">\r\n <span>{{ label }}</span>\r\n @if (showIconHelp) {\r\n <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\r\n >\r\n <span\r\n class=\"ius-sw__help\"\r\n tabindex=\"0\"\r\n aria-label=\"Ayuda\"\r\n (click)=\"$event.preventDefault()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">help</span>\r\n </span>\r\n </ius-popover>\r\n }\r\n </span>\r\n }\r\n</label>\r\n", styles: ["@charset \"UTF-8\";:host{--_sw-w: 44px;--_sw-h: 24px;--_sw-knob: 18px;--_sw-fs: var(--ius-fs-base);display:inline-block;vertical-align:middle}:host([data-size=small]){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}:host([data-size=large]){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}@container style(--ius-control-size: small){:host(:not([data-size])){--_sw-w: 36px;--_sw-h: 20px;--_sw-knob: 14px;--_sw-fs: var(--ius-fs-base)}}@container style(--ius-control-size: large){:host(:not([data-size])){--_sw-w: 52px;--_sw-h: 28px;--_sw-knob: 22px;--_sw-fs: var(--ius-fs-lg)}}.ius-sw__inner{display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--_sw-fs);color:var(--ius-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ius-sw__inner[data-label-position=left] .ius-sw__label{order:-1}:host([data-disabled=true]) .ius-sw__inner{cursor:not-allowed;color:var(--ius-text-disabled)}.ius-sw__input{position:absolute;opacity:0;width:0;height:0;margin:0}.ius-sw__track{position:relative;flex:0 0 auto;width:var(--_sw-w);height:var(--_sw-h);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-4);transition:background-color var(--ius-duration-base) var(--ius-ease-standard),box-shadow var(--ius-duration-fast) var(--ius-ease-standard)}.ius-sw__knob{position:absolute;top:50%;left:calc((var(--_sw-h) - var(--_sw-knob)) / 2);transform:translateY(-50%);width:var(--_sw-knob);height:var(--_sw-knob);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-white);box-shadow:var(--ius-elevation-100);transition:left var(--ius-duration-base) var(--ius-ease-standard)}:host(:hover) .ius-sw__track,:host([data-force=hover]) .ius-sw__track{background:var(--ius-neutral-5)}:host(:active) .ius-sw__track,:host([data-force=pressed]) .ius-sw__track{background:var(--ius-neutral-6)}:host([data-checked=true]) .ius-sw__track{background:var(--ius-primary-900)}:host([data-checked=true]) .ius-sw__knob{left:calc(var(--_sw-w) - var(--_sw-knob) - (var(--_sw-h) - var(--_sw-knob)) / 2)}:host([data-checked=true]:hover) .ius-sw__track,:host([data-checked=true][data-force=hover]) .ius-sw__track{background:var(--ius-primary-800)}:host([data-checked=true]:active) .ius-sw__track,:host([data-checked=true][data-force=pressed]) .ius-sw__track{background:var(--ius-info-700)}:host([data-force=focused]) .ius-sw__track,.ius-sw__input:focus-visible+.ius-sw__track{box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]) .ius-sw__track{background:var(--ius-neutral-3)}:host([data-disabled=true][data-checked=true]) .ius-sw__track{background:var(--ius-info-200)}:host([data-disabled=true]) .ius-sw__knob{box-shadow:none;background:var(--ius-neutral-1)}.ius-sw__label{display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-sw__help{display:inline-flex;align-items:center;justify-content:center;color:var(--ius-neutral-7);cursor:help}.ius-sw__help .ius-icon{font-size:calc(var(--_sw-fs) + 4px);line-height:1}:host([data-disabled=true]) .ius-sw__help{color:var(--ius-text-disabled)}\n"] }]
18521
18571
  }], propDecorators: { label: [{
18522
18572
  type: Input
18523
18573
  }], labelPosition: [{
@@ -20737,7 +20787,7 @@ class RepeatableFieldComponent {
20737
20787
  useExisting: forwardRef(() => RepeatableFieldComponent),
20738
20788
  multi: true,
20739
20789
  },
20740
- ], ngImport: i0, template: "@if (label) {\n <span class=\"ius-repeat__label\" [id]=\"labelId\">\n @if (required) {\n <span class=\"ius-repeat__req\" aria-hidden=\"true\"></span>\n }\n {{ label }}\n </span>\n}\n\n<div class=\"ius-repeat__rows\" role=\"group\" [attr.aria-labelledby]=\"label ? labelId : null\">\n @for (vm of filasVM(); track vm.fila.id) {\n <div class=\"ius-repeat__row\">\n @if (conTipos()) {\n <div class=\"ius-repeat__type\" [style.width]=\"anchoTipo\">\n <ius-select\n [options]=\"opcionesTipo()\"\n [value]=\"vm.fila.type ?? null\"\n [placeholder]=\"typePlaceholder\"\n [searchable]=\"false\"\n [showClear]=\"false\"\n [showHelpText]=\"false\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n (valueChange)=\"setTipo(vm.fila.id, $event)\"\n />\n </div>\n }\n\n <div class=\"ius-repeat__control\">\n @if (renderControl) {\n <ng-container [ngTemplateOutlet]=\"renderControl\" [ngTemplateOutletContext]=\"vm.ctx\" />\n } @else {\n <!--\n `[ngModel]` de una v\u00EDa: TextField expone su valor solo por CVA (mismo\n recurso que ius-query-builder). `standalone` evita que un <form> del\n consumidor intente registrar estos inputs como controles con nombre.\n -->\n <ius-text-field\n [ngModel]=\"vm.texto\"\n [ngModelOptions]=\"ngModelSuelto\"\n [placeholder]=\"placeholder\"\n [prefixIcon]=\"prefixIcon\"\n [type]=\"tipoInput()\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [error]=\"vm.error\"\n [errorText]=\"vm.errorText\"\n [showHelpText]=\"!!vm.errorText\"\n [showClear]=\"false\"\n (ngModelChange)=\"setValor(vm.fila.id, $event)\"\n />\n }\n </div>\n\n <div class=\"ius-repeat__remove\">\n <ius-icon-button\n icon=\"close\"\n variant=\"tertiary\"\n shape=\"squared\"\n size=\"small\"\n tooltip=\"Quitar\"\n ariaLabel=\"Quitar fila\"\n [disabled]=\"vm.quitarDeshabilitado\"\n (clicked)=\"quitar(vm.fila.id)\"\n />\n </div>\n </div>\n }\n</div>\n\n<div class=\"ius-repeat__foot\">\n <ius-text-button\n [prefixIcon]=\"addIcon\"\n [label]=\"addLabel\"\n [size]=\"size\"\n [disabled]=\"disabled || alTope()\"\n (clicked)=\"agregar()\"\n />\n</div>\n\n@if (pie()) {\n <span class=\"ius-repeat__hint\">{{ pie() }}</span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);--_rf-field-h: 40px}:host([data-size=small]){--_rf-field-h: 34px}:host([data-size=large]){--_rf-field-h: 48px}@container style(--ius-control-size: small){:host(:not([data-size])){--_rf-field-h: 34px}}@container style(--ius-control-size: large){:host(:not([data-size])){--_rf-field-h: 48px}}.ius-repeat__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-medium) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary)}.ius-repeat__req{width:6px;height:6px;border-radius:var(--ius-radius-pill);background:var(--ius-danger-500);flex:0 0 auto}.ius-repeat__rows{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-repeat__row{display:flex;align-items:flex-start;gap:var(--ius-space-xs)}.ius-repeat__type{flex:0 0 auto;width:var(--_rf-type-w, 150px)}.ius-repeat__type .ius-tf{min-width:0;max-width:none;width:100%}.ius-repeat__type ::ng-deep .ius-select__chevron{height:var(--ius-lh-base)}.ius-repeat__row ::ng-deep .ius-tf__field{align-items:center}.ius-repeat__control{flex:1 1 auto;min-width:0}.ius-repeat__control .ius-tf{max-width:none;width:100%}.ius-repeat__remove{flex:0 0 auto;height:var(--_rf-field-h);display:flex;align-items:center}.ius-repeat__foot{display:flex}.ius-repeat__hint{font:var(--ius-fw-regular) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-tertiary)}:host([data-error=true]) .ius-repeat__hint{color:var(--ius-danger-700)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextFieldComponent, selector: "ius-text-field", inputs: ["label", "placeholder", "required", "prefixIcon", "showClear", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "error", "name", "autocomplete", "type", "inputMode", "maxLength", "size", "disabled"], outputs: ["valueChange", "cleared"] }, { kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], 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 }); }
20790
+ ], ngImport: i0, template: "@if (label) {\r\n <span class=\"ius-repeat__label\" [id]=\"labelId\">\r\n @if (required) {\r\n <span class=\"ius-repeat__req\" aria-hidden=\"true\"></span>\r\n }\r\n {{ label }}\r\n </span>\r\n}\r\n\r\n<div class=\"ius-repeat__rows\" role=\"group\" [attr.aria-labelledby]=\"label ? labelId : null\">\r\n @for (vm of filasVM(); track vm.fila.id) {\r\n <div class=\"ius-repeat__row\">\r\n @if (conTipos()) {\r\n <div class=\"ius-repeat__type\" [style.width]=\"anchoTipo\">\r\n <ius-select\r\n [options]=\"opcionesTipo()\"\r\n [value]=\"vm.fila.type ?? null\"\r\n [placeholder]=\"typePlaceholder\"\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n [disabled]=\"disabled\"\r\n [size]=\"size\"\r\n (valueChange)=\"setTipo(vm.fila.id, $event)\"\r\n />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-repeat__control\">\r\n @if (renderControl) {\r\n <ng-container [ngTemplateOutlet]=\"renderControl\" [ngTemplateOutletContext]=\"vm.ctx\" />\r\n } @else {\r\n <!--\r\n `[ngModel]` de una v\u00EDa: TextField expone su valor solo por CVA (mismo\r\n recurso que ius-query-builder). `standalone` evita que un <form> del\r\n consumidor intente registrar estos inputs como controles con nombre.\r\n -->\r\n <ius-text-field\r\n [ngModel]=\"vm.texto\"\r\n [ngModelOptions]=\"ngModelSuelto\"\r\n [placeholder]=\"placeholder\"\r\n [prefixIcon]=\"prefixIcon\"\r\n [type]=\"tipoInput()\"\r\n [disabled]=\"disabled\"\r\n [size]=\"size\"\r\n [error]=\"vm.error\"\r\n [errorText]=\"vm.errorText\"\r\n [showHelpText]=\"!!vm.errorText\"\r\n [showClear]=\"false\"\r\n (ngModelChange)=\"setValor(vm.fila.id, $event)\"\r\n />\r\n }\r\n </div>\r\n\r\n <div class=\"ius-repeat__remove\">\r\n <ius-icon-button\r\n icon=\"close\"\r\n variant=\"tertiary\"\r\n shape=\"squared\"\r\n size=\"small\"\r\n tooltip=\"Quitar\"\r\n ariaLabel=\"Quitar fila\"\r\n [disabled]=\"vm.quitarDeshabilitado\"\r\n (clicked)=\"quitar(vm.fila.id)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"ius-repeat__foot\">\r\n <ius-text-button\r\n [prefixIcon]=\"addIcon\"\r\n [label]=\"addLabel\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled || alTope()\"\r\n (clicked)=\"agregar()\"\r\n />\r\n</div>\r\n\r\n@if (pie()) {\r\n <span class=\"ius-repeat__hint\">{{ pie() }}</span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);--_rf-field-h: 40px}:host([data-size=small]){--_rf-field-h: 34px}:host([data-size=large]){--_rf-field-h: 48px}@container style(--ius-control-size: small){:host(:not([data-size])){--_rf-field-h: 34px}}@container style(--ius-control-size: large){:host(:not([data-size])){--_rf-field-h: 48px}}.ius-repeat__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-medium) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary)}.ius-repeat__req{width:6px;height:6px;border-radius:var(--ius-radius-pill);background:var(--ius-danger-500);flex:0 0 auto}.ius-repeat__rows{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-repeat__row{display:flex;align-items:flex-start;gap:var(--ius-space-xs)}.ius-repeat__type{flex:0 0 auto;width:var(--_rf-type-w, 150px)}.ius-repeat__type .ius-tf{min-width:0;max-width:none;width:100%}.ius-repeat__type ::ng-deep .ius-select__chevron{height:var(--ius-lh-base)}.ius-repeat__row ::ng-deep .ius-tf__field{align-items:center}.ius-repeat__control{flex:1 1 auto;min-width:0}.ius-repeat__control .ius-tf{max-width:none;width:100%}.ius-repeat__remove{flex:0 0 auto;height:var(--_rf-field-h);display:flex;align-items:center}.ius-repeat__foot{display:flex}.ius-repeat__hint{font:var(--ius-fw-regular) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-tertiary)}:host([data-error=true]) .ius-repeat__hint{color:var(--ius-danger-700)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextFieldComponent, selector: "ius-text-field", inputs: ["label", "placeholder", "required", "prefixIcon", "showClear", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "error", "name", "autocomplete", "type", "inputMode", "maxLength", "size", "disabled"], outputs: ["valueChange", "cleared"] }, { kind: "component", type: SelectComponent, selector: "ius-select", inputs: ["options", "multiple", "size", "disabled", "error", "state", "open", "value", "label", "ariaLabel", "required", "placeholder", "prefixIcon", "searchable", "searchPlaceholder", "emptyText", "creatable", "createPlaceholder", "createLabel", "createFactory", "maxVisible", "helpText", "errorText", "showHelpText", "showIconHelp", "iconHelpTitle", "iconHelpContent", "showClear", "defaultOpen", "compact", "defaultValue", "id", "name"], outputs: ["valueChange", "cleared", "openChange", "created"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "ariaExpanded", "ariaControls", "tooltipPlacement"], 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 }); }
20741
20791
  }
20742
20792
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RepeatableFieldComponent, decorators: [{
20743
20793
  type: Component,
@@ -20758,7 +20808,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
20758
20808
  class: 'ius-repeat',
20759
20809
  '[attr.data-size]': "size !== 'medium' ? size : null",
20760
20810
  '[attr.data-error]': "error ? 'true' : null",
20761
- }, template: "@if (label) {\n <span class=\"ius-repeat__label\" [id]=\"labelId\">\n @if (required) {\n <span class=\"ius-repeat__req\" aria-hidden=\"true\"></span>\n }\n {{ label }}\n </span>\n}\n\n<div class=\"ius-repeat__rows\" role=\"group\" [attr.aria-labelledby]=\"label ? labelId : null\">\n @for (vm of filasVM(); track vm.fila.id) {\n <div class=\"ius-repeat__row\">\n @if (conTipos()) {\n <div class=\"ius-repeat__type\" [style.width]=\"anchoTipo\">\n <ius-select\n [options]=\"opcionesTipo()\"\n [value]=\"vm.fila.type ?? null\"\n [placeholder]=\"typePlaceholder\"\n [searchable]=\"false\"\n [showClear]=\"false\"\n [showHelpText]=\"false\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n (valueChange)=\"setTipo(vm.fila.id, $event)\"\n />\n </div>\n }\n\n <div class=\"ius-repeat__control\">\n @if (renderControl) {\n <ng-container [ngTemplateOutlet]=\"renderControl\" [ngTemplateOutletContext]=\"vm.ctx\" />\n } @else {\n <!--\n `[ngModel]` de una v\u00EDa: TextField expone su valor solo por CVA (mismo\n recurso que ius-query-builder). `standalone` evita que un <form> del\n consumidor intente registrar estos inputs como controles con nombre.\n -->\n <ius-text-field\n [ngModel]=\"vm.texto\"\n [ngModelOptions]=\"ngModelSuelto\"\n [placeholder]=\"placeholder\"\n [prefixIcon]=\"prefixIcon\"\n [type]=\"tipoInput()\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [error]=\"vm.error\"\n [errorText]=\"vm.errorText\"\n [showHelpText]=\"!!vm.errorText\"\n [showClear]=\"false\"\n (ngModelChange)=\"setValor(vm.fila.id, $event)\"\n />\n }\n </div>\n\n <div class=\"ius-repeat__remove\">\n <ius-icon-button\n icon=\"close\"\n variant=\"tertiary\"\n shape=\"squared\"\n size=\"small\"\n tooltip=\"Quitar\"\n ariaLabel=\"Quitar fila\"\n [disabled]=\"vm.quitarDeshabilitado\"\n (clicked)=\"quitar(vm.fila.id)\"\n />\n </div>\n </div>\n }\n</div>\n\n<div class=\"ius-repeat__foot\">\n <ius-text-button\n [prefixIcon]=\"addIcon\"\n [label]=\"addLabel\"\n [size]=\"size\"\n [disabled]=\"disabled || alTope()\"\n (clicked)=\"agregar()\"\n />\n</div>\n\n@if (pie()) {\n <span class=\"ius-repeat__hint\">{{ pie() }}</span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);--_rf-field-h: 40px}:host([data-size=small]){--_rf-field-h: 34px}:host([data-size=large]){--_rf-field-h: 48px}@container style(--ius-control-size: small){:host(:not([data-size])){--_rf-field-h: 34px}}@container style(--ius-control-size: large){:host(:not([data-size])){--_rf-field-h: 48px}}.ius-repeat__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-medium) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary)}.ius-repeat__req{width:6px;height:6px;border-radius:var(--ius-radius-pill);background:var(--ius-danger-500);flex:0 0 auto}.ius-repeat__rows{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-repeat__row{display:flex;align-items:flex-start;gap:var(--ius-space-xs)}.ius-repeat__type{flex:0 0 auto;width:var(--_rf-type-w, 150px)}.ius-repeat__type .ius-tf{min-width:0;max-width:none;width:100%}.ius-repeat__type ::ng-deep .ius-select__chevron{height:var(--ius-lh-base)}.ius-repeat__row ::ng-deep .ius-tf__field{align-items:center}.ius-repeat__control{flex:1 1 auto;min-width:0}.ius-repeat__control .ius-tf{max-width:none;width:100%}.ius-repeat__remove{flex:0 0 auto;height:var(--_rf-field-h);display:flex;align-items:center}.ius-repeat__foot{display:flex}.ius-repeat__hint{font:var(--ius-fw-regular) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-tertiary)}:host([data-error=true]) .ius-repeat__hint{color:var(--ius-danger-700)}\n"] }]
20811
+ }, template: "@if (label) {\r\n <span class=\"ius-repeat__label\" [id]=\"labelId\">\r\n @if (required) {\r\n <span class=\"ius-repeat__req\" aria-hidden=\"true\"></span>\r\n }\r\n {{ label }}\r\n </span>\r\n}\r\n\r\n<div class=\"ius-repeat__rows\" role=\"group\" [attr.aria-labelledby]=\"label ? labelId : null\">\r\n @for (vm of filasVM(); track vm.fila.id) {\r\n <div class=\"ius-repeat__row\">\r\n @if (conTipos()) {\r\n <div class=\"ius-repeat__type\" [style.width]=\"anchoTipo\">\r\n <ius-select\r\n [options]=\"opcionesTipo()\"\r\n [value]=\"vm.fila.type ?? null\"\r\n [placeholder]=\"typePlaceholder\"\r\n [searchable]=\"false\"\r\n [showClear]=\"false\"\r\n [showHelpText]=\"false\"\r\n [disabled]=\"disabled\"\r\n [size]=\"size\"\r\n (valueChange)=\"setTipo(vm.fila.id, $event)\"\r\n />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-repeat__control\">\r\n @if (renderControl) {\r\n <ng-container [ngTemplateOutlet]=\"renderControl\" [ngTemplateOutletContext]=\"vm.ctx\" />\r\n } @else {\r\n <!--\r\n `[ngModel]` de una v\u00EDa: TextField expone su valor solo por CVA (mismo\r\n recurso que ius-query-builder). `standalone` evita que un <form> del\r\n consumidor intente registrar estos inputs como controles con nombre.\r\n -->\r\n <ius-text-field\r\n [ngModel]=\"vm.texto\"\r\n [ngModelOptions]=\"ngModelSuelto\"\r\n [placeholder]=\"placeholder\"\r\n [prefixIcon]=\"prefixIcon\"\r\n [type]=\"tipoInput()\"\r\n [disabled]=\"disabled\"\r\n [size]=\"size\"\r\n [error]=\"vm.error\"\r\n [errorText]=\"vm.errorText\"\r\n [showHelpText]=\"!!vm.errorText\"\r\n [showClear]=\"false\"\r\n (ngModelChange)=\"setValor(vm.fila.id, $event)\"\r\n />\r\n }\r\n </div>\r\n\r\n <div class=\"ius-repeat__remove\">\r\n <ius-icon-button\r\n icon=\"close\"\r\n variant=\"tertiary\"\r\n shape=\"squared\"\r\n size=\"small\"\r\n tooltip=\"Quitar\"\r\n ariaLabel=\"Quitar fila\"\r\n [disabled]=\"vm.quitarDeshabilitado\"\r\n (clicked)=\"quitar(vm.fila.id)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"ius-repeat__foot\">\r\n <ius-text-button\r\n [prefixIcon]=\"addIcon\"\r\n [label]=\"addLabel\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled || alTope()\"\r\n (clicked)=\"agregar()\"\r\n />\r\n</div>\r\n\r\n@if (pie()) {\r\n <span class=\"ius-repeat__hint\">{{ pie() }}</span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--ius-space-xs);font-family:var(--ius-font-body);--_rf-field-h: 40px}:host([data-size=small]){--_rf-field-h: 34px}:host([data-size=large]){--_rf-field-h: 48px}@container style(--ius-control-size: small){:host(:not([data-size])){--_rf-field-h: 34px}}@container style(--ius-control-size: large){:host(:not([data-size])){--_rf-field-h: 48px}}.ius-repeat__label{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font:var(--ius-fw-medium) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-secondary)}.ius-repeat__req{width:6px;height:6px;border-radius:var(--ius-radius-pill);background:var(--ius-danger-500);flex:0 0 auto}.ius-repeat__rows{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-repeat__row{display:flex;align-items:flex-start;gap:var(--ius-space-xs)}.ius-repeat__type{flex:0 0 auto;width:var(--_rf-type-w, 150px)}.ius-repeat__type .ius-tf{min-width:0;max-width:none;width:100%}.ius-repeat__type ::ng-deep .ius-select__chevron{height:var(--ius-lh-base)}.ius-repeat__row ::ng-deep .ius-tf__field{align-items:center}.ius-repeat__control{flex:1 1 auto;min-width:0}.ius-repeat__control .ius-tf{max-width:none;width:100%}.ius-repeat__remove{flex:0 0 auto;height:var(--_rf-field-h);display:flex;align-items:center}.ius-repeat__foot{display:flex}.ius-repeat__hint{font:var(--ius-fw-regular) var(--ius-fs-sm)/var(--ius-lh-sm) var(--ius-font-body);color:var(--ius-text-tertiary)}:host([data-error=true]) .ius-repeat__hint{color:var(--ius-danger-700)}\n"] }]
20762
20812
  }], propDecorators: { items: [{
20763
20813
  type: Input
20764
20814
  }], defaultItems: [{
@@ -27269,7 +27319,7 @@ class ScheduleListComponent {
27269
27319
  this.showMore.emit({ date, hidden, event });
27270
27320
  }
27271
27321
  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 }); }
27322
+ 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>\r\n @if (eventsClickable) {\r\n <ius-event-pill\r\n [variant]=\"pillVariant()\"\r\n [title]=\"p.ev.title\"\r\n [time]=\"p.time ?? undefined\"\r\n [category]=\"p.ev.category\"\r\n [hue]=\"p.ev.hue\"\r\n [kind]=\"p.ev.kind\"\r\n [icon]=\"p.ev.icon\"\r\n [location]=\"p.ev.location\"\r\n [meta]=\"p.meta\"\r\n [assignee]=\"p.ev.assignee\"\r\n [fill]=\"p.fill\"\r\n [size]=\"p.size\"\r\n [showIcon]=\"p.showIcon\"\r\n [showDot]=\"p.showDot\"\r\n [selected]=\"!!p.ev.selected\"\r\n [past]=\"p.past\"\r\n [ariaLabel]=\"p.ev.ariaLabel\"\r\n (clicked)=\"onPillClick(p.ev, $event)\"\r\n />\r\n } @else {\r\n <ius-event-pill\r\n [variant]=\"pillVariant()\"\r\n [title]=\"p.ev.title\"\r\n [time]=\"p.time ?? undefined\"\r\n [category]=\"p.ev.category\"\r\n [hue]=\"p.ev.hue\"\r\n [kind]=\"p.ev.kind\"\r\n [icon]=\"p.ev.icon\"\r\n [location]=\"p.ev.location\"\r\n [meta]=\"p.meta\"\r\n [assignee]=\"p.ev.assignee\"\r\n [fill]=\"p.fill\"\r\n [size]=\"p.size\"\r\n [showIcon]=\"p.showIcon\"\r\n [showDot]=\"p.showDot\"\r\n [selected]=\"!!p.ev.selected\"\r\n [past]=\"p.past\"\r\n [ariaLabel]=\"p.ev.ariaLabel\"\r\n />\r\n }\r\n</ng-template>\r\n\r\n@if (vacio()) {\r\n <div class=\"ius-agenda__void\">\r\n @if (emptyIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ emptyIcon() }}</span>\r\n }\r\n @if (emptyTitle()) {\r\n <div class=\"ius-agenda__void-title\">{{ emptyTitle() }}</div>\r\n }\r\n @if (emptySubtitle()) {\r\n <div class=\"ius-agenda__void-sub\">{{ emptySubtitle() }}</div>\r\n }\r\n </div>\r\n} @else {\r\n @for (g of grupos(); track g.key) {\r\n <div\r\n class=\"ius-agenda__group\"\r\n [attr.data-today]=\"g.today ? 'true' : 'false'\"\r\n [attr.data-past]=\"g.past ? 'true' : 'false'\"\r\n [attr.data-selected]=\"g.selected ? 'true' : 'false'\"\r\n >\r\n <div\r\n class=\"ius-agenda__head\"\r\n [attr.data-clickable]=\"headClickable ? 'true' : 'false'\"\r\n [attr.role]=\"headClickable ? 'button' : null\"\r\n [attr.tabindex]=\"headClickable ? 0 : null\"\r\n [attr.aria-current]=\"g.selected ? 'date' : null\"\r\n (click)=\"onHeadClick(g.date, $event)\"\r\n (keydown)=\"onHeadKeydown(g.date, $event)\"\r\n >\r\n <span class=\"ius-agenda__num\">{{ g.num }}</span>\r\n <span class=\"ius-agenda__when\">\r\n <span class=\"ius-agenda__dow\">{{ g.dow }}</span>\r\n <span class=\"ius-agenda__month\">{{ g.label }}</span>\r\n </span>\r\n @if (showCount()) {\r\n <span class=\"ius-agenda__count\">{{ conteo(g.total) }}</span>\r\n }\r\n </div>\r\n\r\n @if (g.total === 0) {\r\n <div class=\"ius-agenda__empty\">{{ emptyDayLabel() }}</div>\r\n } @else {\r\n <div class=\"ius-agenda__events\">\r\n @for (p of g.pills; track p.key; let first = $first) {\r\n @if (showDividers() && !first) {\r\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"pill; context: { $implicit: p }\" />\r\n }\r\n @if (g.hidden.length > 0) {\r\n @if (showDividers()) {\r\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\r\n }\r\n <div class=\"ius-agenda__more\">\r\n <ius-text-button size=\"small\" (clicked)=\"onMoreClick(g.date, g.hidden, $event)\">\r\n {{ moreLabel() || '+' + g.hidden.length + ' m\u00E1s' }}\r\n </ius-text-button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n}\r\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
27323
  }
27274
27324
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScheduleListComponent, decorators: [{
27275
27325
  type: Component,
@@ -27280,7 +27330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
27280
27330
  '[attr.data-rail]': "vacio() ? null : (showRail() ? 'true' : 'false')",
27281
27331
  '[attr.data-scroll]': "vacio() ? null : (maxHeight() != null ? 'true' : 'false')",
27282
27332
  '[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"] }]
27333
+ }, template: "<ng-template #pill let-p>\r\n @if (eventsClickable) {\r\n <ius-event-pill\r\n [variant]=\"pillVariant()\"\r\n [title]=\"p.ev.title\"\r\n [time]=\"p.time ?? undefined\"\r\n [category]=\"p.ev.category\"\r\n [hue]=\"p.ev.hue\"\r\n [kind]=\"p.ev.kind\"\r\n [icon]=\"p.ev.icon\"\r\n [location]=\"p.ev.location\"\r\n [meta]=\"p.meta\"\r\n [assignee]=\"p.ev.assignee\"\r\n [fill]=\"p.fill\"\r\n [size]=\"p.size\"\r\n [showIcon]=\"p.showIcon\"\r\n [showDot]=\"p.showDot\"\r\n [selected]=\"!!p.ev.selected\"\r\n [past]=\"p.past\"\r\n [ariaLabel]=\"p.ev.ariaLabel\"\r\n (clicked)=\"onPillClick(p.ev, $event)\"\r\n />\r\n } @else {\r\n <ius-event-pill\r\n [variant]=\"pillVariant()\"\r\n [title]=\"p.ev.title\"\r\n [time]=\"p.time ?? undefined\"\r\n [category]=\"p.ev.category\"\r\n [hue]=\"p.ev.hue\"\r\n [kind]=\"p.ev.kind\"\r\n [icon]=\"p.ev.icon\"\r\n [location]=\"p.ev.location\"\r\n [meta]=\"p.meta\"\r\n [assignee]=\"p.ev.assignee\"\r\n [fill]=\"p.fill\"\r\n [size]=\"p.size\"\r\n [showIcon]=\"p.showIcon\"\r\n [showDot]=\"p.showDot\"\r\n [selected]=\"!!p.ev.selected\"\r\n [past]=\"p.past\"\r\n [ariaLabel]=\"p.ev.ariaLabel\"\r\n />\r\n }\r\n</ng-template>\r\n\r\n@if (vacio()) {\r\n <div class=\"ius-agenda__void\">\r\n @if (emptyIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ emptyIcon() }}</span>\r\n }\r\n @if (emptyTitle()) {\r\n <div class=\"ius-agenda__void-title\">{{ emptyTitle() }}</div>\r\n }\r\n @if (emptySubtitle()) {\r\n <div class=\"ius-agenda__void-sub\">{{ emptySubtitle() }}</div>\r\n }\r\n </div>\r\n} @else {\r\n @for (g of grupos(); track g.key) {\r\n <div\r\n class=\"ius-agenda__group\"\r\n [attr.data-today]=\"g.today ? 'true' : 'false'\"\r\n [attr.data-past]=\"g.past ? 'true' : 'false'\"\r\n [attr.data-selected]=\"g.selected ? 'true' : 'false'\"\r\n >\r\n <div\r\n class=\"ius-agenda__head\"\r\n [attr.data-clickable]=\"headClickable ? 'true' : 'false'\"\r\n [attr.role]=\"headClickable ? 'button' : null\"\r\n [attr.tabindex]=\"headClickable ? 0 : null\"\r\n [attr.aria-current]=\"g.selected ? 'date' : null\"\r\n (click)=\"onHeadClick(g.date, $event)\"\r\n (keydown)=\"onHeadKeydown(g.date, $event)\"\r\n >\r\n <span class=\"ius-agenda__num\">{{ g.num }}</span>\r\n <span class=\"ius-agenda__when\">\r\n <span class=\"ius-agenda__dow\">{{ g.dow }}</span>\r\n <span class=\"ius-agenda__month\">{{ g.label }}</span>\r\n </span>\r\n @if (showCount()) {\r\n <span class=\"ius-agenda__count\">{{ conteo(g.total) }}</span>\r\n }\r\n </div>\r\n\r\n @if (g.total === 0) {\r\n <div class=\"ius-agenda__empty\">{{ emptyDayLabel() }}</div>\r\n } @else {\r\n <div class=\"ius-agenda__events\">\r\n @for (p of g.pills; track p.key; let first = $first) {\r\n @if (showDividers() && !first) {\r\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"pill; context: { $implicit: p }\" />\r\n }\r\n @if (g.hidden.length > 0) {\r\n @if (showDividers()) {\r\n <div class=\"ius-agenda__divider\" aria-hidden=\"true\"></div>\r\n }\r\n <div class=\"ius-agenda__more\">\r\n <ius-text-button size=\"small\" (clicked)=\"onMoreClick(g.date, g.hidden, $event)\">\r\n {{ moreLabel() || '+' + g.hidden.length + ' m\u00E1s' }}\r\n </ius-text-button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n}\r\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
27334
  }], 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
27335
  type: Output
27286
27336
  }], selectEvent: [{