@ngx-smz/ui-kit 21.9.0-next.4 → 21.9.0-next.5
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.
- package/fesm2022/ngx-smz-ui-kit.mjs +411 -224
- package/fesm2022/ngx-smz-ui-kit.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ngx-smz-ui-kit.d.ts +75 -12
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, input, booleanAttribute, computed, Directive, inject, TemplateRef, HostAttributeToken, ChangeDetectionStrategy, Component, ElementRef, output, forwardRef, Injector, DestroyRef, afterNextRender, Renderer2, effect, InjectionToken, viewChild, ViewContainerRef, Injectable, model, contentChildren, contentChild
|
|
2
|
+
import { signal, input, booleanAttribute, computed, Directive, inject, TemplateRef, HostAttributeToken, ChangeDetectionStrategy, Component, ElementRef, afterEveryRender, output, forwardRef, Injector, DestroyRef, afterNextRender, Renderer2, effect, InjectionToken, viewChild, ViewContainerRef, Injectable, model, contentChildren, contentChild } from '@angular/core';
|
|
3
3
|
import { Overlay } from '@angular/cdk/overlay';
|
|
4
4
|
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
@@ -644,18 +644,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
644
644
|
/** Area de texto. Substitui o `pTextarea` / `pInputTextarea` do PrimeNG. */
|
|
645
645
|
class SmzTextareaDirective {
|
|
646
646
|
invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : {}), transform: booleanAttribute });
|
|
647
|
+
/** Cresce com o conteudo (equivale ao `autoResize` do `pTextarea`). */
|
|
648
|
+
autoResize = input(false, { ...(ngDevMode ? { debugName: "autoResize" } : {}), transform: booleanAttribute });
|
|
649
|
+
el = inject(ElementRef);
|
|
650
|
+
constructor() {
|
|
651
|
+
afterEveryRender(() => this.resize());
|
|
652
|
+
}
|
|
653
|
+
resize() {
|
|
654
|
+
if (!this.autoResize())
|
|
655
|
+
return;
|
|
656
|
+
const textarea = this.el.nativeElement;
|
|
657
|
+
textarea.style.overflow = 'hidden';
|
|
658
|
+
textarea.style.height = 'auto';
|
|
659
|
+
textarea.style.height = `${textarea.scrollHeight}px`;
|
|
660
|
+
}
|
|
647
661
|
staticClass = smzStaticHostClass();
|
|
648
662
|
classes = computed(() => smzMergeClasses(textareaClasses({ invalid: String(this.invalid()) }), this.staticClass), ...(ngDevMode ? [{ debugName: "classes" }] : []));
|
|
649
663
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTextareaDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
650
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: SmzTextareaDirective, isStandalone: true, selector: "textarea[smzTextarea]", inputs: { invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.aria-invalid": "invalid() || null" } }, ngImport: i0 });
|
|
664
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: SmzTextareaDirective, isStandalone: true, selector: "textarea[smzTextarea]", inputs: { invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "resize()" }, properties: { "class": "classes()", "attr.aria-invalid": "invalid() || null" } }, ngImport: i0 });
|
|
651
665
|
}
|
|
652
666
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTextareaDirective, decorators: [{
|
|
653
667
|
type: Directive,
|
|
654
668
|
args: [{
|
|
655
669
|
selector: 'textarea[smzTextarea]',
|
|
656
|
-
host: { '[class]': 'classes()', '[attr.aria-invalid]': 'invalid() || null' },
|
|
670
|
+
host: { '[class]': 'classes()', '[attr.aria-invalid]': 'invalid() || null', '(input)': 'resize()' },
|
|
657
671
|
}]
|
|
658
|
-
}], propDecorators: { invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
|
|
672
|
+
}], ctorParameters: () => [], propDecorators: { invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], autoResize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoResize", required: false }] }] } });
|
|
659
673
|
|
|
660
674
|
/**
|
|
661
675
|
* Checkbox do ui-kit. Substitui o `p-checkbox` do PrimeNG.
|
|
@@ -665,6 +679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
665
679
|
*/
|
|
666
680
|
class SmzCheckboxComponent extends SmzValueAccessor {
|
|
667
681
|
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
682
|
+
inputId = input('', ...(ngDevMode ? [{ debugName: "inputId" }] : []));
|
|
668
683
|
/** Valor deste item quando o modelo e um array (modo grupo). */
|
|
669
684
|
value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
670
685
|
/** Forca o modo booleano mesmo com `value` informado. Mantido por compatibilidade com o Prime. */
|
|
@@ -691,7 +706,7 @@ class SmzCheckboxComponent extends SmzValueAccessor {
|
|
|
691
706
|
this.changed.emit({ checked: this.checked(), value: this.current() });
|
|
692
707
|
}
|
|
693
708
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
694
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzCheckboxComponent, isStandalone: true, selector: "ui-checkbox", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, binary: { classPropertyName: "binary", publicName: "binary", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "inline-flex" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzCheckboxComponent), multi: true }], usesInheritance: true, ngImport: i0, template: `
|
|
709
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzCheckboxComponent, isStandalone: true, selector: "ui-checkbox", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, binary: { classPropertyName: "binary", publicName: "binary", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "inline-flex" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzCheckboxComponent), multi: true }], usesInheritance: true, ngImport: i0, template: `
|
|
695
710
|
<label
|
|
696
711
|
class="inline-flex items-center gap-2 font-ui text-ui-md text-ui-fg"
|
|
697
712
|
[class]="isDisabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'"
|
|
@@ -699,6 +714,7 @@ class SmzCheckboxComponent extends SmzValueAccessor {
|
|
|
699
714
|
<input
|
|
700
715
|
type="checkbox"
|
|
701
716
|
class="peer sr-only"
|
|
717
|
+
[attr.id]="inputId() || null"
|
|
702
718
|
[name]="name()"
|
|
703
719
|
[checked]="checked()"
|
|
704
720
|
[disabled]="isDisabled()"
|
|
@@ -737,6 +753,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
737
753
|
<input
|
|
738
754
|
type="checkbox"
|
|
739
755
|
class="peer sr-only"
|
|
756
|
+
[attr.id]="inputId() || null"
|
|
740
757
|
[name]="name()"
|
|
741
758
|
[checked]="checked()"
|
|
742
759
|
[disabled]="isDisabled()"
|
|
@@ -760,7 +777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
760
777
|
</label>
|
|
761
778
|
`,
|
|
762
779
|
}]
|
|
763
|
-
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], binary: [{ type: i0.Input, args: [{ isSignal: true, alias: "binary", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
|
|
780
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], binary: [{ type: i0.Input, args: [{ isSignal: true, alias: "binary", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
|
|
764
781
|
|
|
765
782
|
/**
|
|
766
783
|
* Radio do ui-kit. Substitui o `p-radiobutton` do PrimeNG.
|
|
@@ -1857,6 +1874,15 @@ class SmzDialogComponent {
|
|
|
1857
1874
|
style = input(null, ...(ngDevMode ? [{ debugName: "style" }] : []));
|
|
1858
1875
|
styleClass = input('', ...(ngDevMode ? [{ debugName: "styleClass" }] : []));
|
|
1859
1876
|
baseZIndex = input(0, ...(ngDevMode ? [{ debugName: "baseZIndex" }] : []));
|
|
1877
|
+
/** Permite arrastar pelo cabecalho. */
|
|
1878
|
+
draggable = input(false, { ...(ngDevMode ? { debugName: "draggable" } : {}), transform: booleanAttribute });
|
|
1879
|
+
/** Mostra a alca nativa de redimensionar no canto inferior direito. */
|
|
1880
|
+
resizable = input(false, { ...(ngDevMode ? { debugName: "resizable" } : {}), transform: booleanAttribute });
|
|
1881
|
+
/** Mostra o botao de maximizar no cabecalho padrao (com `smzTemplate="header"` use `maximize()`). */
|
|
1882
|
+
maximizable = input(false, { ...(ngDevMode ? { debugName: "maximizable" } : {}), transform: booleanAttribute });
|
|
1883
|
+
maximized = model(false, ...(ngDevMode ? [{ debugName: "maximized" }] : []));
|
|
1884
|
+
/** Posicao na tela (como o `position` do `p-dialog`). */
|
|
1885
|
+
position = input('center', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
1860
1886
|
shown = output();
|
|
1861
1887
|
hidden = output();
|
|
1862
1888
|
panel = viewChild.required('panel');
|
|
@@ -1867,6 +1893,8 @@ class SmzDialogComponent {
|
|
|
1867
1893
|
viewContainer = inject(ViewContainerRef);
|
|
1868
1894
|
host = inject(ElementRef);
|
|
1869
1895
|
overlayRef;
|
|
1896
|
+
dx = signal(0, ...(ngDevMode ? [{ debugName: "dx" }] : []));
|
|
1897
|
+
dy = signal(0, ...(ngDevMode ? [{ debugName: "dy" }] : []));
|
|
1870
1898
|
constructor() {
|
|
1871
1899
|
effect(() => {
|
|
1872
1900
|
if (this.visible())
|
|
@@ -1874,6 +1902,51 @@ class SmzDialogComponent {
|
|
|
1874
1902
|
else
|
|
1875
1903
|
this.dispose();
|
|
1876
1904
|
});
|
|
1905
|
+
effect(() => {
|
|
1906
|
+
const position = this.position();
|
|
1907
|
+
this.overlayRef?.updatePositionStrategy(this.strategyFor(position));
|
|
1908
|
+
});
|
|
1909
|
+
}
|
|
1910
|
+
/** Alterna entre maximizado e normal. */
|
|
1911
|
+
maximize() {
|
|
1912
|
+
this.maximized.update((value) => !value);
|
|
1913
|
+
this.dx.set(0);
|
|
1914
|
+
this.dy.set(0);
|
|
1915
|
+
}
|
|
1916
|
+
startDrag(event) {
|
|
1917
|
+
if (!this.draggable() || this.maximized() || event.target.closest('button'))
|
|
1918
|
+
return;
|
|
1919
|
+
event.preventDefault();
|
|
1920
|
+
const startX = event.clientX - this.dx();
|
|
1921
|
+
const startY = event.clientY - this.dy();
|
|
1922
|
+
const move = (e) => {
|
|
1923
|
+
this.dx.set(e.clientX - startX);
|
|
1924
|
+
this.dy.set(e.clientY - startY);
|
|
1925
|
+
};
|
|
1926
|
+
const up = () => {
|
|
1927
|
+
document.removeEventListener('pointermove', move);
|
|
1928
|
+
document.removeEventListener('pointerup', up);
|
|
1929
|
+
};
|
|
1930
|
+
document.addEventListener('pointermove', move);
|
|
1931
|
+
document.addEventListener('pointerup', up);
|
|
1932
|
+
}
|
|
1933
|
+
strategyFor(position) {
|
|
1934
|
+
const strategy = this.overlay.position().global();
|
|
1935
|
+
const horizontal = position.includes('left') ? 'left' : position.includes('right') ? 'right' : 'center';
|
|
1936
|
+
const vertical = position.startsWith('top') ? 'top' : position.startsWith('bottom') ? 'bottom' : position === 'left' || position === 'right' || position === 'center' ? 'center' : 'center';
|
|
1937
|
+
if (horizontal === 'left')
|
|
1938
|
+
strategy.left('0');
|
|
1939
|
+
else if (horizontal === 'right')
|
|
1940
|
+
strategy.right('0');
|
|
1941
|
+
else
|
|
1942
|
+
strategy.centerHorizontally();
|
|
1943
|
+
if (vertical === 'top')
|
|
1944
|
+
strategy.top('0');
|
|
1945
|
+
else if (vertical === 'bottom')
|
|
1946
|
+
strategy.bottom('0');
|
|
1947
|
+
else
|
|
1948
|
+
strategy.centerVertically();
|
|
1949
|
+
return strategy;
|
|
1877
1950
|
}
|
|
1878
1951
|
close() {
|
|
1879
1952
|
this.visible.set(false);
|
|
@@ -1887,7 +1960,7 @@ class SmzDialogComponent {
|
|
|
1887
1960
|
const modal = this.modal();
|
|
1888
1961
|
this.overlayRef = this.overlay.create({
|
|
1889
1962
|
hasBackdrop: modal,
|
|
1890
|
-
positionStrategy: this.
|
|
1963
|
+
positionStrategy: this.strategyFor(this.position()),
|
|
1891
1964
|
scrollStrategy: this.overlay.scrollStrategies.block(),
|
|
1892
1965
|
});
|
|
1893
1966
|
SmzZIndex.set('modal', this.overlayRef.hostElement, 1100 + this.baseZIndex());
|
|
@@ -1919,24 +1992,33 @@ class SmzDialogComponent {
|
|
|
1919
1992
|
this.overlayRef?.overlayElement.querySelector('[role="dialog"]')?.setAttribute('data-testid', testId);
|
|
1920
1993
|
}
|
|
1921
1994
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1922
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzDialogComponent, isStandalone: true, selector: "ui-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, dismissableMask: { classPropertyName: "dismissableMask", publicName: "dismissableMask", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, baseZIndex: { classPropertyName: "baseZIndex", publicName: "baseZIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange", shown: "shown", hidden: "hidden" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1995
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzDialogComponent, isStandalone: true, selector: "ui-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, dismissableMask: { classPropertyName: "dismissableMask", publicName: "dismissableMask", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, baseZIndex: { classPropertyName: "baseZIndex", publicName: "baseZIndex", isSignal: true, isRequired: false, transformFunction: null }, draggable: { classPropertyName: "draggable", publicName: "draggable", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, maximizable: { classPropertyName: "maximizable", publicName: "maximizable", isSignal: true, isRequired: false, transformFunction: null }, maximized: { classPropertyName: "maximized", publicName: "maximized", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange", maximized: "maximizedChange", shown: "shown", hidden: "hidden" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1923
1996
|
<ng-template #panel>
|
|
1924
1997
|
<div
|
|
1925
1998
|
role="dialog"
|
|
1926
1999
|
aria-modal="true"
|
|
1927
2000
|
[attr.aria-label]="header() || null"
|
|
1928
|
-
class="pointer-events-auto flex
|
|
1929
|
-
[class]="styleClass() ?? ''"
|
|
1930
|
-
[ngStyle]="style()"
|
|
2001
|
+
class="pointer-events-auto flex flex-col border border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay"
|
|
2002
|
+
[class]="(maximized() ? 'h-screen w-screen max-h-none max-w-none rounded-none ' : 'max-h-[90vh] max-w-[95vw] rounded-overlay ') + (resizable() && !maximized() ? 'resize overflow-auto ' : '') + (styleClass() ?? '')"
|
|
2003
|
+
[ngStyle]="maximized() ? null : style()"
|
|
2004
|
+
[style.transform]="maximized() || (dx() === 0 && dy() === 0) ? null : 'translate(' + dx() + 'px, ' + dy() + 'px)'"
|
|
1931
2005
|
>
|
|
1932
2006
|
@if (headerTemplate(); as headerTpl) {
|
|
1933
|
-
<div class="border-b border-ui-line px-4 py-3">
|
|
2007
|
+
<div class="border-b border-ui-line px-4 py-3" [class.cursor-move]="draggable() && !maximized()" (pointerdown)="startDrag($event)">
|
|
1934
2008
|
<ng-container [ngTemplateOutlet]="headerTpl" />
|
|
1935
2009
|
</div>
|
|
1936
2010
|
}
|
|
1937
2011
|
@else if (header() || closable()) {
|
|
1938
|
-
<div class="flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3">
|
|
2012
|
+
<div class="flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3" [class.cursor-move]="draggable() && !maximized()" (pointerdown)="startDrag($event)">
|
|
1939
2013
|
<span class="text-ui-lg font-medium">{{ header() }}</span>
|
|
2014
|
+
<div class="flex items-center gap-1">
|
|
2015
|
+
@if (maximizable()) {
|
|
2016
|
+
<button type="button" class="inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [attr.aria-label]="maximized() ? 'Restaurar' : 'Maximizar'" (click)="maximize()">
|
|
2017
|
+
<svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true">
|
|
2018
|
+
@if (maximized()) { <path d="M5 3h8v8M3 5h8v8H3z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" /> } @else { <rect x="3" y="3" width="10" height="10" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" /> }
|
|
2019
|
+
</svg>
|
|
2020
|
+
</button>
|
|
2021
|
+
}
|
|
1940
2022
|
@if (closable()) {
|
|
1941
2023
|
<button
|
|
1942
2024
|
type="button"
|
|
@@ -1949,6 +2031,7 @@ class SmzDialogComponent {
|
|
|
1949
2031
|
</svg>
|
|
1950
2032
|
</button>
|
|
1951
2033
|
}
|
|
2034
|
+
</div>
|
|
1952
2035
|
</div>
|
|
1953
2036
|
}
|
|
1954
2037
|
<div class="min-h-0 flex-1 overflow-auto p-4"><ng-content /></div>
|
|
@@ -1973,18 +2056,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
1973
2056
|
role="dialog"
|
|
1974
2057
|
aria-modal="true"
|
|
1975
2058
|
[attr.aria-label]="header() || null"
|
|
1976
|
-
class="pointer-events-auto flex
|
|
1977
|
-
[class]="styleClass() ?? ''"
|
|
1978
|
-
[ngStyle]="style()"
|
|
2059
|
+
class="pointer-events-auto flex flex-col border border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay"
|
|
2060
|
+
[class]="(maximized() ? 'h-screen w-screen max-h-none max-w-none rounded-none ' : 'max-h-[90vh] max-w-[95vw] rounded-overlay ') + (resizable() && !maximized() ? 'resize overflow-auto ' : '') + (styleClass() ?? '')"
|
|
2061
|
+
[ngStyle]="maximized() ? null : style()"
|
|
2062
|
+
[style.transform]="maximized() || (dx() === 0 && dy() === 0) ? null : 'translate(' + dx() + 'px, ' + dy() + 'px)'"
|
|
1979
2063
|
>
|
|
1980
2064
|
@if (headerTemplate(); as headerTpl) {
|
|
1981
|
-
<div class="border-b border-ui-line px-4 py-3">
|
|
2065
|
+
<div class="border-b border-ui-line px-4 py-3" [class.cursor-move]="draggable() && !maximized()" (pointerdown)="startDrag($event)">
|
|
1982
2066
|
<ng-container [ngTemplateOutlet]="headerTpl" />
|
|
1983
2067
|
</div>
|
|
1984
2068
|
}
|
|
1985
2069
|
@else if (header() || closable()) {
|
|
1986
|
-
<div class="flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3">
|
|
2070
|
+
<div class="flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3" [class.cursor-move]="draggable() && !maximized()" (pointerdown)="startDrag($event)">
|
|
1987
2071
|
<span class="text-ui-lg font-medium">{{ header() }}</span>
|
|
2072
|
+
<div class="flex items-center gap-1">
|
|
2073
|
+
@if (maximizable()) {
|
|
2074
|
+
<button type="button" class="inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [attr.aria-label]="maximized() ? 'Restaurar' : 'Maximizar'" (click)="maximize()">
|
|
2075
|
+
<svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true">
|
|
2076
|
+
@if (maximized()) { <path d="M5 3h8v8M3 5h8v8H3z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" /> } @else { <rect x="3" y="3" width="10" height="10" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" /> }
|
|
2077
|
+
</svg>
|
|
2078
|
+
</button>
|
|
2079
|
+
}
|
|
1988
2080
|
@if (closable()) {
|
|
1989
2081
|
<button
|
|
1990
2082
|
type="button"
|
|
@@ -1997,6 +2089,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
1997
2089
|
</svg>
|
|
1998
2090
|
</button>
|
|
1999
2091
|
}
|
|
2092
|
+
</div>
|
|
2000
2093
|
</div>
|
|
2001
2094
|
}
|
|
2002
2095
|
<div class="min-h-0 flex-1 overflow-auto p-4"><ng-content /></div>
|
|
@@ -2009,7 +2102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
2009
2102
|
</ng-template>
|
|
2010
2103
|
`,
|
|
2011
2104
|
}]
|
|
2012
|
-
}], ctorParameters: () => [], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], modal: [{ type: i0.Input, args: [{ isSignal: true, alias: "modal", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], dismissableMask: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissableMask", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], baseZIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseZIndex", required: false }] }], shown: [{ type: i0.Output, args: ["shown"] }], hidden: [{ type: i0.Output, args: ["hidden"] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SmzTemplateDirective), { isSignal: true }] }] } });
|
|
2105
|
+
}], ctorParameters: () => [], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], modal: [{ type: i0.Input, args: [{ isSignal: true, alias: "modal", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], dismissableMask: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissableMask", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], baseZIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseZIndex", required: false }] }], draggable: [{ type: i0.Input, args: [{ isSignal: true, alias: "draggable", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], maximizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "maximizable", required: false }] }], maximized: [{ type: i0.Input, args: [{ isSignal: true, alias: "maximized", required: false }] }, { type: i0.Output, args: ["maximizedChange"] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], shown: [{ type: i0.Output, args: ["shown"] }], hidden: [{ type: i0.Output, args: ["hidden"] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SmzTemplateDirective), { isSignal: true }] }] } });
|
|
2013
2106
|
|
|
2014
2107
|
const POSITIONS$2 = [
|
|
2015
2108
|
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8 },
|
|
@@ -3811,9 +3904,11 @@ class SmzSelectButtonComponent extends SmzValueAccessor {
|
|
|
3811
3904
|
/** Aceito por compatibilidade com o `p-selectbutton`; sem efeito. */
|
|
3812
3905
|
appendTo = input(undefined, ...(ngDevMode ? [{ debugName: "appendTo" }] : []));
|
|
3813
3906
|
changed = output();
|
|
3907
|
+
/** Sem `optionLabel`/`optionValue`, opcoes-objeto com `label`/`value` sao lidas automaticamente (como no PrimeNG). */
|
|
3908
|
+
sample = computed(() => (this.options() ?? [])[0], ...(ngDevMode ? [{ debugName: "sample" }] : []));
|
|
3814
3909
|
config = computed(() => ({
|
|
3815
|
-
optionLabel: this.optionLabel(),
|
|
3816
|
-
optionValue: this.optionValue(),
|
|
3910
|
+
optionLabel: this.optionLabel() ?? (typeof this.sample() === 'object' && this.sample() !== null && 'label' in this.sample() ? 'label' : null),
|
|
3911
|
+
optionValue: this.optionValue() ?? (typeof this.sample() === 'object' && this.sample() !== null && 'value' in this.sample() ? 'value' : null),
|
|
3817
3912
|
optionDisabled: this.optionDisabled(),
|
|
3818
3913
|
dataKey: this.dataKey(),
|
|
3819
3914
|
}), ...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
@@ -5677,6 +5772,8 @@ class SmzInputMaskComponent extends SmzValueAccessor {
|
|
|
5677
5772
|
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
5678
5773
|
readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : {}), transform: booleanAttribute });
|
|
5679
5774
|
inputId = input('', ...(ngDevMode ? [{ debugName: "inputId" }] : []));
|
|
5775
|
+
/** Tipo do `<input>` nativo (`text`, `tel`, `password`...). */
|
|
5776
|
+
type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
5680
5777
|
inputed = output();
|
|
5681
5778
|
blurred = output();
|
|
5682
5779
|
completed = output();
|
|
@@ -5825,10 +5922,10 @@ class SmzInputMaskComponent extends SmzValueAccessor {
|
|
|
5825
5922
|
this.field().nativeElement.setSelectionRange(position, position);
|
|
5826
5923
|
}
|
|
5827
5924
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzInputMaskComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
5828
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: SmzInputMaskComponent, isStandalone: true, selector: "ui-input-mask", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, slotChar: { classPropertyName: "slotChar", publicName: "slotChar", isSignal: true, isRequired: false, transformFunction: null }, characterPattern: { classPropertyName: "characterPattern", publicName: "characterPattern", isSignal: true, isRequired: false, transformFunction: null }, unmask: { classPropertyName: "unmask", publicName: "unmask", isSignal: true, isRequired: false, transformFunction: null }, autoClear: { classPropertyName: "autoClear", publicName: "autoClear", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputed: "inputed", blurred: "blurred", completed: "completed" }, host: { classAttribute: "flex min-w-0" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzInputMaskComponent), multi: true }], viewQueries: [{ propertyName: "field", first: true, predicate: ["field"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
5925
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: SmzInputMaskComponent, isStandalone: true, selector: "ui-input-mask", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, slotChar: { classPropertyName: "slotChar", publicName: "slotChar", isSignal: true, isRequired: false, transformFunction: null }, characterPattern: { classPropertyName: "characterPattern", publicName: "characterPattern", isSignal: true, isRequired: false, transformFunction: null }, unmask: { classPropertyName: "unmask", publicName: "unmask", isSignal: true, isRequired: false, transformFunction: null }, autoClear: { classPropertyName: "autoClear", publicName: "autoClear", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputed: "inputed", blurred: "blurred", completed: "completed" }, host: { classAttribute: "flex min-w-0" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzInputMaskComponent), multi: true }], viewQueries: [{ propertyName: "field", first: true, predicate: ["field"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
5829
5926
|
<input
|
|
5830
5927
|
#field
|
|
5831
|
-
type="
|
|
5928
|
+
[attr.type]="type()"
|
|
5832
5929
|
class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
|
|
5833
5930
|
[attr.id]="inputId() || null"
|
|
5834
5931
|
[attr.placeholder]="placeholder() || null"
|
|
@@ -5853,7 +5950,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
5853
5950
|
template: `
|
|
5854
5951
|
<input
|
|
5855
5952
|
#field
|
|
5856
|
-
type="
|
|
5953
|
+
[attr.type]="type()"
|
|
5857
5954
|
class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
|
|
5858
5955
|
[attr.id]="inputId() || null"
|
|
5859
5956
|
[attr.placeholder]="placeholder() || null"
|
|
@@ -5868,7 +5965,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
5868
5965
|
/>
|
|
5869
5966
|
`,
|
|
5870
5967
|
}]
|
|
5871
|
-
}], propDecorators: { mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: false }] }], slotChar: [{ type: i0.Input, args: [{ isSignal: true, alias: "slotChar", required: false }] }], characterPattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "characterPattern", required: false }] }], unmask: [{ type: i0.Input, args: [{ isSignal: true, alias: "unmask", required: false }] }], autoClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoClear", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], inputed: [{ type: i0.Output, args: ["inputed"] }], blurred: [{ type: i0.Output, args: ["blurred"] }], completed: [{ type: i0.Output, args: ["completed"] }], field: [{ type: i0.ViewChild, args: ['field', { isSignal: true }] }] } });
|
|
5968
|
+
}], propDecorators: { mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: false }] }], slotChar: [{ type: i0.Input, args: [{ isSignal: true, alias: "slotChar", required: false }] }], characterPattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "characterPattern", required: false }] }], unmask: [{ type: i0.Input, args: [{ isSignal: true, alias: "unmask", required: false }] }], autoClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoClear", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], inputed: [{ type: i0.Output, args: ["inputed"] }], blurred: [{ type: i0.Output, args: ["blurred"] }], completed: [{ type: i0.Output, args: ["completed"] }], field: [{ type: i0.ViewChild, args: ['field', { isSignal: true }] }] } });
|
|
5872
5969
|
|
|
5873
5970
|
/* eslint-disable max-len -- classes Tailwind nos templates */
|
|
5874
5971
|
const DEFAULT_MEDIUM = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';
|
|
@@ -6028,15 +6125,19 @@ class SmzColorPickerComponent extends SmzValueAccessor {
|
|
|
6028
6125
|
inputId = input('', ...(ngDevMode ? [{ debugName: "inputId" }] : []));
|
|
6029
6126
|
/** Aceito por compatibilidade com o `p-colorpicker`; sem efeito. */
|
|
6030
6127
|
appendTo = input(undefined, ...(ngDevMode ? [{ debugName: "appendTo" }] : []));
|
|
6128
|
+
/** Emitido quando o usuario escolhe uma cor (equivale ao `onChange` do `p-colorpicker`). */
|
|
6129
|
+
changed = output();
|
|
6031
6130
|
hex = computed(() => {
|
|
6032
6131
|
const raw = (this.current() ?? '').replace('#', '');
|
|
6033
6132
|
return /^[0-9a-fA-F]{6}$/.test(raw) ? `#${raw.toLowerCase()}` : '#000000';
|
|
6034
6133
|
}, ...(ngDevMode ? [{ debugName: "hex" }] : []));
|
|
6035
6134
|
onInput(event) {
|
|
6036
|
-
|
|
6135
|
+
const value = event.target.value.replace('#', '');
|
|
6136
|
+
this.commit(value);
|
|
6137
|
+
this.changed.emit({ originalEvent: event, value });
|
|
6037
6138
|
}
|
|
6038
6139
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzColorPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
6039
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzColorPickerComponent, isStandalone: true, selector: "ui-color-picker", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "inline-flex" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzColorPickerComponent), multi: true }], usesInheritance: true, ngImport: i0, template: `
|
|
6140
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzColorPickerComponent, isStandalone: true, selector: "ui-color-picker", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "inline-flex" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzColorPickerComponent), multi: true }], usesInheritance: true, ngImport: i0, template: `
|
|
6040
6141
|
<input
|
|
6041
6142
|
type="color"
|
|
6042
6143
|
class="h-control w-12 cursor-pointer rounded-control border border-ui-line-strong bg-ui-surface-1 p-1 focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
|
|
@@ -6067,7 +6168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
6067
6168
|
/>
|
|
6068
6169
|
`,
|
|
6069
6170
|
}]
|
|
6070
|
-
}], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }] } });
|
|
6171
|
+
}], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
|
|
6071
6172
|
|
|
6072
6173
|
/* eslint-disable max-len -- classes Tailwind nos templates */
|
|
6073
6174
|
/**
|
|
@@ -6218,12 +6319,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
6218
6319
|
class SmzAccordionComponent {
|
|
6219
6320
|
value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
6220
6321
|
multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : {}), transform: booleanAttribute });
|
|
6322
|
+
/** Um painel foi aberto (equivale ao `onOpen` do `p-accordion`). */
|
|
6323
|
+
opened = output();
|
|
6324
|
+
/** Um painel foi fechado (equivale ao `onClose`). */
|
|
6325
|
+
closed = output();
|
|
6326
|
+
/** Aceito por compatibilidade com o `p-accordion`; sem efeito. */
|
|
6327
|
+
transitionOptions = input(null, ...(ngDevMode ? [{ debugName: "transitionOptions" }] : []));
|
|
6221
6328
|
isOpen(value) {
|
|
6222
6329
|
const current = this.value();
|
|
6223
6330
|
return Array.isArray(current) ? current.includes(value) : current === value;
|
|
6224
6331
|
}
|
|
6225
6332
|
toggle(value) {
|
|
6226
6333
|
const open = this.isOpen(value);
|
|
6334
|
+
(open ? this.closed : this.opened).emit({ value });
|
|
6227
6335
|
if (this.multiple()) {
|
|
6228
6336
|
const current = Array.isArray(this.value()) ? this.value() : this.value() === null ? [] : [this.value()];
|
|
6229
6337
|
this.value.set(open ? current.filter((entry) => entry !== value) : [...current, value]);
|
|
@@ -6233,7 +6341,7 @@ class SmzAccordionComponent {
|
|
|
6233
6341
|
}
|
|
6234
6342
|
}
|
|
6235
6343
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6236
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzAccordionComponent, isStandalone: true, selector: "ui-accordion", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "block overflow-hidden rounded-control border border-ui-line font-ui text-ui-fg" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6344
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzAccordionComponent, isStandalone: true, selector: "ui-accordion", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, transitionOptions: { classPropertyName: "transitionOptions", publicName: "transitionOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", opened: "opened", closed: "closed" }, host: { classAttribute: "block overflow-hidden rounded-control border border-ui-line font-ui text-ui-fg" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6237
6345
|
}
|
|
6238
6346
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzAccordionComponent, decorators: [{
|
|
6239
6347
|
type: Component,
|
|
@@ -6243,7 +6351,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
6243
6351
|
host: { class: 'block overflow-hidden rounded-control border border-ui-line font-ui text-ui-fg' },
|
|
6244
6352
|
template: '<ng-content />',
|
|
6245
6353
|
}]
|
|
6246
|
-
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }] } });
|
|
6354
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], transitionOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionOptions", required: false }] }] } });
|
|
6247
6355
|
class SmzAccordionPanelComponent {
|
|
6248
6356
|
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
6249
6357
|
accordion = inject(SmzAccordionComponent);
|
|
@@ -6597,7 +6705,7 @@ class SmzPaginatorComponent {
|
|
|
6597
6705
|
<button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Pagina anterior" [disabled]="isFirst()" (click)="goTo(page() - 1)">
|
|
6598
6706
|
<svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M10 4L6 8l4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
|
6599
6707
|
</button>
|
|
6600
|
-
@if (showPageLinks()) {
|
|
6708
|
+
@if (showPageLinks() && totalRecords() > 0) {
|
|
6601
6709
|
@for (link of links(); track link) {
|
|
6602
6710
|
<button
|
|
6603
6711
|
type="button"
|
|
@@ -6642,7 +6750,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
6642
6750
|
<button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Pagina anterior" [disabled]="isFirst()" (click)="goTo(page() - 1)">
|
|
6643
6751
|
<svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M10 4L6 8l4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
|
6644
6752
|
</button>
|
|
6645
|
-
@if (showPageLinks()) {
|
|
6753
|
+
@if (showPageLinks() && totalRecords() > 0) {
|
|
6646
6754
|
@for (link of links(); track link) {
|
|
6647
6755
|
<button
|
|
6648
6756
|
type="button"
|
|
@@ -8009,24 +8117,24 @@ class SmzCardComponent {
|
|
|
8009
8117
|
subtitleTemplate = computed(() => smzFindTemplate(this.templates(), 'subtitle'), ...(ngDevMode ? [{ debugName: "subtitleTemplate" }] : []));
|
|
8010
8118
|
footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'), ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
|
|
8011
8119
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8012
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzCardComponent, isStandalone: true, selector: "ui-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, subheader: { classPropertyName: "subheader", publicName: "subheader", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex flex-col overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
|
|
8120
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzCardComponent, isStandalone: true, selector: "ui-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, subheader: { classPropertyName: "subheader", publicName: "subheader", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "p-card flex flex-col overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
|
|
8013
8121
|
@if (headerTemplate(); as tpl) {
|
|
8014
|
-
<div><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8122
|
+
<div class="p-card-header"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8015
8123
|
}
|
|
8016
|
-
<div class="flex flex-1 flex-col gap-2 p-5">
|
|
8124
|
+
<div class="p-card-body flex flex-1 flex-col gap-2 p-5">
|
|
8017
8125
|
@if (titleTemplate() || header()) {
|
|
8018
|
-
<div class="text-ui-xl font-semibold">
|
|
8126
|
+
<div class="p-card-title text-ui-xl font-semibold">
|
|
8019
8127
|
@if (titleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" /> } @else { {{ header() }} }
|
|
8020
8128
|
</div>
|
|
8021
8129
|
}
|
|
8022
8130
|
@if (subtitleTemplate() || subheader()) {
|
|
8023
|
-
<div class="text-ui-fg-muted">
|
|
8131
|
+
<div class="p-card-subtitle text-ui-fg-muted">
|
|
8024
8132
|
@if (subtitleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" /> } @else { {{ subheader() }} }
|
|
8025
8133
|
</div>
|
|
8026
8134
|
}
|
|
8027
|
-
<div class="flex-1"><ng-content /></div>
|
|
8135
|
+
<div class="p-card-content flex-1"><ng-content /></div>
|
|
8028
8136
|
@if (footerTemplate(); as tpl) {
|
|
8029
|
-
<div><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8137
|
+
<div class="p-card-footer"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8030
8138
|
}
|
|
8031
8139
|
</div>
|
|
8032
8140
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -8037,25 +8145,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8037
8145
|
selector: 'ui-card',
|
|
8038
8146
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8039
8147
|
imports: [NgTemplateOutlet],
|
|
8040
|
-
host: { class: 'flex flex-col overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card' },
|
|
8148
|
+
host: { class: 'p-card flex flex-col overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card' },
|
|
8041
8149
|
template: `
|
|
8042
8150
|
@if (headerTemplate(); as tpl) {
|
|
8043
|
-
<div><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8151
|
+
<div class="p-card-header"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8044
8152
|
}
|
|
8045
|
-
<div class="flex flex-1 flex-col gap-2 p-5">
|
|
8153
|
+
<div class="p-card-body flex flex-1 flex-col gap-2 p-5">
|
|
8046
8154
|
@if (titleTemplate() || header()) {
|
|
8047
|
-
<div class="text-ui-xl font-semibold">
|
|
8155
|
+
<div class="p-card-title text-ui-xl font-semibold">
|
|
8048
8156
|
@if (titleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" /> } @else { {{ header() }} }
|
|
8049
8157
|
</div>
|
|
8050
8158
|
}
|
|
8051
8159
|
@if (subtitleTemplate() || subheader()) {
|
|
8052
|
-
<div class="text-ui-fg-muted">
|
|
8160
|
+
<div class="p-card-subtitle text-ui-fg-muted">
|
|
8053
8161
|
@if (subtitleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" /> } @else { {{ subheader() }} }
|
|
8054
8162
|
</div>
|
|
8055
8163
|
}
|
|
8056
|
-
<div class="flex-1"><ng-content /></div>
|
|
8164
|
+
<div class="p-card-content flex-1"><ng-content /></div>
|
|
8057
8165
|
@if (footerTemplate(); as tpl) {
|
|
8058
|
-
<div><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8166
|
+
<div class="p-card-footer"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8059
8167
|
}
|
|
8060
8168
|
</div>
|
|
8061
8169
|
`,
|
|
@@ -8087,9 +8195,9 @@ class SmzPanelComponent {
|
|
|
8087
8195
|
this.afterToggle.emit({ originalEvent: event, collapsed: next });
|
|
8088
8196
|
}
|
|
8089
8197
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8090
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzPanelComponent, isStandalone: true, selector: "ui-panel", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", beforeToggle: "beforeToggle", afterToggle: "afterToggle" }, host: { classAttribute: "block overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
|
|
8198
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzPanelComponent, isStandalone: true, selector: "ui-panel", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", beforeToggle: "beforeToggle", afterToggle: "afterToggle" }, host: { classAttribute: "p-panel block overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
|
|
8091
8199
|
@if (hasHeader()) {
|
|
8092
|
-
<div class="flex items-center justify-between gap-2 border-b border-ui-line bg-ui-surface-1 px-4 py-3">
|
|
8200
|
+
<div class="p-panel-header flex items-center justify-between gap-2 border-b border-ui-line bg-ui-surface-1 px-4 py-3">
|
|
8093
8201
|
<div class="min-w-0 flex-1 font-semibold">
|
|
8094
8202
|
@if (headerTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" /> } @else { {{ header() }} }
|
|
8095
8203
|
</div>
|
|
@@ -8104,9 +8212,9 @@ class SmzPanelComponent {
|
|
|
8104
8212
|
</div>
|
|
8105
8213
|
}
|
|
8106
8214
|
@if (!collapsed()) {
|
|
8107
|
-
<div class="p-4"><ng-content /></div>
|
|
8215
|
+
<div class="p-panel-content p-4"><ng-content /></div>
|
|
8108
8216
|
@if (footerTemplate(); as tpl) {
|
|
8109
|
-
<div class="border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8217
|
+
<div class="p-panel-footer border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8110
8218
|
}
|
|
8111
8219
|
}
|
|
8112
8220
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -8117,10 +8225,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8117
8225
|
selector: 'ui-panel',
|
|
8118
8226
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8119
8227
|
imports: [NgTemplateOutlet],
|
|
8120
|
-
host: { class: 'block overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },
|
|
8228
|
+
host: { class: 'p-panel block overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },
|
|
8121
8229
|
template: `
|
|
8122
8230
|
@if (hasHeader()) {
|
|
8123
|
-
<div class="flex items-center justify-between gap-2 border-b border-ui-line bg-ui-surface-1 px-4 py-3">
|
|
8231
|
+
<div class="p-panel-header flex items-center justify-between gap-2 border-b border-ui-line bg-ui-surface-1 px-4 py-3">
|
|
8124
8232
|
<div class="min-w-0 flex-1 font-semibold">
|
|
8125
8233
|
@if (headerTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" /> } @else { {{ header() }} }
|
|
8126
8234
|
</div>
|
|
@@ -8135,9 +8243,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8135
8243
|
</div>
|
|
8136
8244
|
}
|
|
8137
8245
|
@if (!collapsed()) {
|
|
8138
|
-
<div class="p-4"><ng-content /></div>
|
|
8246
|
+
<div class="p-panel-content p-4"><ng-content /></div>
|
|
8139
8247
|
@if (footerTemplate(); as tpl) {
|
|
8140
|
-
<div class="border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8248
|
+
<div class="p-panel-footer border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8141
8249
|
}
|
|
8142
8250
|
}
|
|
8143
8251
|
`,
|
|
@@ -8405,6 +8513,14 @@ class SmzTreeTableComponent {
|
|
|
8405
8513
|
rowsPerPageOptions = input(null, ...(ngDevMode ? [{ debugName: "rowsPerPageOptions" }] : []));
|
|
8406
8514
|
sortField = model(null, ...(ngDevMode ? [{ debugName: "sortField" }] : []));
|
|
8407
8515
|
sortOrder = model(1, ...(ngDevMode ? [{ debugName: "sortOrder" }] : []));
|
|
8516
|
+
/** Destaca a linha sob o cursor (padrao: ligado). */
|
|
8517
|
+
rowHover = input(true, { ...(ngDevMode ? { debugName: "rowHover" } : {}), transform: booleanAttribute });
|
|
8518
|
+
showCurrentPageReport = input(false, { ...(ngDevMode ? { debugName: "showCurrentPageReport" } : {}), transform: booleanAttribute });
|
|
8519
|
+
currentPageReportTemplate = input('Mostrando {first} a {last} de {totalRecords}', ...(ngDevMode ? [{ debugName: "currentPageReportTemplate" }] : []));
|
|
8520
|
+
/** Campos (de `node.data`) consultados pelo filtro global. */
|
|
8521
|
+
globalFilterFields = input(null, ...(ngDevMode ? [{ debugName: "globalFilterFields" }] : []));
|
|
8522
|
+
/** `lenient`: um no que casa mantem toda a sua subarvore; `strict`: so os nos que casam (e seus ancestrais). */
|
|
8523
|
+
filterMode = input('lenient', ...(ngDevMode ? [{ debugName: "filterMode" }] : []));
|
|
8408
8524
|
nodeSelect = output();
|
|
8409
8525
|
nodeUnselect = output();
|
|
8410
8526
|
nodeExpand = output();
|
|
@@ -8420,17 +8536,69 @@ class SmzTreeTableComponent {
|
|
|
8420
8536
|
summaryTemplate = computed(() => smzFindTemplate(this.templates(), 'summary'), ...(ngDevMode ? [{ debugName: "summaryTemplate" }] : []));
|
|
8421
8537
|
/** Os nos sao mutaveis (`expanded`, `partialSelected`); este contador forca o recalculo das linhas. */
|
|
8422
8538
|
version = signal(0, ...(ngDevMode ? [{ debugName: "version" }] : []));
|
|
8423
|
-
|
|
8539
|
+
filterService = inject(SmzFilterService);
|
|
8540
|
+
globalFilter = signal(null, ...(ngDevMode ? [{ debugName: "globalFilter" }] : []));
|
|
8541
|
+
columnFilters = signal({}, ...(ngDevMode ? [{ debugName: "columnFilters" }] : []));
|
|
8542
|
+
/** Nos raiz que passam nos filtros (global e por coluna), ou `null` quando nao ha filtro ativo. */
|
|
8543
|
+
get filteredNodes() {
|
|
8544
|
+
return this.visibility()?.roots ?? null;
|
|
8545
|
+
}
|
|
8546
|
+
/** Visibilidade calculada dos filtros: quais nos aparecem e quais ancestrais expandir. */
|
|
8547
|
+
visibility = computed(() => {
|
|
8548
|
+
this.version();
|
|
8549
|
+
const global = this.globalFilter();
|
|
8550
|
+
const columns = this.columnFilters();
|
|
8551
|
+
const active = Object.entries(columns).filter(([, filter]) => filter.value !== null && filter.value !== undefined && filter.value !== '');
|
|
8552
|
+
if (!global?.value && active.length === 0)
|
|
8553
|
+
return null;
|
|
8554
|
+
const matches = (node) => {
|
|
8555
|
+
for (const [field, filter] of active) {
|
|
8556
|
+
const test = this.filterService.filters[filter.matchMode] ?? this.filterService.filters['contains'];
|
|
8557
|
+
if (!test(SmzObjectUtils.resolveFieldData(node.data, field), filter.value))
|
|
8558
|
+
return false;
|
|
8559
|
+
}
|
|
8560
|
+
if (global?.value) {
|
|
8561
|
+
const test = this.filterService.filters[global.matchMode] ?? this.filterService.filters['contains'];
|
|
8562
|
+
const fields = this.globalFilterFields() ?? Object.keys(node.data ?? {});
|
|
8563
|
+
if (!fields.some((field) => test(SmzObjectUtils.resolveFieldData(node.data, field), global.value)))
|
|
8564
|
+
return false;
|
|
8565
|
+
}
|
|
8566
|
+
return true;
|
|
8567
|
+
};
|
|
8568
|
+
const visible = new Set();
|
|
8569
|
+
const expand = new Set();
|
|
8570
|
+
const lenient = this.filterMode() === 'lenient';
|
|
8571
|
+
const mark = (node, forced) => {
|
|
8572
|
+
const self = matches(node);
|
|
8573
|
+
let anyChild = false;
|
|
8574
|
+
for (const child of node.children ?? []) {
|
|
8575
|
+
if (mark(child, forced || (lenient && self)))
|
|
8576
|
+
anyChild = true;
|
|
8577
|
+
}
|
|
8578
|
+
const show = self || anyChild || forced;
|
|
8579
|
+
if (show)
|
|
8580
|
+
visible.add(node);
|
|
8581
|
+
if (anyChild && !self)
|
|
8582
|
+
expand.add(node);
|
|
8583
|
+
return self || anyChild;
|
|
8584
|
+
};
|
|
8585
|
+
const roots = (this.value() ?? []).filter((node) => mark(node, false));
|
|
8586
|
+
return { roots, visible, expand };
|
|
8587
|
+
}, ...(ngDevMode ? [{ debugName: "visibility" }] : []));
|
|
8588
|
+
rootCount = computed(() => this.visibility()?.roots.length ?? (this.value() ?? []).length, ...(ngDevMode ? [{ debugName: "rootCount" }] : []));
|
|
8424
8589
|
flatRows = computed(() => {
|
|
8425
8590
|
this.version();
|
|
8426
8591
|
const field = this.sortField();
|
|
8427
8592
|
const order = this.sortOrder();
|
|
8593
|
+
const filter = this.visibility();
|
|
8428
8594
|
const out = [];
|
|
8429
8595
|
const sort = (nodes) => field ? [...nodes].sort((a, b) => order * compareValues(SmzObjectUtils.resolveFieldData(a.data, field), SmzObjectUtils.resolveFieldData(b.data, field))) : nodes;
|
|
8430
8596
|
const walk = (nodes, parent, level) => {
|
|
8431
8597
|
for (const node of sort(nodes)) {
|
|
8598
|
+
if (filter && !filter.visible.has(node))
|
|
8599
|
+
continue;
|
|
8432
8600
|
out.push({ node, parent, level });
|
|
8433
|
-
if (node.expanded && node.children?.length)
|
|
8601
|
+
if ((node.expanded || filter?.expand.has(node)) && node.children?.length)
|
|
8434
8602
|
walk(node.children, node, level + 1);
|
|
8435
8603
|
}
|
|
8436
8604
|
};
|
|
@@ -8451,6 +8619,24 @@ class SmzTreeTableComponent {
|
|
|
8451
8619
|
return include;
|
|
8452
8620
|
});
|
|
8453
8621
|
}, ...(ngDevMode ? [{ debugName: "pageRows" }] : []));
|
|
8622
|
+
/** Filtro global (equivale a `filterGlobal` do `p-treeTable`). */
|
|
8623
|
+
filterGlobal(value, matchMode = 'contains') {
|
|
8624
|
+
this.globalFilter.set(value ? { value, matchMode } : null);
|
|
8625
|
+
this.first.set(0);
|
|
8626
|
+
}
|
|
8627
|
+
/** Filtro de uma coluna (campo de `node.data`). Valor vazio remove o filtro. */
|
|
8628
|
+
filter(value, field, matchMode = 'contains') {
|
|
8629
|
+
this.columnFilters.update((current) => ({ ...current, [field]: { value, matchMode } }));
|
|
8630
|
+
this.first.set(0);
|
|
8631
|
+
}
|
|
8632
|
+
/** Limpa filtros, ordenacao e volta para a primeira pagina (equivale a `clear()` do `p-treeTable`). */
|
|
8633
|
+
clear() {
|
|
8634
|
+
this.globalFilter.set(null);
|
|
8635
|
+
this.columnFilters.set({});
|
|
8636
|
+
this.sortField.set(null);
|
|
8637
|
+
this.sortOrder.set(1);
|
|
8638
|
+
this.first.set(0);
|
|
8639
|
+
}
|
|
8454
8640
|
refresh() {
|
|
8455
8641
|
this.version.update((v) => v + 1);
|
|
8456
8642
|
}
|
|
@@ -8559,46 +8745,46 @@ class SmzTreeTableComponent {
|
|
|
8559
8745
|
return search(this.value() ?? [], null) ?? null;
|
|
8560
8746
|
}
|
|
8561
8747
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8562
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTreeTableComponent, isStandalone: true, selector: "ui-tree-table", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, tableStyleClass: { classPropertyName: "tableStyleClass", publicName: "tableStyleClass", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null }, sortField: { classPropertyName: "sortField", publicName: "sortField", isSignal: true, isRequired: false, transformFunction: null }, sortOrder: { classPropertyName: "sortOrder", publicName: "sortOrder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selection: "selectionChange", rows: "rowsChange", first: "firstChange", sortField: "sortFieldChange", sortOrder: "sortOrderChange", nodeSelect: "nodeSelect", nodeUnselect: "nodeUnselect", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", sorted: "sorted", page: "page" }, host: { classAttribute: "block overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
|
|
8563
|
-
@if (captionTemplate(); as tpl) {
|
|
8564
|
-
<div class="border-b border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8565
|
-
}
|
|
8566
|
-
<div class="relative overflow-auto" [style.max-height]="scrollable() ? scrollHeight() : null">
|
|
8567
|
-
<table class="w-full border-separate border-spacing-0 text-left [&_td]:border-b [&_td]:border-ui-line [&_td]:px-4 [&_td]:py-3 [&_th]:sticky [&_th]:top-0 [&_th]:border-b [&_th]:border-ui-line [&_th]:bg-ui-surface-1 [&_th]:px-4 [&_th]:py-3 [&_th]:font-semibold" [class]="tableStyleClass() ?? ''">
|
|
8568
|
-
<thead>
|
|
8569
|
-
@if (headerTemplate(); as tpl) {
|
|
8570
|
-
<ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" />
|
|
8571
|
-
}
|
|
8572
|
-
</thead>
|
|
8573
|
-
<tbody>
|
|
8574
|
-
@for (row of pageRows(); track row.node.key ?? row.node) {
|
|
8575
|
-
<ng-container [ngTemplateOutlet]="bodyTemplate() ?? null" [ngTemplateOutletContext]="{ $implicit: row, rowNode: row, node: row.node, rowData: row.node.data, columns: columns() }" />
|
|
8576
|
-
} @empty {
|
|
8577
|
-
@if (!loading()) {
|
|
8578
|
-
<tr>
|
|
8579
|
-
<td [attr.colspan]="columns().length || 1" class="px-4 py-6 text-center text-ui-fg-muted">
|
|
8580
|
-
@if (emptyTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /> } @else { {{ emptyMessage() }} }
|
|
8581
|
-
</td>
|
|
8582
|
-
</tr>
|
|
8583
|
-
}
|
|
8584
|
-
}
|
|
8585
|
-
</tbody>
|
|
8586
|
-
@if (footerTemplate(); as tpl) {
|
|
8587
|
-
<tfoot><ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /></tfoot>
|
|
8588
|
-
}
|
|
8589
|
-
</table>
|
|
8590
|
-
@if (loading()) {
|
|
8591
|
-
<div class="absolute inset-0 flex items-center justify-center bg-ui-surface-1/60 text-ui-primary" role="status">
|
|
8592
|
-
<svg viewBox="0 0 50 50" class="h-8 w-8 animate-spin" fill="none" aria-hidden="true"><circle cx="25" cy="25" r="20" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-dasharray="90 150" /></svg>
|
|
8593
|
-
</div>
|
|
8594
|
-
}
|
|
8595
|
-
</div>
|
|
8596
|
-
@if (paginator()) {
|
|
8597
|
-
<ui-paginator class="border-t border-ui-line" [first]="first()" [rows]="rows()" [totalRecords]="rootCount()" [rowsPerPageOptions]="rowsPerPageOptions()" (firstChange)="first.set($event)" (rowsChange)="rows.set($event)" (pageChanged)="page.emit($event)" />
|
|
8598
|
-
}
|
|
8599
|
-
@if (summaryTemplate(); as tpl) {
|
|
8600
|
-
<div class="border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8601
|
-
}
|
|
8748
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTreeTableComponent, isStandalone: true, selector: "ui-tree-table", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, tableStyleClass: { classPropertyName: "tableStyleClass", publicName: "tableStyleClass", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null }, sortField: { classPropertyName: "sortField", publicName: "sortField", isSignal: true, isRequired: false, transformFunction: null }, sortOrder: { classPropertyName: "sortOrder", publicName: "sortOrder", isSignal: true, isRequired: false, transformFunction: null }, rowHover: { classPropertyName: "rowHover", publicName: "rowHover", isSignal: true, isRequired: false, transformFunction: null }, showCurrentPageReport: { classPropertyName: "showCurrentPageReport", publicName: "showCurrentPageReport", isSignal: true, isRequired: false, transformFunction: null }, currentPageReportTemplate: { classPropertyName: "currentPageReportTemplate", publicName: "currentPageReportTemplate", isSignal: true, isRequired: false, transformFunction: null }, globalFilterFields: { classPropertyName: "globalFilterFields", publicName: "globalFilterFields", isSignal: true, isRequired: false, transformFunction: null }, filterMode: { classPropertyName: "filterMode", publicName: "filterMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selection: "selectionChange", rows: "rowsChange", first: "firstChange", sortField: "sortFieldChange", sortOrder: "sortOrderChange", nodeSelect: "nodeSelect", nodeUnselect: "nodeUnselect", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", sorted: "sorted", page: "page" }, host: { classAttribute: "block overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
|
|
8749
|
+
@if (captionTemplate(); as tpl) {
|
|
8750
|
+
<div class="border-b border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8751
|
+
}
|
|
8752
|
+
<div class="relative overflow-auto" [style.max-height]="scrollable() ? scrollHeight() : null">
|
|
8753
|
+
<table class="w-full border-separate border-spacing-0 text-left [&_td]:border-b [&_td]:border-ui-line [&_td]:px-4 [&_td]:py-3 [&_th]:sticky [&_th]:top-0 [&_th]:border-b [&_th]:border-ui-line [&_th]:bg-ui-surface-1 [&_th]:px-4 [&_th]:py-3 [&_th]:font-semibold" [class]="tableStyleClass() ?? ''">
|
|
8754
|
+
<thead>
|
|
8755
|
+
@if (headerTemplate(); as tpl) {
|
|
8756
|
+
<ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" />
|
|
8757
|
+
}
|
|
8758
|
+
</thead>
|
|
8759
|
+
<tbody>
|
|
8760
|
+
@for (row of pageRows(); track row.node.key ?? row.node) {
|
|
8761
|
+
<ng-container [ngTemplateOutlet]="bodyTemplate() ?? null" [ngTemplateOutletContext]="{ $implicit: row, rowNode: row, node: row.node, rowData: row.node.data, columns: columns() }" />
|
|
8762
|
+
} @empty {
|
|
8763
|
+
@if (!loading()) {
|
|
8764
|
+
<tr>
|
|
8765
|
+
<td [attr.colspan]="columns().length || 1" class="px-4 py-6 text-center text-ui-fg-muted">
|
|
8766
|
+
@if (emptyTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /> } @else { {{ emptyMessage() }} }
|
|
8767
|
+
</td>
|
|
8768
|
+
</tr>
|
|
8769
|
+
}
|
|
8770
|
+
}
|
|
8771
|
+
</tbody>
|
|
8772
|
+
@if (footerTemplate(); as tpl) {
|
|
8773
|
+
<tfoot><ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /></tfoot>
|
|
8774
|
+
}
|
|
8775
|
+
</table>
|
|
8776
|
+
@if (loading()) {
|
|
8777
|
+
<div class="absolute inset-0 flex items-center justify-center bg-ui-surface-1/60 text-ui-primary" role="status">
|
|
8778
|
+
<svg viewBox="0 0 50 50" class="h-8 w-8 animate-spin" fill="none" aria-hidden="true"><circle cx="25" cy="25" r="20" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-dasharray="90 150" /></svg>
|
|
8779
|
+
</div>
|
|
8780
|
+
}
|
|
8781
|
+
</div>
|
|
8782
|
+
@if (paginator()) {
|
|
8783
|
+
<ui-paginator class="border-t border-ui-line" [first]="first()" [rows]="rows()" [totalRecords]="rootCount()" [rowsPerPageOptions]="rowsPerPageOptions()" [showCurrentPageReport]="showCurrentPageReport()" [currentPageReportTemplate]="currentPageReportTemplate()" (firstChange)="first.set($event)" (rowsChange)="rows.set($event)" (pageChanged)="page.emit($event)" />
|
|
8784
|
+
}
|
|
8785
|
+
@if (summaryTemplate(); as tpl) {
|
|
8786
|
+
<div class="border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8787
|
+
}
|
|
8602
8788
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SmzPaginatorComponent, selector: "ui-paginator", inputs: ["first", "rows", "totalRecords", "pageLinkSize", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "alwaysShow", "showPageLinks", "styleClass", "dropdownAppendTo", "showFirstLastIcon"], outputs: ["firstChange", "rowsChange", "pageChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8603
8789
|
}
|
|
8604
8790
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableComponent, decorators: [{
|
|
@@ -8608,49 +8794,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8608
8794
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8609
8795
|
imports: [NgTemplateOutlet, SmzPaginatorComponent],
|
|
8610
8796
|
host: { class: 'block overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },
|
|
8611
|
-
template: `
|
|
8612
|
-
@if (captionTemplate(); as tpl) {
|
|
8613
|
-
<div class="border-b border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8614
|
-
}
|
|
8615
|
-
<div class="relative overflow-auto" [style.max-height]="scrollable() ? scrollHeight() : null">
|
|
8616
|
-
<table class="w-full border-separate border-spacing-0 text-left [&_td]:border-b [&_td]:border-ui-line [&_td]:px-4 [&_td]:py-3 [&_th]:sticky [&_th]:top-0 [&_th]:border-b [&_th]:border-ui-line [&_th]:bg-ui-surface-1 [&_th]:px-4 [&_th]:py-3 [&_th]:font-semibold" [class]="tableStyleClass() ?? ''">
|
|
8617
|
-
<thead>
|
|
8618
|
-
@if (headerTemplate(); as tpl) {
|
|
8619
|
-
<ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" />
|
|
8620
|
-
}
|
|
8621
|
-
</thead>
|
|
8622
|
-
<tbody>
|
|
8623
|
-
@for (row of pageRows(); track row.node.key ?? row.node) {
|
|
8624
|
-
<ng-container [ngTemplateOutlet]="bodyTemplate() ?? null" [ngTemplateOutletContext]="{ $implicit: row, rowNode: row, node: row.node, rowData: row.node.data, columns: columns() }" />
|
|
8625
|
-
} @empty {
|
|
8626
|
-
@if (!loading()) {
|
|
8627
|
-
<tr>
|
|
8628
|
-
<td [attr.colspan]="columns().length || 1" class="px-4 py-6 text-center text-ui-fg-muted">
|
|
8629
|
-
@if (emptyTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /> } @else { {{ emptyMessage() }} }
|
|
8630
|
-
</td>
|
|
8631
|
-
</tr>
|
|
8632
|
-
}
|
|
8633
|
-
}
|
|
8634
|
-
</tbody>
|
|
8635
|
-
@if (footerTemplate(); as tpl) {
|
|
8636
|
-
<tfoot><ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /></tfoot>
|
|
8637
|
-
}
|
|
8638
|
-
</table>
|
|
8639
|
-
@if (loading()) {
|
|
8640
|
-
<div class="absolute inset-0 flex items-center justify-center bg-ui-surface-1/60 text-ui-primary" role="status">
|
|
8641
|
-
<svg viewBox="0 0 50 50" class="h-8 w-8 animate-spin" fill="none" aria-hidden="true"><circle cx="25" cy="25" r="20" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-dasharray="90 150" /></svg>
|
|
8642
|
-
</div>
|
|
8643
|
-
}
|
|
8644
|
-
</div>
|
|
8645
|
-
@if (paginator()) {
|
|
8646
|
-
<ui-paginator class="border-t border-ui-line" [first]="first()" [rows]="rows()" [totalRecords]="rootCount()" [rowsPerPageOptions]="rowsPerPageOptions()" (firstChange)="first.set($event)" (rowsChange)="rows.set($event)" (pageChanged)="page.emit($event)" />
|
|
8647
|
-
}
|
|
8648
|
-
@if (summaryTemplate(); as tpl) {
|
|
8649
|
-
<div class="border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8650
|
-
}
|
|
8797
|
+
template: `
|
|
8798
|
+
@if (captionTemplate(); as tpl) {
|
|
8799
|
+
<div class="border-b border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8800
|
+
}
|
|
8801
|
+
<div class="relative overflow-auto" [style.max-height]="scrollable() ? scrollHeight() : null">
|
|
8802
|
+
<table class="w-full border-separate border-spacing-0 text-left [&_td]:border-b [&_td]:border-ui-line [&_td]:px-4 [&_td]:py-3 [&_th]:sticky [&_th]:top-0 [&_th]:border-b [&_th]:border-ui-line [&_th]:bg-ui-surface-1 [&_th]:px-4 [&_th]:py-3 [&_th]:font-semibold" [class]="tableStyleClass() ?? ''">
|
|
8803
|
+
<thead>
|
|
8804
|
+
@if (headerTemplate(); as tpl) {
|
|
8805
|
+
<ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" />
|
|
8806
|
+
}
|
|
8807
|
+
</thead>
|
|
8808
|
+
<tbody>
|
|
8809
|
+
@for (row of pageRows(); track row.node.key ?? row.node) {
|
|
8810
|
+
<ng-container [ngTemplateOutlet]="bodyTemplate() ?? null" [ngTemplateOutletContext]="{ $implicit: row, rowNode: row, node: row.node, rowData: row.node.data, columns: columns() }" />
|
|
8811
|
+
} @empty {
|
|
8812
|
+
@if (!loading()) {
|
|
8813
|
+
<tr>
|
|
8814
|
+
<td [attr.colspan]="columns().length || 1" class="px-4 py-6 text-center text-ui-fg-muted">
|
|
8815
|
+
@if (emptyTemplate(); as tpl) { <ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /> } @else { {{ emptyMessage() }} }
|
|
8816
|
+
</td>
|
|
8817
|
+
</tr>
|
|
8818
|
+
}
|
|
8819
|
+
}
|
|
8820
|
+
</tbody>
|
|
8821
|
+
@if (footerTemplate(); as tpl) {
|
|
8822
|
+
<tfoot><ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="{ $implicit: columns() }" /></tfoot>
|
|
8823
|
+
}
|
|
8824
|
+
</table>
|
|
8825
|
+
@if (loading()) {
|
|
8826
|
+
<div class="absolute inset-0 flex items-center justify-center bg-ui-surface-1/60 text-ui-primary" role="status">
|
|
8827
|
+
<svg viewBox="0 0 50 50" class="h-8 w-8 animate-spin" fill="none" aria-hidden="true"><circle cx="25" cy="25" r="20" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-dasharray="90 150" /></svg>
|
|
8828
|
+
</div>
|
|
8829
|
+
}
|
|
8830
|
+
</div>
|
|
8831
|
+
@if (paginator()) {
|
|
8832
|
+
<ui-paginator class="border-t border-ui-line" [first]="first()" [rows]="rows()" [totalRecords]="rootCount()" [rowsPerPageOptions]="rowsPerPageOptions()" [showCurrentPageReport]="showCurrentPageReport()" [currentPageReportTemplate]="currentPageReportTemplate()" (firstChange)="first.set($event)" (rowsChange)="rows.set($event)" (pageChanged)="page.emit($event)" />
|
|
8833
|
+
}
|
|
8834
|
+
@if (summaryTemplate(); as tpl) {
|
|
8835
|
+
<div class="border-t border-ui-line px-4 py-3"><ng-container [ngTemplateOutlet]="tpl" /></div>
|
|
8836
|
+
}
|
|
8651
8837
|
`,
|
|
8652
8838
|
}]
|
|
8653
|
-
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }, { type: i0.Output, args: ["selectionChange"] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], tableStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableStyleClass", required: false }] }], paginator: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginator", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }, { type: i0.Output, args: ["rowsChange"] }], first: [{ type: i0.Input, args: [{ isSignal: true, alias: "first", required: false }] }, { type: i0.Output, args: ["firstChange"] }], rowsPerPageOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowsPerPageOptions", required: false }] }], sortField: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortField", required: false }] }, { type: i0.Output, args: ["sortFieldChange"] }], sortOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortOrder", required: false }] }, { type: i0.Output, args: ["sortOrderChange"] }], nodeSelect: [{ type: i0.Output, args: ["nodeSelect"] }], nodeUnselect: [{ type: i0.Output, args: ["nodeUnselect"] }], nodeExpand: [{ type: i0.Output, args: ["nodeExpand"] }], nodeCollapse: [{ type: i0.Output, args: ["nodeCollapse"] }], sorted: [{ type: i0.Output, args: ["sorted"] }], page: [{ type: i0.Output, args: ["page"] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SmzTemplateDirective), { isSignal: true }] }] } });
|
|
8839
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }, { type: i0.Output, args: ["selectionChange"] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], tableStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableStyleClass", required: false }] }], paginator: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginator", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }, { type: i0.Output, args: ["rowsChange"] }], first: [{ type: i0.Input, args: [{ isSignal: true, alias: "first", required: false }] }, { type: i0.Output, args: ["firstChange"] }], rowsPerPageOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowsPerPageOptions", required: false }] }], sortField: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortField", required: false }] }, { type: i0.Output, args: ["sortFieldChange"] }], sortOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortOrder", required: false }] }, { type: i0.Output, args: ["sortOrderChange"] }], rowHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowHover", required: false }] }], showCurrentPageReport: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCurrentPageReport", required: false }] }], currentPageReportTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPageReportTemplate", required: false }] }], globalFilterFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "globalFilterFields", required: false }] }], filterMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMode", required: false }] }], nodeSelect: [{ type: i0.Output, args: ["nodeSelect"] }], nodeUnselect: [{ type: i0.Output, args: ["nodeUnselect"] }], nodeExpand: [{ type: i0.Output, args: ["nodeExpand"] }], nodeCollapse: [{ type: i0.Output, args: ["nodeCollapse"] }], sorted: [{ type: i0.Output, args: ["sorted"] }], page: [{ type: i0.Output, args: ["page"] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SmzTemplateDirective), { isSignal: true }] }] } });
|
|
8654
8840
|
function compareValues(a, b) {
|
|
8655
8841
|
if (a == null && b == null)
|
|
8656
8842
|
return 0;
|
|
@@ -8669,7 +8855,8 @@ class SmzTreeTableRowDirective {
|
|
|
8669
8855
|
classes = computed(() => {
|
|
8670
8856
|
const mode = this.table.selectionMode();
|
|
8671
8857
|
const selected = this.table.isSelected(this.rowNode().node);
|
|
8672
|
-
const
|
|
8858
|
+
const hover = this.table.rowHover() ? 'hover:bg-ui-surface-3' : '';
|
|
8859
|
+
const interactive = mode && mode !== 'checkbox' ? `cursor-pointer ${hover}` : hover;
|
|
8673
8860
|
return `${ROW_BASE} ${interactive} ${selected && mode !== 'checkbox' ? 'bg-ui-primary/10' : ''}`;
|
|
8674
8861
|
}, ...(ngDevMode ? [{ debugName: "classes" }] : []));
|
|
8675
8862
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -8697,10 +8884,10 @@ class SmzTreeTableTogglerComponent {
|
|
|
8697
8884
|
return !node.leaf && (node.children?.length ?? 0) > 0;
|
|
8698
8885
|
}
|
|
8699
8886
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableTogglerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8700
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzTreeTableTogglerComponent, isStandalone: true, selector: "ui-tree-table-toggler", inputs: { rowNode: { classPropertyName: "rowNode", publicName: "rowNode", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "style.padding-left.rem": "rowNode().level * 1.5" }, classAttribute: "inline-flex items-center align-middle" }, ngImport: i0, template: `
|
|
8701
|
-
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class.invisible]="!hasChildren()" [attr.aria-label]="rowNode().node.expanded ? 'Recolher' : 'Expandir'" (click)="$event.stopPropagation(); table.toggleNode(rowNode(), $event)">
|
|
8702
|
-
<svg viewBox="0 0 16 16" class="h-4 w-4 transition-transform duration-ui" [class.rotate-90]="rowNode().node.expanded" fill="none" aria-hidden="true"><path d="M6 4l4 4-4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
|
8703
|
-
</button>
|
|
8887
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzTreeTableTogglerComponent, isStandalone: true, selector: "ui-tree-table-toggler", inputs: { rowNode: { classPropertyName: "rowNode", publicName: "rowNode", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "style.padding-left.rem": "rowNode().level * 1.5" }, classAttribute: "inline-flex items-center align-middle" }, ngImport: i0, template: `
|
|
8888
|
+
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class.invisible]="!hasChildren()" [attr.aria-label]="rowNode().node.expanded ? 'Recolher' : 'Expandir'" (click)="$event.stopPropagation(); table.toggleNode(rowNode(), $event)">
|
|
8889
|
+
<svg viewBox="0 0 16 16" class="h-4 w-4 transition-transform duration-ui" [class.rotate-90]="rowNode().node.expanded" fill="none" aria-hidden="true"><path d="M6 4l4 4-4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
|
8890
|
+
</button>
|
|
8704
8891
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8705
8892
|
}
|
|
8706
8893
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableTogglerComponent, decorators: [{
|
|
@@ -8709,10 +8896,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8709
8896
|
selector: 'ui-tree-table-toggler',
|
|
8710
8897
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8711
8898
|
host: { class: 'inline-flex items-center align-middle', '[style.padding-left.rem]': 'rowNode().level * 1.5' },
|
|
8712
|
-
template: `
|
|
8713
|
-
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class.invisible]="!hasChildren()" [attr.aria-label]="rowNode().node.expanded ? 'Recolher' : 'Expandir'" (click)="$event.stopPropagation(); table.toggleNode(rowNode(), $event)">
|
|
8714
|
-
<svg viewBox="0 0 16 16" class="h-4 w-4 transition-transform duration-ui" [class.rotate-90]="rowNode().node.expanded" fill="none" aria-hidden="true"><path d="M6 4l4 4-4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
|
8715
|
-
</button>
|
|
8899
|
+
template: `
|
|
8900
|
+
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class.invisible]="!hasChildren()" [attr.aria-label]="rowNode().node.expanded ? 'Recolher' : 'Expandir'" (click)="$event.stopPropagation(); table.toggleNode(rowNode(), $event)">
|
|
8901
|
+
<svg viewBox="0 0 16 16" class="h-4 w-4 transition-transform duration-ui" [class.rotate-90]="rowNode().node.expanded" fill="none" aria-hidden="true"><path d="M6 4l4 4-4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
|
8902
|
+
</button>
|
|
8716
8903
|
`,
|
|
8717
8904
|
}]
|
|
8718
8905
|
}], propDecorators: { rowNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowNode", required: true }] }] } });
|
|
@@ -8724,11 +8911,11 @@ class SmzTreeTableCheckboxComponent {
|
|
|
8724
8911
|
return this.table.selectionState(this.value().node);
|
|
8725
8912
|
}
|
|
8726
8913
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8727
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTreeTableCheckboxComponent, isStandalone: true, selector: "ui-tree-table-checkbox", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "inline-flex align-middle" }, ngImport: i0, template: `
|
|
8728
|
-
<button type="button" role="checkbox" [attr.aria-checked]="state() === 'partial' ? 'mixed' : state() === 'checked'" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="state() === 'unchecked' ? 'border-ui-line-strong bg-ui-surface-1' : 'border-ui-primary bg-ui-primary text-ui-on-primary'" (click)="$event.stopPropagation(); table.toggleCheckbox(value(), $event)">
|
|
8729
|
-
@if (state() === 'checked') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8730
|
-
@else if (state() === 'partial') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 8h8" stroke="currentColor" stroke-width="2" stroke-linecap="round" /></svg> }
|
|
8731
|
-
</button>
|
|
8914
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTreeTableCheckboxComponent, isStandalone: true, selector: "ui-tree-table-checkbox", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "inline-flex align-middle" }, ngImport: i0, template: `
|
|
8915
|
+
<button type="button" role="checkbox" [attr.aria-checked]="state() === 'partial' ? 'mixed' : state() === 'checked'" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="state() === 'unchecked' ? 'border-ui-line-strong bg-ui-surface-1' : 'border-ui-primary bg-ui-primary text-ui-on-primary'" (click)="$event.stopPropagation(); table.toggleCheckbox(value(), $event)">
|
|
8916
|
+
@if (state() === 'checked') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8917
|
+
@else if (state() === 'partial') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 8h8" stroke="currentColor" stroke-width="2" stroke-linecap="round" /></svg> }
|
|
8918
|
+
</button>
|
|
8732
8919
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8733
8920
|
}
|
|
8734
8921
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableCheckboxComponent, decorators: [{
|
|
@@ -8737,11 +8924,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8737
8924
|
selector: 'ui-tree-table-checkbox',
|
|
8738
8925
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8739
8926
|
host: { class: 'inline-flex align-middle' },
|
|
8740
|
-
template: `
|
|
8741
|
-
<button type="button" role="checkbox" [attr.aria-checked]="state() === 'partial' ? 'mixed' : state() === 'checked'" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="state() === 'unchecked' ? 'border-ui-line-strong bg-ui-surface-1' : 'border-ui-primary bg-ui-primary text-ui-on-primary'" (click)="$event.stopPropagation(); table.toggleCheckbox(value(), $event)">
|
|
8742
|
-
@if (state() === 'checked') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8743
|
-
@else if (state() === 'partial') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 8h8" stroke="currentColor" stroke-width="2" stroke-linecap="round" /></svg> }
|
|
8744
|
-
</button>
|
|
8927
|
+
template: `
|
|
8928
|
+
<button type="button" role="checkbox" [attr.aria-checked]="state() === 'partial' ? 'mixed' : state() === 'checked'" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="state() === 'unchecked' ? 'border-ui-line-strong bg-ui-surface-1' : 'border-ui-primary bg-ui-primary text-ui-on-primary'" (click)="$event.stopPropagation(); table.toggleCheckbox(value(), $event)">
|
|
8929
|
+
@if (state() === 'checked') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8930
|
+
@else if (state() === 'partial') { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 8h8" stroke="currentColor" stroke-width="2" stroke-linecap="round" /></svg> }
|
|
8931
|
+
</button>
|
|
8745
8932
|
`,
|
|
8746
8933
|
}]
|
|
8747
8934
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
|
|
@@ -8749,10 +8936,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8749
8936
|
class SmzTreeTableHeaderCheckboxComponent {
|
|
8750
8937
|
table = inject(SmzTreeTableComponent);
|
|
8751
8938
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableHeaderCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8752
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTreeTableHeaderCheckboxComponent, isStandalone: true, selector: "ui-tree-table-header-checkbox", host: { classAttribute: "inline-flex align-middle" }, ngImport: i0, template: `
|
|
8753
|
-
<button type="button" role="checkbox" [attr.aria-checked]="table.allSelected()" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="table.allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1'" (click)="table.toggleAll(!table.allSelected())">
|
|
8754
|
-
@if (table.allSelected()) { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8755
|
-
</button>
|
|
8939
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTreeTableHeaderCheckboxComponent, isStandalone: true, selector: "ui-tree-table-header-checkbox", host: { classAttribute: "inline-flex align-middle" }, ngImport: i0, template: `
|
|
8940
|
+
<button type="button" role="checkbox" [attr.aria-checked]="table.allSelected()" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="table.allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1'" (click)="table.toggleAll(!table.allSelected())">
|
|
8941
|
+
@if (table.allSelected()) { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8942
|
+
</button>
|
|
8756
8943
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8757
8944
|
}
|
|
8758
8945
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableHeaderCheckboxComponent, decorators: [{
|
|
@@ -8761,10 +8948,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8761
8948
|
selector: 'ui-tree-table-header-checkbox',
|
|
8762
8949
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8763
8950
|
host: { class: 'inline-flex align-middle' },
|
|
8764
|
-
template: `
|
|
8765
|
-
<button type="button" role="checkbox" [attr.aria-checked]="table.allSelected()" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="table.allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1'" (click)="table.toggleAll(!table.allSelected())">
|
|
8766
|
-
@if (table.allSelected()) { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8767
|
-
</button>
|
|
8951
|
+
template: `
|
|
8952
|
+
<button type="button" role="checkbox" [attr.aria-checked]="table.allSelected()" class="inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus" [class]="table.allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1'" (click)="table.toggleAll(!table.allSelected())">
|
|
8953
|
+
@if (table.allSelected()) { <svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M3.5 8.5l3 3 6-6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg> }
|
|
8954
|
+
</button>
|
|
8768
8955
|
`,
|
|
8769
8956
|
}]
|
|
8770
8957
|
}] });
|
|
@@ -8792,11 +8979,11 @@ class SmzTreeTableSortIconComponent {
|
|
|
8792
8979
|
return this.table.sortField() === this.field() ? this.table.sortOrder() : 0;
|
|
8793
8980
|
}
|
|
8794
8981
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableSortIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8795
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzTreeTableSortIconComponent, isStandalone: true, selector: "ui-tree-table-sort-icon", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "ml-1 inline-flex align-middle text-ui-fg-muted" }, ngImport: i0, template: `
|
|
8796
|
-
<svg viewBox="0 0 16 16" class="h-3.5 w-3.5" fill="none" aria-hidden="true">
|
|
8797
|
-
<path d="M5 6l3-3 3 3" [attr.stroke]="dir() === 1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8798
|
-
<path d="M5 10l3 3 3-3" [attr.stroke]="dir() === -1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8799
|
-
</svg>
|
|
8982
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SmzTreeTableSortIconComponent, isStandalone: true, selector: "ui-tree-table-sort-icon", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "ml-1 inline-flex align-middle text-ui-fg-muted" }, ngImport: i0, template: `
|
|
8983
|
+
<svg viewBox="0 0 16 16" class="h-3.5 w-3.5" fill="none" aria-hidden="true">
|
|
8984
|
+
<path d="M5 6l3-3 3 3" [attr.stroke]="dir() === 1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8985
|
+
<path d="M5 10l3 3 3-3" [attr.stroke]="dir() === -1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8986
|
+
</svg>
|
|
8800
8987
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8801
8988
|
}
|
|
8802
8989
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTreeTableSortIconComponent, decorators: [{
|
|
@@ -8805,11 +8992,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
8805
8992
|
selector: 'ui-tree-table-sort-icon',
|
|
8806
8993
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8807
8994
|
host: { class: 'ml-1 inline-flex align-middle text-ui-fg-muted' },
|
|
8808
|
-
template: `
|
|
8809
|
-
<svg viewBox="0 0 16 16" class="h-3.5 w-3.5" fill="none" aria-hidden="true">
|
|
8810
|
-
<path d="M5 6l3-3 3 3" [attr.stroke]="dir() === 1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8811
|
-
<path d="M5 10l3 3 3-3" [attr.stroke]="dir() === -1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8812
|
-
</svg>
|
|
8995
|
+
template: `
|
|
8996
|
+
<svg viewBox="0 0 16 16" class="h-3.5 w-3.5" fill="none" aria-hidden="true">
|
|
8997
|
+
<path d="M5 6l3-3 3 3" [attr.stroke]="dir() === 1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8998
|
+
<path d="M5 10l3 3 3-3" [attr.stroke]="dir() === -1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
8999
|
+
</svg>
|
|
8813
9000
|
`,
|
|
8814
9001
|
}]
|
|
8815
9002
|
}], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }] } });
|
|
@@ -8985,31 +9172,31 @@ class SmzFileUploadComponent {
|
|
|
8985
9172
|
});
|
|
8986
9173
|
}
|
|
8987
9174
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8988
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzFileUploadComponent, isStandalone: true, selector: "ui-file-upload", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, chooseLabel: { classPropertyName: "chooseLabel", publicName: "chooseLabel", isSignal: true, isRequired: false, transformFunction: null }, dropLabel: { classPropertyName: "dropLabel", publicName: "dropLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected", removed: "removed", rejected: "rejected" }, host: { classAttribute: "block font-ui text-ui-md text-ui-fg" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["picker"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
8989
|
-
<input #picker type="file" class="sr-only" [accept]="accept() ?? ''" [multiple]="multiple()" [disabled]="disabled()" (change)="onPick($event)" />
|
|
8990
|
-
<div
|
|
8991
|
-
class="flex flex-col items-center justify-center gap-2 rounded-card border-2 border-dashed p-6 text-center transition-colors duration-ui"
|
|
8992
|
-
[class]="dragging() ? 'border-ui-primary bg-ui-primary/10' : 'border-ui-line-strong bg-ui-surface-1'"
|
|
8993
|
-
[class.opacity-50]="disabled()"
|
|
8994
|
-
(dragover)="onDragOver($event)"
|
|
8995
|
-
(dragleave)="dragging.set(false)"
|
|
8996
|
-
(drop)="onDrop($event)"
|
|
8997
|
-
>
|
|
8998
|
-
<button type="button" class="rounded-control border border-ui-line-strong px-control-x py-2 font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:pointer-events-none" [disabled]="disabled()" (click)="picker.click()">{{ chooseLabel() }}</button>
|
|
8999
|
-
<span class="text-ui-sm text-ui-fg-muted">{{ dropLabel() }}</span>
|
|
9000
|
-
</div>
|
|
9001
|
-
@if (files().length > 0) {
|
|
9002
|
-
<ul class="m-0 mt-3 flex list-none flex-col gap-2 p-0">
|
|
9003
|
-
@for (file of files(); track file) {
|
|
9004
|
-
<li class="flex items-center justify-between gap-2 rounded-control border border-ui-line px-3 py-2">
|
|
9005
|
-
<span class="min-w-0 flex-1 truncate">{{ file.name }} <span class="text-ui-sm text-ui-fg-muted">({{ size(file) }})</span></span>
|
|
9006
|
-
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3" aria-label="Remover" (click)="remove(file)">
|
|
9007
|
-
<svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" /></svg>
|
|
9008
|
-
</button>
|
|
9009
|
-
</li>
|
|
9010
|
-
}
|
|
9011
|
-
</ul>
|
|
9012
|
-
}
|
|
9175
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzFileUploadComponent, isStandalone: true, selector: "ui-file-upload", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, chooseLabel: { classPropertyName: "chooseLabel", publicName: "chooseLabel", isSignal: true, isRequired: false, transformFunction: null }, dropLabel: { classPropertyName: "dropLabel", publicName: "dropLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected", removed: "removed", rejected: "rejected" }, host: { classAttribute: "block font-ui text-ui-md text-ui-fg" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["picker"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
9176
|
+
<input #picker type="file" class="sr-only" [accept]="accept() ?? ''" [multiple]="multiple()" [disabled]="disabled()" (change)="onPick($event)" />
|
|
9177
|
+
<div
|
|
9178
|
+
class="flex flex-col items-center justify-center gap-2 rounded-card border-2 border-dashed p-6 text-center transition-colors duration-ui"
|
|
9179
|
+
[class]="dragging() ? 'border-ui-primary bg-ui-primary/10' : 'border-ui-line-strong bg-ui-surface-1'"
|
|
9180
|
+
[class.opacity-50]="disabled()"
|
|
9181
|
+
(dragover)="onDragOver($event)"
|
|
9182
|
+
(dragleave)="dragging.set(false)"
|
|
9183
|
+
(drop)="onDrop($event)"
|
|
9184
|
+
>
|
|
9185
|
+
<button type="button" class="rounded-control border border-ui-line-strong px-control-x py-2 font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:pointer-events-none" [disabled]="disabled()" (click)="picker.click()">{{ chooseLabel() }}</button>
|
|
9186
|
+
<span class="text-ui-sm text-ui-fg-muted">{{ dropLabel() }}</span>
|
|
9187
|
+
</div>
|
|
9188
|
+
@if (files().length > 0) {
|
|
9189
|
+
<ul class="m-0 mt-3 flex list-none flex-col gap-2 p-0">
|
|
9190
|
+
@for (file of files(); track file) {
|
|
9191
|
+
<li class="flex items-center justify-between gap-2 rounded-control border border-ui-line px-3 py-2">
|
|
9192
|
+
<span class="min-w-0 flex-1 truncate">{{ file.name }} <span class="text-ui-sm text-ui-fg-muted">({{ size(file) }})</span></span>
|
|
9193
|
+
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3" aria-label="Remover" (click)="remove(file)">
|
|
9194
|
+
<svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" /></svg>
|
|
9195
|
+
</button>
|
|
9196
|
+
</li>
|
|
9197
|
+
}
|
|
9198
|
+
</ul>
|
|
9199
|
+
}
|
|
9013
9200
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9014
9201
|
}
|
|
9015
9202
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzFileUploadComponent, decorators: [{
|
|
@@ -9018,31 +9205,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
9018
9205
|
selector: 'ui-file-upload',
|
|
9019
9206
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9020
9207
|
host: { class: 'block font-ui text-ui-md text-ui-fg' },
|
|
9021
|
-
template: `
|
|
9022
|
-
<input #picker type="file" class="sr-only" [accept]="accept() ?? ''" [multiple]="multiple()" [disabled]="disabled()" (change)="onPick($event)" />
|
|
9023
|
-
<div
|
|
9024
|
-
class="flex flex-col items-center justify-center gap-2 rounded-card border-2 border-dashed p-6 text-center transition-colors duration-ui"
|
|
9025
|
-
[class]="dragging() ? 'border-ui-primary bg-ui-primary/10' : 'border-ui-line-strong bg-ui-surface-1'"
|
|
9026
|
-
[class.opacity-50]="disabled()"
|
|
9027
|
-
(dragover)="onDragOver($event)"
|
|
9028
|
-
(dragleave)="dragging.set(false)"
|
|
9029
|
-
(drop)="onDrop($event)"
|
|
9030
|
-
>
|
|
9031
|
-
<button type="button" class="rounded-control border border-ui-line-strong px-control-x py-2 font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:pointer-events-none" [disabled]="disabled()" (click)="picker.click()">{{ chooseLabel() }}</button>
|
|
9032
|
-
<span class="text-ui-sm text-ui-fg-muted">{{ dropLabel() }}</span>
|
|
9033
|
-
</div>
|
|
9034
|
-
@if (files().length > 0) {
|
|
9035
|
-
<ul class="m-0 mt-3 flex list-none flex-col gap-2 p-0">
|
|
9036
|
-
@for (file of files(); track file) {
|
|
9037
|
-
<li class="flex items-center justify-between gap-2 rounded-control border border-ui-line px-3 py-2">
|
|
9038
|
-
<span class="min-w-0 flex-1 truncate">{{ file.name }} <span class="text-ui-sm text-ui-fg-muted">({{ size(file) }})</span></span>
|
|
9039
|
-
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3" aria-label="Remover" (click)="remove(file)">
|
|
9040
|
-
<svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" /></svg>
|
|
9041
|
-
</button>
|
|
9042
|
-
</li>
|
|
9043
|
-
}
|
|
9044
|
-
</ul>
|
|
9045
|
-
}
|
|
9208
|
+
template: `
|
|
9209
|
+
<input #picker type="file" class="sr-only" [accept]="accept() ?? ''" [multiple]="multiple()" [disabled]="disabled()" (change)="onPick($event)" />
|
|
9210
|
+
<div
|
|
9211
|
+
class="flex flex-col items-center justify-center gap-2 rounded-card border-2 border-dashed p-6 text-center transition-colors duration-ui"
|
|
9212
|
+
[class]="dragging() ? 'border-ui-primary bg-ui-primary/10' : 'border-ui-line-strong bg-ui-surface-1'"
|
|
9213
|
+
[class.opacity-50]="disabled()"
|
|
9214
|
+
(dragover)="onDragOver($event)"
|
|
9215
|
+
(dragleave)="dragging.set(false)"
|
|
9216
|
+
(drop)="onDrop($event)"
|
|
9217
|
+
>
|
|
9218
|
+
<button type="button" class="rounded-control border border-ui-line-strong px-control-x py-2 font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:pointer-events-none" [disabled]="disabled()" (click)="picker.click()">{{ chooseLabel() }}</button>
|
|
9219
|
+
<span class="text-ui-sm text-ui-fg-muted">{{ dropLabel() }}</span>
|
|
9220
|
+
</div>
|
|
9221
|
+
@if (files().length > 0) {
|
|
9222
|
+
<ul class="m-0 mt-3 flex list-none flex-col gap-2 p-0">
|
|
9223
|
+
@for (file of files(); track file) {
|
|
9224
|
+
<li class="flex items-center justify-between gap-2 rounded-control border border-ui-line px-3 py-2">
|
|
9225
|
+
<span class="min-w-0 flex-1 truncate">{{ file.name }} <span class="text-ui-sm text-ui-fg-muted">({{ size(file) }})</span></span>
|
|
9226
|
+
<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3" aria-label="Remover" (click)="remove(file)">
|
|
9227
|
+
<svg viewBox="0 0 16 16" class="h-3 w-3" fill="none" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" /></svg>
|
|
9228
|
+
</button>
|
|
9229
|
+
</li>
|
|
9230
|
+
}
|
|
9231
|
+
</ul>
|
|
9232
|
+
}
|
|
9046
9233
|
`,
|
|
9047
9234
|
}]
|
|
9048
9235
|
}], propDecorators: { accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], maxFileSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxFileSize", required: false }] }], chooseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "chooseLabel", required: false }] }], dropLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropLabel", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }], removed: [{ type: i0.Output, args: ["removed"] }], rejected: [{ type: i0.Output, args: ["rejected"] }], fileInput: [{ type: i0.ViewChild, args: ['picker', { isSignal: true }] }] } });
|