@litigiovirtual/ius-design-components 2.2.4 → 2.2.6
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.
|
@@ -1029,7 +1029,7 @@ class PopoverComponent {
|
|
|
1029
1029
|
}
|
|
1030
1030
|
}
|
|
1031
1031
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1032
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: PopoverComponent, isStandalone: true, selector: "ius-popover", inputs: { title: "title", content: "content", placement: "placement", trigger: "trigger", offset: ["offset", "offset", numberAttribute], open: "open", defaultOpen: ["defaultOpen", "defaultOpen", booleanAttribute], showArrow: ["showArrow", "showArrow", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], anchorRect: "anchorRect", padding: "padding", dismissable: ["dismissable", "dismissable", booleanAttribute], panelClass: "panelClass" }, outputs: { openChange: "openChange" }, host: { listeners: { "mouseenter": "onHostMouseEnter()", "mouseleave": "onHostMouseLeave()", "focusin": "onHostFocusIn()", "focusout": "onHostFocusOut()", "click": "onHostClick()" } }, viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1032
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: PopoverComponent, isStandalone: true, selector: "ius-popover", inputs: { title: "title", content: "content", placement: "placement", trigger: "trigger", offset: ["offset", "offset", numberAttribute], open: "open", defaultOpen: ["defaultOpen", "defaultOpen", booleanAttribute], showArrow: ["showArrow", "showArrow", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], anchorRect: "anchorRect", padding: "padding", dismissable: ["dismissable", "dismissable", booleanAttribute], panelClass: "panelClass" }, outputs: { openChange: "openChange" }, host: { listeners: { "mouseenter": "onHostMouseEnter()", "mouseleave": "onHostMouseLeave()", "focusin": "onHostFocusIn()", "focusout": "onHostFocusOut()", "click": "onHostClick()" } }, viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-datefilter-pop{max-width:none;padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1033
1033
|
}
|
|
1034
1034
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
1035
1035
|
type: Component,
|
|
@@ -1039,7 +1039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
1039
1039
|
'(focusin)': 'onHostFocusIn()',
|
|
1040
1040
|
'(focusout)': 'onHostFocusOut()',
|
|
1041
1041
|
'(click)': 'onHostClick()',
|
|
1042
|
-
}, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"] }]
|
|
1042
|
+
}, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-datefilter-pop{max-width:none;padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"] }]
|
|
1043
1043
|
}], propDecorators: { title: [{
|
|
1044
1044
|
type: Input
|
|
1045
1045
|
}], content: [{
|
|
@@ -6899,7 +6899,7 @@ class OptionItemComponent {
|
|
|
6899
6899
|
event.preventDefault();
|
|
6900
6900
|
}
|
|
6901
6901
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OptionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6902
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: OptionItemComponent, isStandalone: true, selector: "ius-option-item", inputs: { label: "label", overline: "overline", icon: "icon", selected: ["selected", "selected", booleanAttribute], multi: ["multi", "multi", booleanAttribute], active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], size: "size", value: "value", state: "state" }, outputs: { selectClicked: "selectClicked" }, host: { attributes: { "role": "option" }, listeners: { "click": "handleClick()", "mousedown": "onMouseDown($event)" }, properties: { "attr.data-size": "size !== 'medium' ? size : null", "attr.aria-selected": "isSelected || null", "attr.aria-disabled": "isDisabled || null", "attr.data-selected": "isSelected || null", "attr.data-variant": "isSelected ? variant : null", "attr.data-active": "active || null", "attr.data-disabled": "isDisabled || null", "attr.data-state": "forced ? state : null", "attr.data-value": "value ?? null" }, classAttribute: "ius-opt" }, ngImport: i0, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n
|
|
6902
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: OptionItemComponent, isStandalone: true, selector: "ius-option-item", inputs: { label: "label", overline: "overline", icon: "icon", selected: ["selected", "selected", booleanAttribute], multi: ["multi", "multi", booleanAttribute], active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], size: "size", value: "value", state: "state" }, outputs: { selectClicked: "selectClicked" }, host: { attributes: { "role": "option" }, listeners: { "click": "handleClick()", "mousedown": "onMouseDown($event)" }, properties: { "attr.data-size": "size !== 'medium' ? size : null", "attr.aria-selected": "isSelected || null", "attr.aria-disabled": "isDisabled || null", "attr.data-selected": "isSelected || null", "attr.data-variant": "isSelected ? variant : null", "attr.data-active": "active || null", "attr.data-disabled": "isDisabled || null", "attr.data-state": "forced ? state : null", "attr.data-value": "value ?? null" }, classAttribute: "ius-opt" }, ngImport: i0, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n<ng-template #labelTpl>\n <span class=\"ius-opt__label\">{{ label }}<ng-content /></span>\n</ng-template>\n@if (overline != null) {\n <span class=\"ius-opt__text\">\n <span class=\"ius-opt__overline\">{{ overline }}</span>\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n </span>\n} @else {\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n}\n@if (showCheck) {\n <span class=\"ius-opt__check\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">check</span>\n </span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;align-items:center;gap:var(--ius-space-xs);box-sizing:border-box;width:100%;padding:var(--_opt-py, var(--ius-space-xs)) var(--ius-space-sm);border-radius:var(--ius-radius-md);font-family:var(--ius-font-body);font-size:var(--_opt-fs, var(--ius-fs-base));line-height:var(--ius-lh-base);color:var(--ius-text-primary);background:transparent;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}:host([data-size=small]){--_opt-py: 6px;--_opt-fs: var(--ius-fs-base)}:host([data-size=large]){--_opt-py: 11px;--_opt-fs: var(--ius-fs-lg)}.ius-opt__icon{display:inline-flex;align-items:center;flex:0 0 auto;color:var(--ius-text-secondary)}.ius-opt__icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-opt__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-opt__overline{font-family:var(--ius-font-display);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:var(--ius-ls-emphasis);color:var(--ius-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__check{flex:0 0 auto;width:22px;height:22px;border-radius:var(--ius-radius-pill);display:inline-flex;align-items:center;justify-content:center;background:var(--ius-primary-900);color:var(--ius-neutral-white)}.ius-opt__check .ius-icon{font-size:var(--ius-icon-sm);line-height:1}:host(:hover),:host([data-active=true]),:host([data-state=hover]),:host([data-state=selectedHovered]){background:var(--ius-info-100)}:host(:active),:host([data-state=pressed]){background:var(--ius-info-200)}:host([data-selected=true][data-variant=check]),:host([data-state=selected]),:host([data-state=selectedHovered]){color:var(--ius-text-primary);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]),:host([data-state=selectedVar]){background:var(--ius-primary-900);color:var(--ius-neutral-white);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]) .ius-opt__icon,:host([data-state=selectedVar]) .ius-opt__icon{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]) .ius-opt__overline,:host([data-state=selectedVar]) .ius-opt__overline{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]):hover,:host([data-state=selectedVar]):hover{background:var(--ius-primary-900)}:host([data-disabled=true]),:host([data-state=disabled]){color:var(--ius-text-disabled);cursor:not-allowed;background:transparent}:host([data-disabled=true]) .ius-opt__icon,:host([data-state=disabled]) .ius-opt__icon{color:var(--ius-text-disabled)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6903
6903
|
}
|
|
6904
6904
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OptionItemComponent, decorators: [{
|
|
6905
6905
|
type: Component,
|
|
@@ -6917,7 +6917,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
6917
6917
|
'[attr.data-value]': 'value ?? null',
|
|
6918
6918
|
'(click)': 'handleClick()',
|
|
6919
6919
|
'(mousedown)': 'onMouseDown($event)',
|
|
6920
|
-
}, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n
|
|
6920
|
+
}, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n<ng-template #labelTpl>\n <span class=\"ius-opt__label\">{{ label }}<ng-content /></span>\n</ng-template>\n@if (overline != null) {\n <span class=\"ius-opt__text\">\n <span class=\"ius-opt__overline\">{{ overline }}</span>\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n </span>\n} @else {\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n}\n@if (showCheck) {\n <span class=\"ius-opt__check\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">check</span>\n </span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;align-items:center;gap:var(--ius-space-xs);box-sizing:border-box;width:100%;padding:var(--_opt-py, var(--ius-space-xs)) var(--ius-space-sm);border-radius:var(--ius-radius-md);font-family:var(--ius-font-body);font-size:var(--_opt-fs, var(--ius-fs-base));line-height:var(--ius-lh-base);color:var(--ius-text-primary);background:transparent;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}:host([data-size=small]){--_opt-py: 6px;--_opt-fs: var(--ius-fs-base)}:host([data-size=large]){--_opt-py: 11px;--_opt-fs: var(--ius-fs-lg)}.ius-opt__icon{display:inline-flex;align-items:center;flex:0 0 auto;color:var(--ius-text-secondary)}.ius-opt__icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-opt__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-opt__overline{font-family:var(--ius-font-display);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:var(--ius-ls-emphasis);color:var(--ius-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__check{flex:0 0 auto;width:22px;height:22px;border-radius:var(--ius-radius-pill);display:inline-flex;align-items:center;justify-content:center;background:var(--ius-primary-900);color:var(--ius-neutral-white)}.ius-opt__check .ius-icon{font-size:var(--ius-icon-sm);line-height:1}:host(:hover),:host([data-active=true]),:host([data-state=hover]),:host([data-state=selectedHovered]){background:var(--ius-info-100)}:host(:active),:host([data-state=pressed]){background:var(--ius-info-200)}:host([data-selected=true][data-variant=check]),:host([data-state=selected]),:host([data-state=selectedHovered]){color:var(--ius-text-primary);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]),:host([data-state=selectedVar]){background:var(--ius-primary-900);color:var(--ius-neutral-white);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]) .ius-opt__icon,:host([data-state=selectedVar]) .ius-opt__icon{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]) .ius-opt__overline,:host([data-state=selectedVar]) .ius-opt__overline{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]):hover,:host([data-state=selectedVar]):hover{background:var(--ius-primary-900)}:host([data-disabled=true]),:host([data-state=disabled]){color:var(--ius-text-disabled);cursor:not-allowed;background:transparent}:host([data-disabled=true]) .ius-opt__icon,:host([data-state=disabled]) .ius-opt__icon{color:var(--ius-text-disabled)}\n"] }]
|
|
6921
6921
|
}], propDecorators: { label: [{
|
|
6922
6922
|
type: Input
|
|
6923
6923
|
}], overline: [{
|
|
@@ -15809,6 +15809,8 @@ const KIND_ICON = {
|
|
|
15809
15809
|
expediente: 'folder',
|
|
15810
15810
|
proceso: 'gavel',
|
|
15811
15811
|
};
|
|
15812
|
+
/** Etiqueta de estado que `state='archived'` pone cuando no llega `statusTag` (verbatim del golden). */
|
|
15813
|
+
const ARCHIVED_STATUS_TAG = { label: 'Archivado', tone: 'neutral' };
|
|
15812
15814
|
/**
|
|
15813
15815
|
* EntityRow — Ius Design v2 (familia navigation).
|
|
15814
15816
|
*
|
|
@@ -15837,6 +15839,16 @@ const KIND_ICON = {
|
|
|
15837
15839
|
* - `count` es un conteo NEUTRO de hijos (píldora `count-soft`), nunca una
|
|
15838
15840
|
* señal de novedad: por eso se ve distinto del contador de no leídos.
|
|
15839
15841
|
*
|
|
15842
|
+
* Estado y etiquetas (tercera línea, bajo el nombre):
|
|
15843
|
+
* - `tag` (tipo, principal: prospecto, contratante…; tono categórico) y
|
|
15844
|
+
* `statusTag` (estado, tono semántico), hasta DOS `ius-tag` small (default
|
|
15845
|
+
* `variant:'outline'`, `tone:'neutral'`). No recortan el label ni desplazan
|
|
15846
|
+
* al contador/pin; la fila crece de alto solo cuando las lleva.
|
|
15847
|
+
* - `state='archived'` atenúa label (tertiary, peso regular), sublabel
|
|
15848
|
+
* (disabled) e ícono (neutral-6) y rellena `statusTag` con «Archivado» si no
|
|
15849
|
+
* llega uno explícito. La fila sigue navegable; si está `selected`, el label
|
|
15850
|
+
* recupera el acento. `data-state` solo se emite cuando no es `active`.
|
|
15851
|
+
*
|
|
15840
15852
|
* No usar como fila de menú (MenuItem), de cuenta (AccountItem) ni de acción.
|
|
15841
15853
|
*
|
|
15842
15854
|
* DECISIONES DE PORT:
|
|
@@ -15894,6 +15906,13 @@ class EntityRowComponent {
|
|
|
15894
15906
|
this.actions = [];
|
|
15895
15907
|
/** aria del disparador del menú ⋮. */
|
|
15896
15908
|
this.actionsLabel = 'Más acciones';
|
|
15909
|
+
/**
|
|
15910
|
+
* Estado del nodo. `archived` atenúa label/sublabel/ícono y pinta la etiqueta
|
|
15911
|
+
* «Archivado» bajo el nombre (como `statusTag` por defecto); la fila sigue
|
|
15912
|
+
* navegable. Admite `undefined` (= `active`) para reenviar el campo opcional
|
|
15913
|
+
* de un nodo tal cual, como hace EntityNavigator.
|
|
15914
|
+
*/
|
|
15915
|
+
this.state = 'active';
|
|
15897
15916
|
/** Clic en el chevron. NO propaga al `clicked` de la fila. */
|
|
15898
15917
|
this.toggle = new EventEmitter();
|
|
15899
15918
|
/** Anclar / desanclar. */
|
|
@@ -15944,6 +15963,20 @@ class EntityRowComponent {
|
|
|
15944
15963
|
get hasLabelSlot() {
|
|
15945
15964
|
return !!this.labelRef();
|
|
15946
15965
|
}
|
|
15966
|
+
/**
|
|
15967
|
+
* Hasta dos etiquetas en la tercera línea: `tag` (tipo) + estado. El estado
|
|
15968
|
+
* es `statusTag` o, con `state='archived'` y sin `statusTag`, «Archivado»
|
|
15969
|
+
* (espejo de `statusTag || (state === 'archived' ? {…} : null)` del golden).
|
|
15970
|
+
*/
|
|
15971
|
+
get tagItems() {
|
|
15972
|
+
const status = this.statusTag || (this.state === 'archived' ? ARCHIVED_STATUS_TAG : null);
|
|
15973
|
+
const items = [];
|
|
15974
|
+
if (this.tag)
|
|
15975
|
+
items.push(this.tag);
|
|
15976
|
+
if (status)
|
|
15977
|
+
items.push(status);
|
|
15978
|
+
return items;
|
|
15979
|
+
}
|
|
15947
15980
|
/**
|
|
15948
15981
|
* Los contadores se ocultan en hover cuando hay acciones, para que no se
|
|
15949
15982
|
* solapen con el pin y el ⋮ (`data-dim` del golden).
|
|
@@ -15990,7 +16023,7 @@ class EntityRowComponent {
|
|
|
15990
16023
|
this.menuOpen.set(open);
|
|
15991
16024
|
}
|
|
15992
16025
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15993
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityRowComponent, isStandalone: true, selector: "ius-entity-row", inputs: { kind: "kind", icon: "icon", label: "label", sublabel: "sublabel", level: ["level", "level", numberAttribute], accent: "accent", expandable: ["expandable", "expandable", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute], loading: ["loading", "loading", booleanAttribute], selected: ["selected", "selected", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], count: "count", unread: "unread", hasUnread: ["hasUnread", "hasUnread", booleanAttribute], noveltyTone: "noveltyTone", pinned: ["pinned", "pinned", booleanAttribute], pinnable: ["pinnable", "pinnable", booleanAttribute], actions: "actions", actionsLabel: "actionsLabel", ariaLabel: "ariaLabel" }, outputs: { toggle: "toggle", togglePin: "togglePin", clicked: "clicked" }, host: { attributes: { "role": "button" }, listeners: { "click": "onRowClick($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "disabled ? null : 0", "attr.data-level": "level", "attr.data-accent": "accent", "attr.data-expanded": "expanded ? 'true' : null", "attr.data-selected": "selected ? 'true' : null", "attr.data-unread": "hasNovelty ? 'true' : null", "attr.data-disabled": "disabled ? 'true' : null", "attr.data-menu-open": "menuOpen() ? 'true' : null", "attr.data-loading": "loading ? 'true' : null", "attr.aria-busy": "loading ? 'true' : null", "attr.aria-expanded": "expandable ? (expanded ? 'true' : 'false') : null", "attr.aria-current": "selected ? 'true' : null", "attr.aria-label": "ariaLabel || null", "style.padding-left.px": "padLeft" }, classAttribute: "ius-entityrow" }, queries: [{ propertyName: "labelRef", first: true, predicate: IusEntityRowLabelDirective, descendants: true, isSignal: true }, { propertyName: "sublabelRef", first: true, predicate: IusEntityRowSublabelDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}\n"], dependencies: [{ kind: "component", type: CircularProgressComponent, selector: "ius-circular-progress", inputs: ["value", "max", "indeterminate", "tone", "size", "showValue", "ariaLabel", "duration", "paused"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "directive", type: IusDropdownTriggerDirective, selector: "[iusDropdownTrigger]" }, { kind: "component", type: InsigniaComponent, selector: "ius-insignia", inputs: ["variant", "tone", "size", "label", "count", "max", "ring", "ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16026
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityRowComponent, isStandalone: true, selector: "ius-entity-row", inputs: { kind: "kind", icon: "icon", label: "label", sublabel: "sublabel", level: ["level", "level", numberAttribute], accent: "accent", expandable: ["expandable", "expandable", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute], loading: ["loading", "loading", booleanAttribute], selected: ["selected", "selected", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], count: "count", unread: "unread", hasUnread: ["hasUnread", "hasUnread", booleanAttribute], noveltyTone: "noveltyTone", pinned: ["pinned", "pinned", booleanAttribute], pinnable: ["pinnable", "pinnable", booleanAttribute], actions: "actions", actionsLabel: "actionsLabel", state: "state", tag: "tag", statusTag: "statusTag", ariaLabel: "ariaLabel" }, outputs: { toggle: "toggle", togglePin: "togglePin", clicked: "clicked" }, host: { attributes: { "role": "button" }, listeners: { "click": "onRowClick($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "disabled ? null : 0", "attr.data-level": "level", "attr.data-accent": "accent", "attr.data-expanded": "expanded ? 'true' : null", "attr.data-selected": "selected ? 'true' : null", "attr.data-unread": "hasNovelty ? 'true' : null", "attr.data-disabled": "disabled ? 'true' : null", "attr.data-menu-open": "menuOpen() ? 'true' : null", "attr.data-state": "state && state !== 'active' ? state : null", "attr.data-loading": "loading ? 'true' : null", "attr.aria-busy": "loading ? 'true' : null", "attr.aria-expanded": "expandable ? (expanded ? 'true' : 'false') : null", "attr.aria-current": "selected ? 'true' : null", "attr.aria-label": "ariaLabel || null", "style.padding-left.px": "padLeft" }, classAttribute: "ius-entityrow" }, queries: [{ propertyName: "labelRef", first: true, predicate: IusEntityRowLabelDirective, descendants: true, isSignal: true }, { propertyName: "sublabelRef", first: true, predicate: IusEntityRowSublabelDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n <!-- Tercera l\u00EDnea: `tag` (tipo) + estado (`statusTag`, o \u00ABArchivado\u00BB por\r\n defecto con state='archived'). Aqu\u00ED el `@if` es seguro: no envuelve\r\n ning\u00FAn `<ng-content>`. Solo ocupa alto si hay etiquetas. -->\r\n @if (tagItems.length) {\r\n <span class=\"ius-entityrow__tags\">\r\n @for (t of tagItems; track $index) {\r\n <ius-tag\r\n [label]=\"t.label\"\r\n [tone]=\"t.tone || 'neutral'\"\r\n [variant]=\"t.variant || 'outline'\"\r\n size=\"small\"\r\n [icon]=\"t.icon\"\r\n />\r\n }\r\n </span>\r\n }\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}.ius-entityrow__tags{display:flex;align-items:center;gap:var(--ius-space-xxs);margin-top:var(--ius-space-xxs);min-width:0;overflow:hidden}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}:host([data-state=archived]) .ius-entityrow__label{color:var(--ius-text-tertiary);font-weight:var(--ius-fw-regular)}:host([data-state=archived]) .ius-entityrow__sub{color:var(--ius-text-disabled)}:host([data-state=archived]) .ius-entityrow__icon{color:var(--ius-neutral-6)}:host([data-state=archived][data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}\n"], dependencies: [{ kind: "component", type: CircularProgressComponent, selector: "ius-circular-progress", inputs: ["value", "max", "indeterminate", "tone", "size", "showValue", "ariaLabel", "duration", "paused"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "directive", type: IusDropdownTriggerDirective, selector: "[iusDropdownTrigger]" }, { kind: "component", type: InsigniaComponent, selector: "ius-insignia", inputs: ["variant", "tone", "size", "label", "count", "max", "ring", "ariaLabel"] }, { kind: "component", type: TagComponent, selector: "ius-tag", inputs: ["label", "role", "tone", "variant", "size", "shape", "icon", "dot", "count", "closable", "closeLabel", "selected", "disabled", "interactive", "state"], outputs: ["clicked", "closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
15994
16027
|
}
|
|
15995
16028
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityRowComponent, decorators: [{
|
|
15996
16029
|
type: Component,
|
|
@@ -15999,6 +16032,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
15999
16032
|
DropdownComponent,
|
|
16000
16033
|
IusDropdownTriggerDirective,
|
|
16001
16034
|
InsigniaComponent,
|
|
16035
|
+
TagComponent,
|
|
16002
16036
|
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
16003
16037
|
class: 'ius-entityrow',
|
|
16004
16038
|
role: 'button',
|
|
@@ -16010,6 +16044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
16010
16044
|
'[attr.data-unread]': "hasNovelty ? 'true' : null",
|
|
16011
16045
|
'[attr.data-disabled]': "disabled ? 'true' : null",
|
|
16012
16046
|
'[attr.data-menu-open]': "menuOpen() ? 'true' : null",
|
|
16047
|
+
'[attr.data-state]': "state && state !== 'active' ? state : null",
|
|
16013
16048
|
'[attr.data-loading]': "loading ? 'true' : null",
|
|
16014
16049
|
'[attr.aria-busy]': "loading ? 'true' : null",
|
|
16015
16050
|
'[attr.aria-expanded]': "expandable ? (expanded ? 'true' : 'false') : null",
|
|
@@ -16018,7 +16053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
16018
16053
|
'[style.padding-left.px]': 'padLeft',
|
|
16019
16054
|
'(click)': 'onRowClick($event)',
|
|
16020
16055
|
'(keydown)': 'onKeyDown($event)',
|
|
16021
|
-
}, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}\n"] }]
|
|
16056
|
+
}, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n <!-- Tercera l\u00EDnea: `tag` (tipo) + estado (`statusTag`, o \u00ABArchivado\u00BB por\r\n defecto con state='archived'). Aqu\u00ED el `@if` es seguro: no envuelve\r\n ning\u00FAn `<ng-content>`. Solo ocupa alto si hay etiquetas. -->\r\n @if (tagItems.length) {\r\n <span class=\"ius-entityrow__tags\">\r\n @for (t of tagItems; track $index) {\r\n <ius-tag\r\n [label]=\"t.label\"\r\n [tone]=\"t.tone || 'neutral'\"\r\n [variant]=\"t.variant || 'outline'\"\r\n size=\"small\"\r\n [icon]=\"t.icon\"\r\n />\r\n }\r\n </span>\r\n }\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}.ius-entityrow__tags{display:flex;align-items:center;gap:var(--ius-space-xxs);margin-top:var(--ius-space-xxs);min-width:0;overflow:hidden}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}:host([data-state=archived]) .ius-entityrow__label{color:var(--ius-text-tertiary);font-weight:var(--ius-fw-regular)}:host([data-state=archived]) .ius-entityrow__sub{color:var(--ius-text-disabled)}:host([data-state=archived]) .ius-entityrow__icon{color:var(--ius-neutral-6)}:host([data-state=archived][data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}\n"] }]
|
|
16022
16057
|
}], propDecorators: { kind: [{
|
|
16023
16058
|
type: Input
|
|
16024
16059
|
}], icon: [{
|
|
@@ -16066,6 +16101,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
16066
16101
|
type: Input
|
|
16067
16102
|
}], actionsLabel: [{
|
|
16068
16103
|
type: Input
|
|
16104
|
+
}], state: [{
|
|
16105
|
+
type: Input
|
|
16106
|
+
}], tag: [{
|
|
16107
|
+
type: Input
|
|
16108
|
+
}], statusTag: [{
|
|
16109
|
+
type: Input
|
|
16069
16110
|
}], ariaLabel: [{
|
|
16070
16111
|
type: Input
|
|
16071
16112
|
}], toggle: [{
|
|
@@ -17495,7 +17536,7 @@ class EntityNavigatorComponent {
|
|
|
17495
17536
|
return fijada ? 'Dejar de fijar sección arriba' : 'Fijar sección arriba';
|
|
17496
17537
|
}
|
|
17497
17538
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityNavigatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17498
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityNavigatorComponent, isStandalone: true, selector: "ius-entity-navigator", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleIcon: { classPropertyName: "titleIcon", publicName: "titleIcon", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchThreshold: { classPropertyName: "searchThreshold", publicName: "searchThreshold", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, searchValue: { classPropertyName: "searchValue", publicName: "searchValue", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, selectedFilters: { classPropertyName: "selectedFilters", publicName: "selectedFilters", isSignal: true, isRequired: false, transformFunction: null }, availableFilters: { classPropertyName: "availableFilters", publicName: "availableFilters", isSignal: true, isRequired: false, transformFunction: null }, activeFacets: { classPropertyName: "activeFacets", publicName: "activeFacets", isSignal: true, isRequired: false, transformFunction: null }, stateSegments: { classPropertyName: "stateSegments", publicName: "stateSegments", isSignal: true, isRequired: false, transformFunction: null }, stateValue: { classPropertyName: "stateValue", publicName: "stateValue", isSignal: true, isRequired: false, transformFunction: null }, sortLabel: { classPropertyName: "sortLabel", publicName: "sortLabel", isSignal: true, isRequired: false, transformFunction: null }, sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, sortValue: { classPropertyName: "sortValue", publicName: "sortValue", isSignal: true, isRequired: false, transformFunction: null }, metaLabel: { classPropertyName: "metaLabel", publicName: "metaLabel", isSignal: true, isRequired: false, transformFunction: null }, groups: { classPropertyName: "groups", publicName: "groups", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, accent: { classPropertyName: "accent", publicName: "accent", isSignal: true, isRequired: false, transformFunction: null }, defaultExpanded: { classPropertyName: "defaultExpanded", publicName: "defaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, autoExpandOnFilter: { classPropertyName: "autoExpandOnFilter", publicName: "autoExpandOnFilter", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, defaultSelected: { classPropertyName: "defaultSelected", publicName: "defaultSelected", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTemplate: { classPropertyName: "emptyStateTemplate", publicName: "emptyStateTemplate", isSignal: true, isRequired: false, transformFunction: null }, noResultsLabel: { classPropertyName: "noResultsLabel", publicName: "noResultsLabel", isSignal: true, isRequired: false, transformFunction: null }, createLabel: { classPropertyName: "createLabel", publicName: "createLabel", isSignal: true, isRequired: false, transformFunction: null }, createIcon: { classPropertyName: "createIcon", publicName: "createIcon", isSignal: true, isRequired: false, transformFunction: null }, groupLimit: { classPropertyName: "groupLimit", publicName: "groupLimit", isSignal: true, isRequired: false, transformFunction: null }, collapsibleGroups: { classPropertyName: "collapsibleGroups", publicName: "collapsibleGroups", isSignal: true, isRequired: false, transformFunction: null }, collapsedGroups: { classPropertyName: "collapsedGroups", publicName: "collapsedGroups", isSignal: true, isRequired: false, transformFunction: null }, stickyHeaders: { classPropertyName: "stickyHeaders", publicName: "stickyHeaders", isSignal: true, isRequired: false, transformFunction: null }, pinnableGroups: { classPropertyName: "pinnableGroups", publicName: "pinnableGroups", isSignal: true, isRequired: false, transformFunction: null }, defaultPinnedGroup: { classPropertyName: "defaultPinnedGroup", publicName: "defaultPinnedGroup", isSignal: true, isRequired: false, transformFunction: null }, moreLabel: { classPropertyName: "moreLabel", publicName: "moreLabel", isSignal: true, isRequired: false, transformFunction: null }, alphaIndex: { classPropertyName: "alphaIndex", publicName: "alphaIndex", isSignal: true, isRequired: false, transformFunction: null }, alphaIndexLetters: { classPropertyName: "alphaIndexLetters", publicName: "alphaIndexLetters", isSignal: true, isRequired: false, transformFunction: null }, loadMoreLabel: { classPropertyName: "loadMoreLabel", publicName: "loadMoreLabel", isSignal: true, isRequired: false, transformFunction: null }, virtualized: { classPropertyName: "virtualized", publicName: "virtualized", isSignal: true, isRequired: false, transformFunction: null }, virtualizeThreshold: { classPropertyName: "virtualizeThreshold", publicName: "virtualizeThreshold", isSignal: true, isRequired: false, transformFunction: null }, itemHeights: { classPropertyName: "itemHeights", publicName: "itemHeights", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultCollapsed: { classPropertyName: "defaultCollapsed", publicName: "defaultCollapsed", isSignal: true, isRequired: false, transformFunction: null }, fluidWidth: { classPropertyName: "fluidWidth", publicName: "fluidWidth", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { search: "search", searchChange: "searchChange", searchClear: "searchClear", filter: "filter", filterRemove: "filterRemove", addFilter: "addFilter", stateChange: "stateChange", facetAdd: "facetAdd", facetRemove: "facetRemove", sort: "sort", select: "select", selectedChange: "selectedChange", expandedChange: "expandedChange", togglePin: "togglePin", create: "create", pinGroup: "pinGroup", groupCollapse: "groupCollapse", more: "more", collapsedChange: "collapsedChange", jumpToLetter: "jumpToLetter", loadMore: "loadMore", expandLoad: "expandLoad" }, host: { properties: { "attr.data-collapsed": "isCollapsed() ? 'true' : null", "attr.data-fluid": "fluidWidth() ? 'true' : null", "attr.aria-label": "ariaLabel() || title() || null" }, classAttribute: "ius-entnav" }, viewQueries: [{ propertyName: "bodyRef", first: true, predicate: ["body"], descendants: true, isSignal: true }, { propertyName: "alphaRef", first: true, predicate: ["alpha"], descendants: true, isSignal: true }, { propertyName: "searchRef", first: true, predicate: ["searchBox"], descendants: true, isSignal: true }, { propertyName: "sentinels", predicate: ["lmSentinel"], descendants: true, isSignal: true }, { propertyName: "letterAnchors", predicate: ["letterAnchor"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "action", "size"], outputs: ["clicked"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: EmptyStateComponent, selector: "ius-empty-state", inputs: ["variant", "size", "tone", "icon", "illustration", "illustrationTemplate", "title", "description", "primaryAction", "secondaryAction", "actionsTemplate", "role"], outputs: ["primaryClick", "secondaryClick"] }, { kind: "component", type: EntityRowComponent, selector: "ius-entity-row", inputs: ["kind", "icon", "label", "sublabel", "level", "accent", "expandable", "expanded", "loading", "selected", "disabled", "count", "unread", "hasUnread", "noveltyTone", "pinned", "pinnable", "actions", "actionsLabel", "ariaLabel"], outputs: ["toggle", "togglePin", "clicked"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "directive", type: IusMenuItemTrailingDirective, selector: "[iusMenuItemTrailing]" }, { kind: "component", type: LoadingComponent, selector: "ius-loading", inputs: ["variant", "label", "showLabel", "tone", "brand", "size", "active", "ariaLabel"] }, { kind: "component", type: MenuItemComponent, selector: "ius-menu-item", inputs: ["icon", "label", "badge", "variant", "size", "selected", "disabled", "danger", "state", "href", "ariaLabel", "itemRole"], outputs: ["clicked"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: SearchBarComponent, selector: "ius-search-bar", inputs: ["value", "defaultValue", "size", "disabled", "state", "placeholder", "ariaLabel", "name", "id"], outputs: ["valueChange", "search", "cleared"] }, { kind: "component", type: SectionHeaderComponent, selector: "ius-section-header", inputs: ["icon", "count", "variant", "accent", "collapsible", "collapsed", "sticky", "ariaLabel"], outputs: ["toggle"] }, { kind: "component", type: SegmentedControlComponent, selector: "ius-segmented-control", inputs: ["options", "size", "variant", "fullWidth", "iconOnly", "ariaLabel", "name", "value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: ShowMoreComponent, selector: "ius-show-more", inputs: ["expanded", "remaining", "moreLabel", "lessLabel", "collapsible", "size", "align", "ariaControls"], outputs: ["toggle"] }, { kind: "component", type: TagComponent, selector: "ius-tag", inputs: ["label", "role", "tone", "variant", "size", "shape", "icon", "dot", "count", "closable", "closeLabel", "selected", "disabled", "interactive", "state"], outputs: ["clicked", "closed"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17539
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityNavigatorComponent, isStandalone: true, selector: "ius-entity-navigator", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleIcon: { classPropertyName: "titleIcon", publicName: "titleIcon", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchThreshold: { classPropertyName: "searchThreshold", publicName: "searchThreshold", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, searchValue: { classPropertyName: "searchValue", publicName: "searchValue", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, selectedFilters: { classPropertyName: "selectedFilters", publicName: "selectedFilters", isSignal: true, isRequired: false, transformFunction: null }, availableFilters: { classPropertyName: "availableFilters", publicName: "availableFilters", isSignal: true, isRequired: false, transformFunction: null }, activeFacets: { classPropertyName: "activeFacets", publicName: "activeFacets", isSignal: true, isRequired: false, transformFunction: null }, stateSegments: { classPropertyName: "stateSegments", publicName: "stateSegments", isSignal: true, isRequired: false, transformFunction: null }, stateValue: { classPropertyName: "stateValue", publicName: "stateValue", isSignal: true, isRequired: false, transformFunction: null }, sortLabel: { classPropertyName: "sortLabel", publicName: "sortLabel", isSignal: true, isRequired: false, transformFunction: null }, sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, sortValue: { classPropertyName: "sortValue", publicName: "sortValue", isSignal: true, isRequired: false, transformFunction: null }, metaLabel: { classPropertyName: "metaLabel", publicName: "metaLabel", isSignal: true, isRequired: false, transformFunction: null }, groups: { classPropertyName: "groups", publicName: "groups", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, accent: { classPropertyName: "accent", publicName: "accent", isSignal: true, isRequired: false, transformFunction: null }, defaultExpanded: { classPropertyName: "defaultExpanded", publicName: "defaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, autoExpandOnFilter: { classPropertyName: "autoExpandOnFilter", publicName: "autoExpandOnFilter", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, defaultSelected: { classPropertyName: "defaultSelected", publicName: "defaultSelected", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTemplate: { classPropertyName: "emptyStateTemplate", publicName: "emptyStateTemplate", isSignal: true, isRequired: false, transformFunction: null }, noResultsLabel: { classPropertyName: "noResultsLabel", publicName: "noResultsLabel", isSignal: true, isRequired: false, transformFunction: null }, createLabel: { classPropertyName: "createLabel", publicName: "createLabel", isSignal: true, isRequired: false, transformFunction: null }, createIcon: { classPropertyName: "createIcon", publicName: "createIcon", isSignal: true, isRequired: false, transformFunction: null }, groupLimit: { classPropertyName: "groupLimit", publicName: "groupLimit", isSignal: true, isRequired: false, transformFunction: null }, collapsibleGroups: { classPropertyName: "collapsibleGroups", publicName: "collapsibleGroups", isSignal: true, isRequired: false, transformFunction: null }, collapsedGroups: { classPropertyName: "collapsedGroups", publicName: "collapsedGroups", isSignal: true, isRequired: false, transformFunction: null }, stickyHeaders: { classPropertyName: "stickyHeaders", publicName: "stickyHeaders", isSignal: true, isRequired: false, transformFunction: null }, pinnableGroups: { classPropertyName: "pinnableGroups", publicName: "pinnableGroups", isSignal: true, isRequired: false, transformFunction: null }, defaultPinnedGroup: { classPropertyName: "defaultPinnedGroup", publicName: "defaultPinnedGroup", isSignal: true, isRequired: false, transformFunction: null }, moreLabel: { classPropertyName: "moreLabel", publicName: "moreLabel", isSignal: true, isRequired: false, transformFunction: null }, alphaIndex: { classPropertyName: "alphaIndex", publicName: "alphaIndex", isSignal: true, isRequired: false, transformFunction: null }, alphaIndexLetters: { classPropertyName: "alphaIndexLetters", publicName: "alphaIndexLetters", isSignal: true, isRequired: false, transformFunction: null }, loadMoreLabel: { classPropertyName: "loadMoreLabel", publicName: "loadMoreLabel", isSignal: true, isRequired: false, transformFunction: null }, virtualized: { classPropertyName: "virtualized", publicName: "virtualized", isSignal: true, isRequired: false, transformFunction: null }, virtualizeThreshold: { classPropertyName: "virtualizeThreshold", publicName: "virtualizeThreshold", isSignal: true, isRequired: false, transformFunction: null }, itemHeights: { classPropertyName: "itemHeights", publicName: "itemHeights", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultCollapsed: { classPropertyName: "defaultCollapsed", publicName: "defaultCollapsed", isSignal: true, isRequired: false, transformFunction: null }, fluidWidth: { classPropertyName: "fluidWidth", publicName: "fluidWidth", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { search: "search", searchChange: "searchChange", searchClear: "searchClear", filter: "filter", filterRemove: "filterRemove", addFilter: "addFilter", stateChange: "stateChange", facetAdd: "facetAdd", facetRemove: "facetRemove", sort: "sort", select: "select", selectedChange: "selectedChange", expandedChange: "expandedChange", togglePin: "togglePin", create: "create", pinGroup: "pinGroup", groupCollapse: "groupCollapse", more: "more", collapsedChange: "collapsedChange", jumpToLetter: "jumpToLetter", loadMore: "loadMore", expandLoad: "expandLoad" }, host: { properties: { "attr.data-collapsed": "isCollapsed() ? 'true' : null", "attr.data-fluid": "fluidWidth() ? 'true' : null", "attr.aria-label": "ariaLabel() || title() || null" }, classAttribute: "ius-entnav" }, viewQueries: [{ propertyName: "bodyRef", first: true, predicate: ["body"], descendants: true, isSignal: true }, { propertyName: "alphaRef", first: true, predicate: ["alpha"], descendants: true, isSignal: true }, { propertyName: "searchRef", first: true, predicate: ["searchBox"], descendants: true, isSignal: true }, { propertyName: "sentinels", predicate: ["lmSentinel"], descendants: true, isSignal: true }, { propertyName: "letterAnchors", predicate: ["letterAnchor"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n [state]=\"d.node.state\"\r\n [tag]=\"d.node.tag\"\r\n [statusTag]=\"d.node.statusTag\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "action", "size"], outputs: ["clicked"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: EmptyStateComponent, selector: "ius-empty-state", inputs: ["variant", "size", "tone", "icon", "illustration", "illustrationTemplate", "title", "description", "primaryAction", "secondaryAction", "actionsTemplate", "role"], outputs: ["primaryClick", "secondaryClick"] }, { kind: "component", type: EntityRowComponent, selector: "ius-entity-row", inputs: ["kind", "icon", "label", "sublabel", "level", "accent", "expandable", "expanded", "loading", "selected", "disabled", "count", "unread", "hasUnread", "noveltyTone", "pinned", "pinnable", "actions", "actionsLabel", "state", "tag", "statusTag", "ariaLabel"], outputs: ["toggle", "togglePin", "clicked"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "directive", type: IusMenuItemTrailingDirective, selector: "[iusMenuItemTrailing]" }, { kind: "component", type: LoadingComponent, selector: "ius-loading", inputs: ["variant", "label", "showLabel", "tone", "brand", "size", "active", "ariaLabel"] }, { kind: "component", type: MenuItemComponent, selector: "ius-menu-item", inputs: ["icon", "label", "badge", "variant", "size", "selected", "disabled", "danger", "state", "href", "ariaLabel", "itemRole"], outputs: ["clicked"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: SearchBarComponent, selector: "ius-search-bar", inputs: ["value", "defaultValue", "size", "disabled", "state", "placeholder", "ariaLabel", "name", "id"], outputs: ["valueChange", "search", "cleared"] }, { kind: "component", type: SectionHeaderComponent, selector: "ius-section-header", inputs: ["icon", "count", "variant", "accent", "collapsible", "collapsed", "sticky", "ariaLabel"], outputs: ["toggle"] }, { kind: "component", type: SegmentedControlComponent, selector: "ius-segmented-control", inputs: ["options", "size", "variant", "fullWidth", "iconOnly", "ariaLabel", "name", "value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: ShowMoreComponent, selector: "ius-show-more", inputs: ["expanded", "remaining", "moreLabel", "lessLabel", "collapsible", "size", "align", "ariaControls"], outputs: ["toggle"] }, { kind: "component", type: TagComponent, selector: "ius-tag", inputs: ["label", "role", "tone", "variant", "size", "shape", "icon", "dot", "count", "closable", "closeLabel", "selected", "disabled", "interactive", "state"], outputs: ["clicked", "closed"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17499
17540
|
}
|
|
17500
17541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityNavigatorComponent, decorators: [{
|
|
17501
17542
|
type: Component,
|
|
@@ -17521,7 +17562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
17521
17562
|
'[attr.data-collapsed]': "isCollapsed() ? 'true' : null",
|
|
17522
17563
|
'[attr.data-fluid]': "fluidWidth() ? 'true' : null",
|
|
17523
17564
|
'[attr.aria-label]': 'ariaLabel() || title() || null',
|
|
17524
|
-
}, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"] }]
|
|
17565
|
+
}, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n [state]=\"d.node.state\"\r\n [tag]=\"d.node.tag\"\r\n [statusTag]=\"d.node.statusTag\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"] }]
|
|
17525
17566
|
}], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], titleIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleIcon", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchThreshold", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], searchValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchValue", required: false }] }], filters: [{ type: i0.Input, args: [{ isSignal: true, alias: "filters", required: false }] }], selectedFilters: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedFilters", required: false }] }], availableFilters: [{ type: i0.Input, args: [{ isSignal: true, alias: "availableFilters", required: false }] }], activeFacets: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeFacets", required: false }] }], stateSegments: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateSegments", required: false }] }], stateValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateValue", required: false }] }], sortLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortLabel", required: false }] }], sortOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortOptions", required: false }] }], sortValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortValue", required: false }] }], metaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaLabel", required: false }] }], groups: [{ type: i0.Input, args: [{ isSignal: true, alias: "groups", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], accent: [{ type: i0.Input, args: [{ isSignal: true, alias: "accent", required: false }] }], defaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpanded", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], autoExpandOnFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoExpandOnFilter", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], defaultSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSelected", required: false }] }], emptyStateTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyStateTemplate", required: false }] }], noResultsLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noResultsLabel", required: false }] }], createLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "createLabel", required: false }] }], createIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "createIcon", required: false }] }], groupLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupLimit", required: false }] }], collapsibleGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsibleGroups", required: false }] }], collapsedGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsedGroups", required: false }] }], stickyHeaders: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyHeaders", required: false }] }], pinnableGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnableGroups", required: false }] }], defaultPinnedGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPinnedGroup", required: false }] }], moreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreLabel", required: false }] }], alphaIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "alphaIndex", required: false }] }], alphaIndexLetters: [{ type: i0.Input, args: [{ isSignal: true, alias: "alphaIndexLetters", required: false }] }], loadMoreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadMoreLabel", required: false }] }], virtualized: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualized", required: false }] }], virtualizeThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualizeThreshold", required: false }] }], itemHeights: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemHeights", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], defaultCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultCollapsed", required: false }] }], fluidWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluidWidth", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], search: [{
|
|
17526
17567
|
type: Output
|
|
17527
17568
|
}], searchChange: [{
|
|
@@ -20463,6 +20504,302 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
20463
20504
|
args: ['slotEl']
|
|
20464
20505
|
}] } });
|
|
20465
20506
|
|
|
20507
|
+
/** Meses abreviados en minúscula (espejo de `MES` del golden). */
|
|
20508
|
+
const MES = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];
|
|
20509
|
+
const atMidnight = (d) => {
|
|
20510
|
+
const x = new Date(d);
|
|
20511
|
+
x.setHours(0, 0, 0, 0);
|
|
20512
|
+
return x;
|
|
20513
|
+
};
|
|
20514
|
+
const addDays = (d, n) => {
|
|
20515
|
+
const x = new Date(d);
|
|
20516
|
+
x.setDate(x.getDate() + n);
|
|
20517
|
+
return x;
|
|
20518
|
+
};
|
|
20519
|
+
const sameDay = (a, b) => !!a &&
|
|
20520
|
+
!!b &&
|
|
20521
|
+
a.getFullYear() === b.getFullYear() &&
|
|
20522
|
+
a.getMonth() === b.getMonth() &&
|
|
20523
|
+
a.getDate() === b.getDate();
|
|
20524
|
+
const fmtD = (d) => `${d.getDate()} ${MES[d.getMonth()]}`;
|
|
20525
|
+
const fmtFull = (d) => `${fmtD(d)} ${d.getFullYear()}`;
|
|
20526
|
+
/** ¿El valor es un rango? (lo contrario de `Date` / `null`). */
|
|
20527
|
+
function isRange(v) {
|
|
20528
|
+
return v != null && !(v instanceof Date);
|
|
20529
|
+
}
|
|
20530
|
+
/** Presets de dominio según el modo (espejo de `defaultPresets` del golden). */
|
|
20531
|
+
function defaultPresets(mode, now) {
|
|
20532
|
+
const today = atMidnight(now);
|
|
20533
|
+
if (mode === 'single') {
|
|
20534
|
+
return [
|
|
20535
|
+
{ label: 'Hoy', value: today },
|
|
20536
|
+
{ label: 'Ayer', value: addDays(today, -1) },
|
|
20537
|
+
];
|
|
20538
|
+
}
|
|
20539
|
+
const firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1);
|
|
20540
|
+
const lastMonthEnd = addDays(firstOfMonth, -1);
|
|
20541
|
+
const lastMonthStart = new Date(lastMonthEnd.getFullYear(), lastMonthEnd.getMonth(), 1);
|
|
20542
|
+
return [
|
|
20543
|
+
{ label: 'Hoy', value: { start: today, end: today } },
|
|
20544
|
+
{ label: 'Últimos 7 días', value: { start: addDays(today, -6), end: today } },
|
|
20545
|
+
{ label: 'Últimos 30 días', value: { start: addDays(today, -29), end: today } },
|
|
20546
|
+
{ label: 'Este mes', value: { start: firstOfMonth, end: today } },
|
|
20547
|
+
{ label: 'Mes pasado', value: { start: lastMonthStart, end: lastMonthEnd } },
|
|
20548
|
+
{ label: 'Este año', value: { start: new Date(today.getFullYear(), 0, 1), end: today } },
|
|
20549
|
+
{ label: 'Todo', value: null },
|
|
20550
|
+
];
|
|
20551
|
+
}
|
|
20552
|
+
/** Sin fecha: `null`, o un rango sin ningún extremo (espejo de `isEmpty`). */
|
|
20553
|
+
function isEmpty(v, mode) {
|
|
20554
|
+
if (v == null)
|
|
20555
|
+
return true;
|
|
20556
|
+
if (mode === 'range')
|
|
20557
|
+
return !isRange(v) || (!v.start && !v.end);
|
|
20558
|
+
return false;
|
|
20559
|
+
}
|
|
20560
|
+
/**
|
|
20561
|
+
* Texto del disparador (espejo de `labelFor` del golden): «25 sep 2026»,
|
|
20562
|
+
* «12 sep – 25 sep 2026» (año en los dos lados si difieren), «Desde …» /
|
|
20563
|
+
* «Hasta …» con un solo extremo, o el placeholder sin valor.
|
|
20564
|
+
*/
|
|
20565
|
+
function labelFor(v, mode, placeholder) {
|
|
20566
|
+
if (isEmpty(v, mode))
|
|
20567
|
+
return placeholder;
|
|
20568
|
+
if (mode === 'single') {
|
|
20569
|
+
// Defensa que el golden no tiene: un rango en modo single no revienta.
|
|
20570
|
+
return v instanceof Date ? fmtFull(v) : placeholder;
|
|
20571
|
+
}
|
|
20572
|
+
if (!isRange(v))
|
|
20573
|
+
return placeholder;
|
|
20574
|
+
const { start, end } = v;
|
|
20575
|
+
if (start && end) {
|
|
20576
|
+
const sameYear = start.getFullYear() === end.getFullYear();
|
|
20577
|
+
return `${sameYear ? fmtD(start) : fmtFull(start)} – ${fmtFull(end)}`;
|
|
20578
|
+
}
|
|
20579
|
+
if (start)
|
|
20580
|
+
return `Desde ${fmtFull(start)}`;
|
|
20581
|
+
if (end)
|
|
20582
|
+
return `Hasta ${fmtFull(end)}`;
|
|
20583
|
+
return placeholder;
|
|
20584
|
+
}
|
|
20585
|
+
/** ¿El preset coincide con el borrador? (espejo de `presetActive`). */
|
|
20586
|
+
function presetActive(preset, draft, mode) {
|
|
20587
|
+
if (preset.value == null)
|
|
20588
|
+
return isEmpty(draft, mode);
|
|
20589
|
+
if (mode === 'single') {
|
|
20590
|
+
return preset.value instanceof Date && draft instanceof Date && sameDay(preset.value, draft);
|
|
20591
|
+
}
|
|
20592
|
+
return (isRange(preset.value) &&
|
|
20593
|
+
isRange(draft) &&
|
|
20594
|
+
sameDay(preset.value.start, draft.start) &&
|
|
20595
|
+
sameDay(preset.value.end, draft.end));
|
|
20596
|
+
}
|
|
20597
|
+
/**
|
|
20598
|
+
* DateFilter — Ius Design v2 (familia navigation).
|
|
20599
|
+
*
|
|
20600
|
+
* Filtro de fecha para **barras de lista**: disparador tipo píldora outline
|
|
20601
|
+
* (misma estructura que el de QueryBuilder) que abre un **Popover** con
|
|
20602
|
+
* **presets** a la izquierda (Hoy · Últimos 7 / 30 días · Este mes…) y un
|
|
20603
|
+
* **Calendar** embebido. Rango (desde–hasta, dos meses con banda) o fecha
|
|
20604
|
+
* única. Normalmente vive dentro de un `ius-segment-group` junto al orden
|
|
20605
|
+
* (Dropdown outline) y al QueryBuilder.
|
|
20606
|
+
*
|
|
20607
|
+
* Decisiones de UX fijas (vienen del golden):
|
|
20608
|
+
* - **Staged**: el panel edita un *borrador* que se re-siembra desde lo
|
|
20609
|
+
* aplicado cada vez que abre. "Aplicar" confirma (emite `apply`) y cierra;
|
|
20610
|
+
* "Cancelar" descarta y cierra; "Limpiar" solo vacía el borrador (hay que
|
|
20611
|
+
* confirmar con "Aplicar").
|
|
20612
|
+
* - El preset que coincide con el borrador se marca (`data-active`).
|
|
20613
|
+
* - El disparador muestra el valor **aplicado** («12 sep – 25 sep 2026») y se
|
|
20614
|
+
* resalta (`data-active`) cuando hay valor.
|
|
20615
|
+
*
|
|
20616
|
+
* Compone (no reimplementa) `ius-popover`, `ius-calendar`, `ius-button` y
|
|
20617
|
+
* `ius-text-button`.
|
|
20618
|
+
*
|
|
20619
|
+
* **Cuándo NO usarlo**: capturar una fecha dentro de un formulario →
|
|
20620
|
+
* `ius-date-picker`; calendario fijo embebido → `ius-calendar`.
|
|
20621
|
+
*
|
|
20622
|
+
* Fuente de verdad: `components/navigation/DateFilter/DateFilter.jsx` +
|
|
20623
|
+
* `DateFilter.d.ts` + `DateFilter.ng-spec.md` del proyecto Claude Design.
|
|
20624
|
+
*
|
|
20625
|
+
* ---
|
|
20626
|
+
* **Divergencias doc-vs-golden anotadas** (manda el golden):
|
|
20627
|
+
* 1. "Limpiar" deja el borrador en `{ start: null, end: null }` en `range` (y
|
|
20628
|
+
* `null` en `single`), así que "Limpiar" + "Aplicar" emite ese rango vacío.
|
|
20629
|
+
* El preset "Todo" emite `null`. Los dos cuentan como «sin fecha»: el
|
|
20630
|
+
* disparador vuelve al placeholder y "Todo" queda marcado.
|
|
20631
|
+
* 2. El golden declara `size` (default `small`) pero **no lo usa**. Aquí
|
|
20632
|
+
* gobierna los botones del pie, como en QueryBuilder; sin `size` explícito
|
|
20633
|
+
* se conservan los del golden (Button `small` + TextButton por defecto). El
|
|
20634
|
+
* disparador no cambia de tamaño (tampoco el de QueryBuilder) y
|
|
20635
|
+
* `data-size` se emite solo cuando viene explícito.
|
|
20636
|
+
* 3. El golden no activa `dismissable` en su Popover: el panel se cierra con
|
|
20637
|
+
* el propio disparador, "Cancelar" o "Aplicar" (igual que QueryBuilder).
|
|
20638
|
+
*
|
|
20639
|
+
* **Decisiones del port a Angular**:
|
|
20640
|
+
* - El Popover se usa en modo controlado (`[open]` + `(openChange)`) para
|
|
20641
|
+
* re-sembrar el borrador al abrir.
|
|
20642
|
+
* - El `popoverStyle` del golden (`maxWidth: none` + `padding` md) se porta
|
|
20643
|
+
* como la piel `.ius-popover.ius-datefilter-pop` en
|
|
20644
|
+
* `popover/popover.component.scss` (mismo patrón que `.ius-querybuilder-pop`):
|
|
20645
|
+
* el panel se estampa desde el template del Popover y lleva SU
|
|
20646
|
+
* encapsulación.
|
|
20647
|
+
* - El contenido del panel va bajo `@if (isOpen())`: la proyección del Popover
|
|
20648
|
+
* se reutiliza entre aperturas, y sin el `@if` el Calendar conservaría el
|
|
20649
|
+
* mes navegado y el nivel (mes/año) de la vez anterior. Así cada apertura
|
|
20650
|
+
* arranca en el mes del borrador, como el golden (que desmonta el panel).
|
|
20651
|
+
* - Los presets de dominio se recalculan en cada apertura (el golden los
|
|
20652
|
+
* recalcula en cada render): «Hoy» no se queda en el día en que se montó.
|
|
20653
|
+
*/
|
|
20654
|
+
class DateFilterComponent {
|
|
20655
|
+
constructor() {
|
|
20656
|
+
// ── Inputs ────────────────────────────────────────────────────────────
|
|
20657
|
+
/** `range` (default; Calendar de dos meses con banda) o `single`. */
|
|
20658
|
+
this.mode = input('range', /* @ts-ignore */
|
|
20659
|
+
...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
20660
|
+
/**
|
|
20661
|
+
* Valor aplicado — **modo controlado**. Si se enlaza (aunque sea `null`), el
|
|
20662
|
+
* componente no guarda estado propio: hay que reaccionar a `apply` y volver
|
|
20663
|
+
* a enlazar. `undefined` = no controlado.
|
|
20664
|
+
*/
|
|
20665
|
+
this.value = input(undefined, /* @ts-ignore */
|
|
20666
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
20667
|
+
/** Valor inicial del modo **no controlado**. */
|
|
20668
|
+
this.defaultValue = input(null, /* @ts-ignore */
|
|
20669
|
+
...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
|
|
20670
|
+
/** Atajos del panel. Si se omite, los de dominio según `mode`. */
|
|
20671
|
+
this.presets = input(undefined, /* @ts-ignore */
|
|
20672
|
+
...(ngDevMode ? [{ debugName: "presets" }] : /* istanbul ignore next */ []));
|
|
20673
|
+
/** Texto del disparador sin valor aplicado. */
|
|
20674
|
+
this.placeholder = input('Fecha', /* @ts-ignore */
|
|
20675
|
+
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
20676
|
+
/** Ligadura Material Symbols del disparador. */
|
|
20677
|
+
this.icon = input('calendar_month', /* @ts-ignore */
|
|
20678
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
20679
|
+
/** Colocación del panel respecto del disparador. */
|
|
20680
|
+
this.placement = input('bottom-start', /* @ts-ignore */
|
|
20681
|
+
...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
|
|
20682
|
+
/**
|
|
20683
|
+
* Escala de los botones del pie. Solo si viene explícito emite `data-size`
|
|
20684
|
+
* (ver la divergencia 2 del comentario de cabecera).
|
|
20685
|
+
*/
|
|
20686
|
+
this.size = input(undefined, /* @ts-ignore */
|
|
20687
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
20688
|
+
/** Etiqueta del botón que confirma el borrador. */
|
|
20689
|
+
this.applyLabel = input('Aplicar', /* @ts-ignore */
|
|
20690
|
+
...(ngDevMode ? [{ debugName: "applyLabel" }] : /* istanbul ignore next */ []));
|
|
20691
|
+
/** Etiqueta del botón que descarta el borrador y cierra. */
|
|
20692
|
+
this.cancelLabel = input('Cancelar', /* @ts-ignore */
|
|
20693
|
+
...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
|
|
20694
|
+
/** Etiqueta del botón que vacía el borrador. */
|
|
20695
|
+
this.clearLabel = input('Limpiar', /* @ts-ignore */
|
|
20696
|
+
...(ngDevMode ? [{ debugName: "clearLabel" }] : /* istanbul ignore next */ []));
|
|
20697
|
+
// ── Outputs ───────────────────────────────────────────────────────────
|
|
20698
|
+
/**
|
|
20699
|
+
* Valor confirmado al pulsar "Aplicar" (espejo de `onApply`). Nombre fijado
|
|
20700
|
+
* por la ng-spec; no colisiona con ningún evento del DOM.
|
|
20701
|
+
*/
|
|
20702
|
+
this.apply = output();
|
|
20703
|
+
// ── Estado interno ────────────────────────────────────────────────────
|
|
20704
|
+
/** `undefined` = todavía no se ha aplicado nada → manda `defaultValue`. */
|
|
20705
|
+
this.internalApplied = signal(undefined, /* @ts-ignore */
|
|
20706
|
+
...(ngDevMode ? [{ debugName: "internalApplied" }] : /* istanbul ignore next */ []));
|
|
20707
|
+
/** Apertura del panel (el Popover se usa en modo controlado). */
|
|
20708
|
+
this.isOpen = signal(false, /* @ts-ignore */
|
|
20709
|
+
...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
20710
|
+
/** Borrador del panel: lo que se está eligiendo, aún sin aplicar. */
|
|
20711
|
+
this.draft = signal(null, /* @ts-ignore */
|
|
20712
|
+
...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
|
|
20713
|
+
/** «Hoy» de referencia de los presets de dominio; se refresca al abrir. */
|
|
20714
|
+
this.now = signal(new Date(), /* @ts-ignore */
|
|
20715
|
+
...(ngDevMode ? [{ debugName: "now" }] : /* istanbul ignore next */ []));
|
|
20716
|
+
// ── Derivados ─────────────────────────────────────────────────────────
|
|
20717
|
+
/**
|
|
20718
|
+
* Valor efectivamente aplicado (controlado › interno › `defaultValue`).
|
|
20719
|
+
* No se usa `??`: `null` es un valor aplicado válido ("Todo").
|
|
20720
|
+
*/
|
|
20721
|
+
this.applied = computed(() => {
|
|
20722
|
+
const controlled = this.value();
|
|
20723
|
+
if (controlled !== undefined)
|
|
20724
|
+
return controlled;
|
|
20725
|
+
const internal = this.internalApplied();
|
|
20726
|
+
if (internal !== undefined)
|
|
20727
|
+
return internal;
|
|
20728
|
+
return this.defaultValue();
|
|
20729
|
+
}, /* @ts-ignore */
|
|
20730
|
+
...(ngDevMode ? [{ debugName: "applied" }] : /* istanbul ignore next */ []));
|
|
20731
|
+
/** Hay fecha aplicada → disparador resaltado. */
|
|
20732
|
+
this.active = computed(() => !isEmpty(this.applied(), this.mode()), /* @ts-ignore */
|
|
20733
|
+
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
20734
|
+
/** Texto del disparador. */
|
|
20735
|
+
this.label = computed(() => labelFor(this.applied(), this.mode(), this.placeholder()), /* @ts-ignore */
|
|
20736
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
20737
|
+
/** Presets efectivos (los del consumidor o los de dominio). */
|
|
20738
|
+
this.presetList = computed(() => this.presets() ?? defaultPresets(this.mode(), this.now()), /* @ts-ignore */
|
|
20739
|
+
...(ngDevMode ? [{ debugName: "presetList" }] : /* istanbul ignore next */ []));
|
|
20740
|
+
/** Marca de preset activo, por índice (memorizada para el template). */
|
|
20741
|
+
this.presetFlags = computed(() => {
|
|
20742
|
+
const draft = this.draft();
|
|
20743
|
+
const mode = this.mode();
|
|
20744
|
+
return this.presetList().map((preset) => presetActive(preset, draft, mode));
|
|
20745
|
+
}, /* @ts-ignore */
|
|
20746
|
+
...(ngDevMode ? [{ debugName: "presetFlags" }] : /* istanbul ignore next */ []));
|
|
20747
|
+
/** Tamaño del Button del pie (golden: `small` fijo). */
|
|
20748
|
+
this.buttonSize = computed(() => this.size() ?? 'small', /* @ts-ignore */
|
|
20749
|
+
...(ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []));
|
|
20750
|
+
/** Tamaño de los TextButton del pie (golden: el default de TextButton). */
|
|
20751
|
+
this.textButtonSize = computed(() => this.size() ?? 'medium', /* @ts-ignore */
|
|
20752
|
+
...(ngDevMode ? [{ debugName: "textButtonSize" }] : /* istanbul ignore next */ []));
|
|
20753
|
+
}
|
|
20754
|
+
// ── Apertura / borrador ───────────────────────────────────────────────
|
|
20755
|
+
/**
|
|
20756
|
+
* Al **abrir**, el borrador se re-siembra desde lo aplicado (espejo del
|
|
20757
|
+
* `useEffect([open])` del golden): lo elegido sin aplicar se descarta.
|
|
20758
|
+
*/
|
|
20759
|
+
onOpenChange(open) {
|
|
20760
|
+
if (open) {
|
|
20761
|
+
this.now.set(new Date());
|
|
20762
|
+
this.draft.set(this.applied());
|
|
20763
|
+
}
|
|
20764
|
+
this.isOpen.set(open);
|
|
20765
|
+
}
|
|
20766
|
+
/** Un preset reemplaza el borrador (todavía no aplica: hay que confirmar). */
|
|
20767
|
+
choosePreset(preset) {
|
|
20768
|
+
this.draft.set(preset.value);
|
|
20769
|
+
}
|
|
20770
|
+
/** Cambio desde el Calendar embebido. */
|
|
20771
|
+
onCalendarChange(next) {
|
|
20772
|
+
this.draft.set(next);
|
|
20773
|
+
}
|
|
20774
|
+
// ── Acciones del pie ──────────────────────────────────────────────────
|
|
20775
|
+
/** Vacía el borrador (espejo del `onClick` de "Limpiar"). */
|
|
20776
|
+
clearDraft() {
|
|
20777
|
+
this.draft.set(this.mode() === 'range' ? { start: null, end: null } : null);
|
|
20778
|
+
}
|
|
20779
|
+
/** Descarta el borrador y cierra. */
|
|
20780
|
+
cancel() {
|
|
20781
|
+
this.isOpen.set(false);
|
|
20782
|
+
}
|
|
20783
|
+
/** Confirma el borrador: emite `apply` y cierra el panel. */
|
|
20784
|
+
applyDraft() {
|
|
20785
|
+
const next = this.draft();
|
|
20786
|
+
if (this.value() === undefined)
|
|
20787
|
+
this.internalApplied.set(next);
|
|
20788
|
+
this.apply.emit(next);
|
|
20789
|
+
this.isOpen.set(false);
|
|
20790
|
+
}
|
|
20791
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DateFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20792
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: DateFilterComponent, isStandalone: true, selector: "ius-date-filter", inputs: { mode: { classPropertyName: "mode", publicName: "mode", 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 }, presets: { classPropertyName: "presets", publicName: "presets", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", 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 }, applyLabel: { classPropertyName: "applyLabel", publicName: "applyLabel", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply" }, host: { properties: { "attr.data-size": "size() ?? null" }, classAttribute: "ius-datefilter" }, ngImport: i0, template: "<!--\n DateFilter \u2014 el Popover es el motor de anclaje; el disparador se proyecta\n como children y el panel como `[iusPopoverContent]`. Modo controlado\n (`[open]` + `(openChange)`) porque el borrador se re-siembra al abrir.\n Sin `dismissable`, como el golden: ver el TSDoc de cabecera.\n-->\n<ius-popover\n trigger=\"click\"\n [placement]=\"placement()\"\n [showArrow]=\"false\"\n [offset]=\"8\"\n [open]=\"isOpen()\"\n panelClass=\"ius-datefilter-pop\"\n (openChange)=\"onOpenChange($event)\"\n>\n <!-- \u2500\u2500 Disparador: p\u00EDldora outline con el valor aplicado \u2500\u2500 -->\n <button\n type=\"button\"\n class=\"ius-datefilter__trigger\"\n aria-haspopup=\"dialog\"\n [attr.data-open]=\"isOpen() ? 'true' : null\"\n [attr.data-active]=\"active() ? 'true' : null\"\n [attr.aria-expanded]=\"isOpen()\"\n >\n <!-- Ligadura Material Symbols: el texto va pegado, sin espacios sueltos. -->\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ icon() }}</span>\n <span>{{ label() }}</span>\n </button>\n\n <!-- \u2500\u2500 Panel: presets + Calendar + pie (se estampa en el overlay) \u2500\u2500 -->\n <div iusPopoverContent class=\"ius-datefilter__panel\">\n <!--\n `@if (isOpen())`: la proyecci\u00F3n se reutiliza entre aperturas; sin \u00E9l el\n Calendar recordar\u00EDa el mes y el nivel navegados la vez anterior.\n -->\n @if (isOpen()) {\n <div class=\"ius-datefilter__body\">\n <div class=\"ius-datefilter__presets\">\n @for (preset of presetList(); track $index; let i = $index) {\n <button\n type=\"button\"\n class=\"ius-datefilter__preset\"\n [attr.data-active]=\"presetFlags()[i] ? 'true' : null\"\n [attr.aria-pressed]=\"presetFlags()[i]\"\n (click)=\"choosePreset(preset)\"\n >{{ preset.label }}</button>\n }\n </div>\n\n <ius-calendar\n [mode]=\"mode()\"\n [value]=\"draft()\"\n (valueChange)=\"onCalendarChange($event)\"\n />\n </div>\n\n <!-- \u2500\u2500 Pie: limpiar \u00B7 cancelar \u00B7 aplicar (staged) \u2500\u2500 -->\n <div class=\"ius-datefilter__foot\">\n <span class=\"ius-datefilter__foot-l\">\n <ius-text-button\n [label]=\"clearLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"clearDraft()\"\n />\n </span>\n <ius-text-button\n [label]=\"cancelLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"cancel()\"\n />\n <ius-button\n variant=\"primary\"\n [size]=\"buttonSize()\"\n [label]=\"applyLabel()\"\n (clicked)=\"applyDraft()\"\n />\n </div>\n }\n </div>\n</ius-popover>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-datefilter__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;white-space:nowrap}.ius-datefilter__trigger:hover{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-datefilter__trigger[data-open=true],.ius-datefilter__trigger[data-active=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-datefilter__panel{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-datefilter__body{display:flex;gap:var(--ius-space-md)}.ius-datefilter__presets{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:132px;border-right:1px solid var(--ius-stroke);padding-right:var(--ius-space-sm)}.ius-datefilter__preset{appearance:none;border:0;background:transparent;text-align:left;cursor:pointer;font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-secondary);padding:var(--ius-space-xs) var(--ius-space-sm);border-radius:var(--ius-radius-sm)}.ius-datefilter__preset:hover{background:var(--ius-neutral-2);color:var(--ius-text-primary)}.ius-datefilter__preset[data-active=true]{background:var(--ius-info-100);color:var(--ius-primary-900);font-weight:var(--ius-fw-semibold)}.ius-datefilter__foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--ius-space-sm);border-top:1px solid var(--ius-stroke);padding-top:var(--ius-space-sm)}.ius-datefilter__foot-l{margin-right:auto}\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: CalendarComponent, selector: "ius-calendar", inputs: ["mode", "defaultValue", "value", "viewDate", "minDate", "maxDate", "isDateDisabled", "showToday", "todayLabel", "weekStartsOn"], outputs: ["valueChange", "viewDateChange", "todayClick"] }, { kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "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 }); }
|
|
20793
|
+
}
|
|
20794
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DateFilterComponent, decorators: [{
|
|
20795
|
+
type: Component,
|
|
20796
|
+
args: [{ selector: 'ius-date-filter', standalone: true, imports: [PopoverComponent, CalendarComponent, ButtonComponent, TextButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
20797
|
+
// Clase raíz del golden (`className: 'ius-datefilter'`).
|
|
20798
|
+
class: 'ius-datefilter',
|
|
20799
|
+
'[attr.data-size]': 'size() ?? null',
|
|
20800
|
+
}, template: "<!--\n DateFilter \u2014 el Popover es el motor de anclaje; el disparador se proyecta\n como children y el panel como `[iusPopoverContent]`. Modo controlado\n (`[open]` + `(openChange)`) porque el borrador se re-siembra al abrir.\n Sin `dismissable`, como el golden: ver el TSDoc de cabecera.\n-->\n<ius-popover\n trigger=\"click\"\n [placement]=\"placement()\"\n [showArrow]=\"false\"\n [offset]=\"8\"\n [open]=\"isOpen()\"\n panelClass=\"ius-datefilter-pop\"\n (openChange)=\"onOpenChange($event)\"\n>\n <!-- \u2500\u2500 Disparador: p\u00EDldora outline con el valor aplicado \u2500\u2500 -->\n <button\n type=\"button\"\n class=\"ius-datefilter__trigger\"\n aria-haspopup=\"dialog\"\n [attr.data-open]=\"isOpen() ? 'true' : null\"\n [attr.data-active]=\"active() ? 'true' : null\"\n [attr.aria-expanded]=\"isOpen()\"\n >\n <!-- Ligadura Material Symbols: el texto va pegado, sin espacios sueltos. -->\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ icon() }}</span>\n <span>{{ label() }}</span>\n </button>\n\n <!-- \u2500\u2500 Panel: presets + Calendar + pie (se estampa en el overlay) \u2500\u2500 -->\n <div iusPopoverContent class=\"ius-datefilter__panel\">\n <!--\n `@if (isOpen())`: la proyecci\u00F3n se reutiliza entre aperturas; sin \u00E9l el\n Calendar recordar\u00EDa el mes y el nivel navegados la vez anterior.\n -->\n @if (isOpen()) {\n <div class=\"ius-datefilter__body\">\n <div class=\"ius-datefilter__presets\">\n @for (preset of presetList(); track $index; let i = $index) {\n <button\n type=\"button\"\n class=\"ius-datefilter__preset\"\n [attr.data-active]=\"presetFlags()[i] ? 'true' : null\"\n [attr.aria-pressed]=\"presetFlags()[i]\"\n (click)=\"choosePreset(preset)\"\n >{{ preset.label }}</button>\n }\n </div>\n\n <ius-calendar\n [mode]=\"mode()\"\n [value]=\"draft()\"\n (valueChange)=\"onCalendarChange($event)\"\n />\n </div>\n\n <!-- \u2500\u2500 Pie: limpiar \u00B7 cancelar \u00B7 aplicar (staged) \u2500\u2500 -->\n <div class=\"ius-datefilter__foot\">\n <span class=\"ius-datefilter__foot-l\">\n <ius-text-button\n [label]=\"clearLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"clearDraft()\"\n />\n </span>\n <ius-text-button\n [label]=\"cancelLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"cancel()\"\n />\n <ius-button\n variant=\"primary\"\n [size]=\"buttonSize()\"\n [label]=\"applyLabel()\"\n (clicked)=\"applyDraft()\"\n />\n </div>\n }\n </div>\n</ius-popover>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-datefilter__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;white-space:nowrap}.ius-datefilter__trigger:hover{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-datefilter__trigger[data-open=true],.ius-datefilter__trigger[data-active=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-datefilter__panel{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-datefilter__body{display:flex;gap:var(--ius-space-md)}.ius-datefilter__presets{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:132px;border-right:1px solid var(--ius-stroke);padding-right:var(--ius-space-sm)}.ius-datefilter__preset{appearance:none;border:0;background:transparent;text-align:left;cursor:pointer;font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-secondary);padding:var(--ius-space-xs) var(--ius-space-sm);border-radius:var(--ius-radius-sm)}.ius-datefilter__preset:hover{background:var(--ius-neutral-2);color:var(--ius-text-primary)}.ius-datefilter__preset[data-active=true]{background:var(--ius-info-100);color:var(--ius-primary-900);font-weight:var(--ius-fw-semibold)}.ius-datefilter__foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--ius-space-sm);border-top:1px solid var(--ius-stroke);padding-top:var(--ius-space-sm)}.ius-datefilter__foot-l{margin-right:auto}\n"] }]
|
|
20801
|
+
}], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], presets: [{ type: i0.Input, args: [{ isSignal: true, alias: "presets", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], applyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "applyLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], clearLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearLabel", required: false }] }], apply: [{ type: i0.Output, args: ["apply"] }] } });
|
|
20802
|
+
|
|
20466
20803
|
function esPromesa(v) {
|
|
20467
20804
|
return !!v && typeof v.then === 'function';
|
|
20468
20805
|
}
|
|
@@ -23305,5 +23642,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
23305
23642
|
* Generated bundle index. Do not edit.
|
|
23306
23643
|
*/
|
|
23307
23644
|
|
|
23308
|
-
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, DatePickerComponent, DescriptionListComponent, DetailSidePanelComponent, DividerComponent, 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, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFormFooterDirective, IusInsightActionsDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, 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, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, 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, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
|
|
23645
|
+
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, 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, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFormFooterDirective, IusInsightActionsDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, 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, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, 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, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
|
|
23309
23646
|
//# sourceMappingURL=litigiovirtual-ius-design-components.mjs.map
|