@masterkeymaterial/ui 0.0.9 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, computed, model, input, output, effect, Component, HostBinding, viewChild, ElementRef, inject, HostListener, Pipe } from '@angular/core';
2
+ import { signal, computed, model, input, output, effect, Component, HostBinding, viewChild, ElementRef, inject, HostListener, Pipe, InjectionToken, Injectable, Injector, ViewContainerRef, ChangeDetectionStrategy, Optional, Inject } from '@angular/core';
3
3
  import { autoUpdate, computePosition, offset, flip, shift } from '@floating-ui/dom';
4
4
  import { NgComponentOutlet } from '@angular/common';
5
5
  import { DomSanitizer } from '@angular/platform-browser';
6
+ import * as i1 from '@angular/cdk/drag-drop';
7
+ import { DragDropModule } from '@angular/cdk/drag-drop';
6
8
 
7
9
  ////////////////////////////////////
8
10
  // CONSOLES: LOG - WARN - ERR ...
@@ -6448,11 +6450,1071 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6448
6450
  args: [{ selector: 'ui-single-values', imports: [], template: "<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (dado of dadosAExibir(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"dado.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"dado.label\"></div>\n\t\t<div class=\"conteudo\" [innerHTML]=\"dado.value\"></div>\n\t</div>\n\t}\n\n</div>", styles: [".showEntidade{margin-top:5px}.linhaDado{border:1px solid transparent;border-bottom:1px dotted var(--sys-primary-15)}.titulo{font-weight:600}.linhaDado.isEspecial .titulo{color:var(--sys-secondary)}.conteudo{color:color-mix(in srgb,var(--sys-secondary) 50%,var(--sys-on-background) 50%)}.linhaDado:hover{border-bottom:1px solid var(--sys-secondary)}.showEntidade.cantos .linhaDado{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:calc(var(--sys-gap) / 2)}.showEntidade.centro .linhaDado{display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--sys-gap) / 2)}.showEntidade.centro .titulo{text-align:end}.showEntidade.esquerda .linhaDado{display:grid;grid-template-columns:auto 1fr;gap:calc(var(--sys-gap) / 2)}.showEntidade.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:calc(var(--sys-gap) / 4)}.showEntidade.grid .linhaDado{display:flex;flex-direction:column;flex-wrap:wrap;border:1px solid var(--sys-primary-15);border-radius:var(--sys-border-radius);padding:calc(var(--sys-gap) / 2)}.showEntidade.grid .linhaDado:hover{border:1px solid var(--sys-secondary)}.showEntidade.wrap{display:flex;flex-wrap:wrap;gap:calc(var(--sys-gap) / 2)}.showEntidade.wrap .linhaDado{display:flex;flex-direction:column;flex-wrap:wrap;border:1px solid var(--sys-primary-15);border-radius:var(--sys-border-radius);padding:calc(var(--sys-gap) / 2)}.showEntidade.wrap .linhaDado:hover{border:1px solid var(--sys-secondary)}\n"] }]
6449
6451
  }], propDecorators: { dados: [{ type: i0.Input, args: [{ isSignal: true, alias: "dados", required: false }] }], modo: [{ type: i0.Input, args: [{ isSignal: true, alias: "modo", required: false }] }, { type: i0.Output, args: ["modoChange"] }], especialKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "especialKeys", required: false }] }] } });
6450
6452
 
6453
+ // ─── ScreenMode (definido localmente — sem dependência do LayoutCoreService) ──────
6454
+ var ScreenMode;
6455
+ (function (ScreenMode) {
6456
+ ScreenMode["Mobile"] = "Mobile";
6457
+ ScreenMode["Desktop"] = "Desktop";
6458
+ ScreenMode["Tablet"] = "Tablet";
6459
+ })(ScreenMode || (ScreenMode = {}));
6460
+ const GRID_PARAMS_TOKEN = new InjectionToken('GRID_PARAMS');
6461
+ var IGridFilterType;
6462
+ (function (IGridFilterType) {
6463
+ IGridFilterType["Exato"] = "exact";
6464
+ IGridFilterType["Como"] = "like";
6465
+ IGridFilterType["MaiorQue"] = "bigger";
6466
+ IGridFilterType["MenorQue"] = "smaller";
6467
+ IGridFilterType["Entre"] = "between";
6468
+ IGridFilterType["Column"] = "column";
6469
+ })(IGridFilterType || (IGridFilterType = {}));
6470
+ const PAGINATION_OPTIONS = [
6471
+ { k: 5, v: "5" },
6472
+ { k: 10, v: "10" },
6473
+ { k: 25, v: "25" },
6474
+ { k: 50, v: "50" },
6475
+ { k: 100, v: "100" },
6476
+ { k: 1000, v: "1000" },
6477
+ ];
6478
+
6479
+ class GridCellService {
6480
+ gridParams = signal(undefined, ...(ngDevMode ? [{ debugName: "gridParams" }] : /* istanbul ignore next */ []));
6481
+ updateGridParams(params) {
6482
+ this.gridParams.set(params);
6483
+ }
6484
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCellService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6485
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCellService });
6486
+ }
6487
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCellService, decorators: [{
6488
+ type: Injectable
6489
+ }] });
6490
+
6491
+ const PROP_CONTROLE_ATIVO$1 = 'is_ativo';
6492
+ class GridCellHandler {
6493
+ parentInjector = inject(Injector);
6494
+ sanitizer = inject(DomSanitizer);
6495
+ servico = inject(GridCellService);
6496
+ lista = input.required(...(ngDevMode ? [{ debugName: "lista" }] : /* istanbul ignore next */ []));
6497
+ linha = input.required(...(ngDevMode ? [{ debugName: "linha" }] : /* istanbul ignore next */ []));
6498
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
6499
+ localColuna = input.required(...(ngDevMode ? [{ debugName: "localColuna" }] : /* istanbul ignore next */ []));
6500
+ localColunas = input.required(...(ngDevMode ? [{ debugName: "localColunas" }] : /* istanbul ignore next */ []));
6501
+ inputSearchText = input.required(...(ngDevMode ? [{ debugName: "inputSearchText" }] : /* istanbul ignore next */ []));
6502
+ ativo = signal(true, ...(ngDevMode ? [{ debugName: "ativo" }] : /* istanbul ignore next */ []));
6503
+ gridParams;
6504
+ vcr = viewChild('cellComponent', { ...(ngDevMode ? { debugName: "vcr" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
6505
+ componenteRef;
6506
+ valueToRender = "";
6507
+ ngOnInit() {
6508
+ this.gridParams = this.getGridParams();
6509
+ if (!this.localColuna().cellComponent) {
6510
+ this.valueToRender = this.getRenderer();
6511
+ }
6512
+ }
6513
+ ngOnDestroy() {
6514
+ if (this.componenteRef) {
6515
+ this.componenteRef.destroy();
6516
+ this.componenteRef = undefined;
6517
+ }
6518
+ }
6519
+ ngAfterViewInit() {
6520
+ this.createComponente();
6521
+ }
6522
+ ngOnChanges(changes) {
6523
+ this.valueToRender = this.getRenderer();
6524
+ this.gridParams = this.getGridParams();
6525
+ if (changes['linha'] && this.servico) {
6526
+ this.servico.updateGridParams(this.gridParams);
6527
+ }
6528
+ }
6529
+ getRenderer() {
6530
+ let data = "";
6531
+ let prop = this.localColuna().prop;
6532
+ if (LibUtil.classof(prop) == "string" && prop.includes(".")) {
6533
+ const props = prop.split(".");
6534
+ const lastObj = LibUtil.getV(props.slice(0, -1).join("."), this.linha());
6535
+ this.ativo.set(!!lastObj?.[PROP_CONTROLE_ATIVO$1]);
6536
+ }
6537
+ if (this.localColuna().prop)
6538
+ data = LibUtil.getV(this.localColuna().prop, this.linha());
6539
+ if (this.localColuna().mask) {
6540
+ data = LibUtil.mascarar(data, this.localColuna().mask) ?? data;
6541
+ }
6542
+ if (this.localColuna().capitalize) {
6543
+ data = LibUtil.capitalize(data);
6544
+ }
6545
+ if (this.localColuna().cellRenderer) {
6546
+ const html = this.localColuna().cellRenderer(this.getGridParams())
6547
+ ?? data
6548
+ ?? '';
6549
+ return this.sanitizer.bypassSecurityTrustHtml(html);
6550
+ }
6551
+ data = data?.toString() ?? '';
6552
+ let words = this.inputSearchText().trim().split(" ").filter(t => t != "").map(p => LibUtil.removeEspecias(p).toLowerCase());
6553
+ if (words.length > 0) {
6554
+ for (let w of words) {
6555
+ let preparedData = LibUtil.removeAcentos(data).toLowerCase();
6556
+ if (w != "" && preparedData.includes(w)) {
6557
+ let regexTag = new RegExp(`<[^>]*${w}[^>]*>`, 'i');
6558
+ if (regexTag.test(preparedData.toString())) {
6559
+ continue;
6560
+ }
6561
+ let pos = preparedData.toString().toLowerCase().indexOf(w.toLowerCase());
6562
+ data = data.slice(0, pos)
6563
+ + "<mark>"
6564
+ + data.slice(pos, pos + w.length)
6565
+ + "</mark>"
6566
+ + data.slice(pos + w.length);
6567
+ data = data.replaceAll("</mark><mark>", "");
6568
+ }
6569
+ }
6570
+ ;
6571
+ }
6572
+ return data ?? '';
6573
+ }
6574
+ createComponente() {
6575
+ if (this.localColuna().cellComponent) {
6576
+ this.vcr()?.clear();
6577
+ this.componenteRef = this.vcr()?.createComponent(this.localColuna().cellComponent.component, {
6578
+ injector: Injector.create({
6579
+ parent: this.parentInjector,
6580
+ providers: [
6581
+ { provide: GRID_PARAMS_TOKEN, useValue: this.gridParams },
6582
+ { provide: 'GRID_PARAMS', useValue: this.gridParams }
6583
+ ]
6584
+ })
6585
+ });
6586
+ }
6587
+ }
6588
+ getGridParams() {
6589
+ let value = "";
6590
+ if (this.localColuna().prop)
6591
+ value = LibUtil.getV(this.localColuna().prop, this.linha());
6592
+ return {
6593
+ coluna: this.localColuna(),
6594
+ colunas: this.localColunas(),
6595
+ data: this.linha(),
6596
+ lista: this.lista(),
6597
+ params: this.localColuna().cellComponent?.input ?? this.localColuna().cellRendererParams,
6598
+ servicoParams: this.servico,
6599
+ value,
6600
+ };
6601
+ }
6602
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCellHandler, deps: [], target: i0.ɵɵFactoryTarget.Component });
6603
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: GridCellHandler, isStandalone: true, selector: "lib-grid-cell-handler", inputs: { lista: { classPropertyName: "lista", publicName: "lista", isSignal: true, isRequired: true, transformFunction: null }, linha: { classPropertyName: "linha", publicName: "linha", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, localColuna: { classPropertyName: "localColuna", publicName: "localColuna", isSignal: true, isRequired: true, transformFunction: null }, localColunas: { classPropertyName: "localColunas", publicName: "localColunas", isSignal: true, isRequired: true, transformFunction: null }, inputSearchText: { classPropertyName: "inputSearchText", publicName: "inputSearchText", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.table-inativo": "!ativo()" } }, viewQueries: [{ propertyName: "vcr", first: true, predicate: ["cellComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@if(localColuna().cellComponent){\n<div class=\"d-none\" #cellComponent></div>\n} @else {\n<div [innerHTML]=\"valueToRender\"></div>\n}", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center}:host>div{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6604
+ }
6605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCellHandler, decorators: [{
6606
+ type: Component,
6607
+ args: [{ selector: 'lib-grid-cell-handler', changeDetection: ChangeDetectionStrategy.OnPush, host: {
6608
+ '[class.table-inativo]': '!ativo()'
6609
+ }, template: "@if(localColuna().cellComponent){\n<div class=\"d-none\" #cellComponent></div>\n} @else {\n<div [innerHTML]=\"valueToRender\"></div>\n}", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center}:host>div{display:contents}\n"] }]
6610
+ }], propDecorators: { lista: [{ type: i0.Input, args: [{ isSignal: true, alias: "lista", required: true }] }], linha: [{ type: i0.Input, args: [{ isSignal: true, alias: "linha", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], localColuna: [{ type: i0.Input, args: [{ isSignal: true, alias: "localColuna", required: true }] }], localColunas: [{ type: i0.Input, args: [{ isSignal: true, alias: "localColunas", required: true }] }], inputSearchText: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputSearchText", required: true }] }], vcr: [{ type: i0.ViewChild, args: ['cellComponent', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
6611
+
6612
+ class GridCellActions {
6613
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
6614
+ dadosDaLinha = input.required(...(ngDevMode ? [{ debugName: "dadosDaLinha" }] : /* istanbul ignore next */ []));
6615
+ mobileHeader = input(false, ...(ngDevMode ? [{ debugName: "mobileHeader" }] : /* istanbul ignore next */ []));
6616
+ compact = input(false, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
6617
+ action = output();
6618
+ onClickAction(action, dadosDaLinha) {
6619
+ if (action?.action) {
6620
+ this.action.emit({ action, dadosDaLinha });
6621
+ }
6622
+ return;
6623
+ }
6624
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCellActions, deps: [], target: i0.ɵɵFactoryTarget.Component });
6625
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: GridCellActions, isStandalone: true, selector: "lib-grid-cell-actions", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, dadosDaLinha: { classPropertyName: "dadosDaLinha", publicName: "dadosDaLinha", isSignal: true, isRequired: true, transformFunction: null }, mobileHeader: { classPropertyName: "mobileHeader", publicName: "mobileHeader", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, ngImport: i0, template: "@if(!compact()){\n@for (action of dadosDaLinha().actions; track $index;) {\n@if(action.showAction && action.inmenu !== true){\n<ui-button [tipo]=\"mobileHeader() ? 'fill' : 'icon'\" [tema]=\"action?.tema ?? 'primary'\" [title]=\"action.display\"\n\t(click)=\"onClickAction(action, dadosDaLinha())\" [icone]=\"action.icon\"\n\t[style.--ui-height]=\"compact() ? '20px' : '40px'\"></ui-button>\n}\n}\n}\n\n@if(dadosDaLinha().hasActionMenu || compact()){\n<ui-menu>\n\t<ui-button slot=\"botao\" tipo=\"icon\" tema=\"primary\" [title]=\"config().actionsLineConfig.menuDisplay\"\n\t\t[icone]=\"config().actionsLineConfig.showMenuIcon ? 'bi bi-three-dots-vertical' : undefined\">\n\t\t{{ config().actionsLineConfig.menuDisplay }}\n\t</ui-button>\n\n\t@for (action of dadosDaLinha().actions; track $index;let last = $last) {\n\t@if(action.showAction && (action.inmenu !== false || compact())){\n\t<ui-button tipo=\"menu-item\" [tema]=\"action?.tema ?? 'primary'\" (click)=\"onClickAction(action, dadosDaLinha())\"\n\t\t[icone]=\"action?.showIcon ? action?.icon : 'bi bi-dot'\" [style.--ui-padding]=\"'0 16px'\">\n\t\t{{ action?.display ?? '' }}\n\t</ui-button>\n\t}\n\t}\n\n</ui-menu>\n}", styles: [":host{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;height:auto}.listaAcoesTabela button:not(:first-child){border:0px;border-top:1px solid var(--mk-grid-outline)}\n"], dependencies: [{ kind: "component", type: UiButton, selector: "ui-button", inputs: ["icone", "iconeAntes", "iconeDepois", "iconeCategory", "disabled", "eventPropagation", "radiusTabFormat", "tabindex", "tipo", "tema", "classes", "ativo"], outputs: ["iconeChange", "iconeAntesChange", "iconeDepoisChange", "iconeCategoryChange", "clicked", "temaChange"] }, { kind: "component", type: UiMenu, selector: "ui-menu", inputs: ["disabled", "icone", "autoCloseInCascade", "posicao", "isOpened"], outputs: ["autoCloseInCascadeChange", "posicaoChange", "isOpenedChange"] }] });
6626
+ }
6627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCellActions, decorators: [{
6628
+ type: Component,
6629
+ args: [{ selector: 'lib-grid-cell-actions', imports: [UiButton, UiMenu], template: "@if(!compact()){\n@for (action of dadosDaLinha().actions; track $index;) {\n@if(action.showAction && action.inmenu !== true){\n<ui-button [tipo]=\"mobileHeader() ? 'fill' : 'icon'\" [tema]=\"action?.tema ?? 'primary'\" [title]=\"action.display\"\n\t(click)=\"onClickAction(action, dadosDaLinha())\" [icone]=\"action.icon\"\n\t[style.--ui-height]=\"compact() ? '20px' : '40px'\"></ui-button>\n}\n}\n}\n\n@if(dadosDaLinha().hasActionMenu || compact()){\n<ui-menu>\n\t<ui-button slot=\"botao\" tipo=\"icon\" tema=\"primary\" [title]=\"config().actionsLineConfig.menuDisplay\"\n\t\t[icone]=\"config().actionsLineConfig.showMenuIcon ? 'bi bi-three-dots-vertical' : undefined\">\n\t\t{{ config().actionsLineConfig.menuDisplay }}\n\t</ui-button>\n\n\t@for (action of dadosDaLinha().actions; track $index;let last = $last) {\n\t@if(action.showAction && (action.inmenu !== false || compact())){\n\t<ui-button tipo=\"menu-item\" [tema]=\"action?.tema ?? 'primary'\" (click)=\"onClickAction(action, dadosDaLinha())\"\n\t\t[icone]=\"action?.showIcon ? action?.icon : 'bi bi-dot'\" [style.--ui-padding]=\"'0 16px'\">\n\t\t{{ action?.display ?? '' }}\n\t</ui-button>\n\t}\n\t}\n\n</ui-menu>\n}", styles: [":host{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;height:auto}.listaAcoesTabela button:not(:first-child){border:0px;border-top:1px solid var(--mk-grid-outline)}\n"] }]
6630
+ }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], dadosDaLinha: [{ type: i0.Input, args: [{ isSignal: true, alias: "dadosDaLinha", required: true }] }], mobileHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileHeader", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], action: [{ type: i0.Output, args: ["action"] }] } });
6631
+
6632
+ class GridRowRenderer {
6633
+ dadosLinha = input.required(...(ngDevMode ? [{ debugName: "dadosLinha" }] : /* istanbul ignore next */ []));
6634
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
6635
+ colunas = input.required(...(ngDevMode ? [{ debugName: "colunas" }] : /* istanbul ignore next */ []));
6636
+ colunasOrdenadas = input.required(...(ngDevMode ? [{ debugName: "colunasOrdenadas" }] : /* istanbul ignore next */ []));
6637
+ lista = input.required(...(ngDevMode ? [{ debugName: "lista" }] : /* istanbul ignore next */ []));
6638
+ inputSearchText = input.required(...(ngDevMode ? [{ debugName: "inputSearchText" }] : /* istanbul ignore next */ []));
6639
+ hasSeletor = input(false, ...(ngDevMode ? [{ debugName: "hasSeletor" }] : /* istanbul ignore next */ []));
6640
+ hasVerticalLine = input(false, ...(ngDevMode ? [{ debugName: "hasVerticalLine" }] : /* istanbul ignore next */ []));
6641
+ isCompacted = input(false, ...(ngDevMode ? [{ debugName: "isCompacted" }] : /* istanbul ignore next */ []));
6642
+ hasGrid = input(false, ...(ngDevMode ? [{ debugName: "hasGrid" }] : /* istanbul ignore next */ []));
6643
+ rowIndex = input(0, ...(ngDevMode ? [{ debugName: "rowIndex" }] : /* istanbul ignore next */ []));
6644
+ actionTriggered = output();
6645
+ rowClicked = output();
6646
+ onRowAction(event) {
6647
+ this.actionTriggered.emit(event);
6648
+ }
6649
+ onRowClick() {
6650
+ this.rowClicked.emit(this.dadosLinha());
6651
+ }
6652
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridRowRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
6653
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: GridRowRenderer, isStandalone: true, selector: "lib-grid-row-renderer", inputs: { dadosLinha: { classPropertyName: "dadosLinha", publicName: "dadosLinha", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, colunas: { classPropertyName: "colunas", publicName: "colunas", isSignal: true, isRequired: true, transformFunction: null }, colunasOrdenadas: { classPropertyName: "colunasOrdenadas", publicName: "colunasOrdenadas", isSignal: true, isRequired: true, transformFunction: null }, lista: { classPropertyName: "lista", publicName: "lista", isSignal: true, isRequired: true, transformFunction: null }, inputSearchText: { classPropertyName: "inputSearchText", publicName: "inputSearchText", isSignal: true, isRequired: true, transformFunction: null }, hasSeletor: { classPropertyName: "hasSeletor", publicName: "hasSeletor", isSignal: true, isRequired: false, transformFunction: null }, hasVerticalLine: { classPropertyName: "hasVerticalLine", publicName: "hasVerticalLine", isSignal: true, isRequired: false, transformFunction: null }, isCompacted: { classPropertyName: "isCompacted", publicName: "isCompacted", isSignal: true, isRequired: false, transformFunction: null }, hasGrid: { classPropertyName: "hasGrid", publicName: "hasGrid", isSignal: true, isRequired: false, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionTriggered: "actionTriggered", rowClicked: "rowClicked" }, ngImport: i0, template: "@if(hasVerticalLine()) {\n<div class=\"table-header table-formated table-vertical-line\">{{ dadosLinha().ordem }}</div>\n}\n\n@if(hasSeletor() && config().selectionMode != 'none') {\n<div class=\"table-item table-formated table-item-seletor\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t[class.odd]=\"rowIndex() % 2 !== 0\" [class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[class.table-border-left]=\"hasGrid()\" [style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\"\n\t(click)=\"onRowClick()\">\n\t<ui-check-box [(value)]=\"dadosLinha().selecionado\" [single]=\"config().selectionMode == 'single'\"\n\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\" [disabled]=\"dadosLinha().isSelecionando\"></ui-check-box>\n</div>\n}\n\n@for (coluna of colunas(); track $index; let j = $index) {\n@if (coluna.visivel !== false) {\n<lib-grid-cell-handler class=\"table-item table-dados {{ coluna.classeCell }}\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.table-first-col]=\"j === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [style.overflow]=\"coluna.overflow ?? 'hidden'\"\n\t[style.textOverflow]=\"coluna.textOverflow ?? 'ellipsis'\" [linha]=\"dadosLinha().dados\" [localColuna]=\"coluna\"\n\t[lista]=\"lista()\" [config]=\"config()\" [localColunas]=\"colunasOrdenadas()\"\n\t[class.table-bg-error]=\"dadosLinha().inativo\" (click)=\"onRowClick()\" [inputSearchText]=\"inputSearchText()\"\n\t[class.table-border-left]=\"hasGrid()\" [class.table-border-right]=\"$last && hasGrid() && !config().showActionsLine\"\n\t[attr.ordem]=\"coluna.ordem\"></lib-grid-cell-handler>\n}\n}\n\n@if(config().showActionsLine) {\n<lib-grid-cell-actions class=\"table-item table-formated table-item-action\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [config]=\"config()\" [dadosDaLinha]=\"dadosLinha()\"\n\t[class.table-border-right-error]=\"dadosLinha().inativo\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t(action)=\"onRowAction($event)\" [compact]=\"isCompacted()\" [class.table-border-left]=\"hasGrid()\"\n\t[class.table-border-right]=\"hasGrid()\"></lib-grid-cell-actions>\n}", styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: UiCheckBox, selector: "ui-check-box", inputs: ["value", "disabled", "focused", "focus", "single", "hasDash"], outputs: ["valueChange", "focusedChange", "changed"] }, { kind: "component", type: GridCellHandler, selector: "lib-grid-cell-handler", inputs: ["lista", "linha", "config", "localColuna", "localColunas", "inputSearchText"] }, { kind: "component", type: GridCellActions, selector: "lib-grid-cell-actions", inputs: ["config", "dadosDaLinha", "mobileHeader", "compact"], outputs: ["action"] }] });
6654
+ }
6655
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridRowRenderer, decorators: [{
6656
+ type: Component,
6657
+ args: [{ selector: 'lib-grid-row-renderer', imports: [UiCheckBox, GridCellHandler, GridCellActions], template: "@if(hasVerticalLine()) {\n<div class=\"table-header table-formated table-vertical-line\">{{ dadosLinha().ordem }}</div>\n}\n\n@if(hasSeletor() && config().selectionMode != 'none') {\n<div class=\"table-item table-formated table-item-seletor\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t[class.odd]=\"rowIndex() % 2 !== 0\" [class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[class.table-border-left]=\"hasGrid()\" [style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\"\n\t(click)=\"onRowClick()\">\n\t<ui-check-box [(value)]=\"dadosLinha().selecionado\" [single]=\"config().selectionMode == 'single'\"\n\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\" [disabled]=\"dadosLinha().isSelecionando\"></ui-check-box>\n</div>\n}\n\n@for (coluna of colunas(); track $index; let j = $index) {\n@if (coluna.visivel !== false) {\n<lib-grid-cell-handler class=\"table-item table-dados {{ coluna.classeCell }}\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.table-first-col]=\"j === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [style.overflow]=\"coluna.overflow ?? 'hidden'\"\n\t[style.textOverflow]=\"coluna.textOverflow ?? 'ellipsis'\" [linha]=\"dadosLinha().dados\" [localColuna]=\"coluna\"\n\t[lista]=\"lista()\" [config]=\"config()\" [localColunas]=\"colunasOrdenadas()\"\n\t[class.table-bg-error]=\"dadosLinha().inativo\" (click)=\"onRowClick()\" [inputSearchText]=\"inputSearchText()\"\n\t[class.table-border-left]=\"hasGrid()\" [class.table-border-right]=\"$last && hasGrid() && !config().showActionsLine\"\n\t[attr.ordem]=\"coluna.ordem\"></lib-grid-cell-handler>\n}\n}\n\n@if(config().showActionsLine) {\n<lib-grid-cell-actions class=\"table-item table-formated table-item-action\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [config]=\"config()\" [dadosDaLinha]=\"dadosLinha()\"\n\t[class.table-border-right-error]=\"dadosLinha().inativo\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t(action)=\"onRowAction($event)\" [compact]=\"isCompacted()\" [class.table-border-left]=\"hasGrid()\"\n\t[class.table-border-right]=\"hasGrid()\"></lib-grid-cell-actions>\n}", styles: [":host{display:contents}\n"] }]
6658
+ }], propDecorators: { dadosLinha: [{ type: i0.Input, args: [{ isSignal: true, alias: "dadosLinha", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], colunas: [{ type: i0.Input, args: [{ isSignal: true, alias: "colunas", required: true }] }], colunasOrdenadas: [{ type: i0.Input, args: [{ isSignal: true, alias: "colunasOrdenadas", required: true }] }], lista: [{ type: i0.Input, args: [{ isSignal: true, alias: "lista", required: true }] }], inputSearchText: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputSearchText", required: true }] }], hasSeletor: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSeletor", required: false }] }], hasVerticalLine: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasVerticalLine", required: false }] }], isCompacted: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompacted", required: false }] }], hasGrid: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasGrid", required: false }] }], rowIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowIndex", required: false }] }], actionTriggered: [{ type: i0.Output, args: ["actionTriggered"] }], rowClicked: [{ type: i0.Output, args: ["rowClicked"] }] } });
6659
+
6660
+ class GridHeaderRow {
6661
+ colunas = input.required(...(ngDevMode ? [{ debugName: "colunas" }] : /* istanbul ignore next */ []));
6662
+ ordenacoes = input.required(...(ngDevMode ? [{ debugName: "ordenacoes" }] : /* istanbul ignore next */ []));
6663
+ todosSelecionados = input.required(...(ngDevMode ? [{ debugName: "todosSelecionados" }] : /* istanbul ignore next */ []));
6664
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
6665
+ hasSeletor = input(false, ...(ngDevMode ? [{ debugName: "hasSeletor" }] : /* istanbul ignore next */ []));
6666
+ hasVerticalLine = input(false, ...(ngDevMode ? [{ debugName: "hasVerticalLine" }] : /* istanbul ignore next */ []));
6667
+ hasGrid = input(false, ...(ngDevMode ? [{ debugName: "hasGrid" }] : /* istanbul ignore next */ []));
6668
+ isCompacted = input(false, ...(ngDevMode ? [{ debugName: "isCompacted" }] : /* istanbul ignore next */ []));
6669
+ isSelectingAll = input(false, ...(ngDevMode ? [{ debugName: "isSelectingAll" }] : /* istanbul ignore next */ []));
6670
+ columnSort = output();
6671
+ selectAll = output();
6672
+ columnResizeStart = output();
6673
+ columnResizeDoubleClick = output();
6674
+ getOrdenacaoDirecao(coluna) {
6675
+ const ordenacao = this.ordenacoes().find(o => o.coluna === coluna);
6676
+ return ordenacao ? ordenacao.direcao : null;
6677
+ }
6678
+ onColumnSort(coluna) {
6679
+ this.columnSort.emit(coluna);
6680
+ }
6681
+ onSelectAll(value) {
6682
+ this.selectAll.emit(value);
6683
+ }
6684
+ onResizeStart(event, coluna) {
6685
+ this.columnResizeStart.emit({ event, coluna });
6686
+ }
6687
+ onResizeDoubleClick(event, coluna) {
6688
+ this.columnResizeDoubleClick.emit({ event, coluna });
6689
+ }
6690
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridHeaderRow, deps: [], target: i0.ɵɵFactoryTarget.Component });
6691
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: GridHeaderRow, isStandalone: true, selector: "lib-grid-header-row", inputs: { colunas: { classPropertyName: "colunas", publicName: "colunas", isSignal: true, isRequired: true, transformFunction: null }, ordenacoes: { classPropertyName: "ordenacoes", publicName: "ordenacoes", isSignal: true, isRequired: true, transformFunction: null }, todosSelecionados: { classPropertyName: "todosSelecionados", publicName: "todosSelecionados", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, hasSeletor: { classPropertyName: "hasSeletor", publicName: "hasSeletor", isSignal: true, isRequired: false, transformFunction: null }, hasVerticalLine: { classPropertyName: "hasVerticalLine", publicName: "hasVerticalLine", isSignal: true, isRequired: false, transformFunction: null }, hasGrid: { classPropertyName: "hasGrid", publicName: "hasGrid", isSignal: true, isRequired: false, transformFunction: null }, isCompacted: { classPropertyName: "isCompacted", publicName: "isCompacted", isSignal: true, isRequired: false, transformFunction: null }, isSelectingAll: { classPropertyName: "isSelectingAll", publicName: "isSelectingAll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { columnSort: "columnSort", selectAll: "selectAll", columnResizeStart: "columnResizeStart", columnResizeDoubleClick: "columnResizeDoubleClick" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "@if(hasVerticalLine()) {\n<div class=\"table-header table-vertical-line\"></div>\n}\n\n@if(hasSeletor()) {\n<div class=\"table-header table-header-seletor\">\n\t@if(config().selectionMode == 'multiple') {\n\t<ui-check-box [single]=\"false\" [value]=\"todosSelecionados()\" (changed)=\"onSelectAll($event)\"\n\t\t[style.--ui-color]=\"'var(--sys-on-primary)'\" [style.--ui-outline]=\"'var(--sys-on-primary)'\"\n\t\t[disabled]=\"isSelectingAll()\" [style.--ui-size]=\"isCompacted() ? '15px' : undefined\"\n\t\t[hasDash]=\"true\"></ui-check-box>\n\t}\n</div>\n}\n\n@for (coluna of colunas(); track $index) {\n@if (coluna.visivel !== false) {\n<div class=\"table-header\" [class.table-border-left-darker]=\"hasGrid() && $index === 0\"\n\t[class.header-last-col]=\"$last && !config().showActionsLine\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[class.sortable]=\"coluna.sortable !== false\" [class.sorted-asc]=\"getOrdenacaoDirecao(coluna.prop) === 'asc'\"\n\t[class.sorted-desc]=\"getOrdenacaoDirecao(coluna.prop) === 'desc'\" [class.textVertical]=\"coluna.textVertical\">\n\t<div cdkDrag [cdkDragData]=\"coluna\" cdkDragLockAxis=\"x\"\n\t\tclass=\"table-header-text table-drag-container drop-option {{ coluna.classeHeader }}\" [title]=\"coluna.titulo\"\n\t\t[innerHTML]=\"coluna.tituloReduzido ?? coluna.titulo\" [attr.ordem]=\"coluna.ordem\"\n\t\t(click)=\"coluna.sortable !== false && onColumnSort(coluna.prop)\">\n\t</div>\n\t<div class=\"table-header-controls\" (dblclick)=\"onResizeDoubleClick($event, coluna)\"\n\t\t(mousedown)=\"onResizeStart($event, coluna)\">\n\t\t@if (coluna.sortable !== false) {\n\t\t<span class=\"table-ico-sort\">\n\t\t\t@if (getOrdenacaoDirecao(coluna.prop) === 'asc') {\n\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t} @else if (getOrdenacaoDirecao(coluna.prop) === 'desc') {\n\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t}\n\t\t</span>\n\t\t}\n\t</div>\n</div>\n}\n}\n\n@if(config().showActionsLine) {\n<div class=\"table-header table-action-line header-last-col\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[innerHTML]=\"!isCompacted() ? config().actionsLineConfig.headerDisplayMore : ''\"></div>\n}", styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: UiCheckBox, selector: "ui-check-box", inputs: ["value", "disabled", "focused", "focus", "single", "hasDash"], outputs: ["valueChange", "focusedChange", "changed"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6692
+ }
6693
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridHeaderRow, decorators: [{
6694
+ type: Component,
6695
+ args: [{ selector: 'lib-grid-header-row', changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'display: contents' }, imports: [UiCheckBox, DragDropModule], template: "@if(hasVerticalLine()) {\n<div class=\"table-header table-vertical-line\"></div>\n}\n\n@if(hasSeletor()) {\n<div class=\"table-header table-header-seletor\">\n\t@if(config().selectionMode == 'multiple') {\n\t<ui-check-box [single]=\"false\" [value]=\"todosSelecionados()\" (changed)=\"onSelectAll($event)\"\n\t\t[style.--ui-color]=\"'var(--sys-on-primary)'\" [style.--ui-outline]=\"'var(--sys-on-primary)'\"\n\t\t[disabled]=\"isSelectingAll()\" [style.--ui-size]=\"isCompacted() ? '15px' : undefined\"\n\t\t[hasDash]=\"true\"></ui-check-box>\n\t}\n</div>\n}\n\n@for (coluna of colunas(); track $index) {\n@if (coluna.visivel !== false) {\n<div class=\"table-header\" [class.table-border-left-darker]=\"hasGrid() && $index === 0\"\n\t[class.header-last-col]=\"$last && !config().showActionsLine\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[class.sortable]=\"coluna.sortable !== false\" [class.sorted-asc]=\"getOrdenacaoDirecao(coluna.prop) === 'asc'\"\n\t[class.sorted-desc]=\"getOrdenacaoDirecao(coluna.prop) === 'desc'\" [class.textVertical]=\"coluna.textVertical\">\n\t<div cdkDrag [cdkDragData]=\"coluna\" cdkDragLockAxis=\"x\"\n\t\tclass=\"table-header-text table-drag-container drop-option {{ coluna.classeHeader }}\" [title]=\"coluna.titulo\"\n\t\t[innerHTML]=\"coluna.tituloReduzido ?? coluna.titulo\" [attr.ordem]=\"coluna.ordem\"\n\t\t(click)=\"coluna.sortable !== false && onColumnSort(coluna.prop)\">\n\t</div>\n\t<div class=\"table-header-controls\" (dblclick)=\"onResizeDoubleClick($event, coluna)\"\n\t\t(mousedown)=\"onResizeStart($event, coluna)\">\n\t\t@if (coluna.sortable !== false) {\n\t\t<span class=\"table-ico-sort\">\n\t\t\t@if (getOrdenacaoDirecao(coluna.prop) === 'asc') {\n\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t} @else if (getOrdenacaoDirecao(coluna.prop) === 'desc') {\n\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t}\n\t\t</span>\n\t\t}\n\t</div>\n</div>\n}\n}\n\n@if(config().showActionsLine) {\n<div class=\"table-header table-action-line header-last-col\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[innerHTML]=\"!isCompacted() ? config().actionsLineConfig.headerDisplayMore : ''\"></div>\n}", styles: [":host{display:contents}\n"] }]
6696
+ }], propDecorators: { colunas: [{ type: i0.Input, args: [{ isSignal: true, alias: "colunas", required: true }] }], ordenacoes: [{ type: i0.Input, args: [{ isSignal: true, alias: "ordenacoes", required: true }] }], todosSelecionados: [{ type: i0.Input, args: [{ isSignal: true, alias: "todosSelecionados", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], hasSeletor: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSeletor", required: false }] }], hasVerticalLine: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasVerticalLine", required: false }] }], hasGrid: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasGrid", required: false }] }], isCompacted: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompacted", required: false }] }], isSelectingAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSelectingAll", required: false }] }], columnSort: [{ type: i0.Output, args: ["columnSort"] }], selectAll: [{ type: i0.Output, args: ["selectAll"] }], columnResizeStart: [{ type: i0.Output, args: ["columnResizeStart"] }], columnResizeDoubleClick: [{ type: i0.Output, args: ["columnResizeDoubleClick"] }] } });
6697
+
6698
+ class GridPagination {
6699
+ paginacao = input.required(...(ngDevMode ? [{ debugName: "paginacao" }] : /* istanbul ignore next */ []));
6700
+ totalPaginas = input.required(...(ngDevMode ? [{ debugName: "totalPaginas" }] : /* istanbul ignore next */ []));
6701
+ pageChange = output();
6702
+ onPreviousPage() {
6703
+ const atual = this.paginacao().paginaAtual;
6704
+ if (atual > 1) {
6705
+ this.pageChange.emit(atual - 1);
6706
+ }
6707
+ }
6708
+ onNextPage() {
6709
+ const atual = this.paginacao().paginaAtual;
6710
+ if (atual < this.totalPaginas()) {
6711
+ this.pageChange.emit(atual + 1);
6712
+ }
6713
+ }
6714
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridPagination, deps: [], target: i0.ɵɵFactoryTarget.Component });
6715
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: GridPagination, isStandalone: true, selector: "lib-grid-pagination", inputs: { paginacao: { classPropertyName: "paginacao", publicName: "paginacao", isSignal: true, isRequired: true, transformFunction: null }, totalPaginas: { classPropertyName: "totalPaginas", publicName: "totalPaginas", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "@if(paginacao()) {\n<div class=\"table-pagination\">\n\t<div class=\"pagination-info\">\n\t\t<span>P\u00E1gina {{ paginacao().paginaAtual }} de {{ totalPaginas() }}</span>\n\t\t<span>| Total: {{ paginacao().totalItens }} itens</span>\n\t</div>\n\n\t<div class=\"pagination-controls\">\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onPreviousPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ticone=\"bi bi-chevron-left\">\n\t\t\tAnterior\n\t\t</ui-button>\n\n\t\t<span class=\"pagination-current\">{{ paginacao().paginaAtual }}</span>\n\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onNextPage()\"\n\t\t\t[disabled]=\"paginacao().paginaAtual >= totalPaginas()\" icone=\"bi bi-chevron-right\">\n\t\t\tPr\u00F3ximo\n\t\t</ui-button>\n\t</div>\n</div>\n}", styles: [".table-pagination{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border-top:1px solid var(--mk-grid-border, #ccc)}.pagination-info{font-size:.875rem;color:var(--mk-grid-text, #666)}.pagination-controls{display:flex;align-items:center;gap:.5rem}.pagination-current{padding:.5rem 1rem;border:1px solid var(--mk-grid-border, #ccc);border-radius:4px;min-width:50px;text-align:center}.items-per-page{display:flex;align-items:center;gap:.5rem;font-size:.875rem}\n"], dependencies: [{ kind: "component", type: UiButton, selector: "ui-button", inputs: ["icone", "iconeAntes", "iconeDepois", "iconeCategory", "disabled", "eventPropagation", "radiusTabFormat", "tabindex", "tipo", "tema", "classes", "ativo"], outputs: ["iconeChange", "iconeAntesChange", "iconeDepoisChange", "iconeCategoryChange", "clicked", "temaChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6716
+ }
6717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridPagination, decorators: [{
6718
+ type: Component,
6719
+ args: [{ selector: 'lib-grid-pagination', imports: [UiButton], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if(paginacao()) {\n<div class=\"table-pagination\">\n\t<div class=\"pagination-info\">\n\t\t<span>P\u00E1gina {{ paginacao().paginaAtual }} de {{ totalPaginas() }}</span>\n\t\t<span>| Total: {{ paginacao().totalItens }} itens</span>\n\t</div>\n\n\t<div class=\"pagination-controls\">\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onPreviousPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ticone=\"bi bi-chevron-left\">\n\t\t\tAnterior\n\t\t</ui-button>\n\n\t\t<span class=\"pagination-current\">{{ paginacao().paginaAtual }}</span>\n\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onNextPage()\"\n\t\t\t[disabled]=\"paginacao().paginaAtual >= totalPaginas()\" icone=\"bi bi-chevron-right\">\n\t\t\tPr\u00F3ximo\n\t\t</ui-button>\n\t</div>\n</div>\n}", styles: [".table-pagination{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border-top:1px solid var(--mk-grid-border, #ccc)}.pagination-info{font-size:.875rem;color:var(--mk-grid-text, #666)}.pagination-controls{display:flex;align-items:center;gap:.5rem}.pagination-current{padding:.5rem 1rem;border:1px solid var(--mk-grid-border, #ccc);border-radius:4px;min-width:50px;text-align:center}.items-per-page{display:flex;align-items:center;gap:.5rem;font-size:.875rem}\n"] }]
6720
+ }], propDecorators: { paginacao: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginacao", required: true }] }], totalPaginas: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPaginas", required: true }] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }] } });
6721
+
6722
+ class GridFilterBar {
6723
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
6724
+ colunasDefinidas = input.required(...(ngDevMode ? [{ debugName: "colunasDefinidas" }] : /* istanbul ignore next */ []));
6725
+ colAgrupadoAtual = input.required(...(ngDevMode ? [{ debugName: "colAgrupadoAtual" }] : /* istanbul ignore next */ []));
6726
+ isAgrupado = input.required(...(ngDevMode ? [{ debugName: "isAgrupado" }] : /* istanbul ignore next */ []));
6727
+ filterCollapsed = input(false, ...(ngDevMode ? [{ debugName: "filterCollapsed" }] : /* istanbul ignore next */ []));
6728
+ searchInput = output();
6729
+ actionTriggered = output();
6730
+ filterToggle = output();
6731
+ groupByColumn = output();
6732
+ clearGroups = output();
6733
+ collapseGroups = output();
6734
+ expandGroups = output();
6735
+ outsideMenuActionsTop = computed(() => {
6736
+ return this.config().actionsTop.filter(a => a.inmenu == false && a.showAction);
6737
+ }, ...(ngDevMode ? [{ debugName: "outsideMenuActionsTop" }] : /* istanbul ignore next */ []));
6738
+ menuActionsTop = computed(() => {
6739
+ return this.config().actionsTop.filter(a => a.inmenu != false && a.showAction);
6740
+ }, ...(ngDevMode ? [{ debugName: "menuActionsTop" }] : /* istanbul ignore next */ []));
6741
+ Math = Math;
6742
+ onInputSearch(text) {
6743
+ this.searchInput.emit(text);
6744
+ }
6745
+ onClickOpenCloseFilterZone() {
6746
+ this.filterToggle.emit();
6747
+ }
6748
+ onClickAction(action) {
6749
+ if (action) {
6750
+ this.actionTriggered.emit(action);
6751
+ }
6752
+ }
6753
+ onAgruparPor(coluna) {
6754
+ this.groupByColumn.emit(coluna);
6755
+ }
6756
+ onClearGroups() {
6757
+ this.clearGroups.emit();
6758
+ }
6759
+ onRecolherGroups() {
6760
+ this.collapseGroups.emit();
6761
+ }
6762
+ onExpandirGroups() {
6763
+ this.expandGroups.emit();
6764
+ }
6765
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridFilterBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
6766
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: GridFilterBar, isStandalone: true, selector: "lib-grid-filter-bar", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, colunasDefinidas: { classPropertyName: "colunasDefinidas", publicName: "colunasDefinidas", isSignal: true, isRequired: true, transformFunction: null }, colAgrupadoAtual: { classPropertyName: "colAgrupadoAtual", publicName: "colAgrupadoAtual", isSignal: true, isRequired: true, transformFunction: null }, isAgrupado: { classPropertyName: "isAgrupado", publicName: "isAgrupado", isSignal: true, isRequired: true, transformFunction: null }, filterCollapsed: { classPropertyName: "filterCollapsed", publicName: "filterCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchInput: "searchInput", actionTriggered: "actionTriggered", filterToggle: "filterToggle", groupByColumn: "groupByColumn", clearGroups: "clearGroups", collapseGroups: "collapseGroups", expandGroups: "expandGroups" }, ngImport: i0, template: "@if(config().showControlBar) {\n<div class=\"table-topo-container table-styles\">\n\n\t@if(config().showActionsTop) {\n\t<div class=\"table-actions-outside\">\n\t\t@for (action of outsideMenuActionsTop(); track $index;) {\n\t\t<ui-button tipo=\"fill\" tema=\"primary\" [title]=\"action.display\" (click)=\"onClickAction(action)\"\n\t\t\t[icone]=\"action.icon\">\n\t\t\t{{ action?.display ?? '' }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n\t<div class=\"table-top-right-container table-conjunto-actions\">\n\t\t@if(config().showSearch) {\n\t\t<div class=\"table-conjunto-actions-item table-pesquisar\">\n\t\t\t<ui-procurar (inputed)=\"onInputSearch($event)\" [autoColapse]=\"true\"></ui-procurar>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showFilterBar) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onClickOpenCloseFilterZone()\" icone=\"bi bi-funnel\"\n\t\t\t\t[style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t<span class=\"table-collapse-ico\" [class.ativo]=\"!filterCollapsed()\"><i class=\"bi bi-caret-down\"></i></span>\n\t\t\t</ui-button>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showGridMenu != false) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t<ui-button slot=\"botao\" tipo=\"nofill\" tema=\"primary\" class=\"filtro-menu\"\n\t\t\t\t\t[title]=\"config().actionsTopConfig.menuDisplay\" [style.--ui-border-radius]=\"'0px'\"\n\t\t\t\t\t[icone]=\"config().actionsTopConfig.showMenuIcon ? config().actionsTopConfig.menuIcon : undefined\">\n\t\t\t\t\t{{ config().actionsTopConfig.menuDisplay }}\n\t\t\t\t</ui-button>\n\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\tOp\u00E7\u00F5es da Listagem\n\t\t\t\t</div>\n\n\t\t\t\t@for (action of menuActionsTop(); track $index;) {\n\t\t\t\t@if(action.actions != null) {\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" [title]=\"action.display\"\n\t\t\t\t\t\t[style.--ui-border-radius]=\"'0px'\" [icone]=\"action.icon\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</div>\n\t\t\t\t\t@for(subAction of action.actions; track $index) {\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(subAction)\"\n\t\t\t\t\t\t[icone]=\"subAction?.showIcon ? (subAction?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t\t{{ subAction?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t}\n\t\t\t\t</ui-menu>\n\t\t\t\t} @else {\n\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(action)\"\n\t\t\t\t\t[icone]=\"action?.showIcon ? (action?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t</ui-button>\n\t\t\t\t}\n\t\t\t\t}@empty {\n\t\t\t\t<div class=\"p-2 text-center text-muted\">\n\t\t\t\t\tNenhuma a\u00E7\u00E3o dispon\u00EDvel.\n\t\t\t\t</div>\n\t\t\t\t}\n\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" icone=\"fa fa-object-group\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\">\n\t\t\t\t\t\t\tAgrupar Por\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t<div class=\"menu-sub-title\">\n\t\t\t\t\t\t\tAgrupar por\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t@for (coluna of colunasDefinidas(); track $index) {\n\t\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onAgruparPor(coluna)\"\n\t\t\t\t\t\t\t[icone]=\"isAgrupado() && colAgrupadoAtual()?.prop === coluna.prop ? 'bi bi-check2-square' : 'bi bi-square'\">\n\t\t\t\t\t\t\t{{ coluna.titulo }}\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</ui-menu>\n\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\"\n\t\t\t\t\t\t[disabled]=\"!isAgrupado()\">\n\t\t\t\t\t\tDesagrupar\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\t\t\t\t\tRecolher Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\t\t\t\t\tExpandir Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t</ui-menu>\n\t\t\t</ui-menu>\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>\n}", styles: [":host{--mk-grid-border-radius: var(--sys-border-radius, 10px);--mk-grid-gap: var(--sys-gap, 8px);--mk-grid-lum-10: var(--sys-lum-10, 95%);--mk-grid-card: var(--sys-card, hsl(216 22% 96%));--mk-grid-background: var(--sys-background, hsl(0 0% 100%));--mk-grid-bg-card: var(--mk-grid-card);--mk-grid-bg: var(--mk-grid-background);--mk-grid-outline: var(--sys-outline, hsl(220 15% 86%));--mk-grid-primary: var(--sys-primary, hsl(224 74% 53%));--mk-grid-on-primary: var(--sys-on-primary, hsl(0 0% 100%));--mk-grid-secondary: var(--sys-secondary, hsl(221 44% 49%));--mk-grid-error: var(--sys-error, hsl(0 66% 47%));--mk-grid-info: var(--sys-info, hsl(210 79% 46%));--mk-grid-high: var(--sys-high, hsl(221 100% 97%));--mk-grid-on-high: var(--sys-on-high, hsl(222 35% 16%));--mk-grid-on-card: var(--sys-on-card, hsl(221 27% 16%));--mk-grid-on-card-variant: var(--sys-on-card-variant, hsl(222 15% 43%));--mk-grid-on-background: var(--sys-on-background, hsl(222 20% 20%));--mk-grid-primary-15: var(--sys-primary-15, hsl(224 74% 53% / 15%))}:host .drag-container{cursor:grab}:host .drag-container:active{cursor:grabbing}:host-context(body:has(.cdk-drag-preview)) .drop-option{outline:1px dashed var(--mk-grid-outline)}:host-context(body:has(.cdk-drag-preview)) .drop-option:hover{outline:1px solid var(--mk-grid-outline);background-color:var(--mk-grid-high)}:host ui-menu>ui-button{border-bottom:1px solid var(--ui-outline-color, var(--mk-grid-outline))}:host .menu-title{font-size:1.2rem;font-weight:600;padding:0 calc(var(--mk-grid-gap) / 2) var(--mk-grid-gap) calc(var(--mk-grid-gap) / 2);border-bottom:1px solid var(--mk-grid-outline);display:flex;justify-content:space-between;align-items:center;gap:var(--mk-grid-gap)}:host .menu-sub-title{font-size:14px;font-weight:500;display:flex;justify-content:flex-start;align-items:center;gap:var(--mk-grid-gap);padding-left:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host .menu-sub-value{font-size:14px;font-weight:400;display:flex;justify-content:flex-end;align-items:center;gap:calc(var(--mk-grid-gap) / 2);padding-right:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host{display:flex;flex-direction:column}.table-overflow{display:grid;overflow:auto;margin-top:10px;padding:0;position:relative}.table-overflow.compacted{justify-content:center}.table-overflow.mobile{border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-overflow.mobile{overflow:hidden}.table-table-mobile,.table-table{display:grid;font-size:13px}.table-table-mobile{grid-template-columns:1fr 1fr}.table-header,.table-header-mobile{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);transition:background-color .2s ease;display:flex;flex-wrap:wrap;align-items:center;align-content:stretch;justify-content:center;-webkit-user-select:none;user-select:none;min-height:var(--table-min-height)}.table-header-mobile{padding:0 5px}.table-header-mobile-space{flex:1;height:100%;display:flex;align-items:center;justify-content:center}.table-header-mobile-text,.table-header-text{flex:1;font-weight:600;text-align:center;display:block;align-content:center}.table-header-mobile-text{text-align:start}.table-header-text{height:100%;border-radius:var(--mk-grid-border-radius);position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-drag-preview{font-size:14px!important;background:var(--mk-grid-high);color:var(--mk-grid-on-high);opacity:.6}.cdk-drop-list-receiving:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-info);filter:opacity(.5)}.cdk-drag-placeholder:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-primary)}.textVertical .table-header-text{writing-mode:vertical-lr;text-orientation:upright;letter-spacing:-5px;padding-bottom:5px;text-align:right;align-self:end;display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.table-header-controls{width:6px;min-width:6px;max-width:6px;cursor:col-resize;height:100%;display:flex;align-items:center;justify-content:center}.table-ico-sort{font-size:10px;color:color-mix(in srgb,var(--mk-grid-secondary) 50%,var(--mk-grid-on-primary) 50%)}.table-ico-sort .asc{animation:aniSortUp 1s infinite cubic-bezier(.175,.885,.32,1.275)}.table-ico-sort .desc{animation:aniSortDown 1s infinite cubic-bezier(.175,.885,.32,1.275)}@keyframes aniSortUp{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(-3px) scale(1.1)}to{transform:translateY(0) scale(1)}}@keyframes aniSortDown{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(3px) scale(1.1)}to{transform:translateY(0) scale(1)}}.table-row,.table-row-mobile{display:flex;justify-content:space-between;align-items:center}.table-row{background:color-mix(in srgb,var(--mk-grid-primary) 10%,var(--mk-grid-background) 90%)}.table-row-mobile{margin-top:10px}.table-group{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2);border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group:has(.table-group-collapse){border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2);border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group.table-formated{padding-left:10px}.table-group-items-area{display:flex;justify-content:flex-end;align-items:center;gap:8px;font-size:12px;font-style:italic;color:color-mix(in srgb,var(--mk-grid-on-background) 60%,var(--mk-grid-background) 40%);overflow:hidden}.table-group-items-ico{transition:transform .3s ease;transform:rotate(180deg)}.table-group-name{flex:1;height:100%;display:flex;align-items:center}.table-group-collapse .table-group-items-ico{transition:transform .3s ease;transform:rotate(0);color:color-mix(in srgb,var(--mk-grid-primary) 60%,var(--mk-grid-background) 40%)}.table-formated{min-height:var(--table-min-height);padding:1px 2px;font-size:14px}.table-dados{min-height:var(--table-min-height);padding:1px 2px}.table-item{cursor:pointer}.table-item,.table-header{border-left:0px solid transparent;border-right:0px solid transparent}.table-header:first-child{border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-item:last-child{border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2)}.header-last-col{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line) .table-item:nth-last-child(-n+1 of div.table-item-seletor){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line,.table-has-seletor) .table-dados:nth-last-child(-n+1 of.table-first-col){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header:nth-last-child(-n+1 of div.table-vertical-line){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header-mobile.table-vertical-line,.table-header.table-vertical-line,.table-item.table-vertical-line{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);display:flex;justify-content:center;align-items:center}.table-grupo-seletor,.table-item-seletor{display:flex;justify-content:center;align-items:center}.table-header-mobile.sortable .table-header-text,.table-header.sortable .table-header-text{cursor:pointer;-webkit-user-select:none;user-select:none}.table-header-mobile.sortable:hover,.table-header.sortable:hover,.table-header-mobile.sorted-asc,.table-header-mobile.sorted-desc,.table-header.sorted-asc,.table-header.sorted-desc{background:color-mix(in srgb,var(--mk-grid-secondary) 30%,var(--mk-grid-primary) 70%);color:var(--mk-grid-on-primary)}.table-row.table-errors,.table-row.table-loader{justify-content:center}.table-border-bottom-card{border-bottom:1px solid var(--mk-grid-card)}.table-border-left-darker{border-left:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-right-darker{border-right:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-left{border-left:1px solid var(--mk-grid-background)}.table-border-right{border-right:1px solid var(--mk-grid-background)}.table-item-mobile,.table-item{transition:background-color .2s cubic-bezier(.075,.82,.165,1);border-bottom:1px solid var(--mk-grid-background);position:relative}.table-item.hashue{background-color:hsl(var(--bghue) 100 var(--mk-grid-lum-10))}.table-item-mobile.odd:before,.table-item.odd:before,.table-item-mobile.even:before,.table-item.even:before,.table-item.table-bg-error:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;background:var(--mk-grid-background)}.table-item-mobile.odd:before,.table-item.odd:before{opacity:.2}.table-item-mobile.even:before,.table-item.even:before{opacity:.1}.table-item.table-bg-error:after{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;outline-offset:0px;outline:2px solid var(--mk-grid-error);background-color:var(--mk-grid-error);opacity:.04}.table-border-right-error{border-right:1px dashed color-mix(in srgb,var(--mk-grid-error) 50%,transparent 50%)}.table-styles{color:var(--mk-grid-on-card);background:color-mix(in srgb,var(--mk-grid-outline) 20%,var(--mk-grid-card) 80%);border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-show-error{display:flex;justify-content:center;align-items:center;padding:16px;margin-top:10px}.table-topo-container{display:flex;flex-wrap:wrap;align-items:center;font-size:14px;padding:8px;gap:1rem}.table-actions-outside{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-start;gap:8px}.table-top-right-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;flex:1}.table-collapse-ico{display:inline-block;transition:transform .3s}.table-collapse-ico.ativo{transition:transform .3s ease-in-out;transform:rotate(-180deg)}.table-filter-content{font-size:14px;padding:8px;overflow:hidden;transition:all .3s cubic-bezier(.075,.82,.165,1);position:relative;opacity:1}.table-filter-content.table-filter-hide{padding:0;opacity:0;margin-top:calc(var(--filter-height) * -1);transition:all .3s cubic-bezier(.075,.82,.165,1)}.table-filter-container:has(.table-filter-hide){pointer-events:none;-webkit-user-select:none;user-select:none}.table-conjunto-actions{position:relative;display:flex;align-items:stretch}.table-conjunto-actions>*{outline:1px solid var(--mk-grid-outline);outline-offset:-1px}.table-conjunto-actions>:first-child{border-radius:var(--mk-grid-border-radius);border-top-right-radius:0;border-bottom-right-radius:0}.table-conjunto-actions>:last-child{border-radius:0 7px 7px 0}.table-conjunto-actions-item{display:flex;align-items:center;justify-content:center;padding:0;min-height:40px}.table-inativo{color:var(--mk-grid-error)}.table-pagination-overflow{display:grid;align-items:center;overflow:auto;margin-top:10px}.table-pagination-overflow.compacted{margin-top:2px;justify-content:center}.table-pagination-container{display:flex;align-items:center;justify-content:space-between;padding:16px;flex-wrap:wrap;gap:16px;flex:1}.table-pagination-overflow.compacted .table-pagination-container{padding:2px 4px;gap:4px}.table-pagination-overflow.compacted.table-has-pages .table-pagination-controls{border-left:1px solid var(--mk-grid-card);border-right:1px solid var(--mk-grid-card)}.table-pagination-info{display:flex;flex-direction:column;color:var(--mk-grid-on-card-variant);font-size:12px}.table-pagination-controls{display:flex;align-items:center;gap:4px}.table-pagination-show{border-radius:var(--mk-grid-border-radius);min-width:47px;min-height:38px;display:flex;justify-content:center;align-items:center;font-size:12px}.table-pagination-per-page{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mk-grid-on-card-variant);flex-wrap:nowrap;white-space:nowrap}.table-pagination-per-page-select{--ui-width: 50px;font-size:12px;text-align:center}.table-performance{font-size:10px;font-style:italic}.compacted .table-pagination-range{display:none}.compacted .table-pagination-totais{font-size:10px}.compacted .table-performance{display:none}.table-empty{display:flex;justify-content:center;align-items:center;padding:16px}.table-info-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px;font-size:12px;border-left:4px solid var(--mk-grid-primary);padding:12px 16px;margin-top:10px}@media(max-width:768px){.table-pagination-container{flex-direction:column;align-items:stretch;padding:2px}.table-pagination-overflow.compacted .table-pagination-container{padding:0}.table-pagination-controls{justify-content:center}.table-pagination-info{flex-direction:row;justify-content:space-around;gap:10px}.table-pagination-per-page{justify-content:center}}@media(max-width:480px){.table-topo-container{flex-direction:column;align-items:stretch}.table-pagination-container{flex-wrap:wrap;justify-content:space-evenly}.table-small-screen-hide{display:none}}\n", ":host{display:block}\n"], dependencies: [{ kind: "component", type: UiButton, selector: "ui-button", inputs: ["icone", "iconeAntes", "iconeDepois", "iconeCategory", "disabled", "eventPropagation", "radiusTabFormat", "tabindex", "tipo", "tema", "classes", "ativo"], outputs: ["iconeChange", "iconeAntesChange", "iconeDepoisChange", "iconeCategoryChange", "clicked", "temaChange"] }, { kind: "component", type: UiMenu, selector: "ui-menu", inputs: ["disabled", "icone", "autoCloseInCascade", "posicao", "isOpened"], outputs: ["autoCloseInCascadeChange", "posicaoChange", "isOpenedChange"] }, { kind: "component", type: UiProcurar, selector: "ui-procurar", inputs: ["value", "colapsed", "autoColapse", "name", "placeholder", "disabled"], outputs: ["inputed", "changed", "valueChange", "colapsedChange", "autoColapseChange"] }] });
6767
+ }
6768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridFilterBar, decorators: [{
6769
+ type: Component,
6770
+ args: [{ selector: 'lib-grid-filter-bar', imports: [UiButton, UiMenu, UiProcurar], template: "@if(config().showControlBar) {\n<div class=\"table-topo-container table-styles\">\n\n\t@if(config().showActionsTop) {\n\t<div class=\"table-actions-outside\">\n\t\t@for (action of outsideMenuActionsTop(); track $index;) {\n\t\t<ui-button tipo=\"fill\" tema=\"primary\" [title]=\"action.display\" (click)=\"onClickAction(action)\"\n\t\t\t[icone]=\"action.icon\">\n\t\t\t{{ action?.display ?? '' }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n\t<div class=\"table-top-right-container table-conjunto-actions\">\n\t\t@if(config().showSearch) {\n\t\t<div class=\"table-conjunto-actions-item table-pesquisar\">\n\t\t\t<ui-procurar (inputed)=\"onInputSearch($event)\" [autoColapse]=\"true\"></ui-procurar>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showFilterBar) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onClickOpenCloseFilterZone()\" icone=\"bi bi-funnel\"\n\t\t\t\t[style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t<span class=\"table-collapse-ico\" [class.ativo]=\"!filterCollapsed()\"><i class=\"bi bi-caret-down\"></i></span>\n\t\t\t</ui-button>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showGridMenu != false) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t<ui-button slot=\"botao\" tipo=\"nofill\" tema=\"primary\" class=\"filtro-menu\"\n\t\t\t\t\t[title]=\"config().actionsTopConfig.menuDisplay\" [style.--ui-border-radius]=\"'0px'\"\n\t\t\t\t\t[icone]=\"config().actionsTopConfig.showMenuIcon ? config().actionsTopConfig.menuIcon : undefined\">\n\t\t\t\t\t{{ config().actionsTopConfig.menuDisplay }}\n\t\t\t\t</ui-button>\n\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\tOp\u00E7\u00F5es da Listagem\n\t\t\t\t</div>\n\n\t\t\t\t@for (action of menuActionsTop(); track $index;) {\n\t\t\t\t@if(action.actions != null) {\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" [title]=\"action.display\"\n\t\t\t\t\t\t[style.--ui-border-radius]=\"'0px'\" [icone]=\"action.icon\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</div>\n\t\t\t\t\t@for(subAction of action.actions; track $index) {\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(subAction)\"\n\t\t\t\t\t\t[icone]=\"subAction?.showIcon ? (subAction?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t\t{{ subAction?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t}\n\t\t\t\t</ui-menu>\n\t\t\t\t} @else {\n\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(action)\"\n\t\t\t\t\t[icone]=\"action?.showIcon ? (action?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t</ui-button>\n\t\t\t\t}\n\t\t\t\t}@empty {\n\t\t\t\t<div class=\"p-2 text-center text-muted\">\n\t\t\t\t\tNenhuma a\u00E7\u00E3o dispon\u00EDvel.\n\t\t\t\t</div>\n\t\t\t\t}\n\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" icone=\"fa fa-object-group\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\">\n\t\t\t\t\t\t\tAgrupar Por\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t<div class=\"menu-sub-title\">\n\t\t\t\t\t\t\tAgrupar por\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t@for (coluna of colunasDefinidas(); track $index) {\n\t\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onAgruparPor(coluna)\"\n\t\t\t\t\t\t\t[icone]=\"isAgrupado() && colAgrupadoAtual()?.prop === coluna.prop ? 'bi bi-check2-square' : 'bi bi-square'\">\n\t\t\t\t\t\t\t{{ coluna.titulo }}\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</ui-menu>\n\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\"\n\t\t\t\t\t\t[disabled]=\"!isAgrupado()\">\n\t\t\t\t\t\tDesagrupar\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\t\t\t\t\tRecolher Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\t\t\t\t\tExpandir Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t</ui-menu>\n\t\t\t</ui-menu>\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>\n}", styles: [":host{--mk-grid-border-radius: var(--sys-border-radius, 10px);--mk-grid-gap: var(--sys-gap, 8px);--mk-grid-lum-10: var(--sys-lum-10, 95%);--mk-grid-card: var(--sys-card, hsl(216 22% 96%));--mk-grid-background: var(--sys-background, hsl(0 0% 100%));--mk-grid-bg-card: var(--mk-grid-card);--mk-grid-bg: var(--mk-grid-background);--mk-grid-outline: var(--sys-outline, hsl(220 15% 86%));--mk-grid-primary: var(--sys-primary, hsl(224 74% 53%));--mk-grid-on-primary: var(--sys-on-primary, hsl(0 0% 100%));--mk-grid-secondary: var(--sys-secondary, hsl(221 44% 49%));--mk-grid-error: var(--sys-error, hsl(0 66% 47%));--mk-grid-info: var(--sys-info, hsl(210 79% 46%));--mk-grid-high: var(--sys-high, hsl(221 100% 97%));--mk-grid-on-high: var(--sys-on-high, hsl(222 35% 16%));--mk-grid-on-card: var(--sys-on-card, hsl(221 27% 16%));--mk-grid-on-card-variant: var(--sys-on-card-variant, hsl(222 15% 43%));--mk-grid-on-background: var(--sys-on-background, hsl(222 20% 20%));--mk-grid-primary-15: var(--sys-primary-15, hsl(224 74% 53% / 15%))}:host .drag-container{cursor:grab}:host .drag-container:active{cursor:grabbing}:host-context(body:has(.cdk-drag-preview)) .drop-option{outline:1px dashed var(--mk-grid-outline)}:host-context(body:has(.cdk-drag-preview)) .drop-option:hover{outline:1px solid var(--mk-grid-outline);background-color:var(--mk-grid-high)}:host ui-menu>ui-button{border-bottom:1px solid var(--ui-outline-color, var(--mk-grid-outline))}:host .menu-title{font-size:1.2rem;font-weight:600;padding:0 calc(var(--mk-grid-gap) / 2) var(--mk-grid-gap) calc(var(--mk-grid-gap) / 2);border-bottom:1px solid var(--mk-grid-outline);display:flex;justify-content:space-between;align-items:center;gap:var(--mk-grid-gap)}:host .menu-sub-title{font-size:14px;font-weight:500;display:flex;justify-content:flex-start;align-items:center;gap:var(--mk-grid-gap);padding-left:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host .menu-sub-value{font-size:14px;font-weight:400;display:flex;justify-content:flex-end;align-items:center;gap:calc(var(--mk-grid-gap) / 2);padding-right:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host{display:flex;flex-direction:column}.table-overflow{display:grid;overflow:auto;margin-top:10px;padding:0;position:relative}.table-overflow.compacted{justify-content:center}.table-overflow.mobile{border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-overflow.mobile{overflow:hidden}.table-table-mobile,.table-table{display:grid;font-size:13px}.table-table-mobile{grid-template-columns:1fr 1fr}.table-header,.table-header-mobile{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);transition:background-color .2s ease;display:flex;flex-wrap:wrap;align-items:center;align-content:stretch;justify-content:center;-webkit-user-select:none;user-select:none;min-height:var(--table-min-height)}.table-header-mobile{padding:0 5px}.table-header-mobile-space{flex:1;height:100%;display:flex;align-items:center;justify-content:center}.table-header-mobile-text,.table-header-text{flex:1;font-weight:600;text-align:center;display:block;align-content:center}.table-header-mobile-text{text-align:start}.table-header-text{height:100%;border-radius:var(--mk-grid-border-radius);position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-drag-preview{font-size:14px!important;background:var(--mk-grid-high);color:var(--mk-grid-on-high);opacity:.6}.cdk-drop-list-receiving:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-info);filter:opacity(.5)}.cdk-drag-placeholder:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-primary)}.textVertical .table-header-text{writing-mode:vertical-lr;text-orientation:upright;letter-spacing:-5px;padding-bottom:5px;text-align:right;align-self:end;display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.table-header-controls{width:6px;min-width:6px;max-width:6px;cursor:col-resize;height:100%;display:flex;align-items:center;justify-content:center}.table-ico-sort{font-size:10px;color:color-mix(in srgb,var(--mk-grid-secondary) 50%,var(--mk-grid-on-primary) 50%)}.table-ico-sort .asc{animation:aniSortUp 1s infinite cubic-bezier(.175,.885,.32,1.275)}.table-ico-sort .desc{animation:aniSortDown 1s infinite cubic-bezier(.175,.885,.32,1.275)}@keyframes aniSortUp{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(-3px) scale(1.1)}to{transform:translateY(0) scale(1)}}@keyframes aniSortDown{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(3px) scale(1.1)}to{transform:translateY(0) scale(1)}}.table-row,.table-row-mobile{display:flex;justify-content:space-between;align-items:center}.table-row{background:color-mix(in srgb,var(--mk-grid-primary) 10%,var(--mk-grid-background) 90%)}.table-row-mobile{margin-top:10px}.table-group{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2);border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group:has(.table-group-collapse){border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2);border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group.table-formated{padding-left:10px}.table-group-items-area{display:flex;justify-content:flex-end;align-items:center;gap:8px;font-size:12px;font-style:italic;color:color-mix(in srgb,var(--mk-grid-on-background) 60%,var(--mk-grid-background) 40%);overflow:hidden}.table-group-items-ico{transition:transform .3s ease;transform:rotate(180deg)}.table-group-name{flex:1;height:100%;display:flex;align-items:center}.table-group-collapse .table-group-items-ico{transition:transform .3s ease;transform:rotate(0);color:color-mix(in srgb,var(--mk-grid-primary) 60%,var(--mk-grid-background) 40%)}.table-formated{min-height:var(--table-min-height);padding:1px 2px;font-size:14px}.table-dados{min-height:var(--table-min-height);padding:1px 2px}.table-item{cursor:pointer}.table-item,.table-header{border-left:0px solid transparent;border-right:0px solid transparent}.table-header:first-child{border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-item:last-child{border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2)}.header-last-col{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line) .table-item:nth-last-child(-n+1 of div.table-item-seletor){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line,.table-has-seletor) .table-dados:nth-last-child(-n+1 of.table-first-col){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header:nth-last-child(-n+1 of div.table-vertical-line){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header-mobile.table-vertical-line,.table-header.table-vertical-line,.table-item.table-vertical-line{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);display:flex;justify-content:center;align-items:center}.table-grupo-seletor,.table-item-seletor{display:flex;justify-content:center;align-items:center}.table-header-mobile.sortable .table-header-text,.table-header.sortable .table-header-text{cursor:pointer;-webkit-user-select:none;user-select:none}.table-header-mobile.sortable:hover,.table-header.sortable:hover,.table-header-mobile.sorted-asc,.table-header-mobile.sorted-desc,.table-header.sorted-asc,.table-header.sorted-desc{background:color-mix(in srgb,var(--mk-grid-secondary) 30%,var(--mk-grid-primary) 70%);color:var(--mk-grid-on-primary)}.table-row.table-errors,.table-row.table-loader{justify-content:center}.table-border-bottom-card{border-bottom:1px solid var(--mk-grid-card)}.table-border-left-darker{border-left:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-right-darker{border-right:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-left{border-left:1px solid var(--mk-grid-background)}.table-border-right{border-right:1px solid var(--mk-grid-background)}.table-item-mobile,.table-item{transition:background-color .2s cubic-bezier(.075,.82,.165,1);border-bottom:1px solid var(--mk-grid-background);position:relative}.table-item.hashue{background-color:hsl(var(--bghue) 100 var(--mk-grid-lum-10))}.table-item-mobile.odd:before,.table-item.odd:before,.table-item-mobile.even:before,.table-item.even:before,.table-item.table-bg-error:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;background:var(--mk-grid-background)}.table-item-mobile.odd:before,.table-item.odd:before{opacity:.2}.table-item-mobile.even:before,.table-item.even:before{opacity:.1}.table-item.table-bg-error:after{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;outline-offset:0px;outline:2px solid var(--mk-grid-error);background-color:var(--mk-grid-error);opacity:.04}.table-border-right-error{border-right:1px dashed color-mix(in srgb,var(--mk-grid-error) 50%,transparent 50%)}.table-styles{color:var(--mk-grid-on-card);background:color-mix(in srgb,var(--mk-grid-outline) 20%,var(--mk-grid-card) 80%);border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-show-error{display:flex;justify-content:center;align-items:center;padding:16px;margin-top:10px}.table-topo-container{display:flex;flex-wrap:wrap;align-items:center;font-size:14px;padding:8px;gap:1rem}.table-actions-outside{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-start;gap:8px}.table-top-right-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;flex:1}.table-collapse-ico{display:inline-block;transition:transform .3s}.table-collapse-ico.ativo{transition:transform .3s ease-in-out;transform:rotate(-180deg)}.table-filter-content{font-size:14px;padding:8px;overflow:hidden;transition:all .3s cubic-bezier(.075,.82,.165,1);position:relative;opacity:1}.table-filter-content.table-filter-hide{padding:0;opacity:0;margin-top:calc(var(--filter-height) * -1);transition:all .3s cubic-bezier(.075,.82,.165,1)}.table-filter-container:has(.table-filter-hide){pointer-events:none;-webkit-user-select:none;user-select:none}.table-conjunto-actions{position:relative;display:flex;align-items:stretch}.table-conjunto-actions>*{outline:1px solid var(--mk-grid-outline);outline-offset:-1px}.table-conjunto-actions>:first-child{border-radius:var(--mk-grid-border-radius);border-top-right-radius:0;border-bottom-right-radius:0}.table-conjunto-actions>:last-child{border-radius:0 7px 7px 0}.table-conjunto-actions-item{display:flex;align-items:center;justify-content:center;padding:0;min-height:40px}.table-inativo{color:var(--mk-grid-error)}.table-pagination-overflow{display:grid;align-items:center;overflow:auto;margin-top:10px}.table-pagination-overflow.compacted{margin-top:2px;justify-content:center}.table-pagination-container{display:flex;align-items:center;justify-content:space-between;padding:16px;flex-wrap:wrap;gap:16px;flex:1}.table-pagination-overflow.compacted .table-pagination-container{padding:2px 4px;gap:4px}.table-pagination-overflow.compacted.table-has-pages .table-pagination-controls{border-left:1px solid var(--mk-grid-card);border-right:1px solid var(--mk-grid-card)}.table-pagination-info{display:flex;flex-direction:column;color:var(--mk-grid-on-card-variant);font-size:12px}.table-pagination-controls{display:flex;align-items:center;gap:4px}.table-pagination-show{border-radius:var(--mk-grid-border-radius);min-width:47px;min-height:38px;display:flex;justify-content:center;align-items:center;font-size:12px}.table-pagination-per-page{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mk-grid-on-card-variant);flex-wrap:nowrap;white-space:nowrap}.table-pagination-per-page-select{--ui-width: 50px;font-size:12px;text-align:center}.table-performance{font-size:10px;font-style:italic}.compacted .table-pagination-range{display:none}.compacted .table-pagination-totais{font-size:10px}.compacted .table-performance{display:none}.table-empty{display:flex;justify-content:center;align-items:center;padding:16px}.table-info-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px;font-size:12px;border-left:4px solid var(--mk-grid-primary);padding:12px 16px;margin-top:10px}@media(max-width:768px){.table-pagination-container{flex-direction:column;align-items:stretch;padding:2px}.table-pagination-overflow.compacted .table-pagination-container{padding:0}.table-pagination-controls{justify-content:center}.table-pagination-info{flex-direction:row;justify-content:space-around;gap:10px}.table-pagination-per-page{justify-content:center}}@media(max-width:480px){.table-topo-container{flex-direction:column;align-items:stretch}.table-pagination-container{flex-wrap:wrap;justify-content:space-evenly}.table-small-screen-hide{display:none}}\n", ":host{display:block}\n"] }]
6771
+ }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], colunasDefinidas: [{ type: i0.Input, args: [{ isSignal: true, alias: "colunasDefinidas", required: true }] }], colAgrupadoAtual: [{ type: i0.Input, args: [{ isSignal: true, alias: "colAgrupadoAtual", required: true }] }], isAgrupado: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAgrupado", required: true }] }], filterCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterCollapsed", required: false }] }], searchInput: [{ type: i0.Output, args: ["searchInput"] }], actionTriggered: [{ type: i0.Output, args: ["actionTriggered"] }], filterToggle: [{ type: i0.Output, args: ["filterToggle"] }], groupByColumn: [{ type: i0.Output, args: ["groupByColumn"] }], clearGroups: [{ type: i0.Output, args: ["clearGroups"] }], collapseGroups: [{ type: i0.Output, args: ["collapseGroups"] }], expandGroups: [{ type: i0.Output, args: ["expandGroups"] }] } });
6772
+
6773
+ class GridEmptyList {
6774
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridEmptyList, deps: [], target: i0.ɵɵFactoryTarget.Component });
6775
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: GridEmptyList, isStandalone: true, selector: "lib-grid-empty-list", ngImport: i0, template: "<div class=\"microPos5 p-2\">\n\t<div class=\"flex gap-2 f-s-16 text-center nenhumRegistro\">\n\t\t<i class=\"bi bi-database-fill-check\"></i>\n\t\tNenhum registro no filtro aplicado.\n\t</div>\n</div>", styles: [".nenhumRegistro{border-radius:10px;outline:1px solid var(--mk-grid-primary-15);box-shadow:1px 1px 5px var(--mk-grid-secondary),inset -1px -1px 5px var(--mk-grid-primary-15);padding:.4rem .75rem}\n"] });
6776
+ }
6777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridEmptyList, decorators: [{
6778
+ type: Component,
6779
+ args: [{ selector: 'lib-grid-empty-list', imports: [], template: "<div class=\"microPos5 p-2\">\n\t<div class=\"flex gap-2 f-s-16 text-center nenhumRegistro\">\n\t\t<i class=\"bi bi-database-fill-check\"></i>\n\t\tNenhum registro no filtro aplicado.\n\t</div>\n</div>", styles: [".nenhumRegistro{border-radius:10px;outline:1px solid var(--mk-grid-primary-15);box-shadow:1px 1px 5px var(--mk-grid-secondary),inset -1px -1px 5px var(--mk-grid-primary-15);padding:.4rem .75rem}\n"] }]
6780
+ }] });
6781
+
6782
+ const PROP_CONTROLE_ATIVO = 'is_ativo';
6783
+ class MkGrid {
6784
+ lista = input.required(...(ngDevMode ? [{ debugName: "lista" }] : /* istanbul ignore next */ []));
6785
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
6786
+ filtro = input(...(ngDevMode ? [undefined, { debugName: "filtro" }] : /* istanbul ignore next */ []));
6787
+ colunasDefinidas = signal([], ...(ngDevMode ? [{ debugName: "colunasDefinidas" }] : /* istanbul ignore next */ []));
6788
+ colunasFiltradas = signal([], ...(ngDevMode ? [{ debugName: "colunasFiltradas" }] : /* istanbul ignore next */ []));
6789
+ colunasOrdenadas = signal([], ...(ngDevMode ? [{ debugName: "colunasOrdenadas" }] : /* istanbul ignore next */ []));
6790
+ colunasExibir = signal([], ...(ngDevMode ? [{ debugName: "colunasExibir" }] : /* istanbul ignore next */ []));
6791
+ gridTemplateColumns = signal('auto', ...(ngDevMode ? [{ debugName: "gridTemplateColumns" }] : /* istanbul ignore next */ []));
6792
+ inputSearchText = signal('', ...(ngDevMode ? [{ debugName: "inputSearchText" }] : /* istanbul ignore next */ []));
6793
+ selectedRows = signal([], ...(ngDevMode ? [{ debugName: "selectedRows" }] : /* istanbul ignore next */ []));
6794
+ selecionandoLinhas = signal([], ...(ngDevMode ? [{ debugName: "selecionandoLinhas" }] : /* istanbul ignore next */ []));
6795
+ gruposColapsed = signal([], ...(ngDevMode ? [{ debugName: "gruposColapsed" }] : /* istanbul ignore next */ []));
6796
+ isAgrupado = signal(false, ...(ngDevMode ? [{ debugName: "isAgrupado" }] : /* istanbul ignore next */ []));
6797
+ isAgrupadoLimpo = signal(false, ...(ngDevMode ? [{ debugName: "isAgrupadoLimpo" }] : /* istanbul ignore next */ []));
6798
+ gruposEncontrados = {
6799
+ itens: new Set()
6800
+ };
6801
+ numOrdemPrimeiroExibido = signal(1, ...(ngDevMode ? [{ debugName: "numOrdemPrimeiroExibido" }] : /* istanbul ignore next */ []));
6802
+ numOrdemUltimoExibido = signal(1, ...(ngDevMode ? [{ debugName: "numOrdemUltimoExibido" }] : /* istanbul ignore next */ []));
6803
+ pxVerticalLine = signal('', ...(ngDevMode ? [{ debugName: "pxVerticalLine" }] : /* istanbul ignore next */ []));
6804
+ pxSelector = signal('', ...(ngDevMode ? [{ debugName: "pxSelector" }] : /* istanbul ignore next */ []));
6805
+ pxColunas = signal('', ...(ngDevMode ? [{ debugName: "pxColunas" }] : /* istanbul ignore next */ []));
6806
+ pxActions = signal('', ...(ngDevMode ? [{ debugName: "pxActions" }] : /* istanbul ignore next */ []));
6807
+ totalColsVisivel = signal(0, ...(ngDevMode ? [{ debugName: "totalColsVisivel" }] : /* istanbul ignore next */ []));
6808
+ colAgrupadoAtual = signal(null, ...(ngDevMode ? [{ debugName: "colAgrupadoAtual" }] : /* istanbul ignore next */ []));
6809
+ colMovingX = 0;
6810
+ minLineHeight = model('20px', ...(ngDevMode ? [{ debugName: "minLineHeight" }] : /* istanbul ignore next */ []));
6811
+ isCompacted = model(false, ...(ngDevMode ? [{ debugName: "isCompacted" }] : /* istanbul ignore next */ []));
6812
+ hasGrid = model(false, ...(ngDevMode ? [{ debugName: "hasGrid" }] : /* istanbul ignore next */ []));
6813
+ hasVerticalLine = model(false, ...(ngDevMode ? [{ debugName: "hasVerticalLine" }] : /* istanbul ignore next */ []));
6814
+ hasSeletor = model(false, ...(ngDevMode ? [{ debugName: "hasSeletor" }] : /* istanbul ignore next */ []));
6815
+ todosSelecionados = signal(false, ...(ngDevMode ? [{ debugName: "todosSelecionados" }] : /* istanbul ignore next */ []));
6816
+ isSelectingAll = signal(false, ...(ngDevMode ? [{ debugName: "isSelectingAll" }] : /* istanbul ignore next */ []));
6817
+ devMode = false;
6818
+ maxActionsInLine = 0;
6819
+ eHost = inject(ElementRef);
6820
+ gridSize = viewChild('gridSize', { ...(ngDevMode ? { debugName: "gridSize" } : /* istanbul ignore next */ {}), read: ElementRef });
6821
+ gridfiltro = viewChild('gridfiltro', { ...(ngDevMode ? { debugName: "gridfiltro" } : /* istanbul ignore next */ {}), read: ElementRef });
6822
+ Math = Math;
6823
+ filtroCollapsed = signal(false, ...(ngDevMode ? [{ debugName: "filtroCollapsed" }] : /* istanbul ignore next */ []));
6824
+ gridId = LibUtil.uuid();
6825
+ ordenacoesSignal = signal([], ...(ngDevMode ? [{ debugName: "ordenacoesSignal" }] : /* istanbul ignore next */ []));
6826
+ paginacaoSignal = signal({
6827
+ paginaAtual: 1,
6828
+ totalItens: 0,
6829
+ totalagrupado: 0,
6830
+ }, ...(ngDevMode ? [{ debugName: "paginacaoSignal" }] : /* istanbul ignore next */ []));
6831
+ itensPorPagina = computed(() => this.config().itensPorPagina?.() ?? 10, ...(ngDevMode ? [{ debugName: "itensPorPagina" }] : /* istanbul ignore next */ []));
6832
+ constructor() {
6833
+ effect(() => {
6834
+ this.iniciarSelectedRows(this.lista());
6835
+ });
6836
+ effect(() => {
6837
+ const totalItens = this.listaOrdenada().length;
6838
+ const totalagrupado = this.listaAgrupada().length;
6839
+ this.paginacaoSignal.update(pag => ({ ...pag, totalItens, totalagrupado }));
6840
+ });
6841
+ effect(() => {
6842
+ const agrupada = this.listaAgrupada();
6843
+ const isAgrupado = this.isAgrupado();
6844
+ if (this.gruposEncontrados.itens.size > 1) {
6845
+ this.isAgrupado.set(true);
6846
+ }
6847
+ else {
6848
+ this.isAgrupado.set(false);
6849
+ }
6850
+ });
6851
+ effect(() => {
6852
+ const _ = this.filtro();
6853
+ this.irParaPagina(1);
6854
+ });
6855
+ effect(() => {
6856
+ const el = this.filterContainer()?.nativeElement;
6857
+ if (!el)
6858
+ return;
6859
+ const resizeObserver = new ResizeObserver((entries) => {
6860
+ for (let entry of entries) {
6861
+ if (entry.target === el) {
6862
+ this.filterHeight.set(entry.contentRect.height);
6863
+ }
6864
+ }
6865
+ });
6866
+ resizeObserver.observe(el);
6867
+ return () => resizeObserver.disconnect();
6868
+ });
6869
+ effect(() => {
6870
+ let listaExibindo = this.listaExibir();
6871
+ let numeroPrimeiro = listaExibindo?.reduce((min, item) => Math.min(min, item.ordem ?? Infinity), Infinity);
6872
+ let numeroUltimo = listaExibindo?.reduce((max, item) => Math.max(max, item.ordem ?? -Infinity), -Infinity);
6873
+ if (numeroPrimeiro == Infinity)
6874
+ numeroPrimeiro = 0;
6875
+ if (numeroUltimo == -Infinity)
6876
+ numeroUltimo = 0;
6877
+ this.numOrdemPrimeiroExibido.set(numeroPrimeiro);
6878
+ this.numOrdemUltimoExibido.set(numeroUltimo);
6879
+ });
6880
+ effect(() => {
6881
+ const isSelected = this.config().isSelected();
6882
+ if (isSelected === false) {
6883
+ this.unselectAll();
6884
+ }
6885
+ });
6886
+ }
6887
+ ngOnInit() {
6888
+ this.filtroCollapsed.set(this.config().filterBarStartCollapsed ?? false);
6889
+ this.hasVerticalLine.set(this.config().hasVerticalLine ?? false);
6890
+ this.hasSeletor.set(this.config().hasSeletor ?? false);
6891
+ this.hasGrid.set(this.config().hasGrid ?? false);
6892
+ this.isCompacted.set(this.config().isCompacted ?? false);
6893
+ this.minLineHeight.set(this.config().minLineHeight ?? '20px');
6894
+ this.definirColunas();
6895
+ this.atualizarColunas();
6896
+ }
6897
+ ngOnDestroy() { }
6898
+ ngAfterViewInit() {
6899
+ setTimeout(() => {
6900
+ this.calcularAltura();
6901
+ this.calcularColunasExibir();
6902
+ this.observerResize();
6903
+ }, 0);
6904
+ }
6905
+ iniciarSelectedRows(lista) {
6906
+ let fnGetSelect = this.config().startSelected;
6907
+ if (!fnGetSelect || !lista) {
6908
+ this.unselectAll();
6909
+ return;
6910
+ }
6911
+ let selecionados = lista.filter(item => fnGetSelect ? fnGetSelect(item) : false)
6912
+ .map(item => LibUtil.getV(this.config().primarykey, item)?.toString() ?? '')
6913
+ .filter(id => id != '');
6914
+ if (selecionados.length === 0) {
6915
+ this.todosSelecionados.set(false);
6916
+ }
6917
+ else if (lista.length > 0 && selecionados.length === lista.length) {
6918
+ this.todosSelecionados.set(true);
6919
+ }
6920
+ else {
6921
+ this.todosSelecionados.set(false);
6922
+ }
6923
+ this.selectedRows.set(selecionados);
6924
+ }
6925
+ definirColunas() {
6926
+ let colunasInicialConfig = this.config().colunas.map((col, index) => {
6927
+ return {
6928
+ ...col,
6929
+ widthNum: col.width ? parseInt(col.width.replaceAll('px', '').replaceAll('auto', '50')) : 50,
6930
+ tituloReduzido: col.titulo,
6931
+ ordem: index,
6932
+ };
6933
+ });
6934
+ let primeiraPropAgrupadaInicial = colunasInicialConfig.find(c => c.iniciaAgrupado)?.prop;
6935
+ let colunasAgrupada = colunasInicialConfig.find(c => c.prop === primeiraPropAgrupadaInicial);
6936
+ if (colunasAgrupada) {
6937
+ this.colAgrupadoAtual.set(colunasAgrupada);
6938
+ }
6939
+ else {
6940
+ this.colAgrupadoAtual.set(null);
6941
+ }
6942
+ this.colunasDefinidas.set(colunasInicialConfig);
6943
+ }
6944
+ filtrarColunas() {
6945
+ let agrupada = this.colAgrupadoAtual();
6946
+ let colunasFiltradas = this.colunasDefinidas().filter(c => {
6947
+ return (c.visivel !== false) && (agrupada?.prop !== c.prop);
6948
+ });
6949
+ this.colunasFiltradas.set(colunasFiltradas);
6950
+ }
6951
+ ordenarColunas() {
6952
+ this.colunasOrdenadas.set(this.colunasFiltradas().sort((a, b) => a.ordem - b.ordem));
6953
+ }
6954
+ colunasKVDefinidas = computed(() => {
6955
+ return this.colunasDefinidas().map(c => ({ k: LibUtil.classof(c.prop) == 'string' ? c.prop : c.prop[0], v: c.titulo }));
6956
+ }, ...(ngDevMode ? [{ debugName: "colunasKVDefinidas" }] : /* istanbul ignore next */ []));
6957
+ outsideMenuActionsTop = computed(() => {
6958
+ return this.config().actionsTop.filter(a => a.inmenu == false && a.showAction);
6959
+ }, ...(ngDevMode ? [{ debugName: "outsideMenuActionsTop" }] : /* istanbul ignore next */ []));
6960
+ menuActionsTop = computed(() => {
6961
+ return this.config().actionsTop.filter(a => a.inmenu != false && a.showAction);
6962
+ }, ...(ngDevMode ? [{ debugName: "menuActionsTop" }] : /* istanbul ignore next */ []));
6963
+ filterContainer = viewChild('filterContainer', { ...(ngDevMode ? { debugName: "filterContainer" } : /* istanbul ignore next */ {}), read: ElementRef });
6964
+ filterHeight = signal(2000, ...(ngDevMode ? [{ debugName: "filterHeight" }] : /* istanbul ignore next */ []));
6965
+ listaOrdenada = computed(() => {
6966
+ const listaDefinida = this.lista() ?? [];
6967
+ if (LibUtil.classof(listaDefinida) !== 'array') {
6968
+ this.config().hasError = true;
6969
+ return [];
6970
+ }
6971
+ let words = this.inputSearchText().trim().split(" ").filter(t => t != "");
6972
+ let agrupadaAtual = this.colAgrupadoAtual();
6973
+ let propriedadeAgrupada = agrupadaAtual?.prop;
6974
+ let listaFiltrada = listaDefinida.map((o, i) => {
6975
+ let id = LibUtil.getV(this.config().primarykey, o)?.toString() ?? String(i);
6976
+ let dadosDaLinha = {
6977
+ id,
6978
+ dados: o,
6979
+ inativo: this.config().InativeRule(o),
6980
+ groupName: propriedadeAgrupada ? LibUtil.getV(propriedadeAgrupada, o) : '',
6981
+ selecionado: this.selectedRows().includes(id),
6982
+ isSelecionando: this.selecionandoLinhas().includes(id),
6983
+ hue: this.config().backgroundHue ? this.config().backgroundHue?.(o) : undefined,
6984
+ actions: this.config().actionsLine.map(a => {
6985
+ if (a.showAction == true)
6986
+ return { ...a, showAction: a.showLineAction ? a.showLineAction(o) : true };
6987
+ else
6988
+ return { ...a, showAction: false };
6989
+ }),
6990
+ ordem: i + 1,
6991
+ };
6992
+ dadosDaLinha.hasActionMenu = dadosDaLinha.actions?.some(a => a.showAction == true && a.inmenu == true) ?? false;
6993
+ this.maxActionsInLine = Math.max(this.maxActionsInLine, dadosDaLinha.actions?.filter(a => a.showAction == true && a.inmenu == false).length ?? 0);
6994
+ return dadosDaLinha;
6995
+ }).filter(dadosLinha => {
6996
+ if (words.length === 0)
6997
+ return true;
6998
+ for (const w of words) {
6999
+ let encontrado = false;
7000
+ for (const coluna of this.config().colunas) {
7001
+ const valorColuna = LibUtil.getV(coluna.prop, dadosLinha.dados);
7002
+ if (valorColuna != null && LibUtil.contem(valorColuna, w)) {
7003
+ encontrado = true;
7004
+ }
7005
+ }
7006
+ if (!encontrado)
7007
+ return false;
7008
+ }
7009
+ return true;
7010
+ });
7011
+ const ordenacoes = this.ordenacoesSignal();
7012
+ if (!ordenacoes.length)
7013
+ return listaFiltrada;
7014
+ let ordenado = [...listaFiltrada].sort((a, b) => {
7015
+ for (const ordenacao of ordenacoes) {
7016
+ if (Array.isArray(ordenacao.coluna)) {
7017
+ for (const prop of ordenacao.coluna) {
7018
+ const resultado = this.compararValores(LibUtil.getV(prop, a.dados), LibUtil.getV(prop, b.dados), ordenacao.direcao);
7019
+ if (resultado !== 0)
7020
+ return resultado;
7021
+ }
7022
+ }
7023
+ else {
7024
+ const resultado = this.compararValores(LibUtil.getV(ordenacao.coluna, a.dados), LibUtil.getV(ordenacao.coluna, b.dados), ordenacao.direcao);
7025
+ if (resultado !== 0)
7026
+ return resultado;
7027
+ }
7028
+ }
7029
+ return 0;
7030
+ });
7031
+ return ordenado.map((item, index) => ({ ...item, ordem: index + 1 }));
7032
+ }, ...(ngDevMode ? [{ debugName: "listaOrdenada" }] : /* istanbul ignore next */ []));
7033
+ listaAgrupada = computed(() => {
7034
+ const listaOrdenada = this.listaOrdenada();
7035
+ if (this.isAgrupado() == false) {
7036
+ if (this.isAgrupadoLimpo() == false) {
7037
+ listaOrdenada.forEach(item => {
7038
+ this.gruposEncontrados.itens.add(item.groupName);
7039
+ });
7040
+ }
7041
+ return listaOrdenada;
7042
+ }
7043
+ let listaComGrupos = [];
7044
+ let c = 1;
7045
+ let colAgrupadaAtual = this.colAgrupadoAtual()?.prop ?? '';
7046
+ for (const grupo of Array.from(this.gruposEncontrados.itens)) {
7047
+ let firstFound = listaOrdenada.filter(i => i.groupName === grupo)[0];
7048
+ let inativo = listaOrdenada.filter(i => i.groupName === grupo).some(i => this.getObjetoInativo(colAgrupadaAtual, i.dados));
7049
+ listaComGrupos.push({
7050
+ dados: firstFound?.dados,
7051
+ inativo: inativo,
7052
+ groupName: grupo,
7053
+ selecionado: false,
7054
+ isGroup: true,
7055
+ isFullLine: {
7056
+ visible: true,
7057
+ colapsed: this.gruposColapsed().includes(grupo),
7058
+ colapsedCount: listaOrdenada.filter(i => i.groupName === grupo).length,
7059
+ showIco: true,
7060
+ },
7061
+ isColapsed: false,
7062
+ });
7063
+ listaOrdenada.map(item => {
7064
+ if (item.groupName === grupo) {
7065
+ listaComGrupos.push({
7066
+ ...item,
7067
+ ordem: c++,
7068
+ isColapsed: this.gruposColapsed().includes(grupo)
7069
+ });
7070
+ }
7071
+ });
7072
+ }
7073
+ ;
7074
+ return listaComGrupos.filter(i => !i.isColapsed);
7075
+ }, ...(ngDevMode ? [{ debugName: "listaAgrupada" }] : /* istanbul ignore next */ []));
7076
+ listaExibir = computed(() => {
7077
+ const listaOrdenada = this.listaAgrupada();
7078
+ const paginacao = this.paginacaoSignal();
7079
+ const inicio = (paginacao.paginaAtual - 1) * this.itensPorPagina();
7080
+ const fim = inicio + this.itensPorPagina();
7081
+ const listaExibindo = listaOrdenada.slice(inicio, fim);
7082
+ return listaExibindo;
7083
+ }, ...(ngDevMode ? [{ debugName: "listaExibir" }] : /* istanbul ignore next */ []));
7084
+ numeroPrimeiroItemExibido = computed(() => {
7085
+ return (this.paginacaoSignal().paginaAtual - 1) * this.itensPorPagina() + 1;
7086
+ }, ...(ngDevMode ? [{ debugName: "numeroPrimeiroItemExibido" }] : /* istanbul ignore next */ []));
7087
+ numeroUltimoItemExibido = computed(() => {
7088
+ const paginacao = this.paginacaoSignal();
7089
+ return Math.min(paginacao.paginaAtual * this.itensPorPagina(), paginacao.totalItens);
7090
+ }, ...(ngDevMode ? [{ debugName: "numeroUltimoItemExibido" }] : /* istanbul ignore next */ []));
7091
+ onDropColuna(ev) {
7092
+ let colunaOrigem = ev.item.data;
7093
+ let colTarget = ev.event.target.closest('.table-header-text');
7094
+ let cellTarget = ev.event.target.closest('.table-item');
7095
+ let novaOrdem = null;
7096
+ if (colTarget) {
7097
+ novaOrdem = colTarget.getAttribute('ordem');
7098
+ }
7099
+ if (cellTarget) {
7100
+ novaOrdem = cellTarget.getAttribute('ordem');
7101
+ }
7102
+ if (novaOrdem && colunaOrigem) {
7103
+ this.colunasOrdenadas.update(cols => {
7104
+ const semColuna = cols.filter(c => c.ordem !== colunaOrigem.ordem);
7105
+ semColuna.splice(novaOrdem, 0, colunaOrigem);
7106
+ return semColuna.map((col, index) => ({ ...col, ordem: index }));
7107
+ });
7108
+ this.calcularColunasExibir();
7109
+ }
7110
+ }
7111
+ getObjetoInativo(nomeColuna, linha) {
7112
+ if (LibUtil.classof(nomeColuna) == "string" && nomeColuna.includes(".")) {
7113
+ const props = nomeColuna.split(".");
7114
+ const lastObj = LibUtil.getV(props.slice(0, -1).join("."), linha);
7115
+ return lastObj?.[PROP_CONTROLE_ATIVO] == false;
7116
+ }
7117
+ return false;
7118
+ }
7119
+ observerResize() {
7120
+ const el = this.eHost?.nativeElement;
7121
+ if (!el)
7122
+ return;
7123
+ const resizeObserver = new ResizeObserver((entries) => {
7124
+ this.calcularColunasExibir();
7125
+ });
7126
+ resizeObserver.observe(el);
7127
+ return () => resizeObserver.disconnect();
7128
+ }
7129
+ calcularColunasExibir() {
7130
+ let colunasAExibir = this.colunasOrdenadas().map(c => ({ ...c }));
7131
+ let compacted = this.isCompacted();
7132
+ let wVerticalLine = this.hasVerticalLine() ? (compacted ? 30 : 40) : 0;
7133
+ let wSelector = this.hasSeletor() ? (compacted ? 30 : 40) : 0;
7134
+ let wActions = this.config().showActionsLine ? (compacted ? 42 : 130) : 0;
7135
+ let wDisponivel = this.gridSize()?.nativeElement?.offsetWidth - (wVerticalLine + wSelector + wActions);
7136
+ let totalFixo = (wVerticalLine > 0 ? 1 : 0) + (wSelector > 0 ? 1 : 0) + (wActions > 0 ? 1 : 0);
7137
+ let wFixo = wVerticalLine + wSelector + wActions;
7138
+ while (colunasAExibir.length > 0) {
7139
+ let wColunas = colunasAExibir.reduce((a, b) => a + b.widthNum, 0);
7140
+ let somado = wFixo + wColunas;
7141
+ if (somado <= wDisponivel)
7142
+ break;
7143
+ colunasAExibir.pop();
7144
+ }
7145
+ this.colunasExibir.set(colunasAExibir);
7146
+ this.totalColsVisivel.set(colunasAExibir.length + totalFixo);
7147
+ let wColsCentrais = '';
7148
+ for (let col of colunasAExibir) {
7149
+ col.width = col.width ?? 'auto';
7150
+ wColsCentrais += `${col.width} `;
7151
+ }
7152
+ this.pxVerticalLine.set(wVerticalLine > 0 ? (`${wVerticalLine}px `) : '');
7153
+ this.pxSelector.set(wSelector > 0 ? (`${wSelector}px `) : '');
7154
+ this.pxActions.set(wActions > 0 ? (`${wActions}px `) : '');
7155
+ this.pxColunas.set(wColsCentrais);
7156
+ }
7157
+ calcularAltura() {
7158
+ const elementoConteiner = this.filterContainer();
7159
+ if (!elementoConteiner)
7160
+ return;
7161
+ const firstChild = elementoConteiner.nativeElement.firstElementChild;
7162
+ if (!firstChild)
7163
+ return;
7164
+ const height = firstChild.scrollHeight;
7165
+ this.filterHeight.set(height);
7166
+ }
7167
+ getState() {
7168
+ return {
7169
+ colunaAgrupadaAtual: this.colAgrupadoAtual(),
7170
+ colunas: this.colunasDefinidas() ?? [],
7171
+ colunasExibir: this.colunasExibir() ?? [],
7172
+ config: this.config(),
7173
+ filtros: this.filtro() ?? {},
7174
+ gruposColapsed: this.gruposColapsed(),
7175
+ gruposEncontrados: this.gruposEncontrados,
7176
+ isAgrupado: this.isAgrupado(),
7177
+ isAgrupadoLimpo: this.isAgrupadoLimpo(),
7178
+ listaExibindo: this.listaExibir(),
7179
+ listaOrdenada: this.listaOrdenada(),
7180
+ ordenacoes: this.ordenacoesSignal(),
7181
+ paginacao: {
7182
+ paginas: this.totalPaginas(),
7183
+ paginaAtual: this.paginacaoSignal().paginaAtual,
7184
+ itensPorPagina: this.itensPorPagina(),
7185
+ },
7186
+ selecionados: this.selectedRows(),
7187
+ selecionandoLinhas: this.selecionandoLinhas(),
7188
+ tempoRequisicao: this.config().timeRequest,
7189
+ totais: {
7190
+ totalDefinida: this.lista()?.length ?? 0,
7191
+ totalOrdenada: this.listaOrdenada().length,
7192
+ totalExibindo: this.listaExibir().length,
7193
+ },
7194
+ ultimaAcao: this.config().lastGridEventAPI,
7195
+ };
7196
+ }
7197
+ totalPaginas = computed(() => {
7198
+ const paginacao = this.paginacaoSignal();
7199
+ return Math.ceil(paginacao.totalagrupado / this.itensPorPagina());
7200
+ }, ...(ngDevMode ? [{ debugName: "totalPaginas" }] : /* istanbul ignore next */ []));
7201
+ alternarOrdenacao(coluna) {
7202
+ const ordenacoes = this.ordenacoesSignal();
7203
+ const index = ordenacoes.findIndex(o => o.coluna === coluna);
7204
+ if (index >= 0) {
7205
+ const novaDirecao = ordenacoes[index].direcao === 'asc' ? 'desc' : 'asc';
7206
+ if (novaDirecao == "asc") {
7207
+ const novasOrdenacoes = [...ordenacoes.filter(o => o.coluna != coluna)];
7208
+ this.ordenacoesSignal.set(novasOrdenacoes);
7209
+ }
7210
+ else {
7211
+ const novasOrdenacoes = [...ordenacoes];
7212
+ novasOrdenacoes[index] = { coluna, direcao: novaDirecao };
7213
+ this.ordenacoesSignal.set(novasOrdenacoes);
7214
+ }
7215
+ }
7216
+ else {
7217
+ this.ordenacoesSignal.set([...ordenacoes, { coluna, direcao: 'asc' }]);
7218
+ }
7219
+ }
7220
+ obterDirecaoOrdenacao(coluna) {
7221
+ const ordenacao = this.ordenacoesSignal().find(o => o.coluna === coluna);
7222
+ return ordenacao ? ordenacao.direcao : null;
7223
+ }
7224
+ irParaPagina(pagina) {
7225
+ if (pagina >= 1 && pagina <= this.totalPaginas()) {
7226
+ this.paginacaoSignal.update(pag => ({ ...pag, paginaAtual: pagina }));
7227
+ }
7228
+ }
7229
+ proximaPagina() {
7230
+ const atual = this.paginacaoSignal().paginaAtual;
7231
+ this.irParaPagina(atual + 1);
7232
+ }
7233
+ paginaAnterior() {
7234
+ const atual = this.paginacaoSignal().paginaAtual;
7235
+ this.irParaPagina(atual - 1);
7236
+ }
7237
+ limparOrdenacao() {
7238
+ this.ordenacoesSignal.set([]);
7239
+ }
7240
+ async onOrdenarPor(coluna) {
7241
+ if (!coluna)
7242
+ return;
7243
+ if (coluna.ordem == null)
7244
+ return;
7245
+ this.alternarOrdenacao(coluna.prop);
7246
+ }
7247
+ getColDisplay(nomeCampo) {
7248
+ return this.colunasDefinidas()?.find(o => o.prop == nomeCampo)?.titulo ?? '???';
7249
+ }
7250
+ getOrdenacaoTexto() {
7251
+ const ordenacoes = this.ordenacoesSignal();
7252
+ if (!ordenacoes.length)
7253
+ return '';
7254
+ return ordenacoes.map(o => `${this.getColDisplay(o.coluna)} (${o.direcao})`).join(', ');
7255
+ }
7256
+ onClickClearInfo() {
7257
+ this.limparOrdenacao();
7258
+ }
7259
+ atualizarColunas() {
7260
+ this.filtrarColunas();
7261
+ this.ordenarColunas();
7262
+ this.calcularColunasExibir();
7263
+ }
7264
+ onClickCellAction(evento) {
7265
+ if (evento.action?.action) {
7266
+ evento.action.action(this._getGridEvent(evento.action, evento.dadosDaLinha?.dados));
7267
+ }
7268
+ }
7269
+ onClickAction(action, linha) {
7270
+ if (action?.action) {
7271
+ return action.action(this._getGridEvent(action, linha));
7272
+ }
7273
+ return;
7274
+ }
7275
+ _getGridEvent(action, linha) {
7276
+ let pk = this.config().primarykey;
7277
+ let id = undefined;
7278
+ if (pk != null && linha != null) {
7279
+ id = linha[pk];
7280
+ }
7281
+ let evento = { id, linha, action };
7282
+ this.config().lastGridEventAPI = evento;
7283
+ return evento;
7284
+ }
7285
+ compararValores(a, b, direcao) {
7286
+ let resultado = 0;
7287
+ if (a === null || a === undefined)
7288
+ a = '';
7289
+ if (b === null || b === undefined)
7290
+ b = '';
7291
+ if (typeof a === 'number' && typeof b === 'number') {
7292
+ resultado = a - b;
7293
+ }
7294
+ else if (a instanceof Date && b instanceof Date) {
7295
+ resultado = a.getTime() - b.getTime();
7296
+ }
7297
+ else {
7298
+ resultado = String(a).localeCompare(String(b));
7299
+ }
7300
+ return direcao === 'asc' ? resultado : -resultado;
7301
+ }
7302
+ onClickGridMenu(action) {
7303
+ if (action?.action) {
7304
+ return action.action(this._getGridEvent(action));
7305
+ }
7306
+ }
7307
+ onInputSearch(text) {
7308
+ this.inputSearchText.set(text);
7309
+ }
7310
+ onClickOpenCloseFilterZone() {
7311
+ this.filtroCollapsed.update(v => !v);
7312
+ }
7313
+ async onChangeTodosSelecionados(todosSelecionados) {
7314
+ this.isSelectingAll.set(true);
7315
+ if (!todosSelecionados) {
7316
+ for (const linha of this.listaOrdenada()) {
7317
+ await this.desselecionarLinha(linha);
7318
+ }
7319
+ }
7320
+ else {
7321
+ for (const linha of this.listaOrdenada()) {
7322
+ await this.selectLinha(linha);
7323
+ }
7324
+ }
7325
+ await LibUtil.wait(100);
7326
+ this.isSelectingAll.set(false);
7327
+ }
7328
+ async onClickRow(linha) {
7329
+ if (!linha)
7330
+ return;
7331
+ if (!linha.dados)
7332
+ return;
7333
+ if (linha.isSelecionando)
7334
+ return;
7335
+ if (this.selectedRows().includes(linha.id)) {
7336
+ this.desselecionarLinha(linha);
7337
+ }
7338
+ else {
7339
+ this.selectLinha(linha);
7340
+ }
7341
+ }
7342
+ unselectAll() {
7343
+ this.selectedRows.set([]);
7344
+ }
7345
+ async selectLinha(linha) {
7346
+ if (this.selectedRows().includes(linha.id))
7347
+ return;
7348
+ this.selecionandoLinhas.set([...this.selecionandoLinhas(), linha.id]);
7349
+ let allowedSelection = await this.config().ruleSelectRow?.(linha.dados, this.selectedRows()) ?? true;
7350
+ if (!allowedSelection)
7351
+ return;
7352
+ if (this.config().selectionMode == 'single') {
7353
+ this.unselectAll();
7354
+ }
7355
+ this.selectedRows.set([...this.selectedRows(), linha.id]);
7356
+ this.config().onSelected?.(linha.dados, this.selectedRows());
7357
+ this.config().onSelectionChanged?.(linha.dados, this.selectedRows());
7358
+ this.config().isSelected.set(true);
7359
+ this.selecionandoLinhas.set([...this.selecionandoLinhas().filter(i => i !== linha.id)]);
7360
+ }
7361
+ async desselecionarLinha(linha) {
7362
+ if (!this.selectedRows().includes(linha.id))
7363
+ return;
7364
+ this.selecionandoLinhas.set([...this.selecionandoLinhas(), linha.id]);
7365
+ let allowedUnSelection = await this.config().ruleUnSelectRow?.(linha.dados, this.selectedRows()) ?? true;
7366
+ if (!allowedUnSelection)
7367
+ return;
7368
+ this.selectedRows.set(this.selectedRows().filter(i => i !== linha.id));
7369
+ this.config().onUnselected?.(linha.dados, this.selectedRows());
7370
+ this.config().onSelectionChanged?.(linha.dados, this.selectedRows());
7371
+ await LibUtil.wait(100);
7372
+ this.selecionandoLinhas.set([...this.selecionandoLinhas().filter(i => i !== linha.id)]);
7373
+ }
7374
+ onClickGroup(dadosDaLinha) {
7375
+ this.gruposColapsed.update(g => {
7376
+ if (g.includes(dadosDaLinha.groupName)) {
7377
+ return g.filter(grupo => grupo != dadosDaLinha.groupName);
7378
+ }
7379
+ else {
7380
+ return [...g, dadosDaLinha.groupName];
7381
+ }
7382
+ });
7383
+ }
7384
+ onRecolherGroups() {
7385
+ this.gruposColapsed.set(Array.from(this.gruposEncontrados.itens));
7386
+ }
7387
+ onExpandirGroups() {
7388
+ this.gruposColapsed.set([]);
7389
+ }
7390
+ async onAgruparPor(coluna) {
7391
+ this.colAgrupadoAtual.set(null);
7392
+ this.gruposEncontrados.itens.clear();
7393
+ this.isAgrupadoLimpo.set(false);
7394
+ this.colAgrupadoAtual.set(coluna);
7395
+ this.atualizarColunas();
7396
+ }
7397
+ async onChangedAgrupamento(event) {
7398
+ let propAgrupamento = event.optionChanged?.k;
7399
+ let colAgrupada = this.colunasDefinidas().find(c => c.prop === propAgrupamento) ?? null;
7400
+ this.onAgruparPor(colAgrupada);
7401
+ }
7402
+ onClearGroups() {
7403
+ this.isAgrupadoLimpo.set(true);
7404
+ this.gruposEncontrados.itens.clear();
7405
+ this.isAgrupado.set(false);
7406
+ this.colAgrupadoAtual.set(null);
7407
+ this.atualizarColunas();
7408
+ }
7409
+ onChangeLineNumber() {
7410
+ this.hasVerticalLine.update(v => !v);
7411
+ this.calcularColunasExibir();
7412
+ }
7413
+ onChangeSeletor() {
7414
+ this.hasSeletor.update(v => !v);
7415
+ this.calcularColunasExibir();
7416
+ }
7417
+ onChangeCompacted() {
7418
+ this.isCompacted.update(v => !v);
7419
+ }
7420
+ onChangeHasGrid() {
7421
+ this.hasGrid.update(v => !v);
7422
+ }
7423
+ onResizeStart(event, coluna) {
7424
+ this.colMovingX = event.clientX;
7425
+ event.preventDefault();
7426
+ let eColuna = event.target.closest('.table-header');
7427
+ let computedWidth = parseInt(window.getComputedStyle(eColuna).width.replaceAll('px', ''), 10);
7428
+ const onMouseMove = (moveEvent) => {
7429
+ const delta = moveEvent.clientX - this.colMovingX;
7430
+ let widthNum = Math.max(30, (computedWidth + delta));
7431
+ this.colunasOrdenadas.update(cols => {
7432
+ return cols.map(c => {
7433
+ if (c.ordem === coluna.ordem) {
7434
+ return { ...c, widthNum, width: `${widthNum}px` };
7435
+ }
7436
+ return c;
7437
+ });
7438
+ });
7439
+ };
7440
+ const onMouseUp = () => {
7441
+ this.calcularColunasExibir();
7442
+ document.removeEventListener('mousemove', onMouseMove);
7443
+ document.removeEventListener('mouseup', onMouseUp);
7444
+ };
7445
+ document.addEventListener('mousemove', onMouseMove);
7446
+ document.addEventListener('mouseup', onMouseUp);
7447
+ }
7448
+ onDoubleClickControls(event, coluna) {
7449
+ let getColunaDefinina = this.colunasDefinidas().find(c => c.ordem === coluna.ordem);
7450
+ let getWidth = getColunaDefinina?.width ? getColunaDefinina.width : 'auto';
7451
+ this.colunasOrdenadas.update(cols => {
7452
+ return cols.map(c => {
7453
+ if (c.ordem === coluna.ordem) {
7454
+ return { ...c, width: getWidth };
7455
+ }
7456
+ return c;
7457
+ });
7458
+ });
7459
+ this.calcularColunasExibir();
7460
+ }
7461
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MkGrid, deps: [], target: i0.ɵɵFactoryTarget.Component });
7462
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: MkGrid, isStandalone: true, selector: "lib-mk-grid", inputs: { lista: { classPropertyName: "lista", publicName: "lista", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, filtro: { classPropertyName: "filtro", publicName: "filtro", isSignal: true, isRequired: false, transformFunction: null }, minLineHeight: { classPropertyName: "minLineHeight", publicName: "minLineHeight", isSignal: true, isRequired: false, transformFunction: null }, isCompacted: { classPropertyName: "isCompacted", publicName: "isCompacted", isSignal: true, isRequired: false, transformFunction: null }, hasGrid: { classPropertyName: "hasGrid", publicName: "hasGrid", isSignal: true, isRequired: false, transformFunction: null }, hasVerticalLine: { classPropertyName: "hasVerticalLine", publicName: "hasVerticalLine", isSignal: true, isRequired: false, transformFunction: null }, hasSeletor: { classPropertyName: "hasSeletor", publicName: "hasSeletor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { minLineHeight: "minLineHeightChange", isCompacted: "isCompactedChange", hasGrid: "hasGridChange", hasVerticalLine: "hasVerticalLineChange", hasSeletor: "hasSeletorChange" }, viewQueries: [{ propertyName: "gridSize", first: true, predicate: ["gridSize"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "gridfiltro", first: true, predicate: ["gridfiltro"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "filterContainer", first: true, predicate: ["filterContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<lib-grid-filter-bar [config]=\"config()\" [colunasDefinidas]=\"$any(colunasDefinidas())\"\n\t[colAgrupadoAtual]=\"colAgrupadoAtual()\" [isAgrupado]=\"isAgrupado()\" [filterCollapsed]=\"filtroCollapsed()\"\n\t(searchInput)=\"onInputSearch($event)\" (filterToggle)=\"onClickOpenCloseFilterZone()\"\n\t(actionTriggered)=\"onClickAction($event)\" (groupByColumn)=\"onAgruparPor($any($event))\" (clearGroups)=\"onClearGroups()\"\n\t(collapseGroups)=\"onRecolherGroups()\" (expandGroups)=\"onExpandirGroups()\">\n</lib-grid-filter-bar>\n\n@if(config().showFilterBar) {\n<div class=\"table-filter-container table-styles\" [style.--filter-height.px]=\"filterHeight()\">\n\t<div #filterContainer class=\"table-filter-content\" [class.table-filter-hide]=\"filtroCollapsed()\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n}\n\n@if(config().screen() == \"Mobile\"){\n<!-- MOBILE INICIO -->\n\n@for (dadosLinha of listaExibir(); track $index;let i = $index) {\n@if( dadosLinha.isColapsed !== true){\n\n@if(dadosLinha.isFullLine?.visible){\n<!-- MOBILE GRUPO LINHA PR\u00D3PRIA -->\n<div class=\"table-row-mobile table-formated table-group table-styles\" (click)=\"onClickGroup(dadosLinha)\">\n\t<div>{{ dadosLinha.groupName }}</div>\n\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t<div class=\"table-group-items-ico\">\n\t\t\t<i class=\"bi bi-caret-down\"></i>\n\t\t</div>\n\t</div>\n</div>\n} @else {\n\n<div class=\"table-overflow mobile\" [style.--table-min-height]=\"isCompacted() ? '20px' : minLineHeight()\">\n\t<div class=\"table-table-mobile\" [class.selected]=\"dadosLinha.selecionado\">\n\n\t\t<!-- MOBILE DADOS -->\n\t\t@if(config().showActionsLine){\n\t\t<div class=\"table-header-mobile\" [style.gridArea]=\"'auto / auto / auto / span 2'\">\n\t\t\t@if(hasVerticalLine()){\n\t\t\t<!-- MOBILE VERTICAL DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-vertical-line\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t{{ dadosLinha.ordem }}\n\t\t\t</div>\n\t\t\t}\n\t\t\t@if(hasSeletor()){\n\t\t\t<!-- MOBILE SELECTOR DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-item-seletor\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t<ui-check-box [(value)]=\"dadosLinha.selecionado\" [style.--ui-color]=\"'var(--sys-on-primary)'\"\n\t\t\t\t\t[style.--ui-outline]=\"'var(--sys-on-primary)'\" [single]=\"this.config().selectionMode == 'single'\"\n\t\t\t\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\"></ui-check-box>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"table-header-mobile-space\" (click)=\"onClickRow(dadosLinha)\"></div>\n\t\t\t<lib-grid-cell-actions [config]=\"config()\" [dadosDaLinha]=\"dadosLinha\" [mobileHeader]=\"true\"\n\t\t\t\t(action)=\"onClickCellAction($event)\" [compact]=\"isCompacted()\"></lib-grid-cell-actions>\n\t\t</div>\n\t\t}\n\n\t\t<!-- MOBILE LINHA -->\n\t\t@for (localColuna of colunasOrdenadas(); track $index;) {\n\t\t<div class=\"table-header-mobile\" [class.sortable]=\"localColuna.sortable !== false\"\n\t\t\t[class.sorted-asc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'asc'\"\n\t\t\t[class.sorted-desc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'desc'\"\n\t\t\t(click)=\"localColuna.sortable !== false && alternarOrdenacao(localColuna.prop)\" [style]=\"localColuna.styleHeader\">\n\t\t\t<div class=\"table-header-mobile-text\" [title]=\"localColuna.titulo\"\n\t\t\t\t[innerHTML]=\"localColuna.tituloReduzido ?? localColuna.titulo\">\n\t\t\t</div>\n\t\t\t<div class=\"table-header-controls\">\n\t\t\t\t@if (localColuna.sortable !== false) {\n\t\t\t\t<span class=\"table-ico-sort\">\n\t\t\t\t\t@if (obterDirecaoOrdenacao(localColuna.prop) === 'asc') {\n\t\t\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t\t\t} @else if (obterDirecaoOrdenacao(localColuna.prop) === 'desc') {\n\t\t\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t\t\t}\n\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t<lib-grid-cell-handler class=\"table-item-mobile table-formated\" [class.odd]=\"i % 2 !== 0\" [class.even]=\"i % 2 === 0\"\n\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"localColuna\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t[localColunas]=\"colunasOrdenadas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t}\n\t</div>\n</div>\n}\n}\n} @empty {\n<!-- LINHA DE SEM DADOS -->\n<div class=\"table-styles\"><lib-grid-empty-list></lib-grid-empty-list></div>\n}\n<!-- MOBILE FIM -->\n\n\n} @else {\n<!-- DESKTOP INICIO -->\n<div #gridSize class=\"table-overflow\" [class.compacted]=\"isCompacted()\"\n\t[style.--table-min-height]=\"isCompacted() ? '40px' : minLineHeight()\">\n\t<div class=\"table-table\" [class.table-has-vertical-line]=\"hasVerticalLine()\" [class.table-has-seletor]=\"hasSeletor()\"\n\t\tcdkDropList (cdkDropListDropped)=\"onDropColuna($event)\" [cdkDropListData]=\"colunasExibir()\"\n\t\t[style.gridTemplateColumns]=\"`${this.pxVerticalLine()}${this.pxSelector()}` + this.pxColunas() + this.pxActions()\">\n\t\t<!-- DESKTOP HEADER -->\n\t\t<lib-grid-header-row [colunas]=\"colunasExibir()\" [ordenacoes]=\"ordenacoesSignal()\"\n\t\t\t[todosSelecionados]=\"todosSelecionados()\" [config]=\"config()\" [hasSeletor]=\"hasSeletor()\"\n\t\t\t[hasVerticalLine]=\"hasVerticalLine()\" [hasGrid]=\"hasGrid()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[isSelectingAll]=\"isSelectingAll()\" (columnSort)=\"alternarOrdenacao($event)\"\n\t\t\t(selectAll)=\"onChangeTodosSelecionados($event)\"\n\t\t\t(columnResizeStart)=\"onResizeStart($event.event, $any($event.coluna))\"\n\t\t\t(columnResizeDoubleClick)=\"onDoubleClickControls($event.event, $any($event.coluna))\">\n\t\t</lib-grid-header-row>\n\n\t\t<!-- DESKTOP LINHAS DE DADOS -->\n\t\t@for (dadosLinha of listaExibir(); track $index; let i = $index) {@if( dadosLinha.isColapsed !== true){\n\n\t\t@if(dadosLinha.isFullLine?.visible){\n\n\t\t<!-- DESKTOP FULL LINE (COLSPAN HORIZONTAL) -->\n\t\t@if(hasVerticalLine()){\n\t\t<!-- DESKTOP HEADER VERTICAL FULL LINE -->\n\t\t<div class=\"table-header table-formated table-vertical-line\">\n\t\t\t{{ dadosLinha.ordem }}\n\t\t</div>\n\t\t}\n\t\t<!-- DESKTOP GRUPO: ROW -->\n\t\t@if(dadosLinha.isGroup){\n\n\t\t<div class=\"table-row table-formated table-group table-border-bottom-card\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<div class=\"table-group-name\" [class.table-inativo]=\"dadosLinha.inativo\">\n\t\t\t\t<lib-grid-cell-handler class=\"table-item table-dados {{ colAgrupadoAtual()?.classeCell }}\"\n\t\t\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"colAgrupadoAtual()!\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t\t\t[localColunas]=\"colunasDefinidas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t\t</div>\n\t\t\t<ui-button tipo=\"nofill\" (click)=\"onClickGroup(dadosLinha)\">\n\t\t\t\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t\t\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t\t\t\t<div class=\"table-group-items-ico\">\n\t\t\t\t\t\t<i [class]=\"dadosLinha.isFullLine?.colapsed ? 'bi bi-caret-down-fill' : 'bi bi-caret-down'\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ui-button>\n\t\t</div>\n\n\t\t} @else {\n\t\t<div class=\"table-row table-formated table-others\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\tNada a exibir nesta linha\n\t\t</div>\n\t\t}\n\n\t\t} @else {\n\n\t\t<!-- LINHA NORMAL via GridRowRenderer -->\n\t\t<lib-grid-row-renderer [dadosLinha]=\"dadosLinha\" [config]=\"config()\" [colunas]=\"colunasExibir()\"\n\t\t\t[colunasOrdenadas]=\"colunasOrdenadas()\" [lista]=\"lista()!\" [inputSearchText]=\"inputSearchText()\"\n\t\t\t[hasSeletor]=\"hasSeletor()\" [hasVerticalLine]=\"hasVerticalLine()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[hasGrid]=\"hasGrid()\" [rowIndex]=\"i\" (actionTriggered)=\"onClickCellAction($event)\"\n\t\t\t(rowClicked)=\"onClickRow($event)\">\n\t\t</lib-grid-row-renderer>\n\n\t\t}}\n\n\t\t<!-- POSSIBILIDADES SEM DADOS -->\n\t\t} @empty {\n\n\t\t<!-- ERRO -->\n\t\t@if(config().hasError) {\n\t\t<div class=\"table-row table-formated table-errors\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridError]\"></ng-content>\n\t\t</div>\n\n\t\t<!-- LOADING -->\n\t\t} @else if(!config().isLoaded) {\n\t\t<div class=\"table-row table-formated table-loader\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridLoading]\"></ng-content>\n\t\t</div>\n\n\t\t} @else {\n\n\t\t<div class=\"table-row table-empty\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<lib-grid-empty-list></lib-grid-empty-list>\n\t\t</div>\n\t\t}\n\n\t\t}\n\n\t\t<!-- FIM DA LINHA NORMAL -->\n\n\n\t</div>\n</div>\n<!-- DESKTOP FIM -->\n}\n\n\n@if(config().showPagination){\n<lib-grid-pagination [paginacao]=\"paginacaoSignal()\" [totalPaginas]=\"totalPaginas()\"\n\t(pageChange)=\"irParaPagina($event)\">\n</lib-grid-pagination>\n}\n\n\n\n\n@if(config().showInfoBar){\n<!-- Informa\u00E7\u00F5es de Ordena\u00E7\u00E3o -->\n@if (ordenacoesSignal().length > 0) {\n<div class=\"table-info-row table-styles\">\n\t@if (ordenacoesSignal().length > 0) {\n\t<div>Ordenado por: {{ getOrdenacaoTexto() }}</div>\n\t}\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClickClearInfo()\" icone=\"bi bi-x-lg\"></ui-button>\n</div>\n}\n<!-- Informa\u00E7\u00F5es de Agrupamento -->\n@if (this.isAgrupado()) {\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-object-group\"></i>\n\t<div class=\"flex flex-wrap gap-1 f-t-b\">\n\t\tAgrupado por {{ colAgrupadoAtual()?.titulo }} (h\u00E1 {{ gruposEncontrados.itens.size }} grupos)\n\t\t<div class=\"campoSemForm\">\n\t\t\t<ui-select [value]=\"colAgrupadoAtual()?.prop\" [options]=\"this.colunasKVDefinidas()\"\n\t\t\t\t(changed)=\"onChangedAgrupamento($event)\"></ui-select>\n\t\t</div>\n\n\t</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\tRecolher Todos\n\t</ui-button>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\tExpandir Todos\n\t</ui-button>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\">\n\t\tDesagrupar\n\t</ui-button>\n</div>\n}\n}\n\n\n@if(devMode){\n<!-- MODO DESENVOLVIMENTO -->\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-microscope\"></i>\n\t<div>Fun\u00E7\u00F5es extras</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasGrid()\" (click)=\"onChangeHasGrid()\" icone='bi bi-grid-3x3'\n\t\ttitle=\"Grid\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"isCompacted()\" (click)=\"onChangeCompacted()\"\n\t\ticone='fa fa-arrows-to-circle' title=\"Compactar\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasVerticalLine()\" (click)=\"onChangeLineNumber()\"\n\t\ticone='bi bi-layout-sidebar' title=\"Linha Vertical\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasSeletor()\" (click)=\"onChangeSeletor()\" icone='fa fa-check-double'\n\t\ttitle=\"Seletor\"></ui-button>\n</div>\n}", styles: [":host{--mk-grid-border-radius: var(--sys-border-radius, 10px);--mk-grid-gap: var(--sys-gap, 8px);--mk-grid-lum-10: var(--sys-lum-10, 95%);--mk-grid-card: var(--sys-card, hsl(216 22% 96%));--mk-grid-background: var(--sys-background, hsl(0 0% 100%));--mk-grid-bg-card: var(--mk-grid-card);--mk-grid-bg: var(--mk-grid-background);--mk-grid-outline: var(--sys-outline, hsl(220 15% 86%));--mk-grid-primary: var(--sys-primary, hsl(224 74% 53%));--mk-grid-on-primary: var(--sys-on-primary, hsl(0 0% 100%));--mk-grid-secondary: var(--sys-secondary, hsl(221 44% 49%));--mk-grid-error: var(--sys-error, hsl(0 66% 47%));--mk-grid-info: var(--sys-info, hsl(210 79% 46%));--mk-grid-high: var(--sys-high, hsl(221 100% 97%));--mk-grid-on-high: var(--sys-on-high, hsl(222 35% 16%));--mk-grid-on-card: var(--sys-on-card, hsl(221 27% 16%));--mk-grid-on-card-variant: var(--sys-on-card-variant, hsl(222 15% 43%));--mk-grid-on-background: var(--sys-on-background, hsl(222 20% 20%));--mk-grid-primary-15: var(--sys-primary-15, hsl(224 74% 53% / 15%))}:host .drag-container{cursor:grab}:host .drag-container:active{cursor:grabbing}:host-context(body:has(.cdk-drag-preview)) .drop-option{outline:1px dashed var(--mk-grid-outline)}:host-context(body:has(.cdk-drag-preview)) .drop-option:hover{outline:1px solid var(--mk-grid-outline);background-color:var(--mk-grid-high)}:host ui-menu>ui-button{border-bottom:1px solid var(--ui-outline-color, var(--mk-grid-outline))}:host .menu-title{font-size:1.2rem;font-weight:600;padding:0 calc(var(--mk-grid-gap) / 2) var(--mk-grid-gap) calc(var(--mk-grid-gap) / 2);border-bottom:1px solid var(--mk-grid-outline);display:flex;justify-content:space-between;align-items:center;gap:var(--mk-grid-gap)}:host .menu-sub-title{font-size:14px;font-weight:500;display:flex;justify-content:flex-start;align-items:center;gap:var(--mk-grid-gap);padding-left:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host .menu-sub-value{font-size:14px;font-weight:400;display:flex;justify-content:flex-end;align-items:center;gap:calc(var(--mk-grid-gap) / 2);padding-right:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host{display:flex;flex-direction:column}.table-overflow{display:grid;overflow:auto;margin-top:10px;padding:0;position:relative}.table-overflow.compacted{justify-content:center}.table-overflow.mobile{border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-overflow.mobile{overflow:hidden}.table-table-mobile,.table-table{display:grid;font-size:13px}.table-table-mobile{grid-template-columns:1fr 1fr}.table-header,.table-header-mobile{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);transition:background-color .2s ease;display:flex;flex-wrap:wrap;align-items:center;align-content:stretch;justify-content:center;-webkit-user-select:none;user-select:none;min-height:var(--table-min-height)}.table-header-mobile{padding:0 5px}.table-header-mobile-space{flex:1;height:100%;display:flex;align-items:center;justify-content:center}.table-header-mobile-text,.table-header-text{flex:1;font-weight:600;text-align:center;display:block;align-content:center}.table-header-mobile-text{text-align:start}.table-header-text{height:100%;border-radius:var(--mk-grid-border-radius);position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-drag-preview{font-size:14px!important;background:var(--mk-grid-high);color:var(--mk-grid-on-high);opacity:.6}.cdk-drop-list-receiving:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-info);filter:opacity(.5)}.cdk-drag-placeholder:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-primary)}.textVertical .table-header-text{writing-mode:vertical-lr;text-orientation:upright;letter-spacing:-5px;padding-bottom:5px;text-align:right;align-self:end;display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.table-header-controls{width:6px;min-width:6px;max-width:6px;cursor:col-resize;height:100%;display:flex;align-items:center;justify-content:center}.table-ico-sort{font-size:10px;color:color-mix(in srgb,var(--mk-grid-secondary) 50%,var(--mk-grid-on-primary) 50%)}.table-ico-sort .asc{animation:aniSortUp 1s infinite cubic-bezier(.175,.885,.32,1.275)}.table-ico-sort .desc{animation:aniSortDown 1s infinite cubic-bezier(.175,.885,.32,1.275)}@keyframes aniSortUp{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(-3px) scale(1.1)}to{transform:translateY(0) scale(1)}}@keyframes aniSortDown{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(3px) scale(1.1)}to{transform:translateY(0) scale(1)}}.table-row,.table-row-mobile{display:flex;justify-content:space-between;align-items:center}.table-row{background:color-mix(in srgb,var(--mk-grid-primary) 10%,var(--mk-grid-background) 90%)}.table-row-mobile{margin-top:10px}.table-group{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2);border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group:has(.table-group-collapse){border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2);border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group.table-formated{padding-left:10px}.table-group-items-area{display:flex;justify-content:flex-end;align-items:center;gap:8px;font-size:12px;font-style:italic;color:color-mix(in srgb,var(--mk-grid-on-background) 60%,var(--mk-grid-background) 40%);overflow:hidden}.table-group-items-ico{transition:transform .3s ease;transform:rotate(180deg)}.table-group-name{flex:1;height:100%;display:flex;align-items:center}.table-group-collapse .table-group-items-ico{transition:transform .3s ease;transform:rotate(0);color:color-mix(in srgb,var(--mk-grid-primary) 60%,var(--mk-grid-background) 40%)}.table-formated{min-height:var(--table-min-height);padding:1px 2px;font-size:14px}.table-dados{min-height:var(--table-min-height);padding:1px 2px}.table-item{cursor:pointer}.table-item,.table-header{border-left:0px solid transparent;border-right:0px solid transparent}.table-header:first-child{border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-item:last-child{border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2)}.header-last-col{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line) .table-item:nth-last-child(-n+1 of div.table-item-seletor){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line,.table-has-seletor) .table-dados:nth-last-child(-n+1 of.table-first-col){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header:nth-last-child(-n+1 of div.table-vertical-line){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header-mobile.table-vertical-line,.table-header.table-vertical-line,.table-item.table-vertical-line{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);display:flex;justify-content:center;align-items:center}.table-grupo-seletor,.table-item-seletor{display:flex;justify-content:center;align-items:center}.table-header-mobile.sortable .table-header-text,.table-header.sortable .table-header-text{cursor:pointer;-webkit-user-select:none;user-select:none}.table-header-mobile.sortable:hover,.table-header.sortable:hover,.table-header-mobile.sorted-asc,.table-header-mobile.sorted-desc,.table-header.sorted-asc,.table-header.sorted-desc{background:color-mix(in srgb,var(--mk-grid-secondary) 30%,var(--mk-grid-primary) 70%);color:var(--mk-grid-on-primary)}.table-row.table-errors,.table-row.table-loader{justify-content:center}.table-border-bottom-card{border-bottom:1px solid var(--mk-grid-card)}.table-border-left-darker{border-left:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-right-darker{border-right:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-left{border-left:1px solid var(--mk-grid-background)}.table-border-right{border-right:1px solid var(--mk-grid-background)}.table-item-mobile,.table-item{transition:background-color .2s cubic-bezier(.075,.82,.165,1);border-bottom:1px solid var(--mk-grid-background);position:relative}.table-item.hashue{background-color:hsl(var(--bghue) 100 var(--mk-grid-lum-10))}.table-item-mobile.odd:before,.table-item.odd:before,.table-item-mobile.even:before,.table-item.even:before,.table-item.table-bg-error:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;background:var(--mk-grid-background)}.table-item-mobile.odd:before,.table-item.odd:before{opacity:.2}.table-item-mobile.even:before,.table-item.even:before{opacity:.1}.table-item.table-bg-error:after{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;outline-offset:0px;outline:2px solid var(--mk-grid-error);background-color:var(--mk-grid-error);opacity:.04}.table-border-right-error{border-right:1px dashed color-mix(in srgb,var(--mk-grid-error) 50%,transparent 50%)}.table-styles{color:var(--mk-grid-on-card);background:color-mix(in srgb,var(--mk-grid-outline) 20%,var(--mk-grid-card) 80%);border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-show-error{display:flex;justify-content:center;align-items:center;padding:16px;margin-top:10px}.table-topo-container{display:flex;flex-wrap:wrap;align-items:center;font-size:14px;padding:8px;gap:1rem}.table-actions-outside{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-start;gap:8px}.table-top-right-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;flex:1}.table-collapse-ico{display:inline-block;transition:transform .3s}.table-collapse-ico.ativo{transition:transform .3s ease-in-out;transform:rotate(-180deg)}.table-filter-content{font-size:14px;padding:8px;overflow:hidden;transition:all .3s cubic-bezier(.075,.82,.165,1);position:relative;opacity:1}.table-filter-content.table-filter-hide{padding:0;opacity:0;margin-top:calc(var(--filter-height) * -1);transition:all .3s cubic-bezier(.075,.82,.165,1)}.table-filter-container:has(.table-filter-hide){pointer-events:none;-webkit-user-select:none;user-select:none}.table-conjunto-actions{position:relative;display:flex;align-items:stretch}.table-conjunto-actions>*{outline:1px solid var(--mk-grid-outline);outline-offset:-1px}.table-conjunto-actions>:first-child{border-radius:var(--mk-grid-border-radius);border-top-right-radius:0;border-bottom-right-radius:0}.table-conjunto-actions>:last-child{border-radius:0 7px 7px 0}.table-conjunto-actions-item{display:flex;align-items:center;justify-content:center;padding:0;min-height:40px}.table-inativo{color:var(--mk-grid-error)}.table-pagination-overflow{display:grid;align-items:center;overflow:auto;margin-top:10px}.table-pagination-overflow.compacted{margin-top:2px;justify-content:center}.table-pagination-container{display:flex;align-items:center;justify-content:space-between;padding:16px;flex-wrap:wrap;gap:16px;flex:1}.table-pagination-overflow.compacted .table-pagination-container{padding:2px 4px;gap:4px}.table-pagination-overflow.compacted.table-has-pages .table-pagination-controls{border-left:1px solid var(--mk-grid-card);border-right:1px solid var(--mk-grid-card)}.table-pagination-info{display:flex;flex-direction:column;color:var(--mk-grid-on-card-variant);font-size:12px}.table-pagination-controls{display:flex;align-items:center;gap:4px}.table-pagination-show{border-radius:var(--mk-grid-border-radius);min-width:47px;min-height:38px;display:flex;justify-content:center;align-items:center;font-size:12px}.table-pagination-per-page{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mk-grid-on-card-variant);flex-wrap:nowrap;white-space:nowrap}.table-pagination-per-page-select{--ui-width: 50px;font-size:12px;text-align:center}.table-performance{font-size:10px;font-style:italic}.compacted .table-pagination-range{display:none}.compacted .table-pagination-totais{font-size:10px}.compacted .table-performance{display:none}.table-empty{display:flex;justify-content:center;align-items:center;padding:16px}.table-info-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px;font-size:12px;border-left:4px solid var(--mk-grid-primary);padding:12px 16px;margin-top:10px}@media(max-width:768px){.table-pagination-container{flex-direction:column;align-items:stretch;padding:2px}.table-pagination-overflow.compacted .table-pagination-container{padding:0}.table-pagination-controls{justify-content:center}.table-pagination-info{flex-direction:row;justify-content:space-around;gap:10px}.table-pagination-per-page{justify-content:center}}@media(max-width:480px){.table-topo-container{flex-direction:column;align-items:stretch}.table-pagination-container{flex-wrap:wrap;justify-content:space-evenly}.table-small-screen-hide{display:none}}\n"], dependencies: [{ kind: "component", type: GridEmptyList, selector: "lib-grid-empty-list" }, { kind: "component", type: UiButton, selector: "ui-button", inputs: ["icone", "iconeAntes", "iconeDepois", "iconeCategory", "disabled", "eventPropagation", "radiusTabFormat", "tabindex", "tipo", "tema", "classes", "ativo"], outputs: ["iconeChange", "iconeAntesChange", "iconeDepoisChange", "iconeCategoryChange", "clicked", "temaChange"] }, { kind: "component", type: UiSelect, selector: "ui-select", inputs: ["value", "options", "name", "placeholder", "disabled", "multiple", "canUnselect", "textEmpty"], outputs: ["valueChange", "changed"] }, { kind: "component", type: UiCheckBox, selector: "ui-check-box", inputs: ["value", "disabled", "focused", "focus", "single", "hasDash"], outputs: ["valueChange", "focusedChange", "changed"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: GridFilterBar, selector: "lib-grid-filter-bar", inputs: ["config", "colunasDefinidas", "colAgrupadoAtual", "isAgrupado", "filterCollapsed"], outputs: ["searchInput", "actionTriggered", "filterToggle", "groupByColumn", "clearGroups", "collapseGroups", "expandGroups"] }, { kind: "component", type: GridPagination, selector: "lib-grid-pagination", inputs: ["paginacao", "totalPaginas"], outputs: ["pageChange"] }, { kind: "component", type: GridHeaderRow, selector: "lib-grid-header-row", inputs: ["colunas", "ordenacoes", "todosSelecionados", "config", "hasSeletor", "hasVerticalLine", "hasGrid", "isCompacted", "isSelectingAll"], outputs: ["columnSort", "selectAll", "columnResizeStart", "columnResizeDoubleClick"] }, { kind: "component", type: GridRowRenderer, selector: "lib-grid-row-renderer", inputs: ["dadosLinha", "config", "colunas", "colunasOrdenadas", "lista", "inputSearchText", "hasSeletor", "hasVerticalLine", "isCompacted", "hasGrid", "rowIndex"], outputs: ["actionTriggered", "rowClicked"] }, { kind: "component", type: GridCellHandler, selector: "lib-grid-cell-handler", inputs: ["lista", "linha", "config", "localColuna", "localColunas", "inputSearchText"] }, { kind: "component", type: GridCellActions, selector: "lib-grid-cell-actions", inputs: ["config", "dadosDaLinha", "mobileHeader", "compact"], outputs: ["action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7463
+ }
7464
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MkGrid, decorators: [{
7465
+ type: Component,
7466
+ args: [{ selector: 'lib-mk-grid', imports: [
7467
+ GridEmptyList,
7468
+ UiButton,
7469
+ UiSelect,
7470
+ UiCheckBox,
7471
+ DragDropModule,
7472
+ GridFilterBar,
7473
+ GridPagination,
7474
+ GridHeaderRow,
7475
+ GridRowRenderer,
7476
+ GridCellHandler,
7477
+ GridCellActions
7478
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<lib-grid-filter-bar [config]=\"config()\" [colunasDefinidas]=\"$any(colunasDefinidas())\"\n\t[colAgrupadoAtual]=\"colAgrupadoAtual()\" [isAgrupado]=\"isAgrupado()\" [filterCollapsed]=\"filtroCollapsed()\"\n\t(searchInput)=\"onInputSearch($event)\" (filterToggle)=\"onClickOpenCloseFilterZone()\"\n\t(actionTriggered)=\"onClickAction($event)\" (groupByColumn)=\"onAgruparPor($any($event))\" (clearGroups)=\"onClearGroups()\"\n\t(collapseGroups)=\"onRecolherGroups()\" (expandGroups)=\"onExpandirGroups()\">\n</lib-grid-filter-bar>\n\n@if(config().showFilterBar) {\n<div class=\"table-filter-container table-styles\" [style.--filter-height.px]=\"filterHeight()\">\n\t<div #filterContainer class=\"table-filter-content\" [class.table-filter-hide]=\"filtroCollapsed()\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n}\n\n@if(config().screen() == \"Mobile\"){\n<!-- MOBILE INICIO -->\n\n@for (dadosLinha of listaExibir(); track $index;let i = $index) {\n@if( dadosLinha.isColapsed !== true){\n\n@if(dadosLinha.isFullLine?.visible){\n<!-- MOBILE GRUPO LINHA PR\u00D3PRIA -->\n<div class=\"table-row-mobile table-formated table-group table-styles\" (click)=\"onClickGroup(dadosLinha)\">\n\t<div>{{ dadosLinha.groupName }}</div>\n\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t<div class=\"table-group-items-ico\">\n\t\t\t<i class=\"bi bi-caret-down\"></i>\n\t\t</div>\n\t</div>\n</div>\n} @else {\n\n<div class=\"table-overflow mobile\" [style.--table-min-height]=\"isCompacted() ? '20px' : minLineHeight()\">\n\t<div class=\"table-table-mobile\" [class.selected]=\"dadosLinha.selecionado\">\n\n\t\t<!-- MOBILE DADOS -->\n\t\t@if(config().showActionsLine){\n\t\t<div class=\"table-header-mobile\" [style.gridArea]=\"'auto / auto / auto / span 2'\">\n\t\t\t@if(hasVerticalLine()){\n\t\t\t<!-- MOBILE VERTICAL DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-vertical-line\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t{{ dadosLinha.ordem }}\n\t\t\t</div>\n\t\t\t}\n\t\t\t@if(hasSeletor()){\n\t\t\t<!-- MOBILE SELECTOR DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-item-seletor\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t<ui-check-box [(value)]=\"dadosLinha.selecionado\" [style.--ui-color]=\"'var(--sys-on-primary)'\"\n\t\t\t\t\t[style.--ui-outline]=\"'var(--sys-on-primary)'\" [single]=\"this.config().selectionMode == 'single'\"\n\t\t\t\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\"></ui-check-box>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"table-header-mobile-space\" (click)=\"onClickRow(dadosLinha)\"></div>\n\t\t\t<lib-grid-cell-actions [config]=\"config()\" [dadosDaLinha]=\"dadosLinha\" [mobileHeader]=\"true\"\n\t\t\t\t(action)=\"onClickCellAction($event)\" [compact]=\"isCompacted()\"></lib-grid-cell-actions>\n\t\t</div>\n\t\t}\n\n\t\t<!-- MOBILE LINHA -->\n\t\t@for (localColuna of colunasOrdenadas(); track $index;) {\n\t\t<div class=\"table-header-mobile\" [class.sortable]=\"localColuna.sortable !== false\"\n\t\t\t[class.sorted-asc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'asc'\"\n\t\t\t[class.sorted-desc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'desc'\"\n\t\t\t(click)=\"localColuna.sortable !== false && alternarOrdenacao(localColuna.prop)\" [style]=\"localColuna.styleHeader\">\n\t\t\t<div class=\"table-header-mobile-text\" [title]=\"localColuna.titulo\"\n\t\t\t\t[innerHTML]=\"localColuna.tituloReduzido ?? localColuna.titulo\">\n\t\t\t</div>\n\t\t\t<div class=\"table-header-controls\">\n\t\t\t\t@if (localColuna.sortable !== false) {\n\t\t\t\t<span class=\"table-ico-sort\">\n\t\t\t\t\t@if (obterDirecaoOrdenacao(localColuna.prop) === 'asc') {\n\t\t\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t\t\t} @else if (obterDirecaoOrdenacao(localColuna.prop) === 'desc') {\n\t\t\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t\t\t}\n\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t<lib-grid-cell-handler class=\"table-item-mobile table-formated\" [class.odd]=\"i % 2 !== 0\" [class.even]=\"i % 2 === 0\"\n\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"localColuna\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t[localColunas]=\"colunasOrdenadas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t}\n\t</div>\n</div>\n}\n}\n} @empty {\n<!-- LINHA DE SEM DADOS -->\n<div class=\"table-styles\"><lib-grid-empty-list></lib-grid-empty-list></div>\n}\n<!-- MOBILE FIM -->\n\n\n} @else {\n<!-- DESKTOP INICIO -->\n<div #gridSize class=\"table-overflow\" [class.compacted]=\"isCompacted()\"\n\t[style.--table-min-height]=\"isCompacted() ? '40px' : minLineHeight()\">\n\t<div class=\"table-table\" [class.table-has-vertical-line]=\"hasVerticalLine()\" [class.table-has-seletor]=\"hasSeletor()\"\n\t\tcdkDropList (cdkDropListDropped)=\"onDropColuna($event)\" [cdkDropListData]=\"colunasExibir()\"\n\t\t[style.gridTemplateColumns]=\"`${this.pxVerticalLine()}${this.pxSelector()}` + this.pxColunas() + this.pxActions()\">\n\t\t<!-- DESKTOP HEADER -->\n\t\t<lib-grid-header-row [colunas]=\"colunasExibir()\" [ordenacoes]=\"ordenacoesSignal()\"\n\t\t\t[todosSelecionados]=\"todosSelecionados()\" [config]=\"config()\" [hasSeletor]=\"hasSeletor()\"\n\t\t\t[hasVerticalLine]=\"hasVerticalLine()\" [hasGrid]=\"hasGrid()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[isSelectingAll]=\"isSelectingAll()\" (columnSort)=\"alternarOrdenacao($event)\"\n\t\t\t(selectAll)=\"onChangeTodosSelecionados($event)\"\n\t\t\t(columnResizeStart)=\"onResizeStart($event.event, $any($event.coluna))\"\n\t\t\t(columnResizeDoubleClick)=\"onDoubleClickControls($event.event, $any($event.coluna))\">\n\t\t</lib-grid-header-row>\n\n\t\t<!-- DESKTOP LINHAS DE DADOS -->\n\t\t@for (dadosLinha of listaExibir(); track $index; let i = $index) {@if( dadosLinha.isColapsed !== true){\n\n\t\t@if(dadosLinha.isFullLine?.visible){\n\n\t\t<!-- DESKTOP FULL LINE (COLSPAN HORIZONTAL) -->\n\t\t@if(hasVerticalLine()){\n\t\t<!-- DESKTOP HEADER VERTICAL FULL LINE -->\n\t\t<div class=\"table-header table-formated table-vertical-line\">\n\t\t\t{{ dadosLinha.ordem }}\n\t\t</div>\n\t\t}\n\t\t<!-- DESKTOP GRUPO: ROW -->\n\t\t@if(dadosLinha.isGroup){\n\n\t\t<div class=\"table-row table-formated table-group table-border-bottom-card\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<div class=\"table-group-name\" [class.table-inativo]=\"dadosLinha.inativo\">\n\t\t\t\t<lib-grid-cell-handler class=\"table-item table-dados {{ colAgrupadoAtual()?.classeCell }}\"\n\t\t\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"colAgrupadoAtual()!\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t\t\t[localColunas]=\"colunasDefinidas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t\t</div>\n\t\t\t<ui-button tipo=\"nofill\" (click)=\"onClickGroup(dadosLinha)\">\n\t\t\t\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t\t\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t\t\t\t<div class=\"table-group-items-ico\">\n\t\t\t\t\t\t<i [class]=\"dadosLinha.isFullLine?.colapsed ? 'bi bi-caret-down-fill' : 'bi bi-caret-down'\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ui-button>\n\t\t</div>\n\n\t\t} @else {\n\t\t<div class=\"table-row table-formated table-others\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\tNada a exibir nesta linha\n\t\t</div>\n\t\t}\n\n\t\t} @else {\n\n\t\t<!-- LINHA NORMAL via GridRowRenderer -->\n\t\t<lib-grid-row-renderer [dadosLinha]=\"dadosLinha\" [config]=\"config()\" [colunas]=\"colunasExibir()\"\n\t\t\t[colunasOrdenadas]=\"colunasOrdenadas()\" [lista]=\"lista()!\" [inputSearchText]=\"inputSearchText()\"\n\t\t\t[hasSeletor]=\"hasSeletor()\" [hasVerticalLine]=\"hasVerticalLine()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[hasGrid]=\"hasGrid()\" [rowIndex]=\"i\" (actionTriggered)=\"onClickCellAction($event)\"\n\t\t\t(rowClicked)=\"onClickRow($event)\">\n\t\t</lib-grid-row-renderer>\n\n\t\t}}\n\n\t\t<!-- POSSIBILIDADES SEM DADOS -->\n\t\t} @empty {\n\n\t\t<!-- ERRO -->\n\t\t@if(config().hasError) {\n\t\t<div class=\"table-row table-formated table-errors\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridError]\"></ng-content>\n\t\t</div>\n\n\t\t<!-- LOADING -->\n\t\t} @else if(!config().isLoaded) {\n\t\t<div class=\"table-row table-formated table-loader\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridLoading]\"></ng-content>\n\t\t</div>\n\n\t\t} @else {\n\n\t\t<div class=\"table-row table-empty\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<lib-grid-empty-list></lib-grid-empty-list>\n\t\t</div>\n\t\t}\n\n\t\t}\n\n\t\t<!-- FIM DA LINHA NORMAL -->\n\n\n\t</div>\n</div>\n<!-- DESKTOP FIM -->\n}\n\n\n@if(config().showPagination){\n<lib-grid-pagination [paginacao]=\"paginacaoSignal()\" [totalPaginas]=\"totalPaginas()\"\n\t(pageChange)=\"irParaPagina($event)\">\n</lib-grid-pagination>\n}\n\n\n\n\n@if(config().showInfoBar){\n<!-- Informa\u00E7\u00F5es de Ordena\u00E7\u00E3o -->\n@if (ordenacoesSignal().length > 0) {\n<div class=\"table-info-row table-styles\">\n\t@if (ordenacoesSignal().length > 0) {\n\t<div>Ordenado por: {{ getOrdenacaoTexto() }}</div>\n\t}\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClickClearInfo()\" icone=\"bi bi-x-lg\"></ui-button>\n</div>\n}\n<!-- Informa\u00E7\u00F5es de Agrupamento -->\n@if (this.isAgrupado()) {\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-object-group\"></i>\n\t<div class=\"flex flex-wrap gap-1 f-t-b\">\n\t\tAgrupado por {{ colAgrupadoAtual()?.titulo }} (h\u00E1 {{ gruposEncontrados.itens.size }} grupos)\n\t\t<div class=\"campoSemForm\">\n\t\t\t<ui-select [value]=\"colAgrupadoAtual()?.prop\" [options]=\"this.colunasKVDefinidas()\"\n\t\t\t\t(changed)=\"onChangedAgrupamento($event)\"></ui-select>\n\t\t</div>\n\n\t</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\tRecolher Todos\n\t</ui-button>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\tExpandir Todos\n\t</ui-button>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\">\n\t\tDesagrupar\n\t</ui-button>\n</div>\n}\n}\n\n\n@if(devMode){\n<!-- MODO DESENVOLVIMENTO -->\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-microscope\"></i>\n\t<div>Fun\u00E7\u00F5es extras</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasGrid()\" (click)=\"onChangeHasGrid()\" icone='bi bi-grid-3x3'\n\t\ttitle=\"Grid\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"isCompacted()\" (click)=\"onChangeCompacted()\"\n\t\ticone='fa fa-arrows-to-circle' title=\"Compactar\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasVerticalLine()\" (click)=\"onChangeLineNumber()\"\n\t\ticone='bi bi-layout-sidebar' title=\"Linha Vertical\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasSeletor()\" (click)=\"onChangeSeletor()\" icone='fa fa-check-double'\n\t\ttitle=\"Seletor\"></ui-button>\n</div>\n}", styles: [":host{--mk-grid-border-radius: var(--sys-border-radius, 10px);--mk-grid-gap: var(--sys-gap, 8px);--mk-grid-lum-10: var(--sys-lum-10, 95%);--mk-grid-card: var(--sys-card, hsl(216 22% 96%));--mk-grid-background: var(--sys-background, hsl(0 0% 100%));--mk-grid-bg-card: var(--mk-grid-card);--mk-grid-bg: var(--mk-grid-background);--mk-grid-outline: var(--sys-outline, hsl(220 15% 86%));--mk-grid-primary: var(--sys-primary, hsl(224 74% 53%));--mk-grid-on-primary: var(--sys-on-primary, hsl(0 0% 100%));--mk-grid-secondary: var(--sys-secondary, hsl(221 44% 49%));--mk-grid-error: var(--sys-error, hsl(0 66% 47%));--mk-grid-info: var(--sys-info, hsl(210 79% 46%));--mk-grid-high: var(--sys-high, hsl(221 100% 97%));--mk-grid-on-high: var(--sys-on-high, hsl(222 35% 16%));--mk-grid-on-card: var(--sys-on-card, hsl(221 27% 16%));--mk-grid-on-card-variant: var(--sys-on-card-variant, hsl(222 15% 43%));--mk-grid-on-background: var(--sys-on-background, hsl(222 20% 20%));--mk-grid-primary-15: var(--sys-primary-15, hsl(224 74% 53% / 15%))}:host .drag-container{cursor:grab}:host .drag-container:active{cursor:grabbing}:host-context(body:has(.cdk-drag-preview)) .drop-option{outline:1px dashed var(--mk-grid-outline)}:host-context(body:has(.cdk-drag-preview)) .drop-option:hover{outline:1px solid var(--mk-grid-outline);background-color:var(--mk-grid-high)}:host ui-menu>ui-button{border-bottom:1px solid var(--ui-outline-color, var(--mk-grid-outline))}:host .menu-title{font-size:1.2rem;font-weight:600;padding:0 calc(var(--mk-grid-gap) / 2) var(--mk-grid-gap) calc(var(--mk-grid-gap) / 2);border-bottom:1px solid var(--mk-grid-outline);display:flex;justify-content:space-between;align-items:center;gap:var(--mk-grid-gap)}:host .menu-sub-title{font-size:14px;font-weight:500;display:flex;justify-content:flex-start;align-items:center;gap:var(--mk-grid-gap);padding-left:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host .menu-sub-value{font-size:14px;font-weight:400;display:flex;justify-content:flex-end;align-items:center;gap:calc(var(--mk-grid-gap) / 2);padding-right:calc(var(--mk-grid-gap) / 2);min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host{display:flex;flex-direction:column}.table-overflow{display:grid;overflow:auto;margin-top:10px;padding:0;position:relative}.table-overflow.compacted{justify-content:center}.table-overflow.mobile{border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-overflow.mobile{overflow:hidden}.table-table-mobile,.table-table{display:grid;font-size:13px}.table-table-mobile{grid-template-columns:1fr 1fr}.table-header,.table-header-mobile{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);transition:background-color .2s ease;display:flex;flex-wrap:wrap;align-items:center;align-content:stretch;justify-content:center;-webkit-user-select:none;user-select:none;min-height:var(--table-min-height)}.table-header-mobile{padding:0 5px}.table-header-mobile-space{flex:1;height:100%;display:flex;align-items:center;justify-content:center}.table-header-mobile-text,.table-header-text{flex:1;font-weight:600;text-align:center;display:block;align-content:center}.table-header-mobile-text{text-align:start}.table-header-text{height:100%;border-radius:var(--mk-grid-border-radius);position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-drag-preview{font-size:14px!important;background:var(--mk-grid-high);color:var(--mk-grid-on-high);opacity:.6}.cdk-drop-list-receiving:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-info);filter:opacity(.5)}.cdk-drag-placeholder:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--mk-grid-primary)}.textVertical .table-header-text{writing-mode:vertical-lr;text-orientation:upright;letter-spacing:-5px;padding-bottom:5px;text-align:right;align-self:end;display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.table-header-controls{width:6px;min-width:6px;max-width:6px;cursor:col-resize;height:100%;display:flex;align-items:center;justify-content:center}.table-ico-sort{font-size:10px;color:color-mix(in srgb,var(--mk-grid-secondary) 50%,var(--mk-grid-on-primary) 50%)}.table-ico-sort .asc{animation:aniSortUp 1s infinite cubic-bezier(.175,.885,.32,1.275)}.table-ico-sort .desc{animation:aniSortDown 1s infinite cubic-bezier(.175,.885,.32,1.275)}@keyframes aniSortUp{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(-3px) scale(1.1)}to{transform:translateY(0) scale(1)}}@keyframes aniSortDown{0%{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1)}80%{transform:translateY(3px) scale(1.1)}to{transform:translateY(0) scale(1)}}.table-row,.table-row-mobile{display:flex;justify-content:space-between;align-items:center}.table-row{background:color-mix(in srgb,var(--mk-grid-primary) 10%,var(--mk-grid-background) 90%)}.table-row-mobile{margin-top:10px}.table-group{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2);border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group:has(.table-group-collapse){border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2);border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-group.table-formated{padding-left:10px}.table-group-items-area{display:flex;justify-content:flex-end;align-items:center;gap:8px;font-size:12px;font-style:italic;color:color-mix(in srgb,var(--mk-grid-on-background) 60%,var(--mk-grid-background) 40%);overflow:hidden}.table-group-items-ico{transition:transform .3s ease;transform:rotate(180deg)}.table-group-name{flex:1;height:100%;display:flex;align-items:center}.table-group-collapse .table-group-items-ico{transition:transform .3s ease;transform:rotate(0);color:color-mix(in srgb,var(--mk-grid-primary) 60%,var(--mk-grid-background) 40%)}.table-formated{min-height:var(--table-min-height);padding:1px 2px;font-size:14px}.table-dados{min-height:var(--table-min-height);padding:1px 2px}.table-item{cursor:pointer}.table-item,.table-header{border-left:0px solid transparent;border-right:0px solid transparent}.table-header:first-child{border-top-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-item:last-child{border-bottom-right-radius:calc(var(--mk-grid-border-radius) / 2)}.header-last-col{border-top-right-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line) .table-item:nth-last-child(-n+1 of div.table-item-seletor){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-table:not(.table-has-vertical-line,.table-has-seletor) .table-dados:nth-last-child(-n+1 of.table-first-col){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header:nth-last-child(-n+1 of div.table-vertical-line){border-bottom-left-radius:calc(var(--mk-grid-border-radius) / 2)}.table-header-mobile.table-vertical-line,.table-header.table-vertical-line,.table-item.table-vertical-line{background:var(--mk-grid-primary);color:var(--mk-grid-on-primary);display:flex;justify-content:center;align-items:center}.table-grupo-seletor,.table-item-seletor{display:flex;justify-content:center;align-items:center}.table-header-mobile.sortable .table-header-text,.table-header.sortable .table-header-text{cursor:pointer;-webkit-user-select:none;user-select:none}.table-header-mobile.sortable:hover,.table-header.sortable:hover,.table-header-mobile.sorted-asc,.table-header-mobile.sorted-desc,.table-header.sorted-asc,.table-header.sorted-desc{background:color-mix(in srgb,var(--mk-grid-secondary) 30%,var(--mk-grid-primary) 70%);color:var(--mk-grid-on-primary)}.table-row.table-errors,.table-row.table-loader{justify-content:center}.table-border-bottom-card{border-bottom:1px solid var(--mk-grid-card)}.table-border-left-darker{border-left:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-right-darker{border-right:1px solid color-mix(in srgb,var(--mk-grid-card) 20%,transparent 80%)}.table-border-left{border-left:1px solid var(--mk-grid-background)}.table-border-right{border-right:1px solid var(--mk-grid-background)}.table-item-mobile,.table-item{transition:background-color .2s cubic-bezier(.075,.82,.165,1);border-bottom:1px solid var(--mk-grid-background);position:relative}.table-item.hashue{background-color:hsl(var(--bghue) 100 var(--mk-grid-lum-10))}.table-item-mobile.odd:before,.table-item.odd:before,.table-item-mobile.even:before,.table-item.even:before,.table-item.table-bg-error:before{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;background:var(--mk-grid-background)}.table-item-mobile.odd:before,.table-item.odd:before{opacity:.2}.table-item-mobile.even:before,.table-item.even:before{opacity:.1}.table-item.table-bg-error:after{content:\"\";position:absolute;width:100%;height:100%;top:0;left:0;z-index:0;pointer-events:none;outline-offset:0px;outline:2px solid var(--mk-grid-error);background-color:var(--mk-grid-error);opacity:.04}.table-border-right-error{border-right:1px dashed color-mix(in srgb,var(--mk-grid-error) 50%,transparent 50%)}.table-styles{color:var(--mk-grid-on-card);background:color-mix(in srgb,var(--mk-grid-outline) 20%,var(--mk-grid-card) 80%);border-radius:calc(var(--mk-grid-border-radius) / 2)}.table-show-error{display:flex;justify-content:center;align-items:center;padding:16px;margin-top:10px}.table-topo-container{display:flex;flex-wrap:wrap;align-items:center;font-size:14px;padding:8px;gap:1rem}.table-actions-outside{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-start;gap:8px}.table-top-right-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;flex:1}.table-collapse-ico{display:inline-block;transition:transform .3s}.table-collapse-ico.ativo{transition:transform .3s ease-in-out;transform:rotate(-180deg)}.table-filter-content{font-size:14px;padding:8px;overflow:hidden;transition:all .3s cubic-bezier(.075,.82,.165,1);position:relative;opacity:1}.table-filter-content.table-filter-hide{padding:0;opacity:0;margin-top:calc(var(--filter-height) * -1);transition:all .3s cubic-bezier(.075,.82,.165,1)}.table-filter-container:has(.table-filter-hide){pointer-events:none;-webkit-user-select:none;user-select:none}.table-conjunto-actions{position:relative;display:flex;align-items:stretch}.table-conjunto-actions>*{outline:1px solid var(--mk-grid-outline);outline-offset:-1px}.table-conjunto-actions>:first-child{border-radius:var(--mk-grid-border-radius);border-top-right-radius:0;border-bottom-right-radius:0}.table-conjunto-actions>:last-child{border-radius:0 7px 7px 0}.table-conjunto-actions-item{display:flex;align-items:center;justify-content:center;padding:0;min-height:40px}.table-inativo{color:var(--mk-grid-error)}.table-pagination-overflow{display:grid;align-items:center;overflow:auto;margin-top:10px}.table-pagination-overflow.compacted{margin-top:2px;justify-content:center}.table-pagination-container{display:flex;align-items:center;justify-content:space-between;padding:16px;flex-wrap:wrap;gap:16px;flex:1}.table-pagination-overflow.compacted .table-pagination-container{padding:2px 4px;gap:4px}.table-pagination-overflow.compacted.table-has-pages .table-pagination-controls{border-left:1px solid var(--mk-grid-card);border-right:1px solid var(--mk-grid-card)}.table-pagination-info{display:flex;flex-direction:column;color:var(--mk-grid-on-card-variant);font-size:12px}.table-pagination-controls{display:flex;align-items:center;gap:4px}.table-pagination-show{border-radius:var(--mk-grid-border-radius);min-width:47px;min-height:38px;display:flex;justify-content:center;align-items:center;font-size:12px}.table-pagination-per-page{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mk-grid-on-card-variant);flex-wrap:nowrap;white-space:nowrap}.table-pagination-per-page-select{--ui-width: 50px;font-size:12px;text-align:center}.table-performance{font-size:10px;font-style:italic}.compacted .table-pagination-range{display:none}.compacted .table-pagination-totais{font-size:10px}.compacted .table-performance{display:none}.table-empty{display:flex;justify-content:center;align-items:center;padding:16px}.table-info-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px;font-size:12px;border-left:4px solid var(--mk-grid-primary);padding:12px 16px;margin-top:10px}@media(max-width:768px){.table-pagination-container{flex-direction:column;align-items:stretch;padding:2px}.table-pagination-overflow.compacted .table-pagination-container{padding:0}.table-pagination-controls{justify-content:center}.table-pagination-info{flex-direction:row;justify-content:space-around;gap:10px}.table-pagination-per-page{justify-content:center}}@media(max-width:480px){.table-topo-container{flex-direction:column;align-items:stretch}.table-pagination-container{flex-wrap:wrap;justify-content:space-evenly}.table-small-screen-hide{display:none}}\n"] }]
7479
+ }], ctorParameters: () => [], propDecorators: { lista: [{ type: i0.Input, args: [{ isSignal: true, alias: "lista", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], filtro: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtro", required: false }] }], minLineHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minLineHeight", required: false }] }, { type: i0.Output, args: ["minLineHeightChange"] }], isCompacted: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompacted", required: false }] }, { type: i0.Output, args: ["isCompactedChange"] }], hasGrid: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasGrid", required: false }] }, { type: i0.Output, args: ["hasGridChange"] }], hasVerticalLine: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasVerticalLine", required: false }] }, { type: i0.Output, args: ["hasVerticalLineChange"] }], hasSeletor: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSeletor", required: false }] }, { type: i0.Output, args: ["hasSeletorChange"] }], gridSize: [{ type: i0.ViewChild, args: ['gridSize', { ...{ read: ElementRef }, isSignal: true }] }], gridfiltro: [{ type: i0.ViewChild, args: ['gridfiltro', { ...{ read: ElementRef }, isSignal: true }] }], filterContainer: [{ type: i0.ViewChild, args: ['filterContainer', { ...{ read: ElementRef }, isSignal: true }] }] } });
7480
+
7481
+ class GridCell {
7482
+ params;
7483
+ _masterCellService;
7484
+ constructor(inputToken, legacyInput) {
7485
+ const input = inputToken ?? legacyInput ?? undefined;
7486
+ this.params = signal(input, ...(ngDevMode ? [{ debugName: "params" }] : /* istanbul ignore next */ []));
7487
+ this._masterCellService = input?.servicoParams;
7488
+ if (this._masterCellService) {
7489
+ effect(() => { this.params.set(this._masterCellService?.gridParams() ?? input); });
7490
+ }
7491
+ }
7492
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCell, deps: [{ token: GRID_PARAMS_TOKEN, optional: true }, { token: 'GRID_PARAMS', optional: true }], target: i0.ɵɵFactoryTarget.Component });
7493
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: GridCell, isStandalone: true, selector: "lib-grid-cell", ngImport: i0, template: '', isInline: true });
7494
+ }
7495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GridCell, decorators: [{
7496
+ type: Component,
7497
+ args: [{
7498
+ selector: 'lib-grid-cell',
7499
+ template: '',
7500
+ }]
7501
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
7502
+ type: Optional
7503
+ }, {
7504
+ type: Inject,
7505
+ args: [GRID_PARAMS_TOKEN]
7506
+ }] }, { type: undefined, decorators: [{
7507
+ type: Optional
7508
+ }, {
7509
+ type: Inject,
7510
+ args: ['GRID_PARAMS']
7511
+ }] }] });
7512
+
6451
7513
  // Tipos mais específicos, enuns, interfaces e funções uteis.
6452
7514
 
6453
7515
  /**
6454
7516
  * Generated bundle index. Do not edit.
6455
7517
  */
6456
7518
 
6457
- export { BaseFieldsForm, BaseFieldsValues, CampoDe, FieldsGeneric, FiltroDe, FormAction, FormFilter, FormNoAction, FormatedValues, Formulario, IField, IRegraTipo, LibUtil, Regra, SingleValues, UiButton, UiCheckBox, UiChip, UiDropZone, UiFileList, UiListErrors, UiLoading, UiMenu, UiProcurar, UiProgress, UiSelect, UiSlide };
7519
+ export { BaseFieldsForm, BaseFieldsValues, CampoDe, FieldsGeneric, FiltroDe, FormAction, FormFilter, FormNoAction, FormatedValues, Formulario, GRID_PARAMS_TOKEN, GridCell, IField, IGridFilterType, IRegraTipo, LibUtil, MkGrid, PAGINATION_OPTIONS, Regra, ScreenMode, SingleValues, UiButton, UiCheckBox, UiChip, UiDropZone, UiFileList, UiListErrors, UiLoading, UiMenu, UiProcurar, UiProgress, UiSelect, UiSlide };
6458
7520
  //# sourceMappingURL=masterkeymaterial-ui.mjs.map