@litigiovirtual/ius-design-components 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -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,
|
|
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';
|
|
@@ -1310,7 +1310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
1310
1310
|
type: Output
|
|
1311
1311
|
}] } });
|
|
1312
1312
|
|
|
1313
|
-
let uid$
|
|
1313
|
+
let uid$p = 0;
|
|
1314
1314
|
/**
|
|
1315
1315
|
* TextField — Ius Design v2.
|
|
1316
1316
|
*
|
|
@@ -1349,7 +1349,7 @@ class TextFieldComponent {
|
|
|
1349
1349
|
...(ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []));
|
|
1350
1350
|
this.revealed = signal(false, /* @ts-ignore */
|
|
1351
1351
|
...(ngDevMode ? [{ debugName: "revealed" }] : /* istanbul ignore next */ []));
|
|
1352
|
-
this.inputId = `ius-tf-${uid$
|
|
1352
|
+
this.inputId = `ius-tf-${uid$p++}`;
|
|
1353
1353
|
this.helpId = `${this.inputId}-help`;
|
|
1354
1354
|
this.onChange = () => { };
|
|
1355
1355
|
this.onTouched = () => { };
|
|
@@ -1440,7 +1440,7 @@ class TextFieldComponent {
|
|
|
1440
1440
|
useExisting: forwardRef(() => TextFieldComponent),
|
|
1441
1441
|
multi: true,
|
|
1442
1442
|
},
|
|
1443
|
-
], ngImport: i0, template: "@if (label) {\r\n <label [for]=\"inputId\" 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 <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\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 class=\"ius-tf__field\">\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 <input\r\n [id]=\"inputId\"\r\n class=\"ius-tf__input\"\r\n [type]=\"inputType\"\r\n [name]=\"name\"\r\n [attr.autocomplete]=\"autocomplete || null\"\r\n [attr.inputmode]=\"inputMode || null\"\r\n [attr.maxlength]=\"maxLengthAttr\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"value()\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-invalid]=\"error || null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-describedby]=\"showHint ? helpId : null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n @if (isPassword) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [attr.aria-label]=\"revealed() ? 'Ocultar contenido' : 'Mostrar contenido'\"\r\n [attr.aria-pressed]=\"revealed()\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"toggleReveal()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">{{ revealed() ? 'visibility_off' : 'visibility' }}</span>\r\n </button>\r\n } @else if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [class.ius-tf__clear--hidden]=\"!showClearComputed\"\r\n aria-label=\"Limpiar campo\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n tabindex=\"-1\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\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}.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;cursor:not-allowed}: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,.ius-tf__sufix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon,.ius-tf__sufix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}: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__input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);min-width:0;padding:0}.ius-tf__input::placeholder{color:var(--_tf-placeholder)}.ius-tf__input:disabled{cursor:not-allowed;color:var(--ius-text-disabled)}:host([data-error=true]) .ius-tf__input{color:var(--ius-text-primary)}.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--hidden{visibility:hidden;pointer-events:none}.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)}\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 }); }
|
|
1443
|
+
], ngImport: i0, template: "@if (label) {\r\n <label [for]=\"inputId\" 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 <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\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 class=\"ius-tf__field\">\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 <input\r\n [id]=\"inputId\"\r\n class=\"ius-tf__input\"\r\n [type]=\"inputType\"\r\n [attr.name]=\"name ?? null\"\r\n [attr.autocomplete]=\"autocomplete || null\"\r\n [attr.inputmode]=\"inputMode || null\"\r\n [attr.maxlength]=\"maxLengthAttr\"\r\n [attr.placeholder]=\"placeholder ?? null\"\r\n [value]=\"value()\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-invalid]=\"error || null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-describedby]=\"showHint ? helpId : null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n @if (isPassword) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [attr.aria-label]=\"revealed() ? 'Ocultar contenido' : 'Mostrar contenido'\"\r\n [attr.aria-pressed]=\"revealed()\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"toggleReveal()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">{{ revealed() ? 'visibility_off' : 'visibility' }}</span>\r\n </button>\r\n } @else if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [class.ius-tf__clear--hidden]=\"!showClearComputed\"\r\n aria-label=\"Limpiar campo\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n tabindex=\"-1\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\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}.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;cursor:not-allowed}: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,.ius-tf__sufix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon,.ius-tf__sufix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}: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__input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);min-width:0;padding:0}.ius-tf__input::placeholder{color:var(--_tf-placeholder)}.ius-tf__input:disabled{cursor:not-allowed;color:var(--ius-text-disabled)}:host([data-error=true]) .ius-tf__input{color:var(--ius-text-primary)}.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--hidden{visibility:hidden;pointer-events:none}.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)}\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 }); }
|
|
1444
1444
|
}
|
|
1445
1445
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextFieldComponent, decorators: [{
|
|
1446
1446
|
type: Component,
|
|
@@ -1456,7 +1456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
1456
1456
|
'[attr.data-focused]': 'focused() || null',
|
|
1457
1457
|
'[attr.data-error]': 'error || null',
|
|
1458
1458
|
'[attr.data-disabled]': 'disabled || null',
|
|
1459
|
-
}, template: "@if (label) {\r\n <label [for]=\"inputId\" 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 <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\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 class=\"ius-tf__field\">\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 <input\r\n [id]=\"inputId\"\r\n class=\"ius-tf__input\"\r\n [type]=\"inputType\"\r\n [name]=\"name\"\r\n [attr.autocomplete]=\"autocomplete || null\"\r\n [attr.inputmode]=\"inputMode || null\"\r\n [attr.maxlength]=\"maxLengthAttr\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"value()\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-invalid]=\"error || null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-describedby]=\"showHint ? helpId : null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n @if (isPassword) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [attr.aria-label]=\"revealed() ? 'Ocultar contenido' : 'Mostrar contenido'\"\r\n [attr.aria-pressed]=\"revealed()\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"toggleReveal()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">{{ revealed() ? 'visibility_off' : 'visibility' }}</span>\r\n </button>\r\n } @else if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [class.ius-tf__clear--hidden]=\"!showClearComputed\"\r\n aria-label=\"Limpiar campo\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n tabindex=\"-1\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\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}.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;cursor:not-allowed}: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,.ius-tf__sufix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon,.ius-tf__sufix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}: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__input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);min-width:0;padding:0}.ius-tf__input::placeholder{color:var(--_tf-placeholder)}.ius-tf__input:disabled{cursor:not-allowed;color:var(--ius-text-disabled)}:host([data-error=true]) .ius-tf__input{color:var(--ius-text-primary)}.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--hidden{visibility:hidden;pointer-events:none}.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)}\n"] }]
|
|
1459
|
+
}, template: "@if (label) {\r\n <label [for]=\"inputId\" 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 <ius-popover\r\n [title]=\"iconHelpTitle\"\r\n [content]=\"iconHelpContent\"\r\n [disabled]=\"!iconHelpTitle && !iconHelpContent\"\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 class=\"ius-tf__field\">\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 <input\r\n [id]=\"inputId\"\r\n class=\"ius-tf__input\"\r\n [type]=\"inputType\"\r\n [attr.name]=\"name ?? null\"\r\n [attr.autocomplete]=\"autocomplete || null\"\r\n [attr.inputmode]=\"inputMode || null\"\r\n [attr.maxlength]=\"maxLengthAttr\"\r\n [attr.placeholder]=\"placeholder ?? null\"\r\n [value]=\"value()\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-invalid]=\"error || null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-describedby]=\"showHint ? helpId : null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n @if (isPassword) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [attr.aria-label]=\"revealed() ? 'Ocultar contenido' : 'Mostrar contenido'\"\r\n [attr.aria-pressed]=\"revealed()\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"toggleReveal()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">{{ revealed() ? 'visibility_off' : 'visibility' }}</span>\r\n </button>\r\n } @else if (clearReserved) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-tf__clear\"\r\n [class.ius-tf__clear--hidden]=\"!showClearComputed\"\r\n aria-label=\"Limpiar campo\"\r\n [attr.aria-hidden]=\"showClearComputed ? null : 'true'\"\r\n tabindex=\"-1\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"clear()\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">cancel</span>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (showHint) {\r\n <span [id]=\"helpId\" class=\"ius-tf__hint\">{{ hint }}</span>\r\n}\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}.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;cursor:not-allowed}: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,.ius-tf__sufix{display:inline-flex;align-items:center;color:var(--_tf-icon);flex:0 0 auto}.ius-tf__prefix .ius-icon,.ius-tf__sufix .ius-icon{font-size:var(--_tf-icon-size);line-height:1}: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__input{flex:1 1 auto;appearance:none;border:0;outline:0;background:transparent;font:inherit;font-size:var(--_tf-fs);line-height:var(--_tf-lh);color:var(--_tf-fg);min-width:0;padding:0}.ius-tf__input::placeholder{color:var(--_tf-placeholder)}.ius-tf__input:disabled{cursor:not-allowed;color:var(--ius-text-disabled)}:host([data-error=true]) .ius-tf__input{color:var(--ius-text-primary)}.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--hidden{visibility:hidden;pointer-events:none}.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)}\n"] }]
|
|
1460
1460
|
}], propDecorators: { label: [{
|
|
1461
1461
|
type: Input
|
|
1462
1462
|
}], placeholder: [{
|
|
@@ -1507,7 +1507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
1507
1507
|
type: Output
|
|
1508
1508
|
}] } });
|
|
1509
1509
|
|
|
1510
|
-
let uid$
|
|
1510
|
+
let uid$o = 0;
|
|
1511
1511
|
/** Reparte una cadena en `length` casillas (1 carácter por casilla). */
|
|
1512
1512
|
function toChars(str, length) {
|
|
1513
1513
|
const out = new Array(length).fill('');
|
|
@@ -1567,7 +1567,7 @@ class CodeFieldComponent {
|
|
|
1567
1567
|
...(ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []));
|
|
1568
1568
|
this.indexes = computed(() => this.chars().map((_, i) => i), /* @ts-ignore */
|
|
1569
1569
|
...(ngDevMode ? [{ debugName: "indexes" }] : /* istanbul ignore next */ []));
|
|
1570
|
-
this.baseId = `ius-cf-${uid$
|
|
1570
|
+
this.baseId = `ius-cf-${uid$o++}`;
|
|
1571
1571
|
this.cellRefs = viewChildren('cell', /* @ts-ignore */
|
|
1572
1572
|
...(ngDevMode ? [{ debugName: "cellRefs" }] : /* istanbul ignore next */ []));
|
|
1573
1573
|
this.onChange = () => { };
|
|
@@ -2458,7 +2458,7 @@ const SIZE_MAP = {
|
|
|
2458
2458
|
medium: 96,
|
|
2459
2459
|
large: 140,
|
|
2460
2460
|
};
|
|
2461
|
-
let uid$
|
|
2461
|
+
let uid$n = 0;
|
|
2462
2462
|
/**
|
|
2463
2463
|
* Illustration — Ius Design v2 (familia feedback).
|
|
2464
2464
|
*
|
|
@@ -2483,7 +2483,7 @@ class IllustrationComponent {
|
|
|
2483
2483
|
constructor() {
|
|
2484
2484
|
this.sanitizer = inject(DomSanitizer);
|
|
2485
2485
|
/** ID único por instancia, para el sufijo de gradientes. */
|
|
2486
|
-
this.instanceId = `i${uid$
|
|
2486
|
+
this.instanceId = `i${uid$n++}`;
|
|
2487
2487
|
this._size = 'medium';
|
|
2488
2488
|
this.viewBox = '0 0 110 110';
|
|
2489
2489
|
this.safeInner = '';
|
|
@@ -2542,7 +2542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
2542
2542
|
type: Input
|
|
2543
2543
|
}] } });
|
|
2544
2544
|
|
|
2545
|
-
let uid$
|
|
2545
|
+
let uid$m = 0;
|
|
2546
2546
|
/**
|
|
2547
2547
|
* Checkbox — Ius Design v2.
|
|
2548
2548
|
*
|
|
@@ -2580,7 +2580,7 @@ class CheckboxComponent {
|
|
|
2580
2580
|
...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
|
|
2581
2581
|
/** Callback con el nuevo booleano (original `onChange(checked)`; nunca `change`). */
|
|
2582
2582
|
this.checkedChange = new EventEmitter();
|
|
2583
|
-
this.inputId = `ius-cbx-${uid$
|
|
2583
|
+
this.inputId = `ius-cbx-${uid$m++}`;
|
|
2584
2584
|
this.onChange = () => { };
|
|
2585
2585
|
this.onTouched = () => { };
|
|
2586
2586
|
}
|
|
@@ -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-
|
|
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-
|
|
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 {
|
|
@@ -4598,7 +4642,7 @@ function prefersReducedMotion() {
|
|
|
4598
4642
|
typeof window.matchMedia === 'function' &&
|
|
4599
4643
|
window.matchMedia('(prefers-reduced-motion: reduce)').matches);
|
|
4600
4644
|
}
|
|
4601
|
-
let uid$
|
|
4645
|
+
let uid$l = 0;
|
|
4602
4646
|
/**
|
|
4603
4647
|
* CircularProgress — Ius Design v2.
|
|
4604
4648
|
*
|
|
@@ -4619,7 +4663,7 @@ class CircularProgressComponent {
|
|
|
4619
4663
|
this.showValue = false;
|
|
4620
4664
|
/** Congela la cuenta regresiva conservando el tiempo restante (hover del Toast). */
|
|
4621
4665
|
this.paused = false;
|
|
4622
|
-
this.gid = `ius-cp-${uid$
|
|
4666
|
+
this.gid = `ius-cp-${uid$l++}`;
|
|
4623
4667
|
this.zone = inject(NgZone);
|
|
4624
4668
|
/** % restante de la cuenta regresiva (100 → 0). */
|
|
4625
4669
|
this.remaining = signal(100, /* @ts-ignore */
|
|
@@ -4781,7 +4825,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4781
4825
|
args: [{ transform: booleanAttribute }]
|
|
4782
4826
|
}] } });
|
|
4783
4827
|
|
|
4784
|
-
let uid$
|
|
4828
|
+
let uid$k = 0;
|
|
4785
4829
|
/**
|
|
4786
4830
|
*
|
|
4787
4831
|
* Cargador de **identidad** Litigiovirtual: tres fichas se deslizan por el
|
|
@@ -4803,7 +4847,7 @@ class LoadingMarkComponent {
|
|
|
4803
4847
|
/** Etiqueta accesible. */
|
|
4804
4848
|
this.ariaLabel = 'Cargando';
|
|
4805
4849
|
// IDs únicos por instancia para los <defs> del SVG (gradientes/filtro/máscara).
|
|
4806
|
-
this.id = `lm-${uid$
|
|
4850
|
+
this.id = `lm-${uid$k++}`;
|
|
4807
4851
|
this.baseId = `${this.id}-base`;
|
|
4808
4852
|
this.glowId = `${this.id}-glow`;
|
|
4809
4853
|
this.softId = `${this.id}-soft`;
|
|
@@ -5632,7 +5676,7 @@ function placeholderContent(kind, providerLabel) {
|
|
|
5632
5676
|
};
|
|
5633
5677
|
}
|
|
5634
5678
|
}
|
|
5635
|
-
let uid$
|
|
5679
|
+
let uid$j = 0;
|
|
5636
5680
|
/**
|
|
5637
5681
|
* CaptchaField — Ius Design v2.
|
|
5638
5682
|
*
|
|
@@ -5781,7 +5825,7 @@ class CaptchaFieldComponent {
|
|
|
5781
5825
|
this.phase = signal('loading', /* @ts-ignore */
|
|
5782
5826
|
...(ngDevMode ? [{ debugName: "phase" }] : /* istanbul ignore next */ []));
|
|
5783
5827
|
this.widgetId = null;
|
|
5784
|
-
this.baseId = `ius-cf-${uid$
|
|
5828
|
+
this.baseId = `ius-cf-${uid$j++}`;
|
|
5785
5829
|
this.hostRef = viewChild('host', /* @ts-ignore */
|
|
5786
5830
|
...(ngDevMode ? [{ debugName: "hostRef" }] : /* istanbul ignore next */ []));
|
|
5787
5831
|
this.onChange = () => { };
|
|
@@ -7074,7 +7118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7074
7118
|
type: Output
|
|
7075
7119
|
}] } });
|
|
7076
7120
|
|
|
7077
|
-
let uid$
|
|
7121
|
+
let uid$i = 0;
|
|
7078
7122
|
/** ¿La lista viene agrupada (`{label, options}`) o plana? */
|
|
7079
7123
|
function isGrouped(options) {
|
|
7080
7124
|
return (Array.isArray(options) &&
|
|
@@ -7256,7 +7300,7 @@ class SelectComponent {
|
|
|
7256
7300
|
* corren en el constructor, antes de que Angular asigne los `@Input`, así que
|
|
7257
7301
|
* `this.id` valdría siempre `undefined` y el `id` del consumidor se perdería.
|
|
7258
7302
|
*/
|
|
7259
|
-
this.fallbackId = `ius-sel-${uid$
|
|
7303
|
+
this.fallbackId = `ius-sel-${uid$i++}`;
|
|
7260
7304
|
this.onChange = () => { };
|
|
7261
7305
|
this.onTouched = () => { };
|
|
7262
7306
|
this.overlay = inject(Overlay);
|
|
@@ -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 \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> de </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 \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> de </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: [{
|
|
@@ -8906,7 +8956,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
8906
8956
|
* Ver `SearchBar.jsx` → `demoFilled`. Nunca toca el valor real del modelo.
|
|
8907
8957
|
*/
|
|
8908
8958
|
const IUS_SB_DEMO_VALUE = 'CriterioBusqueda';
|
|
8909
|
-
let uid$
|
|
8959
|
+
let uid$h = 0;
|
|
8910
8960
|
/**
|
|
8911
8961
|
* SearchBar — Ius Design v2.
|
|
8912
8962
|
*
|
|
@@ -8991,7 +9041,7 @@ class SearchBarComponent {
|
|
|
8991
9041
|
// ── Estado interno ────────────────────────────────────────────────────
|
|
8992
9042
|
this.inputRef = viewChild.required('input', /* @ts-ignore */
|
|
8993
9043
|
...(ngDevMode ? [{ debugName: "inputRef" }] : /* istanbul ignore next */ []));
|
|
8994
|
-
this.autoId = `ius-sb-${uid$
|
|
9044
|
+
this.autoId = `ius-sb-${uid$h++}`;
|
|
8995
9045
|
/** Estado forzado que el golden considera "con criterio" (demos). */
|
|
8996
9046
|
this.demoFilled = computed(() => this.stateInput() === 'hover' || this.stateInput() === 'focused', /* @ts-ignore */
|
|
8997
9047
|
...(ngDevMode ? [{ debugName: "demoFilled" }] : /* istanbul ignore next */ []));
|
|
@@ -9461,7 +9511,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
9461
9511
|
args: ['triggerEl']
|
|
9462
9512
|
}] } });
|
|
9463
9513
|
|
|
9464
|
-
let uid$
|
|
9514
|
+
let uid$g = 0;
|
|
9465
9515
|
/**
|
|
9466
9516
|
* MultiTextField — Ius Design v2 (familia inputs).
|
|
9467
9517
|
*
|
|
@@ -9517,7 +9567,7 @@ class MultiTextFieldComponent {
|
|
|
9517
9567
|
/** Último valor escrito por el CVA (por si llega antes que los slots). */
|
|
9518
9568
|
this.pendingValue = signal(null, /* @ts-ignore */
|
|
9519
9569
|
...(ngDevMode ? [{ debugName: "pendingValue" }] : /* istanbul ignore next */ []));
|
|
9520
|
-
this.baseIdState = `ius-mtf-${uid$
|
|
9570
|
+
this.baseIdState = `ius-mtf-${uid$g++}`;
|
|
9521
9571
|
this.slotInputs = viewChildren('slotInput', /* @ts-ignore */
|
|
9522
9572
|
...(ngDevMode ? [{ debugName: "slotInputs" }] : /* istanbul ignore next */ []));
|
|
9523
9573
|
this.onChange = () => { };
|
|
@@ -9800,7 +9850,7 @@ const ICON_TONES = {
|
|
|
9800
9850
|
neutral: { bg: 'var(--ius-neutral-2)', fg: 'var(--ius-neutral-7)' },
|
|
9801
9851
|
};
|
|
9802
9852
|
/** Contador para los ids del nombre accesible (equivalente del `useId` del golden). */
|
|
9803
|
-
let uid$
|
|
9853
|
+
let uid$f = 0;
|
|
9804
9854
|
/**
|
|
9805
9855
|
* Modal — Ius Design v2.
|
|
9806
9856
|
*
|
|
@@ -9823,7 +9873,7 @@ class ModalComponent {
|
|
|
9823
9873
|
* `aria-label`, y `aria-describedby` apunta a la descripción cuando la hay
|
|
9824
9874
|
* (T11). `aria-label` queda solo para el caso sin `title`.
|
|
9825
9875
|
*/
|
|
9826
|
-
this.baseId = `ius-modal-${uid$
|
|
9876
|
+
this.baseId = `ius-modal-${uid$f++}`;
|
|
9827
9877
|
this.titleId = `${this.baseId}-title`;
|
|
9828
9878
|
this.descId = `${this.baseId}-desc`;
|
|
9829
9879
|
this.overlay = inject(Overlay);
|
|
@@ -10040,7 +10090,7 @@ function duracionTransicion(el) {
|
|
|
10040
10090
|
function desborda(el) {
|
|
10041
10091
|
return el.scrollHeight - el.clientHeight > TOLERANCIA_DESBORDE;
|
|
10042
10092
|
}
|
|
10043
|
-
let uid$
|
|
10093
|
+
let uid$e = 0;
|
|
10044
10094
|
/**
|
|
10045
10095
|
* Accordion — Ius Design v2 (familia data-display).
|
|
10046
10096
|
*
|
|
@@ -10135,7 +10185,7 @@ class AccordionComponent {
|
|
|
10135
10185
|
/** Apertura propia del modo no controlado (`null` = aún sin tocar). */
|
|
10136
10186
|
this.picked = signal(null, /* @ts-ignore */
|
|
10137
10187
|
...(ngDevMode ? [{ debugName: "picked" }] : /* istanbul ignore next */ []));
|
|
10138
|
-
this.gid = `ius-acc-${uid$
|
|
10188
|
+
this.gid = `ius-acc-${uid$e++}`;
|
|
10139
10189
|
this.openIds = computed(() => {
|
|
10140
10190
|
const controlled = this.open();
|
|
10141
10191
|
if (controlled !== undefined)
|
|
@@ -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,
|
|
@@ -11183,7 +11233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
11183
11233
|
const ERROR_DESC = 'Revise la conexión e intente de nuevo. Si persiste, descargue el archivo.';
|
|
11184
11234
|
const MEDIA_ERROR_DESC = 'No se pudo reproducir el archivo. Revise la conexión e intente de nuevo; si persiste, descárguelo.';
|
|
11185
11235
|
const RETRY_ACTION = { label: 'Reintentar', icon: 'refresh' };
|
|
11186
|
-
let uid$
|
|
11236
|
+
let uid$d = 0;
|
|
11187
11237
|
/**
|
|
11188
11238
|
* DocumentViewer — Ius Design v2 (familia overlays).
|
|
11189
11239
|
*
|
|
@@ -11210,7 +11260,7 @@ class DocumentViewerComponent {
|
|
|
11210
11260
|
this.sanitizer = inject(DomSanitizer);
|
|
11211
11261
|
this.injector = inject(Injector);
|
|
11212
11262
|
this.document = inject(DOCUMENT);
|
|
11213
|
-
this.titleId = `ius-docv-${uid$
|
|
11263
|
+
this.titleId = `ius-docv-${uid$d++}-title`;
|
|
11214
11264
|
this.variant = input('overlay', /* @ts-ignore */
|
|
11215
11265
|
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
11216
11266
|
/** Apertura (controlado). */
|
|
@@ -12342,7 +12392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
12342
12392
|
args: [{ transform: booleanAttribute }]
|
|
12343
12393
|
}] } });
|
|
12344
12394
|
|
|
12345
|
-
let uid$
|
|
12395
|
+
let uid$c = 0;
|
|
12346
12396
|
/**
|
|
12347
12397
|
* TextArea — Ius Design v2 (familia inputs).
|
|
12348
12398
|
*
|
|
@@ -12522,7 +12572,7 @@ class TextAreaComponent {
|
|
|
12522
12572
|
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
12523
12573
|
this.focused = signal(false, /* @ts-ignore */
|
|
12524
12574
|
...(ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []));
|
|
12525
|
-
this.areaId = `ius-ta-${uid$
|
|
12575
|
+
this.areaId = `ius-ta-${uid$c++}`;
|
|
12526
12576
|
this.helpId = `${this.areaId}-help`;
|
|
12527
12577
|
this.area = viewChild('area', /* @ts-ignore */
|
|
12528
12578
|
...(ngDevMode ? [{ debugName: "area" }] : /* istanbul ignore next */ []));
|
|
@@ -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,
|
|
@@ -16560,7 +16610,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
16560
16610
|
}, template: "<!-- Fila de breadcrumb (solo detalle); volver la encabeza si existe -->\r\n@if (hasBreadcrumb()) {\r\n <div class=\"ius-pageheader__bc\">\r\n @if (backInBreadcrumb()) {\r\n <span class=\"ius-pageheader__back\">\r\n <ius-icon-button\r\n icon=\"arrow_back\"\r\n variant=\"tertiary\"\r\n size=\"small\"\r\n [ariaLabel]=\"backLabel()\"\r\n [disabled]=\"backDisabled()\"\r\n (clicked)=\"back.emit($event)\"\r\n />\r\n </span>\r\n }\r\n <ng-content select=\"[iusPageHeaderBreadcrumb]\" />\r\n </div>\r\n}\r\n\r\n<div class=\"ius-pageheader__top\">\r\n <div class=\"ius-pageheader__lead\">\r\n @if (showBack() && !backInBreadcrumb()) {\r\n <span class=\"ius-pageheader__back\">\r\n <ius-icon-button\r\n icon=\"arrow_back\"\r\n variant=\"tertiary\"\r\n size=\"small\"\r\n [ariaLabel]=\"backLabel()\"\r\n [disabled]=\"backDisabled()\"\r\n (clicked)=\"back.emit($event)\"\r\n />\r\n </span>\r\n }\r\n <div class=\"ius-pageheader__titles\">\r\n <!-- Cada pieza: input de texto \u203A contenido proyectado con su directiva -->\r\n @if (overline() != null || hasOverlineSlot()) {\r\n <span class=\"ius-pageheader__overline\">\r\n @if (overline() != null) {\r\n {{ overline() }}\r\n } @else {\r\n <ng-content select=\"[iusPageHeaderOverline]\" />\r\n }\r\n </span>\r\n }\r\n @if (title() != null || hasTitleSlot()) {\r\n <h1 class=\"ius-pageheader__title\" [class]=\"'ius-' + titleLevelEfectivo()\">\r\n @if (title() != null) {\r\n {{ title() }}\r\n } @else {\r\n <ng-content select=\"[iusPageHeaderTitle]\" />\r\n }\r\n </h1>\r\n }\r\n @if (subtitle() != null || hasSubtitleSlot()) {\r\n <p class=\"ius-pageheader__subtitle\">\r\n @if (subtitle() != null) {\r\n {{ subtitle() }}\r\n } @else {\r\n <ng-content select=\"[iusPageHeaderSubtitle]\" />\r\n }\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n @if (hasActions()) {\r\n <div class=\"ius-pageheader__actions\"><ng-content select=\"[iusPageHeaderActions]\" /></div>\r\n }\r\n</div>\r\n\r\n@if (hasToolbar()) {\r\n <div class=\"ius-pageheader__toolbar\"><ng-content select=\"[iusPageHeaderToolbar]\" /></div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--ius-space-xs)}:host([data-surface=true]){background:var(--ius-surface-card);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-lg);padding:var(--ius-space-md) var(--ius-space-lg)}:host([data-divider=true]){border-bottom:1px solid var(--ius-stroke);padding-bottom:var(--ius-space-sm)}.ius-pageheader__bc{min-width:0;display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-pageheader__bc .ius-pageheader__back{margin-top:0}.ius-pageheader__top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ius-space-lg)}.ius-pageheader__lead{display:flex;align-items:flex-start;gap:var(--ius-space-sm);min-width:0}.ius-pageheader__back{flex:0 0 auto}.ius-pageheader__titles{min-width:0;display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-pageheader__overline{font-family:var(--ius-font-display);font-size:var(--ius-fs-sm);font-weight:var(--ius-fw-medium);line-height:var(--ius-lh-sm);letter-spacing:var(--ius-ls-emphasis);text-transform:uppercase;color:var(--ius-text-tertiary)}.ius-pageheader__title{margin:0}.ius-pageheader__subtitle{margin:0;font-family:var(--ius-font-body);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-secondary)}.ius-pageheader__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-sm)}.ius-pageheader__toolbar{display:flex;align-items:center;gap:var(--ius-space-sm);flex-wrap:wrap}:host([data-density=compact]){--ius-control-size: small;gap:0}:host([data-density=compact]) .ius-pageheader__bc{line-height:var(--ius-lh-sm)}:host([data-density=compact]) .ius-pageheader__top{align-items:center;gap:var(--ius-space-sm)}:host([data-density=compact]) .ius-pageheader__lead{align-items:center;gap:var(--ius-space-xs)}:host([data-density=compact]) .ius-pageheader__titles{gap:0}:host([data-density=compact]) .ius-pageheader__overline{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm)}:host([data-density=compact]) .ius-pageheader__subtitle{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary)}:host([data-density=compact][data-surface=true]){padding:var(--ius-space-xs) var(--ius-space-md)}:host([data-density=compact][data-divider=true]){padding-bottom:var(--ius-space-xs)}\n"] }]
|
|
16561
16611
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], overline: [{ type: i0.Input, args: [{ isSignal: true, alias: "overline", required: false }] }], titleLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleLevel", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], showBack: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBack", required: false }] }], backLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "backLabel", required: false }] }], backDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "backDisabled", required: false }] }], divider: [{ type: i0.Input, args: [{ isSignal: true, alias: "divider", required: false }] }], surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "surface", required: false }] }], back: [{ type: i0.Output, args: ["back"] }], breadcrumbRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusPageHeaderBreadcrumbDirective), { isSignal: true }] }], actionsRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusPageHeaderActionsDirective), { isSignal: true }] }], toolbarRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusPageHeaderToolbarDirective), { isSignal: true }] }], overlineRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusPageHeaderOverlineDirective), { isSignal: true }] }], titleRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusPageHeaderTitleDirective), { isSignal: true }] }], subtitleRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusPageHeaderSubtitleDirective), { isSignal: true }] }] } });
|
|
16562
16612
|
|
|
16563
|
-
let uid$
|
|
16613
|
+
let uid$b = 0;
|
|
16564
16614
|
/** `min`/`max`/`step` llegan como número o como atributo de texto; vacío = sin valor.
|
|
16565
16615
|
* (Declaración de función: el compilador exige un transform analizable estáticamente.) */
|
|
16566
16616
|
function numeroOpcional(v) {
|
|
@@ -16631,7 +16681,7 @@ class NumberFieldComponent {
|
|
|
16631
16681
|
...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
16632
16682
|
this.focused = signal(false, /* @ts-ignore */
|
|
16633
16683
|
...(ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []));
|
|
16634
|
-
this.inputId = `ius-num-${uid$
|
|
16684
|
+
this.inputId = `ius-num-${uid$b++}`;
|
|
16635
16685
|
this.helpId = `${this.inputId}-help`;
|
|
16636
16686
|
this.atMax = computed(() => {
|
|
16637
16687
|
const max = this.maxState();
|
|
@@ -16861,7 +16911,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
16861
16911
|
type: Directive,
|
|
16862
16912
|
args: [{ selector: '[iusFormFooter]', standalone: true }]
|
|
16863
16913
|
}] });
|
|
16864
|
-
let uid$
|
|
16914
|
+
let uid$a = 0;
|
|
16865
16915
|
/**
|
|
16866
16916
|
* Form — Ius Design v2 (familia layout).
|
|
16867
16917
|
*
|
|
@@ -16936,7 +16986,7 @@ class FormComponent {
|
|
|
16936
16986
|
...(ngDevMode ? [{ debugName: "errores" }] : /* istanbul ignore next */ []));
|
|
16937
16987
|
this.hasErrors = computed(() => this.errores().length > 0, /* @ts-ignore */
|
|
16938
16988
|
...(ngDevMode ? [{ debugName: "hasErrors" }] : /* istanbul ignore next */ []));
|
|
16939
|
-
this.formId = `ius-form-${uid$
|
|
16989
|
+
this.formId = `ius-form-${uid$a++}`;
|
|
16940
16990
|
// ── Coordinación single-open de las secciones colapsables ──────────────
|
|
16941
16991
|
/** Sección colapsable abierta en modo `accordion` (`null` = todas cerradas). */
|
|
16942
16992
|
this.openSectionId = signal(null, /* @ts-ignore */
|
|
@@ -16976,7 +17026,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
16976
17026
|
args: [{ selector: 'ius-form', standalone: true, imports: [AlertComponent, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"ius-form\" [id]=\"formId\" novalidate (submit)=\"onSubmit($event)\">\r\n @if (hasErrors()) {\r\n <ius-alert tone=\"danger\" role=\"alert\" [title]=\"errorTitle()\">\r\n <ul class=\"ius-form__summary-list\">\r\n @for (e of errores(); track e.field ?? $index) {\r\n <li>\r\n @if (e.field; as field) {\r\n <a [href]=\"'#' + field\" (click)=\"focusField(field, $event)\">{{ e.label || field }}</a>\r\n } @else {\r\n {{ e.label || '' }}\r\n }\r\n @if (e.message) {\r\n \u2014 {{ e.message }}\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </ius-alert>\r\n }\r\n\r\n <div class=\"ius-form__grid\" [attr.data-cols]=\"columns()\">\r\n <ng-content />\r\n </div>\r\n\r\n @if (footer()) {\r\n <div class=\"ius-form__footer\" [attr.data-sticky]=\"stickyFooter() ? 'true' : null\">\r\n @if (hasFooterSlot()) {\r\n <ng-content select=\"[iusFormFooter]\" />\r\n } @else {\r\n @if (showCancel()) {\r\n <ius-button [variant]=\"cancelVariant()\" type=\"button\" [label]=\"cancelLabel()\" (clicked)=\"onCancel()\" />\r\n }\r\n <ius-button\r\n [variant]=\"submitVariant()\"\r\n type=\"submit\"\r\n [loading]=\"submitting()\"\r\n [disabled]=\"submitDisabled()\"\r\n [label]=\"submitLabel()\"\r\n />\r\n }\r\n </div>\r\n }\r\n</form>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;min-height:0}.ius-form{container-type:inline-size;display:flex;flex-direction:column;gap:var(--ius-space-lg);font-family:var(--ius-font-body);min-height:0;margin:0;flex:1 1 auto}.ius-form__grid{display:grid;gap:var(--ius-space-md) var(--ius-space-lg);grid-template-columns:1fr;align-content:start}.ius-form__grid[data-cols=\"1\"]{grid-template-columns:1fr}@container (min-width: 600px){.ius-form__grid[data-cols=\"2\"],.ius-form__grid[data-cols=auto]{grid-template-columns:1fr 1fr}}.ius-form__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--ius-space-sm)}.ius-form__footer[data-sticky=true]{position:sticky;bottom:0;background:var(--ius-surface-card);border-top:1px solid var(--ius-stroke);padding-top:var(--ius-space-md)}.ius-form__summary-list{list-style:disc;margin:var(--ius-space-xs) 0 0;padding-left:var(--ius-space-lg);display:flex;flex-direction:column;gap:var(--ius-space-xxs)}.ius-form__summary-list li{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm)}.ius-form__summary-list a{color:inherit;text-decoration:underline;cursor:pointer}\n"] }]
|
|
16977
17027
|
}], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], errorSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorSummary", required: false }] }], errorTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorTitle", required: false }] }], submitLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], submitVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitVariant", required: false }] }], cancelVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelVariant", required: false }] }], submitting: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitting", required: false }] }], submitDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitDisabled", required: false }] }], footer: [{ type: i0.Input, args: [{ isSignal: true, alias: "footer", required: false }] }], showCancel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCancel", required: false }] }], stickyFooter: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyFooter", required: false }] }], accordion: [{ type: i0.Input, args: [{ isSignal: true, alias: "accordion", required: false }] }], sectionVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionVariant", required: false }] }], submitted: [{ type: i0.Output, args: ["submitted"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }], footerSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusFormFooterDirective), { isSignal: true }] }] } });
|
|
16978
17028
|
|
|
16979
|
-
let uid$
|
|
17029
|
+
let uid$9 = 0;
|
|
16980
17030
|
/**
|
|
16981
17031
|
* FormSection — agrupa campos bajo un título (opcionalmente colapsable).
|
|
16982
17032
|
*
|
|
@@ -17010,7 +17060,7 @@ class FormSectionComponent {
|
|
|
17010
17060
|
...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
17011
17061
|
this.cuerpo = viewChild.required('cuerpo', /* @ts-ignore */
|
|
17012
17062
|
...(ngDevMode ? [{ debugName: "cuerpo" }] : /* istanbul ignore next */ []));
|
|
17013
|
-
this.sectionId = `ius-form-sec-${uid$
|
|
17063
|
+
this.sectionId = `ius-form-sec-${uid$9++}`;
|
|
17014
17064
|
this.colsEfectivas = computed(() => this.columns() ?? this.form?.columns() ?? 'auto', /* @ts-ignore */
|
|
17015
17065
|
...(ngDevMode ? [{ debugName: "colsEfectivas" }] : /* istanbul ignore next */ []));
|
|
17016
17066
|
this.variantEfectiva = computed(() => this.variant() ?? this.form?.sectionVariant() ?? 'contained', /* @ts-ignore */
|
|
@@ -17359,7 +17409,7 @@ function chartPrefersReducedMotion() {
|
|
|
17359
17409
|
window.matchMedia('(prefers-reduced-motion: reduce)').matches);
|
|
17360
17410
|
}
|
|
17361
17411
|
|
|
17362
|
-
let uid$
|
|
17412
|
+
let uid$8 = 0;
|
|
17363
17413
|
/**
|
|
17364
17414
|
* Sparkline — Ius Design v2 (familia charts).
|
|
17365
17415
|
*
|
|
@@ -17412,7 +17462,7 @@ class SparklineComponent {
|
|
|
17412
17462
|
this.ariaLabel = input(/* @ts-ignore */
|
|
17413
17463
|
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
17414
17464
|
/** Id del degradado del área, único por instancia (igual que `gid` del golden). */
|
|
17415
|
-
this.gid = `iussp-${++uid$
|
|
17465
|
+
this.gid = `iussp-${++uid$8}`;
|
|
17416
17466
|
/** Solo valores numéricos finitos (el golden descarta null/NaN antes de dibujar). */
|
|
17417
17467
|
this.vals = computed(() => (this.data() ?? []).filter((v) => v != null && Number.isFinite(v)), /* @ts-ignore */
|
|
17418
17468
|
...(ngDevMode ? [{ debugName: "vals" }] : /* istanbul ignore next */ []));
|
|
@@ -17502,7 +17552,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
17502
17552
|
}, template: "<!-- Sin datos el golden deja el span vac\u00EDo con su caja (width/height van en el host). -->\r\n@if (hasData()) {\r\n <svg\r\n class=\"ius-spark__svg\"\r\n [attr.width]=\"width()\"\r\n [attr.height]=\"height()\"\r\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\r\n role=\"img\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n >\r\n @if (variant() === 'bar') {\r\n <g>\r\n @for (b of bars(); track $index) {\r\n <rect\r\n [attr.x]=\"b.x\"\r\n [attr.y]=\"b.y\"\r\n [attr.width]=\"b.w\"\r\n [attr.height]=\"b.h\"\r\n [attr.rx]=\"b.rx\"\r\n [attr.fill]=\"color()\"\r\n [attr.fill-opacity]=\"b.opacity\"\r\n />\r\n }\r\n </g>\r\n } @else {\r\n <g>\r\n @if (area()) {\r\n <defs>\r\n <linearGradient [attr.id]=\"gid\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"color()\" stop-opacity=\"0.24\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"color()\" stop-opacity=\"0.02\" />\r\n </linearGradient>\r\n </defs>\r\n <path [attr.d]=\"dArea()\" [attr.fill]=\"'url(#' + gid + ')'\" />\r\n }\r\n <path class=\"ius-spark__line\" [attr.d]=\"dLine()\" [attr.stroke]=\"color()\" [attr.stroke-width]=\"strokeWidth()\" />\r\n @if (showDot()) {\r\n @if (last(); as p) {\r\n <circle class=\"ius-spark__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" [attr.r]=\"dotR()\" [attr.fill]=\"color()\" stroke-width=\"1\" />\r\n }\r\n }\r\n </g>\r\n }\r\n </svg>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;line-height:0;vertical-align:middle;-webkit-user-select:none;user-select:none}.ius-spark__svg{display:block;overflow:visible}.ius-spark__line{fill:none;stroke-linecap:round;stroke-linejoin:round}.ius-spark__dot{stroke:var(--ius-surface-card)}\n"] }]
|
|
17503
17553
|
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], trend: [{ type: i0.Input, args: [{ isSignal: true, alias: "trend", required: false }] }], area: [{ type: i0.Input, args: [{ isSignal: true, alias: "area", required: false }] }], curve: [{ type: i0.Input, args: [{ isSignal: true, alias: "curve", required: false }] }], strokeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "strokeWidth", required: false }] }], showDot: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDot", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
17504
17554
|
|
|
17505
|
-
let uid$
|
|
17555
|
+
let uid$7 = 0;
|
|
17506
17556
|
/** Duración del dibujado de la línea (WAAPI) y red de seguridad que la deja sólida. */
|
|
17507
17557
|
const ANIM_MS$2 = 820;
|
|
17508
17558
|
const ANIM_SAFETY_MS$2 = 950;
|
|
@@ -17619,7 +17669,7 @@ class LineChartComponent {
|
|
|
17619
17669
|
/** Categoría bajo el cursor (tooltip + guía). */
|
|
17620
17670
|
this.active = signal(null, /* @ts-ignore */
|
|
17621
17671
|
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
17622
|
-
this.uidStr = `iuslc-${++uid$
|
|
17672
|
+
this.uidStr = `iuslc-${++uid$7}`;
|
|
17623
17673
|
this.hasData = computed(() => {
|
|
17624
17674
|
const cats = this.categories();
|
|
17625
17675
|
const series = this.series();
|
|
@@ -18387,7 +18437,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
18387
18437
|
type: Output
|
|
18388
18438
|
}], labelRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusEntityRowLabelDirective), { isSignal: true }] }], sublabelRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => IusEntityRowSublabelDirective), { isSignal: true }] }] } });
|
|
18389
18439
|
|
|
18390
|
-
let uid$
|
|
18440
|
+
let uid$6 = 0;
|
|
18391
18441
|
/**
|
|
18392
18442
|
* Switch — Ius Design v2 (familia inputs).
|
|
18393
18443
|
*
|
|
@@ -18440,7 +18490,7 @@ class SwitchComponent {
|
|
|
18440
18490
|
...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
|
|
18441
18491
|
/** Nuevo booleano (original `onChange(checked)`; nunca `change`). */
|
|
18442
18492
|
this.checkedChange = new EventEmitter();
|
|
18443
|
-
this.inputId = `ius-sw-${uid$
|
|
18493
|
+
this.inputId = `ius-sw-${uid$6++}`;
|
|
18444
18494
|
this.onChangeCb = () => { };
|
|
18445
18495
|
this.onTouchedCb = () => { };
|
|
18446
18496
|
}
|
|
@@ -18550,7 +18600,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
18550
18600
|
type: Output
|
|
18551
18601
|
}] } });
|
|
18552
18602
|
|
|
18553
|
-
let uid$
|
|
18603
|
+
let uid$5 = 0;
|
|
18554
18604
|
/**
|
|
18555
18605
|
* Radio — Ius Design v2 (familia inputs).
|
|
18556
18606
|
*
|
|
@@ -18583,7 +18633,7 @@ class RadioComponent {
|
|
|
18583
18633
|
...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
|
|
18584
18634
|
/** Emite `true` al seleccionar (original `onChange(true)`; nunca `change`). */
|
|
18585
18635
|
this.checkedChange = new EventEmitter();
|
|
18586
|
-
this.inputId = `ius-rad-${uid$
|
|
18636
|
+
this.inputId = `ius-rad-${uid$5++}`;
|
|
18587
18637
|
this.onChangeCb = () => { };
|
|
18588
18638
|
this.onTouchedCb = () => { };
|
|
18589
18639
|
}
|
|
@@ -18680,7 +18730,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
18680
18730
|
type: Output
|
|
18681
18731
|
}] } });
|
|
18682
18732
|
|
|
18683
|
-
let uid$
|
|
18733
|
+
let uid$4 = 0;
|
|
18684
18734
|
/**
|
|
18685
18735
|
* SelectionField — Ius Design v2 (familia inputs).
|
|
18686
18736
|
*
|
|
@@ -18730,7 +18780,7 @@ class SelectionFieldComponent {
|
|
|
18730
18780
|
...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
|
|
18731
18781
|
/** Nuevo valor con el shape de `type` (original `onChange`). */
|
|
18732
18782
|
this.valueChange = new EventEmitter();
|
|
18733
|
-
this.baseId = `ius-self-${uid$
|
|
18783
|
+
this.baseId = `ius-self-${uid$4++}`;
|
|
18734
18784
|
this.labelId = `${this.baseId}-label`;
|
|
18735
18785
|
this.hintId = `${this.baseId}-hint`;
|
|
18736
18786
|
this.onChange = () => { };
|
|
@@ -20396,10 +20446,10 @@ function fuenteOptions(all = true) {
|
|
|
20396
20446
|
return all ? [{ value: 'all', label: 'Todas', icon: 'filter_list' }, ...opts] : opts;
|
|
20397
20447
|
}
|
|
20398
20448
|
|
|
20399
|
-
let uid$
|
|
20449
|
+
let uid$3 = 0;
|
|
20400
20450
|
function nuevoId() {
|
|
20401
|
-
uid$
|
|
20402
|
-
return `rf-${Date.now().toString(36)}-${uid$
|
|
20451
|
+
uid$3 += 1;
|
|
20452
|
+
return `rf-${Date.now().toString(36)}-${uid$3}`;
|
|
20403
20453
|
}
|
|
20404
20454
|
// Regex del golden, verbatim (la ng-spec §5 pide que vivan en la spec).
|
|
20405
20455
|
const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -20491,7 +20541,7 @@ class RepeatableFieldComponent {
|
|
|
20491
20541
|
...(ngDevMode ? [{ debugName: "helpTextState" }] : /* istanbul ignore next */ []));
|
|
20492
20542
|
/** Además del CVA: el arreglo completo en cada cambio (add/remove/edit/tipo). */
|
|
20493
20543
|
this.valueChange = new EventEmitter();
|
|
20494
|
-
this.labelId = `ius-rf-${++uid$
|
|
20544
|
+
this.labelId = `ius-rf-${++uid$3}-label`;
|
|
20495
20545
|
/** Referencia estable: un objeto literal en el template cambiaría cada CD. */
|
|
20496
20546
|
this.ngModelSuelto = { standalone: true };
|
|
20497
20547
|
this.onChangeFn = () => { };
|
|
@@ -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) {\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", "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,
|
|
@@ -20806,7 +20856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
20806
20856
|
type: Output
|
|
20807
20857
|
}] } });
|
|
20808
20858
|
|
|
20809
|
-
let uid$
|
|
20859
|
+
let uid$2 = 0;
|
|
20810
20860
|
/** Duración del crecimiento (WAAPI), stagger por categoría y red de seguridad. */
|
|
20811
20861
|
const ANIM_MS$1 = 560;
|
|
20812
20862
|
const ANIM_STAGGER_MS = 45;
|
|
@@ -20936,7 +20986,7 @@ class BarChartComponent {
|
|
|
20936
20986
|
/** Categoría bajo el cursor (tooltip + resalte). */
|
|
20937
20987
|
this.active = signal(null, /* @ts-ignore */
|
|
20938
20988
|
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
20939
|
-
this.uidStr = `iusbc-${++uid$
|
|
20989
|
+
this.uidStr = `iusbc-${++uid$2}`;
|
|
20940
20990
|
this.hasData = computed(() => {
|
|
20941
20991
|
const cats = this.categories();
|
|
20942
20992
|
const series = this.series();
|
|
@@ -25082,7 +25132,7 @@ function formatBytes(b) {
|
|
|
25082
25132
|
return `${mb.toFixed(mb < 10 ? 1 : 0)} MB`;
|
|
25083
25133
|
return `${(mb / 1024).toFixed(2)} GB`;
|
|
25084
25134
|
}
|
|
25085
|
-
function uid() {
|
|
25135
|
+
function uid$1() {
|
|
25086
25136
|
return 'f-' + Math.random().toString(36).slice(2, 9);
|
|
25087
25137
|
}
|
|
25088
25138
|
/** Valida un archivo contra accept/maxSize (mismas reglas que el golden). */
|
|
@@ -25258,7 +25308,7 @@ class FileUploadComponent {
|
|
|
25258
25308
|
const newItems = incoming.slice(0, remaining).map((f) => {
|
|
25259
25309
|
const err = validateFile(f, this.accept, this.maxSize);
|
|
25260
25310
|
return {
|
|
25261
|
-
id: uid(),
|
|
25311
|
+
id: uid$1(),
|
|
25262
25312
|
name: f.name,
|
|
25263
25313
|
size: f.size,
|
|
25264
25314
|
type: f.type,
|
|
@@ -27289,6 +27339,361 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
27289
27339
|
type: Output
|
|
27290
27340
|
}] } });
|
|
27291
27341
|
|
|
27342
|
+
const DEFAULT_HINT = 'Arrastra para encuadrar. Con el teclado: flechas para mover, + y − para el zoom, 0 para restablecer.';
|
|
27343
|
+
const DEFAULT_HINT_TOUCH = 'Arrastra para encuadrar. Pellizca con dos dedos o usa los botones para el zoom.';
|
|
27344
|
+
let uid = 0;
|
|
27345
|
+
const clampN = (v, a, b) => Math.min(b, Math.max(a, v));
|
|
27346
|
+
const pct = (z) => Math.round(z * 100) + ' %';
|
|
27347
|
+
/**
|
|
27348
|
+
* ImageCropper — Ius Design v2 (familia inputs).
|
|
27349
|
+
*
|
|
27350
|
+
* Encuadra y recorta una imagen ANTES de subirla (foto de perfil, logo de
|
|
27351
|
+
* cuenta): máscara circular o cuadrada, arrastre (puntero, táctil o pellizco),
|
|
27352
|
+
* zoom con range/botones/rueda/teclado. «Aplicar» emite un `Blob` del tamaño
|
|
27353
|
+
* pedido; «Cancelar» no cambia nada. No sube nada: el consumidor sube el Blob.
|
|
27354
|
+
* Fuente de verdad: `ImageCropper.jsx` + `ImageCropper.d.ts` (ng-spec §1–§7).
|
|
27355
|
+
*
|
|
27356
|
+
* Divergencias deliberadas con la ng-spec:
|
|
27357
|
+
* - `onCancel` → `cancelled`: `cancel` es un evento nativo del DOM (diálogos,
|
|
27358
|
+
* input file) y la regla transversal 3 prohíbe outputs con nombre nativo;
|
|
27359
|
+
* mismo criterio que `ius-form` (`cancelled`).
|
|
27360
|
+
* - `applyLabel`, `cancelLabel` y `hint` son texto (`string`), no proyección.
|
|
27361
|
+
*/
|
|
27362
|
+
class ImageCropperComponent {
|
|
27363
|
+
constructor() {
|
|
27364
|
+
/** Object URL (`URL.createObjectURL(file)`), data URL o URL con CORS. Al cambiar, recarga y restablece. */
|
|
27365
|
+
this.src = input(undefined, /* @ts-ignore */
|
|
27366
|
+
...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
|
|
27367
|
+
/** Máscara. `circle` (para Avatar) fuerza 1:1. */
|
|
27368
|
+
this.shape = input('circle', /* @ts-ignore */
|
|
27369
|
+
...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
|
|
27370
|
+
/** Ancho/alto del marco (solo `square`). */
|
|
27371
|
+
this.aspect = input(1, { ...(ngDevMode ? { debugName: "aspect" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
27372
|
+
/** Zoom mínimo: 1 = la imagen cubre justo el marco. */
|
|
27373
|
+
this.minZoom = input(1, { ...(ngDevMode ? { debugName: "minZoom" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
27374
|
+
this.maxZoom = input(4, { ...(ngDevMode ? { debugName: "maxZoom" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
27375
|
+
/** Paso de botones, rueda y + −. */
|
|
27376
|
+
this.zoomStep = input(0.1, { ...(ngDevMode ? { debugName: "zoomStep" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
27377
|
+
/** Lado de la salida en px (alto = `outputSize / aspect`). */
|
|
27378
|
+
this.outputSize = input(512, { ...(ngDevMode ? { debugName: "outputSize" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
27379
|
+
this.outputType = input('image/png', /* @ts-ignore */
|
|
27380
|
+
...(ngDevMode ? [{ debugName: "outputType" }] : /* istanbul ignore next */ []));
|
|
27381
|
+
/** Calidad 0–1 para jpeg/webp. */
|
|
27382
|
+
this.outputQuality = input(0.92, { ...(ngDevMode ? { debugName: "outputQuality" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
27383
|
+
/** Lado del marco visible en px (dimensión estructural). */
|
|
27384
|
+
this.frameSize = input(240, { ...(ngDevMode ? { debugName: "frameSize" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
27385
|
+
this.applyLabel = input('Aplicar', /* @ts-ignore */
|
|
27386
|
+
...(ngDevMode ? [{ debugName: "applyLabel" }] : /* istanbul ignore next */ []));
|
|
27387
|
+
this.cancelLabel = input('Cancelar', /* @ts-ignore */
|
|
27388
|
+
...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
|
|
27389
|
+
/** Muestra «Cancelar / Aplicar». */
|
|
27390
|
+
this.showActions = input(true, { ...(ngDevMode ? { debugName: "showActions" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
27391
|
+
/**
|
|
27392
|
+
* Ayuda bajo el encuadre. `false` no la pinta: el texto por defecto queda solo
|
|
27393
|
+
* para lector de pantalla (`aria-describedby` se conserva siempre).
|
|
27394
|
+
*/
|
|
27395
|
+
this.hint = input(undefined, /* @ts-ignore */
|
|
27396
|
+
...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
27397
|
+
/** Modo táctil: acciones en columna a todo el ancho, botones large y ayuda táctil. */
|
|
27398
|
+
this.touch = input(false, { ...(ngDevMode ? { debugName: "touch" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
27399
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
27400
|
+
/** Etiqueta accesible del área de encuadre. */
|
|
27401
|
+
this.ariaLabel = input('Encuadre de la imagen', /* @ts-ignore */
|
|
27402
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
27403
|
+
/** Imagen recortada lista para subir / pasar a `Avatar`. */
|
|
27404
|
+
this.apply = output();
|
|
27405
|
+
/** Cancelar: no cambia nada. */
|
|
27406
|
+
this.cancelled = output();
|
|
27407
|
+
this.ids = (() => {
|
|
27408
|
+
uid += 1;
|
|
27409
|
+
return { hint: 'ius-ic-hint-' + uid, live: 'ius-ic-live-' + uid };
|
|
27410
|
+
})();
|
|
27411
|
+
this.stage = viewChild.required('stage', /* @ts-ignore */
|
|
27412
|
+
...(ngDevMode ? [{ debugName: "stage" }] : /* istanbul ignore next */ []));
|
|
27413
|
+
this.status = signal('empty', /* @ts-ignore */
|
|
27414
|
+
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
27415
|
+
this.nat = signal({ w: 0, h: 0 }, /* @ts-ignore */
|
|
27416
|
+
...(ngDevMode ? [{ debugName: "nat" }] : /* istanbul ignore next */ []));
|
|
27417
|
+
this.zoom = signal(1, /* @ts-ignore */
|
|
27418
|
+
...(ngDevMode ? [{ debugName: "zoom" }] : /* istanbul ignore next */ []));
|
|
27419
|
+
this.pos = signal({ x: 0, y: 0 }, /* @ts-ignore */
|
|
27420
|
+
...(ngDevMode ? [{ debugName: "pos" }] : /* istanbul ignore next */ []));
|
|
27421
|
+
this.dragging = signal(false, /* @ts-ignore */
|
|
27422
|
+
...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
|
|
27423
|
+
this.applying = signal(false, /* @ts-ignore */
|
|
27424
|
+
...(ngDevMode ? [{ debugName: "applying" }] : /* istanbul ignore next */ []));
|
|
27425
|
+
this.announce = signal('', /* @ts-ignore */
|
|
27426
|
+
...(ngDevMode ? [{ debugName: "announce" }] : /* istanbul ignore next */ []));
|
|
27427
|
+
this.img = null;
|
|
27428
|
+
this.drag = null;
|
|
27429
|
+
/** Pellizco: punteros activos (dos dedos). */
|
|
27430
|
+
this.pointers = new Map();
|
|
27431
|
+
this.pinch = null;
|
|
27432
|
+
this.ratio = computed(() => this.shape() === 'circle' ? 1 : this.aspect() > 0 ? this.aspect() : 1, /* @ts-ignore */
|
|
27433
|
+
...(ngDevMode ? [{ debugName: "ratio" }] : /* istanbul ignore next */ []));
|
|
27434
|
+
this.frameW = computed(() => this.ratio() >= 1 ? this.frameSize() : Math.round(this.frameSize() * this.ratio()), /* @ts-ignore */
|
|
27435
|
+
...(ngDevMode ? [{ debugName: "frameW" }] : /* istanbul ignore next */ []));
|
|
27436
|
+
this.frameH = computed(() => this.ratio() >= 1 ? Math.round(this.frameSize() / this.ratio()) : this.frameSize(), /* @ts-ignore */
|
|
27437
|
+
...(ngDevMode ? [{ debugName: "frameH" }] : /* istanbul ignore next */ []));
|
|
27438
|
+
this.lo = computed(() => Math.max(0.1, this.minZoom()), /* @ts-ignore */
|
|
27439
|
+
...(ngDevMode ? [{ debugName: "lo" }] : /* istanbul ignore next */ []));
|
|
27440
|
+
this.hi = computed(() => Math.max(this.lo(), this.maxZoom()), /* @ts-ignore */
|
|
27441
|
+
...(ngDevMode ? [{ debugName: "hi" }] : /* istanbul ignore next */ []));
|
|
27442
|
+
/** Escala «cover»: con zoom 1 la imagen cubre justo el marco. */
|
|
27443
|
+
this.base = computed(() => {
|
|
27444
|
+
const n = this.nat();
|
|
27445
|
+
return n.w && n.h ? Math.max(this.frameW() / n.w, this.frameH() / n.h) : 1;
|
|
27446
|
+
}, /* @ts-ignore */
|
|
27447
|
+
...(ngDevMode ? [{ debugName: "base" }] : /* istanbul ignore next */ []));
|
|
27448
|
+
this.ready = computed(() => this.status() === 'ready' && !this.disabled(), /* @ts-ignore */
|
|
27449
|
+
...(ngDevMode ? [{ debugName: "ready" }] : /* istanbul ignore next */ []));
|
|
27450
|
+
this.imgW = computed(() => this.nat().w * this.base() * this.zoom(), /* @ts-ignore */
|
|
27451
|
+
...(ngDevMode ? [{ debugName: "imgW" }] : /* istanbul ignore next */ []));
|
|
27452
|
+
this.imgH = computed(() => this.nat().h * this.base() * this.zoom(), /* @ts-ignore */
|
|
27453
|
+
...(ngDevMode ? [{ debugName: "imgH" }] : /* istanbul ignore next */ []));
|
|
27454
|
+
this.imgTransform = computed(() => {
|
|
27455
|
+
const p = this.pos();
|
|
27456
|
+
return `translate(calc(-50% + ${p.x}px), calc(-50% + ${p.y}px))`;
|
|
27457
|
+
}, /* @ts-ignore */
|
|
27458
|
+
...(ngDevMode ? [{ debugName: "imgTransform" }] : /* istanbul ignore next */ []));
|
|
27459
|
+
this.zoomPct = computed(() => {
|
|
27460
|
+
const lo = this.lo();
|
|
27461
|
+
const hi = this.hi();
|
|
27462
|
+
return (hi > lo ? ((this.zoom() - lo) / (hi - lo)) * 100 : 0) + '%';
|
|
27463
|
+
}, /* @ts-ignore */
|
|
27464
|
+
...(ngDevMode ? [{ debugName: "zoomPct" }] : /* istanbul ignore next */ []));
|
|
27465
|
+
this.zoomText = computed(() => pct(this.zoom()), /* @ts-ignore */
|
|
27466
|
+
...(ngDevMode ? [{ debugName: "zoomText" }] : /* istanbul ignore next */ []));
|
|
27467
|
+
this.msg = computed(() => {
|
|
27468
|
+
switch (this.status()) {
|
|
27469
|
+
case 'loading':
|
|
27470
|
+
return 'Cargando imagen…';
|
|
27471
|
+
case 'error':
|
|
27472
|
+
return 'No se pudo cargar la imagen. Elija otro archivo.';
|
|
27473
|
+
case 'empty':
|
|
27474
|
+
return 'Sin imagen';
|
|
27475
|
+
default:
|
|
27476
|
+
return null;
|
|
27477
|
+
}
|
|
27478
|
+
}, /* @ts-ignore */
|
|
27479
|
+
...(ngDevMode ? [{ debugName: "msg" }] : /* istanbul ignore next */ []));
|
|
27480
|
+
this.hintText = computed(() => {
|
|
27481
|
+
const h = this.hint();
|
|
27482
|
+
return h === false || h == null ? (this.touch() ? DEFAULT_HINT_TOUCH : DEFAULT_HINT) : h;
|
|
27483
|
+
}, /* @ts-ignore */
|
|
27484
|
+
...(ngDevMode ? [{ debugName: "hintText" }] : /* istanbul ignore next */ []));
|
|
27485
|
+
// Carga de la imagen: cada `src` nuevo restablece zoom y posición. Una
|
|
27486
|
+
// carga vieja que termina tarde se descarta (`vigente`).
|
|
27487
|
+
effect((onCleanup) => {
|
|
27488
|
+
const src = this.src();
|
|
27489
|
+
this.img = null;
|
|
27490
|
+
if (!src) {
|
|
27491
|
+
this.status.set('empty');
|
|
27492
|
+
return;
|
|
27493
|
+
}
|
|
27494
|
+
let vigente = true;
|
|
27495
|
+
this.status.set('loading');
|
|
27496
|
+
const im = new Image();
|
|
27497
|
+
if (!/^(blob:|data:)/.test(src))
|
|
27498
|
+
im.crossOrigin = 'anonymous';
|
|
27499
|
+
im.onload = () => {
|
|
27500
|
+
if (!vigente)
|
|
27501
|
+
return;
|
|
27502
|
+
this.img = im;
|
|
27503
|
+
this.nat.set({ w: im.naturalWidth, h: im.naturalHeight });
|
|
27504
|
+
this.zoom.set(untracked(this.lo));
|
|
27505
|
+
this.pos.set({ x: 0, y: 0 });
|
|
27506
|
+
this.status.set('ready');
|
|
27507
|
+
};
|
|
27508
|
+
im.onerror = () => {
|
|
27509
|
+
if (vigente)
|
|
27510
|
+
this.status.set('error');
|
|
27511
|
+
};
|
|
27512
|
+
im.src = src;
|
|
27513
|
+
onCleanup(() => {
|
|
27514
|
+
vigente = false;
|
|
27515
|
+
});
|
|
27516
|
+
});
|
|
27517
|
+
// Rueda: listener declarado NO pasivo (§5) para que preventDefault frene el
|
|
27518
|
+
// scroll de la página mientras se hace zoom.
|
|
27519
|
+
const destroyRef = inject(DestroyRef);
|
|
27520
|
+
afterNextRender(() => {
|
|
27521
|
+
const el = this.stage().nativeElement;
|
|
27522
|
+
const onWheel = (e) => {
|
|
27523
|
+
if (!this.ready())
|
|
27524
|
+
return;
|
|
27525
|
+
e.preventDefault();
|
|
27526
|
+
this.setZoom(this.zoom() + (e.deltaY < 0 ? this.zoomStep() : -this.zoomStep()), false);
|
|
27527
|
+
};
|
|
27528
|
+
el.addEventListener('wheel', onWheel, { passive: false });
|
|
27529
|
+
destroyRef.onDestroy(() => el.removeEventListener('wheel', onWheel));
|
|
27530
|
+
});
|
|
27531
|
+
}
|
|
27532
|
+
/** Acota la posición para que la imagen nunca deje huecos dentro del marco. */
|
|
27533
|
+
clampPos(p, z) {
|
|
27534
|
+
const s = this.base() * z;
|
|
27535
|
+
const n = this.nat();
|
|
27536
|
+
const mx = Math.max(0, (n.w * s - this.frameW()) / 2);
|
|
27537
|
+
const my = Math.max(0, (n.h * s - this.frameH()) / 2);
|
|
27538
|
+
return { x: clampN(p.x, -mx, mx), y: clampN(p.y, -my, my) };
|
|
27539
|
+
}
|
|
27540
|
+
setZoom(z, anunciar) {
|
|
27541
|
+
const actual = this.zoom();
|
|
27542
|
+
const nz = clampN(Math.round(z * 1000) / 1000, this.lo(), this.hi());
|
|
27543
|
+
const r = nz / actual;
|
|
27544
|
+
const p = this.pos();
|
|
27545
|
+
this.zoom.set(nz);
|
|
27546
|
+
this.pos.set(this.clampPos({ x: p.x * r, y: p.y * r }, nz));
|
|
27547
|
+
if (anunciar)
|
|
27548
|
+
this.announce.set('Zoom ' + pct(nz));
|
|
27549
|
+
}
|
|
27550
|
+
move(dx, dy) {
|
|
27551
|
+
const p = this.pos();
|
|
27552
|
+
this.pos.set(this.clampPos({ x: p.x + dx, y: p.y + dy }, this.zoom()));
|
|
27553
|
+
}
|
|
27554
|
+
reset() {
|
|
27555
|
+
this.zoom.set(this.lo());
|
|
27556
|
+
this.pos.set({ x: 0, y: 0 });
|
|
27557
|
+
this.announce.set('Encuadre restablecido');
|
|
27558
|
+
}
|
|
27559
|
+
onRange(event) {
|
|
27560
|
+
this.setZoom(parseFloat(event.target.value), false);
|
|
27561
|
+
}
|
|
27562
|
+
onPointerDown(e) {
|
|
27563
|
+
if (!this.ready() || e.button !== 0)
|
|
27564
|
+
return;
|
|
27565
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
27566
|
+
this.pointers.set(e.pointerId, { x: e.clientX, y: e.clientY });
|
|
27567
|
+
if (this.pointers.size === 2) {
|
|
27568
|
+
const [a, b] = [...this.pointers.values()];
|
|
27569
|
+
this.pinch = { dist: Math.hypot(a.x - b.x, a.y - b.y) || 1, zoom: this.zoom() };
|
|
27570
|
+
this.drag = null;
|
|
27571
|
+
return;
|
|
27572
|
+
}
|
|
27573
|
+
const p = this.pos();
|
|
27574
|
+
this.drag = { px: e.clientX, py: e.clientY, x: p.x, y: p.y };
|
|
27575
|
+
this.dragging.set(true);
|
|
27576
|
+
}
|
|
27577
|
+
onPointerMove(e) {
|
|
27578
|
+
if (this.pointers.has(e.pointerId))
|
|
27579
|
+
this.pointers.set(e.pointerId, { x: e.clientX, y: e.clientY });
|
|
27580
|
+
if (this.pinch && this.pointers.size >= 2) {
|
|
27581
|
+
const [a, b] = [...this.pointers.values()];
|
|
27582
|
+
const dist = Math.hypot(a.x - b.x, a.y - b.y) || 1;
|
|
27583
|
+
this.setZoom(this.pinch.zoom * (dist / this.pinch.dist), false);
|
|
27584
|
+
return;
|
|
27585
|
+
}
|
|
27586
|
+
const d = this.drag;
|
|
27587
|
+
if (!d)
|
|
27588
|
+
return;
|
|
27589
|
+
this.pos.set(this.clampPos({ x: d.x + (e.clientX - d.px), y: d.y + (e.clientY - d.py) }, this.zoom()));
|
|
27590
|
+
}
|
|
27591
|
+
onPointerEnd(e) {
|
|
27592
|
+
this.pointers.delete(e.pointerId);
|
|
27593
|
+
if (this.pointers.size < 2)
|
|
27594
|
+
this.pinch = null;
|
|
27595
|
+
if (!this.drag) {
|
|
27596
|
+
if (this.pointers.size === 0)
|
|
27597
|
+
this.dragging.set(false);
|
|
27598
|
+
return;
|
|
27599
|
+
}
|
|
27600
|
+
this.drag = null;
|
|
27601
|
+
this.dragging.set(false);
|
|
27602
|
+
const el = e.currentTarget;
|
|
27603
|
+
if (el.hasPointerCapture?.(e.pointerId))
|
|
27604
|
+
el.releasePointerCapture(e.pointerId);
|
|
27605
|
+
}
|
|
27606
|
+
onKeyDown(e) {
|
|
27607
|
+
if (!this.ready())
|
|
27608
|
+
return;
|
|
27609
|
+
const step = e.shiftKey ? 40 : 10;
|
|
27610
|
+
const k = e.key;
|
|
27611
|
+
if (k === 'ArrowLeft')
|
|
27612
|
+
this.move(-step, 0);
|
|
27613
|
+
else if (k === 'ArrowRight')
|
|
27614
|
+
this.move(step, 0);
|
|
27615
|
+
else if (k === 'ArrowUp')
|
|
27616
|
+
this.move(0, -step);
|
|
27617
|
+
else if (k === 'ArrowDown')
|
|
27618
|
+
this.move(0, step);
|
|
27619
|
+
else if (k === '+' || k === '=')
|
|
27620
|
+
this.setZoom(this.zoom() + this.zoomStep(), true);
|
|
27621
|
+
else if (k === '-' || k === '_')
|
|
27622
|
+
this.setZoom(this.zoom() - this.zoomStep(), true);
|
|
27623
|
+
else if (k === '0')
|
|
27624
|
+
this.reset();
|
|
27625
|
+
else
|
|
27626
|
+
return;
|
|
27627
|
+
e.preventDefault();
|
|
27628
|
+
}
|
|
27629
|
+
aplicar() {
|
|
27630
|
+
const im = this.img;
|
|
27631
|
+
if (!im || !this.ready() || this.applying())
|
|
27632
|
+
return;
|
|
27633
|
+
const s = this.base() * this.zoom();
|
|
27634
|
+
const n = this.nat();
|
|
27635
|
+
const p = this.pos();
|
|
27636
|
+
const fw = this.frameW();
|
|
27637
|
+
const fh = this.frameH();
|
|
27638
|
+
const left = fw / 2 + p.x - (n.w * s) / 2;
|
|
27639
|
+
const top = fh / 2 + p.y - (n.h * s) / 2;
|
|
27640
|
+
const crop = { x: -left / s, y: -top / s, width: fw / s, height: fh / s };
|
|
27641
|
+
const ow = Math.round(this.outputSize());
|
|
27642
|
+
const oh = Math.round(this.outputSize() / this.ratio());
|
|
27643
|
+
const canvas = document.createElement('canvas');
|
|
27644
|
+
canvas.width = ow;
|
|
27645
|
+
canvas.height = oh;
|
|
27646
|
+
const ctx = canvas.getContext('2d');
|
|
27647
|
+
if (!ctx) {
|
|
27648
|
+
this.status.set('error');
|
|
27649
|
+
return;
|
|
27650
|
+
}
|
|
27651
|
+
ctx.imageSmoothingEnabled = true;
|
|
27652
|
+
ctx.imageSmoothingQuality = 'high';
|
|
27653
|
+
ctx.drawImage(im, crop.x, crop.y, crop.width, crop.height, 0, 0, ow, oh);
|
|
27654
|
+
const zoom = this.zoom();
|
|
27655
|
+
this.applying.set(true);
|
|
27656
|
+
try {
|
|
27657
|
+
canvas.toBlob((blob) => {
|
|
27658
|
+
this.applying.set(false);
|
|
27659
|
+
if (!blob) {
|
|
27660
|
+
this.announce.set('No se pudo recortar la imagen');
|
|
27661
|
+
return;
|
|
27662
|
+
}
|
|
27663
|
+
this.apply.emit({
|
|
27664
|
+
blob,
|
|
27665
|
+
crop: {
|
|
27666
|
+
x: Math.round(crop.x),
|
|
27667
|
+
y: Math.round(crop.y),
|
|
27668
|
+
width: Math.round(crop.width),
|
|
27669
|
+
height: Math.round(crop.height),
|
|
27670
|
+
},
|
|
27671
|
+
zoom,
|
|
27672
|
+
width: ow,
|
|
27673
|
+
height: oh,
|
|
27674
|
+
});
|
|
27675
|
+
}, this.outputType(), this.outputQuality());
|
|
27676
|
+
}
|
|
27677
|
+
catch {
|
|
27678
|
+
// Un canvas «contaminado» (imagen remota sin CORS) lanza en toBlob.
|
|
27679
|
+
this.applying.set(false);
|
|
27680
|
+
this.announce.set('No se pudo recortar la imagen');
|
|
27681
|
+
}
|
|
27682
|
+
}
|
|
27683
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageCropperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27684
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ImageCropperComponent, isStandalone: true, selector: "ius-image-cropper", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, aspect: { classPropertyName: "aspect", publicName: "aspect", isSignal: true, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: "minZoom", publicName: "minZoom", isSignal: true, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: "maxZoom", publicName: "maxZoom", isSignal: true, isRequired: false, transformFunction: null }, zoomStep: { classPropertyName: "zoomStep", publicName: "zoomStep", isSignal: true, isRequired: false, transformFunction: null }, outputSize: { classPropertyName: "outputSize", publicName: "outputSize", isSignal: true, isRequired: false, transformFunction: null }, outputType: { classPropertyName: "outputType", publicName: "outputType", isSignal: true, isRequired: false, transformFunction: null }, outputQuality: { classPropertyName: "outputQuality", publicName: "outputQuality", isSignal: true, isRequired: false, transformFunction: null }, frameSize: { classPropertyName: "frameSize", publicName: "frameSize", isSignal: true, isRequired: false, transformFunction: null }, applyLabel: { classPropertyName: "applyLabel", publicName: "applyLabel", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, showActions: { classPropertyName: "showActions", publicName: "showActions", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, touch: { classPropertyName: "touch", publicName: "touch", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply", cancelled: "cancelled" }, host: { properties: { "attr.data-shape": "shape()", "attr.data-touch": "touch() ? 'true' : null", "style.--_ic-frame-w": "frameW() + 'px'", "style.--_ic-frame-h": "frameH() + 'px'" }, classAttribute: "ius-ic" }, viewQueries: [{ propertyName: "stage", first: true, predicate: ["stage"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n #stage\r\n class=\"ius-ic__stage\"\r\n role=\"group\"\r\n aria-roledescription=\"recorte de imagen\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-describedby]=\"ids.hint\"\r\n [attr.data-status]=\"status()\"\r\n [attr.data-dragging]=\"dragging() ? 'true' : null\"\r\n [attr.tabindex]=\"ready() ? 0 : -1\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (pointerdown)=\"onPointerDown($event)\"\r\n (pointermove)=\"onPointerMove($event)\"\r\n (pointerup)=\"onPointerEnd($event)\"\r\n (pointercancel)=\"onPointerEnd($event)\"\r\n>\r\n @if (status() === 'ready') {\r\n <img\r\n class=\"ius-ic__img\"\r\n alt=\"\"\r\n draggable=\"false\"\r\n [src]=\"src()\"\r\n [style.width.px]=\"imgW()\"\r\n [style.height.px]=\"imgH()\"\r\n [style.transform]=\"imgTransform()\"\r\n />\r\n }\r\n <span class=\"ius-ic__frame\" aria-hidden=\"true\"></span>\r\n @if (msg(); as texto) {\r\n <div class=\"ius-ic__msg\" [attr.role]=\"status() === 'error' ? 'alert' : null\">{{ texto }}</div>\r\n }\r\n</div>\r\n\r\n<div class=\"ius-ic__zoom\">\r\n <ius-icon-button\r\n icon=\"zoom_out\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n ariaLabel=\"Alejar\"\r\n tooltip=\"Alejar\"\r\n [size]=\"touch() ? 'large' : 'small'\"\r\n [disabled]=\"!ready() || zoom() <= lo()\"\r\n (clicked)=\"setZoom(zoom() - zoomStep(), true)\"\r\n />\r\n <input\r\n type=\"range\"\r\n class=\"ius-ic__range\"\r\n aria-label=\"Zoom\"\r\n [min]=\"lo()\"\r\n [max]=\"hi()\"\r\n [step]=\"zoomStep()\"\r\n [value]=\"zoom()\"\r\n [disabled]=\"!ready()\"\r\n [attr.aria-valuetext]=\"zoomText()\"\r\n [style.--_ic-pct]=\"zoomPct()\"\r\n (input)=\"onRange($event)\"\r\n />\r\n <ius-icon-button\r\n icon=\"zoom_in\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n ariaLabel=\"Acercar\"\r\n tooltip=\"Acercar\"\r\n [size]=\"touch() ? 'large' : 'small'\"\r\n [disabled]=\"!ready() || zoom() >= hi()\"\r\n (clicked)=\"setZoom(zoom() + zoomStep(), true)\"\r\n />\r\n</div>\r\n\r\n<!-- Ayuda: siempre en el DOM para aria-describedby; hint=false solo la oculta a la vista. -->\r\n<p [id]=\"ids.hint\" [class]=\"hint() === false ? 'ius-ic__sr' : 'ius-ic__hint'\">{{ hintText() }}</p>\r\n\r\n@if (showActions()) {\r\n <div class=\"ius-ic__actions\">\r\n <ius-button\r\n variant=\"secondary\"\r\n [label]=\"cancelLabel()\"\r\n [size]=\"touch() ? 'large' : 'medium'\"\r\n [fullWidth]=\"touch()\"\r\n (clicked)=\"cancelled.emit()\"\r\n />\r\n <ius-button\r\n variant=\"primary\"\r\n [label]=\"applyLabel()\"\r\n [size]=\"touch() ? 'large' : 'medium'\"\r\n [fullWidth]=\"touch()\"\r\n [disabled]=\"!ready()\"\r\n [loading]=\"applying()\"\r\n (clicked)=\"aplicar()\"\r\n />\r\n </div>\r\n}\r\n\r\n<span class=\"ius-ic__sr\" aria-live=\"polite\" [id]=\"ids.live\">{{ announce() }}</span>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--ius-space-md);font-family:var(--ius-font-body);width:calc(var(--_ic-frame-w) + 2 * var(--ius-space-xl));max-width:100%;box-sizing:border-box}.ius-ic__stage{position:relative;box-sizing:content-box;overflow:hidden;width:var(--_ic-frame-w);height:var(--_ic-frame-h);max-width:100%;padding:var(--ius-space-xl);background:var(--ius-neutral-10);border-radius:var(--ius-radius-md);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;outline:none}.ius-ic__stage[data-dragging=true]{cursor:grabbing}.ius-ic__stage:focus-visible{box-shadow:var(--ius-focus-ring)}.ius-ic__stage[data-status=loading],.ius-ic__stage[data-status=error]{cursor:default}.ius-ic__img{position:absolute;left:50%;top:50%;max-width:none;pointer-events:none;-webkit-user-drag:none}@media(prefers-reduced-motion:no-preference){.ius-ic__stage:not([data-dragging=true]) .ius-ic__img{transition:transform var(--ius-duration-fast) var(--ius-ease-standard),width var(--ius-duration-fast) var(--ius-ease-standard),height var(--ius-duration-fast) var(--ius-ease-standard)}}.ius-ic__frame{position:absolute;left:var(--ius-space-xl);top:var(--ius-space-xl);width:var(--_ic-frame-w);height:var(--_ic-frame-h);box-sizing:border-box;border:1px solid var(--ius-neutral-white);outline:100vmax solid var(--ius-surface-overlay);pointer-events:none}:host([data-shape=circle]) .ius-ic__frame{border-radius:50%}:host([data-shape=square]) .ius-ic__frame{border-radius:var(--ius-radius-sm)}.ius-ic__msg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--ius-space-md);text-align:center;font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-neutral-white)}.ius-ic__zoom{display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-ic__range{flex:1 1 auto;min-width:0;margin:0;height:var(--ius-space-lg);-webkit-appearance:none;appearance:none;background:transparent;cursor:pointer}.ius-ic__range:focus{outline:none}.ius-ic__range::-webkit-slider-runnable-track{height:var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:linear-gradient(to right,var(--ius-primary-900) var(--_ic-pct),var(--ius-neutral-4) var(--_ic-pct))}.ius-ic__range::-moz-range-track{height:var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-4)}.ius-ic__range::-moz-range-progress{height:var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:var(--ius-primary-900)}.ius-ic__range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--ius-space-md);height:var(--ius-space-md);margin-top:calc((var(--ius-space-md) - var(--ius-space-xxs)) / -2);border-radius:var(--ius-radius-pill);background:var(--ius-primary-900);border:2px solid var(--ius-neutral-white);box-shadow:var(--ius-elevation-100)}.ius-ic__range::-moz-range-thumb{width:var(--ius-space-md);height:var(--ius-space-md);box-sizing:border-box;border-radius:var(--ius-radius-pill);background:var(--ius-primary-900);border:2px solid var(--ius-neutral-white);box-shadow:var(--ius-elevation-100)}.ius-ic__range:hover::-webkit-slider-thumb{background:var(--ius-primary-500)}.ius-ic__range:hover::-moz-range-thumb{background:var(--ius-primary-500)}.ius-ic__range:focus-visible::-webkit-slider-thumb{box-shadow:var(--ius-focus-ring)}.ius-ic__range:focus-visible::-moz-range-thumb{box-shadow:var(--ius-focus-ring)}.ius-ic__range:disabled{cursor:not-allowed;opacity:.5}.ius-ic__hint{margin:0;font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);text-wrap:pretty}.ius-ic__actions{display:flex;justify-content:flex-end;gap:var(--ius-space-xs)}:host([data-touch=true]){width:100%}:host([data-touch=true]) .ius-ic__actions{flex-direction:column-reverse;align-items:stretch}.ius-ic__sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27685
|
+
}
|
|
27686
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageCropperComponent, decorators: [{
|
|
27687
|
+
type: Component,
|
|
27688
|
+
args: [{ selector: 'ius-image-cropper', standalone: true, imports: [ButtonComponent, IconButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
27689
|
+
class: 'ius-ic',
|
|
27690
|
+
'[attr.data-shape]': 'shape()',
|
|
27691
|
+
'[attr.data-touch]': "touch() ? 'true' : null",
|
|
27692
|
+
'[style.--_ic-frame-w]': "frameW() + 'px'",
|
|
27693
|
+
'[style.--_ic-frame-h]': "frameH() + 'px'",
|
|
27694
|
+
}, template: "<div\r\n #stage\r\n class=\"ius-ic__stage\"\r\n role=\"group\"\r\n aria-roledescription=\"recorte de imagen\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-describedby]=\"ids.hint\"\r\n [attr.data-status]=\"status()\"\r\n [attr.data-dragging]=\"dragging() ? 'true' : null\"\r\n [attr.tabindex]=\"ready() ? 0 : -1\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (pointerdown)=\"onPointerDown($event)\"\r\n (pointermove)=\"onPointerMove($event)\"\r\n (pointerup)=\"onPointerEnd($event)\"\r\n (pointercancel)=\"onPointerEnd($event)\"\r\n>\r\n @if (status() === 'ready') {\r\n <img\r\n class=\"ius-ic__img\"\r\n alt=\"\"\r\n draggable=\"false\"\r\n [src]=\"src()\"\r\n [style.width.px]=\"imgW()\"\r\n [style.height.px]=\"imgH()\"\r\n [style.transform]=\"imgTransform()\"\r\n />\r\n }\r\n <span class=\"ius-ic__frame\" aria-hidden=\"true\"></span>\r\n @if (msg(); as texto) {\r\n <div class=\"ius-ic__msg\" [attr.role]=\"status() === 'error' ? 'alert' : null\">{{ texto }}</div>\r\n }\r\n</div>\r\n\r\n<div class=\"ius-ic__zoom\">\r\n <ius-icon-button\r\n icon=\"zoom_out\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n ariaLabel=\"Alejar\"\r\n tooltip=\"Alejar\"\r\n [size]=\"touch() ? 'large' : 'small'\"\r\n [disabled]=\"!ready() || zoom() <= lo()\"\r\n (clicked)=\"setZoom(zoom() - zoomStep(), true)\"\r\n />\r\n <input\r\n type=\"range\"\r\n class=\"ius-ic__range\"\r\n aria-label=\"Zoom\"\r\n [min]=\"lo()\"\r\n [max]=\"hi()\"\r\n [step]=\"zoomStep()\"\r\n [value]=\"zoom()\"\r\n [disabled]=\"!ready()\"\r\n [attr.aria-valuetext]=\"zoomText()\"\r\n [style.--_ic-pct]=\"zoomPct()\"\r\n (input)=\"onRange($event)\"\r\n />\r\n <ius-icon-button\r\n icon=\"zoom_in\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n ariaLabel=\"Acercar\"\r\n tooltip=\"Acercar\"\r\n [size]=\"touch() ? 'large' : 'small'\"\r\n [disabled]=\"!ready() || zoom() >= hi()\"\r\n (clicked)=\"setZoom(zoom() + zoomStep(), true)\"\r\n />\r\n</div>\r\n\r\n<!-- Ayuda: siempre en el DOM para aria-describedby; hint=false solo la oculta a la vista. -->\r\n<p [id]=\"ids.hint\" [class]=\"hint() === false ? 'ius-ic__sr' : 'ius-ic__hint'\">{{ hintText() }}</p>\r\n\r\n@if (showActions()) {\r\n <div class=\"ius-ic__actions\">\r\n <ius-button\r\n variant=\"secondary\"\r\n [label]=\"cancelLabel()\"\r\n [size]=\"touch() ? 'large' : 'medium'\"\r\n [fullWidth]=\"touch()\"\r\n (clicked)=\"cancelled.emit()\"\r\n />\r\n <ius-button\r\n variant=\"primary\"\r\n [label]=\"applyLabel()\"\r\n [size]=\"touch() ? 'large' : 'medium'\"\r\n [fullWidth]=\"touch()\"\r\n [disabled]=\"!ready()\"\r\n [loading]=\"applying()\"\r\n (clicked)=\"aplicar()\"\r\n />\r\n </div>\r\n}\r\n\r\n<span class=\"ius-ic__sr\" aria-live=\"polite\" [id]=\"ids.live\">{{ announce() }}</span>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--ius-space-md);font-family:var(--ius-font-body);width:calc(var(--_ic-frame-w) + 2 * var(--ius-space-xl));max-width:100%;box-sizing:border-box}.ius-ic__stage{position:relative;box-sizing:content-box;overflow:hidden;width:var(--_ic-frame-w);height:var(--_ic-frame-h);max-width:100%;padding:var(--ius-space-xl);background:var(--ius-neutral-10);border-radius:var(--ius-radius-md);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;outline:none}.ius-ic__stage[data-dragging=true]{cursor:grabbing}.ius-ic__stage:focus-visible{box-shadow:var(--ius-focus-ring)}.ius-ic__stage[data-status=loading],.ius-ic__stage[data-status=error]{cursor:default}.ius-ic__img{position:absolute;left:50%;top:50%;max-width:none;pointer-events:none;-webkit-user-drag:none}@media(prefers-reduced-motion:no-preference){.ius-ic__stage:not([data-dragging=true]) .ius-ic__img{transition:transform var(--ius-duration-fast) var(--ius-ease-standard),width var(--ius-duration-fast) var(--ius-ease-standard),height var(--ius-duration-fast) var(--ius-ease-standard)}}.ius-ic__frame{position:absolute;left:var(--ius-space-xl);top:var(--ius-space-xl);width:var(--_ic-frame-w);height:var(--_ic-frame-h);box-sizing:border-box;border:1px solid var(--ius-neutral-white);outline:100vmax solid var(--ius-surface-overlay);pointer-events:none}:host([data-shape=circle]) .ius-ic__frame{border-radius:50%}:host([data-shape=square]) .ius-ic__frame{border-radius:var(--ius-radius-sm)}.ius-ic__msg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--ius-space-md);text-align:center;font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-neutral-white)}.ius-ic__zoom{display:flex;align-items:center;gap:var(--ius-space-xs)}.ius-ic__range{flex:1 1 auto;min-width:0;margin:0;height:var(--ius-space-lg);-webkit-appearance:none;appearance:none;background:transparent;cursor:pointer}.ius-ic__range:focus{outline:none}.ius-ic__range::-webkit-slider-runnable-track{height:var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:linear-gradient(to right,var(--ius-primary-900) var(--_ic-pct),var(--ius-neutral-4) var(--_ic-pct))}.ius-ic__range::-moz-range-track{height:var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:var(--ius-neutral-4)}.ius-ic__range::-moz-range-progress{height:var(--ius-space-xxs);border-radius:var(--ius-radius-pill);background:var(--ius-primary-900)}.ius-ic__range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--ius-space-md);height:var(--ius-space-md);margin-top:calc((var(--ius-space-md) - var(--ius-space-xxs)) / -2);border-radius:var(--ius-radius-pill);background:var(--ius-primary-900);border:2px solid var(--ius-neutral-white);box-shadow:var(--ius-elevation-100)}.ius-ic__range::-moz-range-thumb{width:var(--ius-space-md);height:var(--ius-space-md);box-sizing:border-box;border-radius:var(--ius-radius-pill);background:var(--ius-primary-900);border:2px solid var(--ius-neutral-white);box-shadow:var(--ius-elevation-100)}.ius-ic__range:hover::-webkit-slider-thumb{background:var(--ius-primary-500)}.ius-ic__range:hover::-moz-range-thumb{background:var(--ius-primary-500)}.ius-ic__range:focus-visible::-webkit-slider-thumb{box-shadow:var(--ius-focus-ring)}.ius-ic__range:focus-visible::-moz-range-thumb{box-shadow:var(--ius-focus-ring)}.ius-ic__range:disabled{cursor:not-allowed;opacity:.5}.ius-ic__hint{margin:0;font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);text-wrap:pretty}.ius-ic__actions{display:flex;justify-content:flex-end;gap:var(--ius-space-xs)}:host([data-touch=true]){width:100%}:host([data-touch=true]) .ius-ic__actions{flex-direction:column-reverse;align-items:stretch}.ius-ic__sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n"] }]
|
|
27695
|
+
}], ctorParameters: () => [], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], aspect: [{ type: i0.Input, args: [{ isSignal: true, alias: "aspect", required: false }] }], minZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: "minZoom", required: false }] }], maxZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxZoom", required: false }] }], zoomStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "zoomStep", required: false }] }], outputSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "outputSize", required: false }] }], outputType: [{ type: i0.Input, args: [{ isSignal: true, alias: "outputType", required: false }] }], outputQuality: [{ type: i0.Input, args: [{ isSignal: true, alias: "outputQuality", required: false }] }], frameSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "frameSize", required: false }] }], applyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "applyLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], showActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "showActions", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], touch: [{ type: i0.Input, args: [{ isSignal: true, alias: "touch", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], apply: [{ type: i0.Output, args: ["apply"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }], stage: [{ type: i0.ViewChild, args: ['stage', { isSignal: true }] }] } });
|
|
27696
|
+
|
|
27292
27697
|
/*
|
|
27293
27698
|
* Public API de @litigiovirtual/ius-design-components v2.
|
|
27294
27699
|
* La librería se está reconstruyendo componente a componente desde las
|
|
@@ -27300,5 +27705,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
27300
27705
|
* Generated bundle index. Do not edit.
|
|
27301
27706
|
*/
|
|
27302
27707
|
|
|
27303
|
-
export { ACTUACION_CATALOG, ACTUACION_FUENTES, AccordionComponent, AccountItemComponent, AlertComponent, AnswerFeedbackComponent, AppLayoutComponent, AutocompleteComponent, AvatarComponent, AvatarStackComponent, BarChartComponent, BorderBeamComponent, BreadcrumbComponent, ButtonComponent, CATEGORIES, CATEGORY_DEF, CATEGORY_HUE, CHART_CATEGORICAL_TONES, CHART_SEMANTIC_TONES, CHART_TONES, CLASE_DEF, CalendarComponent, CaptchaFieldComponent, CardComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DateFilterComponent, DatePickerComponent, DescriptionListComponent, DetailSidePanelComponent, DividerComponent, DocumentViewerComponent, DonutChartComponent, DrawerComponent, DropdownComponent, EVENT_KINDS, EVENT_KIND_ICON, EXT_KIND, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, EntityNavigatorComponent, EntityRowComponent, EventPillComponent, FUENTES, FUENTE_DEF, FUENTE_FALLBACK, FileItemComponent, FileTypeIconComponent, FileUploadComponent, FlexComponent, FooterStatusComponent, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_DOCUMENT_VIEWER_ZOOM_STEPS, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDocViewerActionsDirective, IusDocViewerAsideDirective, IusDocViewerBodyDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFooterStatusActionDirective, IusFormFooterDirective, IusInsightActionsDirective, IusKanbanCardBodyDirective, IusKanbanCardLeadingDirective, IusKanbanCardTrailingDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, IusNavRailBrandDirective, IusPageHeaderActionsDirective, IusPageHeaderBreadcrumbDirective, IusPageHeaderOverlineDirective, IusPageHeaderSubtitleDirective, IusPageHeaderTitleDirective, IusPageHeaderToolbarDirective, IusPersonItemNameDirective, IusPersonItemTrailingDirective, IusSectionTitleActionDirective, IusSettingsNavFooterDirective, IusSettingsNavHeaderDirective, IusStageDetailFooterDirective, IusStageDetailHeaderActionsDirective, IusStageDetailMetaDirective, IusStatCaptionDirective, IusStatDeltaDirective, IusStatDeltaLabelDirective, IusStatLabelDirective, IusStatSparklineDirective, IusTagPrefixDirective, IusTagSuffixDirective, IusToastActionDirective, IusUserMenuFooterDirective, KINDS, KIND_DEF, KIND_FALLBACK, KanbanBoardComponent, KanbanCardComponent, KanbanColumnComponent, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavRailComponent, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PaginationComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RadioComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScheduleListComponent, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, SelectNumberComponent, SelectionFieldComponent, SettingsNavComponent, ShowMoreComponent, SkeletonComponent, SparklineComponent, SplitterComponent, StageDetailDrawerComponent, StatComponent, StatGroupComponent, StatusChipComponent, StatusStateComponent, StepperComponent, SwitchComponent, TableComponent, TabsComponent, TagComponent, TextAreaComponent, TextButtonComponent, TextComponent, TextFieldComponent, TimePanelComponent, TimelineComponent, ToastComponent, ToastService, ToastViewportComponent, TooltipComponent, UserMenuComponent, WizardComponent, WizardController, WizardNavComponent, categoryColors, categoryOptions, chartAxisTicks, chartFormatValue, chartLinearPath, chartNiceNum, chartPath, chartPrefersReducedMotion, chartSmoothPath, chartToneAt, chartToneVar, createWizard, eventKindOptions, extOf, formatBytes, formatDate, formatTime, fuenteColors, fuenteOptions, iusSegColor, kindHue, kindIcon, kindLabel, kindMeta, kindOptions, naturalezaMeta, naturalezaOptions, normalizeTipo, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveActuacion, resolveCategoryHue, resolveEventIcon, resolveFuente, resolveIllustration, resolveKind, resolveStatus, resolveViewKind, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
|
|
27708
|
+
export { ACTUACION_CATALOG, ACTUACION_FUENTES, AccordionComponent, AccountItemComponent, AlertComponent, AnswerFeedbackComponent, AppLayoutComponent, AutocompleteComponent, AvatarComponent, AvatarStackComponent, BarChartComponent, BorderBeamComponent, BreadcrumbComponent, ButtonComponent, CATEGORIES, CATEGORY_DEF, CATEGORY_HUE, CHART_CATEGORICAL_TONES, CHART_SEMANTIC_TONES, CHART_TONES, CLASE_DEF, CalendarComponent, CaptchaFieldComponent, CardComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DateFilterComponent, DatePickerComponent, DescriptionListComponent, DetailSidePanelComponent, DividerComponent, DocumentViewerComponent, DonutChartComponent, DrawerComponent, DropdownComponent, EVENT_KINDS, EVENT_KIND_ICON, EXT_KIND, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, EntityNavigatorComponent, EntityRowComponent, EventPillComponent, FUENTES, FUENTE_DEF, FUENTE_FALLBACK, FileItemComponent, FileTypeIconComponent, FileUploadComponent, FlexComponent, FooterStatusComponent, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_DOCUMENT_VIEWER_ZOOM_STEPS, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, ImageCropperComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDocViewerActionsDirective, IusDocViewerAsideDirective, IusDocViewerBodyDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFooterStatusActionDirective, IusFormFooterDirective, IusInsightActionsDirective, IusKanbanCardBodyDirective, IusKanbanCardLeadingDirective, IusKanbanCardTrailingDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, IusNavRailBrandDirective, IusPageHeaderActionsDirective, IusPageHeaderBreadcrumbDirective, IusPageHeaderOverlineDirective, IusPageHeaderSubtitleDirective, IusPageHeaderTitleDirective, IusPageHeaderToolbarDirective, IusPersonItemNameDirective, IusPersonItemTrailingDirective, IusSectionTitleActionDirective, IusSettingsNavFooterDirective, IusSettingsNavHeaderDirective, IusStageDetailFooterDirective, IusStageDetailHeaderActionsDirective, IusStageDetailMetaDirective, IusStatCaptionDirective, IusStatDeltaDirective, IusStatDeltaLabelDirective, IusStatLabelDirective, IusStatSparklineDirective, IusTagPrefixDirective, IusTagSuffixDirective, IusToastActionDirective, IusUserMenuFooterDirective, KINDS, KIND_DEF, KIND_FALLBACK, KanbanBoardComponent, KanbanCardComponent, KanbanColumnComponent, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavRailComponent, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PaginationComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RadioComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScheduleListComponent, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, SelectNumberComponent, SelectionFieldComponent, SettingsNavComponent, ShowMoreComponent, SkeletonComponent, SparklineComponent, SplitterComponent, StageDetailDrawerComponent, StatComponent, StatGroupComponent, StatusChipComponent, StatusStateComponent, StepperComponent, SwitchComponent, TableComponent, TabsComponent, TagComponent, TextAreaComponent, TextButtonComponent, TextComponent, TextFieldComponent, TimePanelComponent, TimelineComponent, ToastComponent, ToastService, ToastViewportComponent, TooltipComponent, UserMenuComponent, WizardComponent, WizardController, WizardNavComponent, categoryColors, categoryOptions, chartAxisTicks, chartFormatValue, chartLinearPath, chartNiceNum, chartPath, chartPrefersReducedMotion, chartSmoothPath, chartToneAt, chartToneVar, createWizard, eventKindOptions, extOf, formatBytes, formatDate, formatTime, fuenteColors, fuenteOptions, iusSegColor, kindHue, kindIcon, kindLabel, kindMeta, kindOptions, naturalezaMeta, naturalezaOptions, normalizeTipo, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveActuacion, resolveCategoryHue, resolveEventIcon, resolveFuente, resolveIllustration, resolveKind, resolveStatus, resolveViewKind, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
|
|
27304
27709
|
//# sourceMappingURL=litigiovirtual-ius-design-components.mjs.map
|