ngx-redi-core 18.0.2 → 18.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Helper/index.d.ts +5 -0
- package/Helper/public-api.d.ts +1 -0
- package/Helper/src/helpers/csv.service.d.ts +33 -0
- package/RediTable/index.d.ts +5 -0
- package/RediTable/{public-api.ts → public-api.d.ts} +6 -9
- package/RediTable/src/components/filter-data/filter-data.component.d.ts +22 -0
- package/RediTable/src/components/redi-table/redi-table.component.d.ts +136 -0
- package/RediTable/src/models/interfaces/{column-definition.ts → column-definition.d.ts} +15 -18
- package/RediTable/src/models/interfaces/{data-table.ts → data-table.d.ts} +24 -28
- package/RediTable/src/models/interfaces/filter-item.d.ts +5 -0
- package/RediTable/src/models/interfaces/{row-action.ts → row-action.d.ts} +24 -32
- package/RediTable/src/models/types/event-table.type.d.ts +5 -0
- package/esm2022/Helper/ngx-redi-core-Helper.mjs +5 -0
- package/esm2022/Helper/public-api.mjs +2 -0
- package/esm2022/Helper/src/helpers/csv.service.mjs +69 -0
- package/esm2022/RediTable/ngx-redi-core-RediTable.mjs +5 -0
- package/esm2022/RediTable/public-api.mjs +9 -0
- package/esm2022/RediTable/src/components/filter-data/filter-data.component.mjs +75 -0
- package/esm2022/RediTable/src/components/redi-table/redi-table.component.mjs +367 -0
- package/esm2022/RediTable/src/models/interfaces/column-definition.mjs +2 -0
- package/esm2022/RediTable/src/models/interfaces/data-table.mjs +2 -0
- package/esm2022/RediTable/src/models/interfaces/filter-item.mjs +2 -0
- package/esm2022/RediTable/src/models/interfaces/row-action.mjs +2 -0
- package/esm2022/RediTable/src/models/types/event-table.type.mjs +2 -0
- package/esm2022/ngx-redi-core.mjs +5 -0
- package/esm2022/public-api.mjs +8 -0
- package/fesm2022/ngx-redi-core-Helper.mjs +76 -0
- package/fesm2022/ngx-redi-core-Helper.mjs.map +1 -0
- package/fesm2022/ngx-redi-core-RediTable.mjs +450 -0
- package/fesm2022/ngx-redi-core-RediTable.mjs.map +1 -0
- package/fesm2022/ngx-redi-core.mjs +14 -0
- package/fesm2022/ngx-redi-core.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +37 -12
- package/public-api.d.ts +4 -0
- package/Helper/index.ts +0 -2
- package/Helper/ng-package.json +0 -6
- package/Helper/public-api.ts +0 -1
- package/Helper/src/helpers/csv.service.spec.ts +0 -16
- package/Helper/src/helpers/csv.service.ts +0 -67
- package/RediTable/index.ts +0 -2
- package/RediTable/ng-package.json +0 -6
- package/RediTable/src/components/filter-data/filter-data.component.css +0 -26
- package/RediTable/src/components/filter-data/filter-data.component.html +0 -17
- package/RediTable/src/components/filter-data/filter-data.component.spec.ts +0 -23
- package/RediTable/src/components/filter-data/filter-data.component.ts +0 -88
- package/RediTable/src/components/redi-table/redi-table.component.css +0 -133
- package/RediTable/src/components/redi-table/redi-table.component.html +0 -95
- package/RediTable/src/components/redi-table/redi-table.component.spec.ts +0 -23
- package/RediTable/src/components/redi-table/redi-table.component.ts +0 -408
- package/RediTable/src/models/interfaces/filter-item.ts +0 -5
- package/RediTable/src/models/types/event-table.type.spec.ts +0 -7
- package/RediTable/src/models/types/event-table.type.ts +0 -3
- package/ng-package.json +0 -7
- package/public-api.ts +0 -8
- package/tsconfig.lib.json +0 -14
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/helpers/csv.service';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Servicio que provee métodos para trabajar con datos CSV
|
|
4
|
+
*/
|
|
5
|
+
export declare class CsvService {
|
|
6
|
+
/**
|
|
7
|
+
* Genera el texto CSV a partir de un archivo
|
|
8
|
+
* @param data- Datos a construir
|
|
9
|
+
* @returns CSV texto
|
|
10
|
+
*/
|
|
11
|
+
generarCsv<T extends {}>(data: Array<T>): string;
|
|
12
|
+
/**
|
|
13
|
+
* Método que indica si la propiedad es serializable
|
|
14
|
+
* @param propiedad - Propiedad a validar
|
|
15
|
+
* @returns True si es una propiedad serializable
|
|
16
|
+
*/
|
|
17
|
+
private tipoSerializable;
|
|
18
|
+
/**
|
|
19
|
+
* Descarga el CSV a partir de los datos establecidos
|
|
20
|
+
* @param archivo - Nombre del archivo a descargar
|
|
21
|
+
* @param data - Arreglo de datos a descargar
|
|
22
|
+
*/
|
|
23
|
+
descargarCsv<T extends {}>(archivo: string, data: Array<T>): void;
|
|
24
|
+
/**
|
|
25
|
+
* Genera el link para el blob y archivo establecidos
|
|
26
|
+
* @param archivo - Nombre del archivo a descargar
|
|
27
|
+
* @param blob - Contenido del blob
|
|
28
|
+
* @returns link
|
|
29
|
+
*/
|
|
30
|
+
private generarLink;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CsvService, never>;
|
|
32
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CsvService>;
|
|
33
|
+
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
/** Componentes */
|
|
2
|
-
export * from './src/components/redi-table/redi-table.component';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export * from './src/models/interfaces/
|
|
6
|
-
export * from './src/models/interfaces/
|
|
7
|
-
export * from './src/models/interfaces/row-action';
|
|
8
|
-
// /** Tipos */
|
|
9
|
-
// export * from './src/models/types/event-table.type';
|
|
1
|
+
/** Componentes */
|
|
2
|
+
export * from './src/components/redi-table/redi-table.component';
|
|
3
|
+
/** Modelos */
|
|
4
|
+
export * from './src/models/interfaces/column-definition';
|
|
5
|
+
export * from './src/models/interfaces/data-table';
|
|
6
|
+
export * from './src/models/interfaces/row-action';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AfterViewInit, EventEmitter } from '@angular/core';
|
|
2
|
+
import { MatListOption } from '@angular/material/list';
|
|
3
|
+
import { FilterItem } from '../../models/interfaces/filter-item';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class FilterDataComponent implements AfterViewInit {
|
|
6
|
+
set filtrosColumnas(value: Array<FilterItem>);
|
|
7
|
+
_refFiltro: Array<FilterItem>;
|
|
8
|
+
filtros: Array<FilterItem>;
|
|
9
|
+
allItemControl: MatListOption;
|
|
10
|
+
filterEnd: EventEmitter<boolean>;
|
|
11
|
+
constructor();
|
|
12
|
+
ngAfterViewInit(): void;
|
|
13
|
+
selectedChange(): void;
|
|
14
|
+
setAllCheck(value: boolean): void;
|
|
15
|
+
isAllChecked(filters: Array<FilterItem>): boolean;
|
|
16
|
+
filter(event: KeyboardEvent): void;
|
|
17
|
+
aplicarFiltros(): void;
|
|
18
|
+
cancelarFiltro(): void;
|
|
19
|
+
loadData(): void;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterDataComponent, never>;
|
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterDataComponent, "filter-data", never, { "filtrosColumnas": { "alias": "filtrosColumnas"; "required": false; }; }, { "filterEnd": "filterEnd"; }, never, never, true, never>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/** Librerías angular */
|
|
2
|
+
import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
3
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
4
|
+
import { MatSort, SortDirection } from '@angular/material/sort';
|
|
5
|
+
import { MatTableDataSource } from '@angular/material/table';
|
|
6
|
+
/** Modelo */
|
|
7
|
+
import { DataTable } from '../../models/interfaces/data-table';
|
|
8
|
+
import { ColumnDefinition } from '../../models/interfaces/column-definition';
|
|
9
|
+
import { CsvService } from 'ngx-redi-core/Helper';
|
|
10
|
+
import { RowAction } from '../../models/interfaces/row-action';
|
|
11
|
+
import { MatMenuTrigger } from '@angular/material/menu';
|
|
12
|
+
import { FilterDataComponent } from '../filter-data/filter-data.component';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
/**
|
|
15
|
+
* Componente que muestra los datos en una tabla
|
|
16
|
+
* @decorators ´@Component´
|
|
17
|
+
*/
|
|
18
|
+
export declare class RediTableComponent<T extends object> implements OnInit, OnChanges {
|
|
19
|
+
private csv;
|
|
20
|
+
/**
|
|
21
|
+
* Propiedad que indica si se pueden seleccionar las filas
|
|
22
|
+
*/
|
|
23
|
+
seleccionarFilas: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Propiedad que indica si se habilitan los filtros para la tabla
|
|
26
|
+
*/
|
|
27
|
+
filtrarDatos: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Propiedad que indica si se paginan los datos
|
|
30
|
+
*/
|
|
31
|
+
paginar: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Propiedad que indica si se habilita el ordenamiento de datos
|
|
34
|
+
*/
|
|
35
|
+
ordenarDatos: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Datos y configuración de la tabla
|
|
38
|
+
*/
|
|
39
|
+
dataTable: DataTable<T>;
|
|
40
|
+
/**
|
|
41
|
+
* Origen de datos para el MatTable
|
|
42
|
+
*/
|
|
43
|
+
dataSource: MatTableDataSource<T>;
|
|
44
|
+
/**
|
|
45
|
+
* Objeto de la vista para el ordenamiento
|
|
46
|
+
*/
|
|
47
|
+
sort: MatSort;
|
|
48
|
+
/**
|
|
49
|
+
* Objeto de la vista para la paginación
|
|
50
|
+
*/
|
|
51
|
+
paginator: MatPaginator;
|
|
52
|
+
/**
|
|
53
|
+
* Contiene las columnas que se mostraran en la tabla
|
|
54
|
+
*/
|
|
55
|
+
columnas: Array<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Contiene los datos de las columnas
|
|
58
|
+
*/
|
|
59
|
+
datosColumna: Array<ColumnDefinition>;
|
|
60
|
+
compoFiltro: FilterDataComponent;
|
|
61
|
+
/**
|
|
62
|
+
* Crea un nuevo componente Tabla
|
|
63
|
+
*/
|
|
64
|
+
constructor(csv: CsvService);
|
|
65
|
+
closeMenu(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Eventos que se ejecutan al inicias
|
|
68
|
+
*/
|
|
69
|
+
ngOnInit(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Construye los datos de las columnas para la tabla
|
|
72
|
+
*/
|
|
73
|
+
private construiDatosColumna;
|
|
74
|
+
private generateFilterData;
|
|
75
|
+
/**
|
|
76
|
+
* Activa las columnas que se van a mostrar
|
|
77
|
+
*/
|
|
78
|
+
private mostrarColumnas;
|
|
79
|
+
/**
|
|
80
|
+
* Método que ejecuta los cambios en la selección de filas
|
|
81
|
+
* @param currentValue - Valor actual
|
|
82
|
+
*/
|
|
83
|
+
private changeSelection;
|
|
84
|
+
/**
|
|
85
|
+
* Método que valida los cambios en los datos de entrada
|
|
86
|
+
* @param changer - Cambios realizados en la vista
|
|
87
|
+
*/
|
|
88
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
89
|
+
private actualizarSeleccion;
|
|
90
|
+
private actualizarFiltro;
|
|
91
|
+
private reasignarPaginacion;
|
|
92
|
+
private actualizarPaginacion;
|
|
93
|
+
private actualizarDataTable;
|
|
94
|
+
/**
|
|
95
|
+
* Método que aplica el filtro a los datos de la tabla
|
|
96
|
+
* @param filtro - Evento de filtrado
|
|
97
|
+
*/
|
|
98
|
+
applyFilter(filtro: string): void;
|
|
99
|
+
private limpiarColumnas;
|
|
100
|
+
/**
|
|
101
|
+
* Método que indica si se debe mostrar la columna de acciones
|
|
102
|
+
* @returns True si se debe mostrar las acciones
|
|
103
|
+
*/
|
|
104
|
+
verAcciones(): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Método que inicializa el Paginador
|
|
107
|
+
*/
|
|
108
|
+
private inicializarPaginador;
|
|
109
|
+
/**
|
|
110
|
+
* Indica si el ordenamiento esta activo
|
|
111
|
+
*/
|
|
112
|
+
ordenamientoActivo(): boolean;
|
|
113
|
+
asignarOrden(column: string, orden: SortDirection): void;
|
|
114
|
+
/** Alterna la selección de registros de la tabla */
|
|
115
|
+
alternarSeleccion(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Indica si todo el contenido esta seleccionado
|
|
118
|
+
* @returns True si todo el contenido esta seleccionado
|
|
119
|
+
*/
|
|
120
|
+
todoSeleccionado(): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Obtiene el estado de la etiqueta de seleccionado
|
|
123
|
+
* @param fila - Fila que se validara
|
|
124
|
+
* @returns Estado de selección en modo texto
|
|
125
|
+
*/
|
|
126
|
+
validarEtiqueta(fila?: any): string;
|
|
127
|
+
descargarCsv(archivo: string, soloSeleccionados?: boolean): void;
|
|
128
|
+
onRowSelect(event: T): void;
|
|
129
|
+
onRowClick: EventEmitter<T>;
|
|
130
|
+
protected deshabilitarAccion(action: RowAction<T>, element: any): boolean;
|
|
131
|
+
stopPropagation(clickEvent: MouseEvent): void;
|
|
132
|
+
cambioFiltro(menu: MatMenuTrigger, isChange: boolean): void;
|
|
133
|
+
customParameter(data: T, filter: string): boolean;
|
|
134
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RediTableComponent<any>, never>;
|
|
135
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RediTableComponent<any>, "redi-table", never, { "seleccionarFilas": { "alias": "seleccionarFilas"; "required": false; }; "filtrarDatos": { "alias": "filtrarDatos"; "required": false; }; "paginar": { "alias": "paginar"; "required": false; }; "ordenarDatos": { "alias": "ordenarDatos"; "required": false; }; "dataTable": { "alias": "dataTable"; "required": false; }; }, { "onRowClick": "onRowClick"; }, never, never, true, never>;
|
|
136
|
+
}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import { FilterItem } from "./filter-item";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
filters: Array<FilterItem>
|
|
18
|
-
}
|
|
1
|
+
import { FilterItem } from "./filter-item";
|
|
2
|
+
/**
|
|
3
|
+
* Interface que define una columna
|
|
4
|
+
*/
|
|
5
|
+
export interface ColumnDefinition {
|
|
6
|
+
/**
|
|
7
|
+
Contiene la etiqueta para la columna
|
|
8
|
+
*/
|
|
9
|
+
etiqueta: string;
|
|
10
|
+
/**
|
|
11
|
+
* Contiene el identificador de la columna
|
|
12
|
+
*/
|
|
13
|
+
identificador: string;
|
|
14
|
+
filters: Array<FilterItem>;
|
|
15
|
+
}
|
|
@@ -1,28 +1,24 @@
|
|
|
1
|
-
import { ColumnDefinition } from './column-definition';
|
|
2
|
-
import { RowAction } from './row-action';
|
|
3
|
-
import { SelectionModel } from '@angular/cdk/collections';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* Contiene los elementos seleccionados
|
|
26
|
-
*/
|
|
27
|
-
seleccion: SelectionModel<T>;
|
|
28
|
-
}
|
|
1
|
+
import { ColumnDefinition } from './column-definition';
|
|
2
|
+
import { RowAction } from './row-action';
|
|
3
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
4
|
+
/**
|
|
5
|
+
* Interfaz que define la estructura de configuración y datos para una tabla
|
|
6
|
+
*/
|
|
7
|
+
export interface DataTable<T> {
|
|
8
|
+
/**
|
|
9
|
+
* Contiene el arreglo con los datos
|
|
10
|
+
*/
|
|
11
|
+
dataSource: Array<T>;
|
|
12
|
+
/**
|
|
13
|
+
* Contiene la definición de las columnas que se mostraran en la tabla
|
|
14
|
+
*/
|
|
15
|
+
columnas: Array<ColumnDefinition>;
|
|
16
|
+
/**
|
|
17
|
+
* Contiene las acciones a realizar para los datos de la tabla
|
|
18
|
+
*/
|
|
19
|
+
acciones: Array<RowAction<T>>;
|
|
20
|
+
/**
|
|
21
|
+
* Contiene los elementos seleccionados
|
|
22
|
+
*/
|
|
23
|
+
seleccion: SelectionModel<T>;
|
|
24
|
+
}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
2
|
-
import { eventTable } from '../types/event-table.type';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
desabilitarActionPorValores?: DeshabilitaAction;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface DeshabilitaAction {
|
|
29
|
-
columnaRef: string;
|
|
30
|
-
valoresADeshabilitar: Array<string>;
|
|
31
|
-
}
|
|
32
|
-
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { eventTable } from '../types/event-table.type';
|
|
3
|
+
/**
|
|
4
|
+
* Interface que define una acción en el row
|
|
5
|
+
*/
|
|
6
|
+
export interface RowAction<T> {
|
|
7
|
+
/**
|
|
8
|
+
* Contiene el icono para la acción
|
|
9
|
+
*/
|
|
10
|
+
icono: string;
|
|
11
|
+
/**
|
|
12
|
+
* Contiene la función o acción a realizar con los datos
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Emitter
|
|
16
|
+
*/
|
|
17
|
+
emiter: EventEmitter<eventTable<T>>;
|
|
18
|
+
deshabilitar?: boolean;
|
|
19
|
+
desabilitarActionPorValores?: DeshabilitaAction;
|
|
20
|
+
}
|
|
21
|
+
export interface DeshabilitaAction {
|
|
22
|
+
columnaRef: string;
|
|
23
|
+
valoresADeshabilitar: Array<string>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlZGktY29yZS1IZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVkaS1jb3JlL0hlbHBlci9uZ3gtcmVkaS1jb3JlLUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './src/helpers/csv.service';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWRpLWNvcmUvSGVscGVyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL2hlbHBlcnMvY3N2LnNlcnZpY2UnOyJdfQ==
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Servicio que provee métodos para trabajar con datos CSV
|
|
5
|
+
*/
|
|
6
|
+
export class CsvService {
|
|
7
|
+
/**
|
|
8
|
+
* Genera el texto CSV a partir de un archivo
|
|
9
|
+
* @param data- Datos a construir
|
|
10
|
+
* @returns CSV texto
|
|
11
|
+
*/
|
|
12
|
+
generarCsv(data) {
|
|
13
|
+
const datos = data.map(d => {
|
|
14
|
+
return Object.values(d)
|
|
15
|
+
.filter(p => this.tipoSerializable(p))
|
|
16
|
+
.map(v => v.includes(',') ? `"${v}"` : v);
|
|
17
|
+
});
|
|
18
|
+
return datos.map(d => { return Object.values(d).join(','); }).join('\n');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Método que indica si la propiedad es serializable
|
|
22
|
+
* @param propiedad - Propiedad a validar
|
|
23
|
+
* @returns True si es una propiedad serializable
|
|
24
|
+
*/
|
|
25
|
+
tipoSerializable(propiedad) {
|
|
26
|
+
return typeof (propiedad) !== 'object' &&
|
|
27
|
+
typeof (propiedad) !== 'function';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Descarga el CSV a partir de los datos establecidos
|
|
31
|
+
* @param archivo - Nombre del archivo a descargar
|
|
32
|
+
* @param data - Arreglo de datos a descargar
|
|
33
|
+
*/
|
|
34
|
+
descargarCsv(archivo, data) {
|
|
35
|
+
const blob = new Blob([BOM_CSV, this.generarCsv(data)], { type: TYPE_CSV });
|
|
36
|
+
const link = this.generarLink(archivo, blob);
|
|
37
|
+
document.body.appendChild(link);
|
|
38
|
+
link.click();
|
|
39
|
+
document.body.removeChild(link);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Genera el link para el blob y archivo establecidos
|
|
43
|
+
* @param archivo - Nombre del archivo a descargar
|
|
44
|
+
* @param blob - Contenido del blob
|
|
45
|
+
* @returns link
|
|
46
|
+
*/
|
|
47
|
+
generarLink(archivo, blob) {
|
|
48
|
+
const link = document.createElement('a');
|
|
49
|
+
if (link.download !== undefined) {
|
|
50
|
+
link.setAttribute('href', URL.createObjectURL(blob));
|
|
51
|
+
link.setAttribute('download', archivo);
|
|
52
|
+
link.style.visibility = 'hidden';
|
|
53
|
+
}
|
|
54
|
+
return link;
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CsvService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CsvService, providedIn: 'root' }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CsvService, decorators: [{
|
|
60
|
+
type: Injectable,
|
|
61
|
+
args: [{
|
|
62
|
+
providedIn: 'root'
|
|
63
|
+
}]
|
|
64
|
+
}] });
|
|
65
|
+
/** Tipo MIME CSV + Encode */
|
|
66
|
+
const TYPE_CSV = 'text/csv;charset=utf-8;';
|
|
67
|
+
/** BOM CSV */
|
|
68
|
+
const BOM_CSV = new Uint8Array([0xEF, 0xBB, 0xBF]);
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVkaS1jb3JlL0hlbHBlci9zcmMvaGVscGVycy9jc3Yuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUMzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxVQUFVO0lBQ3JCOzs7O1NBSUs7SUFDRSxVQUFVLENBQWUsSUFBYztRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDckMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQUMsU0FBa0I7UUFDekMsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssUUFBUTtZQUNwQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssVUFBVSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFlLE9BQWUsRUFBRSxJQUFjO1FBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFdBQVcsQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUM3QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBc0IsQ0FBQztRQUM5RCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQXBEVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUF5REQsNkJBQTZCO0FBQzdCLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDO0FBQzNDLGNBQWM7QUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBwcm92ZWUgbcOpdG9kb3MgcGFyYSB0cmFiYWphciBjb24gZGF0b3MgQ1NWXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDc3ZTZXJ2aWNlIHtcclxuICAvKipcclxuICAgICAqIEdlbmVyYSBlbCB0ZXh0byBDU1YgYSBwYXJ0aXIgZGUgdW4gYXJjaGl2b1xyXG4gICAgICogQHBhcmFtIGRhdGEtIERhdG9zIGEgY29uc3RydWlyXHJcbiAgICAgKiBAcmV0dXJucyBDU1YgdGV4dG9cclxuICAgICAqL1xyXG4gIHB1YmxpYyBnZW5lcmFyQ3N2PFQgZXh0ZW5kcyB7fT4oZGF0YTogQXJyYXk8VD4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZGF0b3MgPSBkYXRhLm1hcChkID0+IHtcclxuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZClcclxuICAgICAgICAuZmlsdGVyKHAgPT4gdGhpcy50aXBvU2VyaWFsaXphYmxlKHApKVxyXG4gICAgICAgIC5tYXAodiA9PiAodiBhcyBzdHJpbmcpLmluY2x1ZGVzKCcsJykgPyBgXCIke3Z9XCJgIDogdik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRvcy5tYXAoZCA9PiB7IHJldHVybiBPYmplY3QudmFsdWVzKGQpLmpvaW4oJywnKTsgfSkuam9pbignXFxuJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBpbmRpY2Egc2kgbGEgcHJvcGllZGFkIGVzIHNlcmlhbGl6YWJsZVxyXG4gICAqIEBwYXJhbSBwcm9waWVkYWQgLSBQcm9waWVkYWQgYSB2YWxpZGFyXHJcbiAgICogQHJldHVybnMgVHJ1ZSBzaSBlcyB1bmEgcHJvcGllZGFkIHNlcmlhbGl6YWJsZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdGlwb1NlcmlhbGl6YWJsZShwcm9waWVkYWQ6IHVua25vd24pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgKHByb3BpZWRhZCkgIT09ICdvYmplY3QnICYmXHJcbiAgICAgIHR5cGVvZiAocHJvcGllZGFkKSAhPT0gJ2Z1bmN0aW9uJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc2NhcmdhIGVsIENTViBhIHBhcnRpciBkZSBsb3MgZGF0b3MgZXN0YWJsZWNpZG9zXHJcbiAgICogQHBhcmFtIGFyY2hpdm8gLSBOb21icmUgZGVsIGFyY2hpdm8gYSBkZXNjYXJnYXJcclxuICAgKiBAcGFyYW0gZGF0YSAtIEFycmVnbG8gZGUgZGF0b3MgYSBkZXNjYXJnYXJcclxuICAgKi9cclxuICBwdWJsaWMgZGVzY2FyZ2FyQ3N2PFQgZXh0ZW5kcyB7fT4oYXJjaGl2bzogc3RyaW5nLCBkYXRhOiBBcnJheTxUPik6IHZvaWQge1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtCT01fQ1NWLCB0aGlzLmdlbmVyYXJDc3YoZGF0YSldLCB7IHR5cGU6IFRZUEVfQ1NWIH0pO1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2VuZXJhckxpbmsoYXJjaGl2bywgYmxvYik7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYSBlbCBsaW5rIHBhcmEgZWwgYmxvYiB5IGFyY2hpdm8gZXN0YWJsZWNpZG9zXHJcbiAgICogQHBhcmFtIGFyY2hpdm8gLSBOb21icmUgZGVsIGFyY2hpdm8gYSBkZXNjYXJnYXJcclxuICAgKiBAcGFyYW0gYmxvYiAtIENvbnRlbmlkbyBkZWwgYmxvYlxyXG4gICAqIEByZXR1cm5zIGxpbmtcclxuICAgKi9cclxuICBwcml2YXRlIGdlbmVyYXJMaW5rKGFyY2hpdm86IHN0cmluZywgYmxvYjogQmxvYik6IEhUTUxBbmNob3JFbGVtZW50IHtcclxuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcbiAgICBpZiAobGluay5kb3dubG9hZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7XHJcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGFyY2hpdm8pO1xyXG4gICAgICBsaW5rLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8qKiBUaXBvIE1JTUUgQ1NWICsgRW5jb2RlICovXHJcbmNvbnN0IFRZUEVfQ1NWID0gJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JztcclxuLyoqIEJPTSBDU1YgKi9cclxuY29uc3QgQk9NX0NTViA9IG5ldyBVaW50OEFycmF5KFsweEVGLCAweEJCLCAweEJGXSk7XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlZGktY29yZS1SZWRpVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVkaS1jb3JlL1JlZGlUYWJsZS9uZ3gtcmVkaS1jb3JlLVJlZGlUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Componentes */
|
|
2
|
+
export * from './src/components/redi-table/redi-table.component';
|
|
3
|
+
/** Modelos */
|
|
4
|
+
export * from './src/models/interfaces/column-definition';
|
|
5
|
+
export * from './src/models/interfaces/data-table';
|
|
6
|
+
export * from './src/models/interfaces/row-action';
|
|
7
|
+
// /** Tipos */
|
|
8
|
+
// export * from './src/models/types/event-table.type';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWRpLWNvcmUvUmVkaVRhYmxlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLGNBQWMsa0RBQWtELENBQUM7QUFFakUsY0FBYztBQUNkLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGVBQWU7QUFDZix1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ29tcG9uZW50ZXMgKi9cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29tcG9uZW50cy9yZWRpLXRhYmxlL3JlZGktdGFibGUuY29tcG9uZW50JztcclxuXHJcbi8qKiBNb2RlbG9zICovXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL21vZGVscy9pbnRlcmZhY2VzL2NvbHVtbi1kZWZpbml0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvbW9kZWxzL2ludGVyZmFjZXMvZGF0YS10YWJsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL21vZGVscy9pbnRlcmZhY2VzL3Jvdy1hY3Rpb24nO1xyXG4vLyAvKiogVGlwb3MgKi9cclxuLy8gZXhwb3J0ICogZnJvbSAnLi9zcmMvbW9kZWxzL3R5cGVzL2V2ZW50LXRhYmxlLnR5cGUnOyJdfQ==
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
4
|
+
import { MatInputModule } from '@angular/material/input';
|
|
5
|
+
import { MatListModule } from '@angular/material/list';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/form-field";
|
|
8
|
+
import * as i2 from "@angular/material/input";
|
|
9
|
+
import * as i3 from "@angular/material/list";
|
|
10
|
+
export class FilterDataComponent {
|
|
11
|
+
set filtrosColumnas(value) {
|
|
12
|
+
this._refFiltro = value;
|
|
13
|
+
this.filtros = [...value.map(f => { return { ...f }; })];
|
|
14
|
+
}
|
|
15
|
+
constructor() {
|
|
16
|
+
this.filterEnd = new EventEmitter();
|
|
17
|
+
this._refFiltro = [];
|
|
18
|
+
this.filtros = [];
|
|
19
|
+
}
|
|
20
|
+
ngAfterViewInit() {
|
|
21
|
+
if (this.allItemControl) {
|
|
22
|
+
setTimeout(() => {
|
|
23
|
+
this.allItemControl.selected = this.isAllChecked(this.filtros);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
selectedChange() {
|
|
28
|
+
if (this.allItemControl) {
|
|
29
|
+
this.allItemControl.selected = this.isAllChecked(this.filtros);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
setAllCheck(value) {
|
|
33
|
+
this.filtros.map(f => f.isSelected = value);
|
|
34
|
+
}
|
|
35
|
+
isAllChecked(filters) {
|
|
36
|
+
return filters.every(f => f.isSelected);
|
|
37
|
+
}
|
|
38
|
+
filter(event) {
|
|
39
|
+
let control = event.target;
|
|
40
|
+
if (control) {
|
|
41
|
+
let value = control?.value ?? '';
|
|
42
|
+
this.filtros.map(f => f.isVisible = value === '' ||
|
|
43
|
+
f.name.trim().toLowerCase().indexOf(value.trim().toLowerCase()) !== -1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
aplicarFiltros() {
|
|
47
|
+
this._refFiltro.map((d, i) => { this._refFiltro[i].isSelected = this.filtros[i].isSelected; });
|
|
48
|
+
this.filterEnd.emit(true);
|
|
49
|
+
}
|
|
50
|
+
cancelarFiltro() {
|
|
51
|
+
this.filterEnd.emit();
|
|
52
|
+
}
|
|
53
|
+
loadData() {
|
|
54
|
+
this._refFiltro.map((d, i) => { this.filtros[i].isSelected = this._refFiltro[i].isSelected; });
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FilterDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: FilterDataComponent, isStandalone: true, selector: "filter-data", inputs: { filtrosColumnas: "filtrosColumnas" }, outputs: { filterEnd: "filterEnd" }, viewQueries: [{ propertyName: "allItemControl", first: true, predicate: ["mainControl"], descendants: true }], ngImport: i0, template: "<mat-label>Filtro</mat-label>\r\n<div>\r\n <input #textFilter class=\"inputFilter\" (keyup)=\"filter($event)\" type=\"text\" placeholder=\"Buscar\" aria-label=\"Filtro\"\r\n matInput>\r\n</div>\r\n<mat-selection-list #elementos>\r\n <mat-list-option #mainControl (click)=\"setAllCheck(mainControl.selected)\"\r\n [disabled]=\"textFilter.value !== ''\">(Seleccionar todo)</mat-list-option>\r\n @for (filtro of filtros; track filtro) {\r\n @if(filtro.isVisible){\r\n <mat-list-option [(selected)]=\"filtro.isSelected\"\r\n (selectedChange)=\"selectedChange()\">{{filtro.name}}</mat-list-option>\r\n }\r\n }\r\n</mat-selection-list>\r\n<button mat-flat-button color=\"primary\" (click)=\"aplicarFiltros()\">Aceptar</button>\r\n<button mat-flat-button color=\"accent\" (click)=\"cancelarFiltro()\">Cancelar</button>", styles: ["mat-selection-list{max-height:40vh;height:20vh;overflow-y:scroll;border:solid 1px gray;margin-top:10px;margin-bottom:10px;background-color:#fff}input,mat-label{width:90%;margin-left:5px}:host{padding:5px}button{float:right;margin-right:5px}mat-list-option{max-height:35px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i3.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FilterDataComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'filter-data', standalone: true, imports: [
|
|
62
|
+
MatFormFieldModule,
|
|
63
|
+
FormsModule,
|
|
64
|
+
MatInputModule,
|
|
65
|
+
MatListModule
|
|
66
|
+
], template: "<mat-label>Filtro</mat-label>\r\n<div>\r\n <input #textFilter class=\"inputFilter\" (keyup)=\"filter($event)\" type=\"text\" placeholder=\"Buscar\" aria-label=\"Filtro\"\r\n matInput>\r\n</div>\r\n<mat-selection-list #elementos>\r\n <mat-list-option #mainControl (click)=\"setAllCheck(mainControl.selected)\"\r\n [disabled]=\"textFilter.value !== ''\">(Seleccionar todo)</mat-list-option>\r\n @for (filtro of filtros; track filtro) {\r\n @if(filtro.isVisible){\r\n <mat-list-option [(selected)]=\"filtro.isSelected\"\r\n (selectedChange)=\"selectedChange()\">{{filtro.name}}</mat-list-option>\r\n }\r\n }\r\n</mat-selection-list>\r\n<button mat-flat-button color=\"primary\" (click)=\"aplicarFiltros()\">Aceptar</button>\r\n<button mat-flat-button color=\"accent\" (click)=\"cancelarFiltro()\">Cancelar</button>", styles: ["mat-selection-list{max-height:40vh;height:20vh;overflow-y:scroll;border:solid 1px gray;margin-top:10px;margin-bottom:10px;background-color:#fff}input,mat-label{width:90%;margin-left:5px}:host{padding:5px}button{float:right;margin-right:5px}mat-list-option{max-height:35px}\n"] }]
|
|
67
|
+
}], ctorParameters: () => [], propDecorators: { filtrosColumnas: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], allItemControl: [{
|
|
70
|
+
type: ViewChild,
|
|
71
|
+
args: ['mainControl']
|
|
72
|
+
}], filterEnd: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWRhdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZGktY29yZS9SZWRpVGFibGUvc3JjL2NvbXBvbmVudHMvZmlsdGVyLWRhdGEvZmlsdGVyLWRhdGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZGktY29yZS9SZWRpVGFibGUvc3JjL2NvbXBvbmVudHMvZmlsdGVyLWRhdGEvZmlsdGVyLWRhdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFnQnRFLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsSUFDVyxlQUFlLENBQUMsS0FBd0I7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBV0Q7UUFGTyxjQUFTLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFHcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE9B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b3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlLCBNYXRMaXN0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IEZpbHRlckl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaW50ZXJmYWNlcy9maWx0ZXItaXRlbSc7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZpbHRlci1kYXRhJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRMaXN0TW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWRhdGEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9maWx0ZXItZGF0YS5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZmlsdHJvc0NvbHVtbmFzKHZhbHVlOiBBcnJheTxGaWx0ZXJJdGVtPikge1xyXG4gICAgdGhpcy5fcmVmRmlsdHJvID0gdmFsdWU7XHJcbiAgICB0aGlzLmZpbHRyb3MgPSBbLi4udmFsdWUubWFwKGYgPT4geyByZXR1cm4geyAuLi5mIH0gfSldO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIF9yZWZGaWx0cm86IEFycmF5PEZpbHRlckl0ZW0+O1xyXG4gIHB1YmxpYyBmaWx0cm9zOiBBcnJheTxGaWx0ZXJJdGVtPjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWFpbkNvbnRyb2wnKVxyXG4gIHB1YmxpYyBhbGxJdGVtQ29udHJvbCE6IE1hdExpc3RPcHRpb25cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZpbHRlckVuZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX3JlZkZpbHRybyA9IFtdO1xyXG4gICAgdGhpcy5maWx0cm9zID0gW107XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hbGxJdGVtQ29udHJvbCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmFsbEl0ZW1Db250cm9sLnNlbGVjdGVkID0gdGhpcy5pc0FsbENoZWNrZWQodGhpcy5maWx0cm9zKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIHNlbGVjdGVkQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuYWxsSXRlbUNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5hbGxJdGVtQ29udHJvbC5zZWxlY3RlZCA9IHRoaXMuaXNBbGxDaGVja2VkKHRoaXMuZmlsdHJvcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QWxsQ2hlY2sodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZmlsdHJvcy5tYXAoZiA9PiBmLmlzU2VsZWN0ZWQgPSB2YWx1ZSlcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgaXNBbGxDaGVja2VkKGZpbHRlcnM6IEFycmF5PEZpbHRlckl0ZW0+KSB7XHJcbiAgICByZXR1cm4gZmlsdGVycy5ldmVyeShmID0+IGYuaXNTZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmlsdGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBsZXQgY29udHJvbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgbGV0IHZhbHVlID0gY29udHJvbD8udmFsdWUgPz8gJyc7XHJcbiAgICAgIHRoaXMuZmlsdHJvcy5tYXAoZiA9PiBmLmlzVmlzaWJsZSA9IHZhbHVlID09PSAnJyB8fFxyXG4gICAgICAgIGYubmFtZS50cmltKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwbGljYXJGaWx0cm9zKCkge1xyXG4gICAgdGhpcy5fcmVmRmlsdHJvLm1hcCgoZCxpKT0+e3RoaXMuX3JlZkZpbHRyb1tpXS5pc1NlbGVjdGVkID0gdGhpcy5maWx0cm9zW2ldLmlzU2VsZWN0ZWR9KTtcclxuICAgIHRoaXMuZmlsdGVyRW5kLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsYXJGaWx0cm8oKSB7XHJcbiAgICB0aGlzLmZpbHRlckVuZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZERhdGEoKXtcclxuICAgIHRoaXMuX3JlZkZpbHRyby5tYXAoKGQsaSk9PnsgdGhpcy5maWx0cm9zW2ldLmlzU2VsZWN0ZWQgPXRoaXMuX3JlZkZpbHRyb1tpXS5pc1NlbGVjdGVkfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtbGFiZWw+RmlsdHJvPC9tYXQtbGFiZWw+XHJcbjxkaXY+XHJcbiAgICA8aW5wdXQgI3RleHRGaWx0ZXIgY2xhc3M9XCJpbnB1dEZpbHRlclwiIChrZXl1cCk9XCJmaWx0ZXIoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJCdXNjYXJcIiBhcmlhLWxhYmVsPVwiRmlsdHJvXCJcclxuICAgICAgICBtYXRJbnB1dD5cclxuPC9kaXY+XHJcbjxtYXQtc2VsZWN0aW9uLWxpc3QgI2VsZW1lbnRvcz5cclxuICAgIDxtYXQtbGlzdC1vcHRpb24gI21haW5Db250cm9sIChjbGljayk9XCJzZXRBbGxDaGVjayhtYWluQ29udHJvbC5zZWxlY3RlZClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0ZXh0RmlsdGVyLnZhbHVlICE9PSAnJ1wiPihTZWxlY2Npb25hciB0b2RvKTwvbWF0LWxpc3Qtb3B0aW9uPlxyXG4gICAgQGZvciAoZmlsdHJvIG9mIGZpbHRyb3M7IHRyYWNrIGZpbHRybykge1xyXG4gICAgQGlmKGZpbHRyby5pc1Zpc2libGUpe1xyXG4gICAgPG1hdC1saXN0LW9wdGlvbiBbKHNlbGVjdGVkKV09XCJmaWx0cm8uaXNTZWxlY3RlZFwiXHJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cInNlbGVjdGVkQ2hhbmdlKClcIj57e2ZpbHRyby5uYW1lfX08L21hdC1saXN0LW9wdGlvbj5cclxuICAgIH1cclxuICAgIH1cclxuPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XHJcbjxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJhcGxpY2FyRmlsdHJvcygpXCI+QWNlcHRhcjwvYnV0dG9uPlxyXG48YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJjYW5jZWxhckZpbHRybygpXCI+Q2FuY2VsYXI8L2J1dHRvbj4iXX0=
|