@jvsoft/components 0.0.10 → 0.0.12
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/CHANGELOG.md +18 -0
- package/build.js +20 -0
- package/dialog-flotante/dialog-flotante.component.html +66 -0
- package/dialog-flotante/dialog-flotante.component.ts +115 -0
- package/dialog-flotante/dialog-flotante.interface.ts +13 -0
- package/dialog-flotante/index.ts +1 -0
- package/dialog-flotante/ng-package.json +5 -0
- package/{index.d.ts → index.ts} +8 -1
- package/lista-arbol/lista-arbol.component.html +66 -0
- package/lista-arbol/lista-arbol.component.ts +238 -0
- package/lista-arbol/lista-arbol.functions.ts +46 -0
- package/lista-arbol/ng-package.json +5 -0
- package/luces-navidad/christmas-tree.png +0 -0
- package/luces-navidad/index.ts +1 -0
- package/luces-navidad/luces-navidad.component.html +6 -0
- package/luces-navidad/luces-navidad.component.ts +24 -0
- package/luces-navidad/ng-package.json +5 -0
- package/mat-suffix-search-button/index.ts +1 -0
- package/mat-suffix-search-button/mat-suffix-search-button.component.html +5 -0
- package/mat-suffix-search-button/mat-suffix-search-button.component.ts +36 -0
- package/mat-suffix-search-button/ng-package.json +5 -0
- package/menu/index.ts +1 -0
- package/menu/menu.component.html +40 -0
- package/menu/menu.component.ts +88 -0
- package/menu/menu.interface.ts +16 -0
- package/menu/ng-package.json +5 -0
- package/ng-package.json +17 -0
- package/package.json +17 -42
- package/progress-spinner.zip +0 -0
- package/tabla-mantenimiento/classes/data-model.ts +150 -0
- package/tabla-mantenimiento/components/progress-bar/index.ts +1 -0
- package/tabla-mantenimiento/components/progress-bar/ng-package.json +5 -0
- package/tabla-mantenimiento/components/progress-bar/progress-bar.component.html +10 -0
- package/tabla-mantenimiento/components/progress-bar/progress-bar.component.ts +85 -0
- package/tabla-mantenimiento/components/progress-bar/public-api.ts +2 -0
- package/tabla-mantenimiento/index.ts +1 -0
- package/tabla-mantenimiento/interfaces/{archivo.d.ts → archivo.ts} +7 -4
- package/tabla-mantenimiento/interfaces/global/{boton-mantenimiento.d.ts → boton-mantenimiento.ts} +9 -3
- package/tabla-mantenimiento/interfaces/global/{columnas-tabla.d.ts → columnas-tabla.ts} +90 -13
- package/tabla-mantenimiento/interfaces/global/export-excel-servidor.ts +0 -0
- package/tabla-mantenimiento/interfaces/global/no-export.ts +11 -0
- package/tabla-mantenimiento/interfaces/global/{otros.d.ts → otros.ts} +15 -3
- package/tabla-mantenimiento/interfaces/implements/{incluye-tabla-mantenimiento.d.ts → incluye-tabla-mantenimiento.ts} +6 -4
- package/tabla-mantenimiento/interfaces/implements/{index.d.ts → index.ts} +1 -0
- package/tabla-mantenimiento/mat-row-keyboard-selection.directive.ts +97 -0
- package/tabla-mantenimiento/ng-package.json +5 -0
- package/tabla-mantenimiento/pipes/no-sanitize.pipe.ts +12 -0
- package/tabla-mantenimiento/pipes/zero-fill.pipe.ts +19 -0
- package/tabla-mantenimiento/{public-api.d.ts → public-api.ts} +3 -2
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-date/column-type-date.component.html +22 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-date/column-type-date.component.ts +12 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-icons/column-type-icons.component.html +58 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-icons/column-type-icons.component.ts +19 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-money/column-type-money.component.html +40 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-money/column-type-money.component.ts +17 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-number/column-type-number.component.html +25 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-number/column-type-number.component.ts +14 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-progressbar/column-type-progressbar.component.html +28 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-progressbar/column-type-progressbar.component.ts +13 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-sino/column-type-sino.component.html +30 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-sino/column-type-sino.component.ts +38 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-text/column-type-text.component.html +97 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-text/column-type-text.component.ts +43 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.component.html +26 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.component.ts +36 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.module.ts +54 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component.html +76 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component.ts +67 -0
- package/tabla-mantenimiento/tabla-mantenimiento-menu/tabla-mantenimiento-menu.component.html +7 -0
- package/tabla-mantenimiento/tabla-mantenimiento-menu/tabla-mantenimiento-menu.component.ts +39 -0
- package/tabla-mantenimiento/tabla-mantenimiento.component.html +385 -0
- package/tabla-mantenimiento/tabla-mantenimiento.component.ts +951 -0
- package/tabla-mantenimiento/tabla-mantenimiento.functions.ts +57 -0
- package/tabla-mantenimiento/tabla-mantenimiento.service.ts +44 -0
- package/tabla-mantenimiento/table-util.ts +49 -0
- package/tabla-mantenimiento.zip +0 -0
- package/tsconfig.lib.json +16 -0
- package/tsconfig.lib.prod.json +11 -0
- package/tsconfig.spec.json +15 -0
- package/yarn-error.log +68 -0
- package/dialog-flotante/dialog-flotante.component.d.ts +0 -32
- package/dialog-flotante/dialog-flotante.interface.d.ts +0 -11
- package/dialog-flotante/index.d.ts +0 -5
- package/fesm2022/jvsoft-components-dialog-flotante.mjs +0 -130
- package/fesm2022/jvsoft-components-dialog-flotante.mjs.map +0 -1
- package/fesm2022/jvsoft-components-lista-arbol.mjs +0 -266
- package/fesm2022/jvsoft-components-lista-arbol.mjs.map +0 -1
- package/fesm2022/jvsoft-components-luces-navidad.mjs +0 -33
- package/fesm2022/jvsoft-components-luces-navidad.mjs.map +0 -1
- package/fesm2022/jvsoft-components-mat-suffix-search-button.mjs +0 -47
- package/fesm2022/jvsoft-components-mat-suffix-search-button.mjs.map +0 -1
- package/fesm2022/jvsoft-components-menu.mjs +0 -102
- package/fesm2022/jvsoft-components-menu.mjs.map +0 -1
- package/fesm2022/jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs +0 -91
- package/fesm2022/jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs.map +0 -1
- package/fesm2022/jvsoft-components-tabla-mantenimiento.mjs +0 -1801
- package/fesm2022/jvsoft-components-tabla-mantenimiento.mjs.map +0 -1
- package/fesm2022/jvsoft-components.mjs +0 -2309
- package/fesm2022/jvsoft-components.mjs.map +0 -1
- package/lista-arbol/index.d.ts +0 -5
- package/lista-arbol/lista-arbol.component.d.ts +0 -58
- package/lista-arbol/lista-arbol.functions.d.ts +0 -1
- package/luces-navidad/index.d.ts +0 -5
- package/luces-navidad/luces-navidad.component.d.ts +0 -11
- package/mat-suffix-search-button/index.d.ts +0 -5
- package/mat-suffix-search-button/mat-suffix-search-button.component.d.ts +0 -12
- package/menu/index.d.ts +0 -5
- package/menu/menu.component.d.ts +0 -25
- package/menu/menu.interface.d.ts +0 -16
- package/src/styles/base-jvsoft-components.css +0 -9
- package/tabla-mantenimiento/classes/data-model.d.ts +0 -25
- package/tabla-mantenimiento/components/progress-bar/index.d.ts +0 -5
- package/tabla-mantenimiento/components/progress-bar/progress-bar.component.d.ts +0 -30
- package/tabla-mantenimiento/components/progress-bar/public-api.d.ts +0 -1
- package/tabla-mantenimiento/index.d.ts +0 -5
- package/tabla-mantenimiento/interfaces/global/no-export.d.ts +0 -2
- package/tabla-mantenimiento/mat-row-keyboard-selection.directive.d.ts +0 -19
- package/tabla-mantenimiento/pipes/no-sanitize.pipe.d.ts +0 -10
- package/tabla-mantenimiento/pipes/zero-fill.pipe.d.ts +0 -8
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-date/column-type-date.component.d.ts +0 -8
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-icons/column-type-icons.component.d.ts +0 -9
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-money/column-type-money.component.d.ts +0 -9
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-number/column-type-number.component.d.ts +0 -8
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-progressbar/column-type-progressbar.component.d.ts +0 -8
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-sino/column-type-sino.component.d.ts +0 -9
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-text/column-type-text.component.d.ts +0 -8
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.component.d.ts +0 -18
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.module.d.ts +0 -23
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component.d.ts +0 -21
- package/tabla-mantenimiento/tabla-mantenimiento-menu/tabla-mantenimiento-menu.component.d.ts +0 -18
- package/tabla-mantenimiento/tabla-mantenimiento.component.d.ts +0 -147
- package/tabla-mantenimiento/tabla-mantenimiento.functions.d.ts +0 -5
- package/tabla-mantenimiento/tabla-mantenimiento.service.d.ts +0 -8
- package/tabla-mantenimiento/table-util.d.ts +0 -11
- /package/dialog-flotante/{public-api.d.ts → public-api.ts} +0 -0
- /package/lista-arbol/{public-api.d.ts → public-api.ts} +0 -0
- /package/luces-navidad/{public-api.d.ts → public-api.ts} +0 -0
- /package/mat-suffix-search-button/{public-api.d.ts → public-api.ts} +0 -0
- /package/menu/{public-api.d.ts → public-api.ts} +0 -0
- /package/tabla-mantenimiento/interfaces/global/{index.d.ts → index.ts} +0 -0
- /package/tabla-mantenimiento/interfaces/{index.d.ts → index.ts} +0 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
<div class="flex flex-col h-fit">
|
|
2
|
+
<div class="grow flex items-center justify-between bg-white">
|
|
3
|
+
<ng-content select="[filtro]"></ng-content>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<div class="flex flex-col border-t">
|
|
7
|
+
<div class="flex-1 bg-app-bar flex items-center justify-between p-1">
|
|
8
|
+
<!-- <div class="hidden flex-1 sm:flex items-center flex-wrap gap-1">-->
|
|
9
|
+
<!-- </div>-->
|
|
10
|
+
<div class="flex items-center flex-wrap mr-1 h-full" *ngIf="leyenda">
|
|
11
|
+
<span class="font-bold" [class]="leyenda.class">{{ leyenda.text }}</span>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="hidden flex-1 sm:flex items-center flex-wrap gap-1">
|
|
14
|
+
<div *ngIf="(botonesMenuFinal.izquierda ?? []).length > 0 " class=" flex items-center flex-wrap contenedor-botones">
|
|
15
|
+
<ng-container *ngFor="let btn of botonesMenu.izquierda; let idx = index;">
|
|
16
|
+
<ng-container *ngTemplateOutlet="botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.izquierda?.length}}"></ng-container>
|
|
17
|
+
</ng-container>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div *ngIf="(botonesMenuFinal.crud ?? []).length > 0" class=" flex items-center flex-wrap contenedor-botones">
|
|
21
|
+
<ng-container *ngFor="let btn of botonesMenu.crud; let idx = index;">
|
|
22
|
+
<ng-container *ngTemplateOutlet="botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.crud?.length}}"></ng-container>
|
|
23
|
+
</ng-container>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div *ngIf="(botonesMenuFinal.principal ?? []).length > 0" class=" flex items-center flex-wrap contenedor-botones">
|
|
27
|
+
<ng-container *ngFor="let btn of botonesMenu.principal; let idx = index;">
|
|
28
|
+
<ng-container *ngTemplateOutlet="botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.principal?.length}}"></ng-container>
|
|
29
|
+
</ng-container>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div *ngIf="(botonesMenuFinal.derecha ?? []).length > 0" class="flex-auto flex items-center justify-end contenedor-botones">
|
|
33
|
+
<ng-container *ngFor="let btn of botonesMenu.derecha; let idx = index;">
|
|
34
|
+
<ng-container *ngTemplateOutlet="botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.derecha?.length}}"></ng-container>
|
|
35
|
+
</ng-container>
|
|
36
|
+
</div>
|
|
37
|
+
<ng-content select="[objetosMenuPegado]"></ng-content>
|
|
38
|
+
</div>
|
|
39
|
+
<div class="flex flex-1 sm:hidden items-center flex-wrap gap-1">
|
|
40
|
+
<button class="flex items-center justify-center text-2xs leading-none rounded-full p-1"
|
|
41
|
+
matRipple
|
|
42
|
+
matTooltip="Botones de Acción"
|
|
43
|
+
type="button"
|
|
44
|
+
[matMenuTriggerFor]="menuOpciones"
|
|
45
|
+
>
|
|
46
|
+
<mat-icon class="icon-xs" svgIcon="roundMenu"></mat-icon>
|
|
47
|
+
</button>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="flex-none flex items-center justify-end border-l-2">
|
|
50
|
+
<div class="flex-1 sm:flex-none flex items-center justify-end">
|
|
51
|
+
<ng-content select="[objetosMenu]"></ng-content>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<div *ngIf="ctrlBusqueda" class="hidden flex-initial sm:flex items-center form-input max-w-[150px] bg-card rounded-full border m-1 px-1 border-l-2"
|
|
55
|
+
>
|
|
56
|
+
<mat-icon svgIcon="roundSearch" class="icon-xs"></mat-icon>
|
|
57
|
+
<input [formControl]="cCampoBusqueda"
|
|
58
|
+
class="text-xs px-1 py-1 border-0 outline-none w-full bg-transparent max-w-sm"
|
|
59
|
+
[placeholder]="ctrlBusquedaPlaceholder"
|
|
60
|
+
(keyup.enter)="ctrlBusqueda == 'query' ? cargarData() : false;"
|
|
61
|
+
type="search">
|
|
62
|
+
</div>
|
|
63
|
+
<div class="flex-none flex items-center justify-end border-l-2">
|
|
64
|
+
<ng-content select="[botonesFiltro]"></ng-content>
|
|
65
|
+
<button matRipple *ngIf="isRecargarUsed || ctrlBusqueda == 'query'"
|
|
66
|
+
class="flex items-center justify-center text-2xs leading-none rounded-full p-1 text-green-700"
|
|
67
|
+
matTooltip="Actualizar datos"
|
|
68
|
+
(click)="(ctrlBusqueda == 'query' ? cargarData() : emitirAccionRecargar())"
|
|
69
|
+
type="button">
|
|
70
|
+
<mat-icon svgIcon="roundRefresh" class="icon-xs"></mat-icon>
|
|
71
|
+
|
|
72
|
+
</button>
|
|
73
|
+
<button matRipple [matMenuTriggerFor]="columnFilterMenu" *ngIf="filtroCampos"
|
|
74
|
+
class="flex items-center justify-center text-2xs leading-none rounded-full p-1"
|
|
75
|
+
matTooltip="Columnas Filtro"
|
|
76
|
+
type="button">
|
|
77
|
+
<mat-icon svgIcon="roundFilterList" class="icon-xs"></mat-icon>
|
|
78
|
+
</button>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div *ngIf="(botonesMenuFinal.secundario ?? []).length > 0" class="flex-1 bg-app-bar flex items-center justify-between p-1 border-t">
|
|
83
|
+
<div class="hidden flex-1 sm:flex items-center flex-wrap gap-1">
|
|
84
|
+
<div class=" flex items-center flex-wrap contenedor-botones">
|
|
85
|
+
<ng-container *ngFor="let btn of botonesMenu.secundario; let idx = index;">
|
|
86
|
+
<ng-container *ngTemplateOutlet="botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.secundario?.length}}"></ng-container>
|
|
87
|
+
</ng-container>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<!--<div class="grow flex flex-col items-stretch contenedor-tabla" [ngClass]="{'table-container overflow-auto': esTabla}">
|
|
92
|
+
<pre>{{ this.chkLista.modelosChk | json }}</pre>
|
|
93
|
+
<pre>{{ this.chkLista.checkbox.cantidadActivos | json }}</pre>
|
|
94
|
+
<pre>{{ this.chkLista.checkbox.algunosActivos | json }}</pre>
|
|
95
|
+
</div>-->
|
|
96
|
+
<div class="grow flex flex-col items-stretch contenedor-tabla" [ngClass]="{'table-container overflow-auto': esTabla}">
|
|
97
|
+
<ng-content select="[cuerpo]"></ng-content>
|
|
98
|
+
|
|
99
|
+
<table [id]="'tabla_' + nombreColeccion" [dataSource]="dataSource" [multiTemplateDataRows]="true"
|
|
100
|
+
[hidden]="!esTabla"
|
|
101
|
+
class="flex-1 table-mantenimiento table-auto h-fit" mat-table matSort
|
|
102
|
+
[trackBy]="trackByFn"
|
|
103
|
+
#tablaMantenimiento
|
|
104
|
+
>
|
|
105
|
+
|
|
106
|
+
<!--<table [dataSource]="dataSource" class="table-mantenimiento table-auto h-auto w-full justify-center" mat-table matSort>-->
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
<ng-content select="[tableDefinitions]"></ng-content>
|
|
110
|
+
<ng-container matColumnDef="numeracion_automatica">
|
|
111
|
+
<th mat-header-cell *matHeaderCellDef style="width: 16px !important">Nº</th>
|
|
112
|
+
<td mat-cell *matCellDef="let element; let i = dataIndex" class="p-0 celda-numeracion-fila">
|
|
113
|
+
<div class="flex items-center justify-center font-bold numeracionFila">
|
|
114
|
+
<ng-container *ngIf="esTabla && paginador">
|
|
115
|
+
{{ (this.paginator?.pageIndex == 0 ? i + 1 : 1 + i + (this.paginator?.pageIndex ?? 1) * (this.paginator?.pageSize ?? 1)) }}
|
|
116
|
+
</ng-container>
|
|
117
|
+
<ng-container *ngIf="!paginador">
|
|
118
|
+
{{ (i + 1) }}
|
|
119
|
+
</ng-container>
|
|
120
|
+
</div>
|
|
121
|
+
</td>
|
|
122
|
+
<td mat-footer-cell *matFooterCellDef class="uppercase"></td>
|
|
123
|
+
</ng-container>
|
|
124
|
+
<jvs-tabla-mantenimiento-column-defs [objThis]="this" [colDetalle]="columnasTabla"
|
|
125
|
+
[nombreColeccion]="nombreColeccion" [(chkLista)]="chkLista"></jvs-tabla-mantenimiento-column-defs>
|
|
126
|
+
|
|
127
|
+
<tr *matHeaderRowDef="visibleColumns; sticky: true" mat-header-row class="title" matHeader
|
|
128
|
+
></tr>
|
|
129
|
+
|
|
130
|
+
<ng-container *ngIf="!!filaExtraHeader">
|
|
131
|
+
<tr mat-row *matRowDef="let row; columns: ['filaExtraHeader']" class="student-detail-row"
|
|
132
|
+
[style.height.px]="0"
|
|
133
|
+
></tr>
|
|
134
|
+
|
|
135
|
+
<ng-container matColumnDef="filaExtraHeader">
|
|
136
|
+
<td mat-cell *matCellDef="let row; let i = dataIndex" [attr.colspan]="visibleColumns.length">
|
|
137
|
+
|
|
138
|
+
<div class="row m-0 student-element-detail"
|
|
139
|
+
[@detailExpand]="(i == 0 && filaExtraHeader.esVisible && filaExtraHeader.esVisible()) ? 'expanded' : 'collapsed'"
|
|
140
|
+
[style.padding-right.px]="row.isExpanded ? 5 : 0"
|
|
141
|
+
[style.padding-left.px]="row.isExpanded ? 5 : 0"
|
|
142
|
+
>
|
|
143
|
+
<ng-container *ngIf="filaExtraHeader.template"
|
|
144
|
+
[ngTemplateOutlet]="filaExtraHeader.template"
|
|
145
|
+
[ngTemplateOutletContext]="{ row: row }"></ng-container>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
</td>
|
|
149
|
+
</ng-container>
|
|
150
|
+
</ng-container>
|
|
151
|
+
<ng-container *ngIf="filaFooter">
|
|
152
|
+
<tr *matFooterRowDef="visibleColumns" mat-footer-row
|
|
153
|
+
[style.height.px]="0"
|
|
154
|
+
[id]="nombreColeccion + '_filaFooter'"
|
|
155
|
+
></tr>
|
|
156
|
+
</ng-container>
|
|
157
|
+
|
|
158
|
+
<!-- <tr
|
|
159
|
+
*matRowDef="let row; columns: visibleColumns;"
|
|
160
|
+
class="hover:bg-secondary trans-ease-out cursor-pointer"
|
|
161
|
+
mat-row></tr>-->
|
|
162
|
+
<tr
|
|
163
|
+
[matRowKeyboardSelection]="tablaMantenimiento"
|
|
164
|
+
[rowModel]="row"
|
|
165
|
+
(seleccionarSiguiente)="opcMenu($event, {seccion: nombreColeccion, tipo: 'ver'});"
|
|
166
|
+
|
|
167
|
+
*matRowDef="let row; let idxTabla = dataIndex; columns: visibleColumns;"
|
|
168
|
+
(click)="seleccionarItem(row); opcMenu(row, {seccion: nombreColeccion, tipo: 'ver', tableDataIndex: idxTabla });"
|
|
169
|
+
(dblclick)="opcMenu(row, {seccion: nombreColeccion, tipo: 'seleccionar'}); dblclickItem.emit(row)"
|
|
170
|
+
(contextmenu)="(abrirMenuContextual($event, row)); $event. preventDefault();"
|
|
171
|
+
[ngClass]="classFila(row)"
|
|
172
|
+
@fadeInUp
|
|
173
|
+
class="trans-ease-out cursor-pointer h-auto"
|
|
174
|
+
[style.height.px]="0"
|
|
175
|
+
[id]="propiedadSeleccion(row)"
|
|
176
|
+
[matTooltip]="procesarRowTooltip(row)"
|
|
177
|
+
matTooltipPosition="below"
|
|
178
|
+
[matTooltipPositionAtOrigin]="true"
|
|
179
|
+
[matTooltipClass]="['bg-red-700', 'text-red-100', 'm-0']"
|
|
180
|
+
[matTooltipDisabled]="!procesarRowTooltip(row)"
|
|
181
|
+
[class.regAnulado]="row[campoAnulado] == 1"
|
|
182
|
+
[class.regTooltip]="!!procesarRowTooltip(row)"
|
|
183
|
+
(keyup.delete)="opcMenu(row, {seccion: nombreColeccion, tipo: 'eliminar'})"
|
|
184
|
+
mat-row></tr>
|
|
185
|
+
<ng-container *ngIf="filaExtraTemplate">
|
|
186
|
+
<tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="student-detail-row h-0"></tr>
|
|
187
|
+
|
|
188
|
+
<ng-container matColumnDef="expandedDetail">
|
|
189
|
+
<td mat-cell *matCellDef="let row" [attr.colspan]="visibleColumns.length">
|
|
190
|
+
|
|
191
|
+
<div class="row m-0 student-element-detail"
|
|
192
|
+
[@detailExpand]="row.isExpanded ? 'expanded' : 'collapsed'"
|
|
193
|
+
[style.padding-right.px]="row.isExpanded ? 5 : 0"
|
|
194
|
+
[style.padding-left.px]="row.isExpanded ? 5 : 0"
|
|
195
|
+
>
|
|
196
|
+
<ng-container [ngTemplateOutlet]="filaExtraTemplate"
|
|
197
|
+
[ngTemplateOutletContext]="{ row: row }"></ng-container>
|
|
198
|
+
</div>
|
|
199
|
+
|
|
200
|
+
</td>
|
|
201
|
+
</ng-container>
|
|
202
|
+
</ng-container>
|
|
203
|
+
</table>
|
|
204
|
+
|
|
205
|
+
<ng-container *ngIf="componenteCargadoTotalmente">
|
|
206
|
+
<div *ngIf="(noData | async) && esTabla" class="flex-1 text-center text-secondary font-medium">
|
|
207
|
+
No se encontraron datos
|
|
208
|
+
</div>
|
|
209
|
+
</ng-container>
|
|
210
|
+
</div>
|
|
211
|
+
<ng-content select="[appendTable]"></ng-content>
|
|
212
|
+
<div class="flex-1 bg-app-bar flex flex-col sm:flex-row items-start justify-between p-1">
|
|
213
|
+
<div class="flex-1 flex items-start flex-wrap gap-1">
|
|
214
|
+
<div *ngIf="(botonesMenuFinal.inferior ?? []).length > 0" class=" flex items-center flex-wrap">
|
|
215
|
+
<ng-container *ngFor="let btn of botonesMenu.inferior; let idx = index;">
|
|
216
|
+
<ng-container *ngTemplateOutlet="botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.inferior?.length}}"></ng-container>
|
|
217
|
+
</ng-container>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
<div *ngIf="esTabla && paginador" class="flex-1 sm:flex-none flex items-center justify-end">
|
|
222
|
+
<mat-paginator class="tabla-mantenimiento-paginador" [pageSizeOptions]="paginacion.pageSizeOptions" [pageIndex]="paginacion.pageIndex - 1" [length]="paginacion.pageLength" [pageSize]="paginacion.pageSize" (page)="paginacion.pageCurrent = $event; emitirResultados();" ></mat-paginator>
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
|
|
227
|
+
</div>
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
<!-- SECCION DE TEMPLATES O MENUS -->
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
<mat-menu #columnFilterMenu="matMenu" xPosition="before" yPosition="below">
|
|
235
|
+
<ng-container *ngFor="let column of columnasTabla">
|
|
236
|
+
<button (click)="toggleColumnVisibility(column, $event)" *ngIf="!tipoValorFuncion(column.noMostrarEnLista, false)"
|
|
237
|
+
class="checkbox-item mat-menu-item">
|
|
238
|
+
<mat-checkbox (click)="$event.stopPropagation()" [(ngModel)]="column.visible" [ngModelOptions]="{standalone: true}" color="primary">
|
|
239
|
+
<span [innerHTML]="(column.labelLista ?? column.label).replace('<br>', ' ')"></span>
|
|
240
|
+
</mat-checkbox>
|
|
241
|
+
</button>
|
|
242
|
+
</ng-container>
|
|
243
|
+
</mat-menu>
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
<ng-template #botonesSuperiores let-btn="btn" let-idx="idx">
|
|
251
|
+
<ng-container *ngTemplateOutlet="botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: true, idx: idx}"></ng-container>
|
|
252
|
+
</ng-template>
|
|
253
|
+
|
|
254
|
+
<ng-template #botonesContextual let-btn="btn" let-item="item" let-barraSuperior="barraSuperior" let-idx="idx">
|
|
255
|
+
|
|
256
|
+
<ng-container *ngIf="barraSuperior; else noBarraSuperior">
|
|
257
|
+
|
|
258
|
+
<!-- <button mat-button style="min-width: unset; border: 1px !important;" class="uppercase border border-gray rounded-none h-full px-1 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent">-->
|
|
259
|
+
<!-- <mat-icon *ngIf="btn.icono" [svgIcon]="btn.icono" size="15px" class="icon-xs"></mat-icon>-->
|
|
260
|
+
<!-- </button>-->
|
|
261
|
+
<ng-container *ngIf="btn.subItems && btn.subItems.length > 0">
|
|
262
|
+
<button class="flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2" type="button"
|
|
263
|
+
|
|
264
|
+
*ngIf="(!btn.esVisible || btn.esVisible(item, this)) && subItemsActivos(btn, item)"
|
|
265
|
+
[class]="(btn.class?btn.class:'')"
|
|
266
|
+
|
|
267
|
+
(click)="opcMenu(item, btn)"
|
|
268
|
+
[style.min-width]="((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')"
|
|
269
|
+
[matTooltip]="btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) "
|
|
270
|
+
[matMenuTriggerFor]="menuOtrosBarra.menu"
|
|
271
|
+
|
|
272
|
+
[matBadge]="btn.badge"
|
|
273
|
+
matBadgeSize="small"
|
|
274
|
+
>
|
|
275
|
+
<mat-icon class="icon-xs" [class.mr-0.5]="!(btn.soloIcono ?? tipoValorFuncion(soloIconos))" *ngIf="btn.icono" [svgIcon]="btn.icono" ></mat-icon>
|
|
276
|
+
<span class="whitespace-nowrap" *ngIf="!(btn.soloIcono ?? tipoValorFuncion(soloIconos))">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>
|
|
277
|
+
<mat-icon class="icon-xs" svgIcon="fa5sCaretDown" ></mat-icon>
|
|
278
|
+
</button>
|
|
279
|
+
|
|
280
|
+
<jvs-tabla-mantenimiento-menu #menuOtrosBarra
|
|
281
|
+
[objThis]="objThis"
|
|
282
|
+
[nombreColeccion]="nombreColeccion"
|
|
283
|
+
[item]="item"
|
|
284
|
+
[derechosActuales]="derechosActuales"
|
|
285
|
+
[subItems]="btn.subItems"
|
|
286
|
+
(opcionSelecionada)="opcMenu($event.item, $event.btn)"
|
|
287
|
+
[botonTemplate]="botonesContextual"
|
|
288
|
+
>
|
|
289
|
+
</jvs-tabla-mantenimiento-menu>
|
|
290
|
+
</ng-container>
|
|
291
|
+
<ng-container *ngIf="!btn.subItems || btn.subItems.length == 0">
|
|
292
|
+
<button class="flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2" type="button"
|
|
293
|
+
|
|
294
|
+
*ngIf="!btn.esVisible || btn.esVisible(item, this)"
|
|
295
|
+
[class]="(btn.class?btn.class:'text-secondary')"
|
|
296
|
+
[ngClass]="{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo])) && !(['nuevo', 'editar', 'eliminar'].includes(btn.tipo))}"
|
|
297
|
+
[disabled]="!btn.esIndependiente && botonDisabled(btn, item)"
|
|
298
|
+
(click)="opcMenu(item, btn)"
|
|
299
|
+
[style.min-width]="((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')"
|
|
300
|
+
[matTooltip]="btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) "
|
|
301
|
+
|
|
302
|
+
[matBadge]="btn.badge"
|
|
303
|
+
matBadgeSize="small"
|
|
304
|
+
>
|
|
305
|
+
<mat-icon class="icon-xs" [class.mr-0.5]="!(btn.soloIcono ?? tipoValorFuncion(soloIconos))" *ngIf="btn.icono" [svgIcon]="btn.icono"></mat-icon>
|
|
306
|
+
<span class="whitespace-nowrap" *ngIf="!(btn.soloIcono ?? tipoValorFuncion(soloIconos))">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>
|
|
307
|
+
</button>
|
|
308
|
+
|
|
309
|
+
</ng-container>
|
|
310
|
+
|
|
311
|
+
</ng-container>
|
|
312
|
+
<ng-template #noBarraSuperior>
|
|
313
|
+
|
|
314
|
+
<ng-container *ngIf="btn.subItems && btn.subItems.length > 0">
|
|
315
|
+
<button class="flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent" mat-menu-item type="button"
|
|
316
|
+
*ngIf="!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))"
|
|
317
|
+
[class]="(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')"
|
|
318
|
+
[ngClass]="{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}"
|
|
319
|
+
[disabled]="!btn.esIndependiente && botonDisabled(btn, item)"
|
|
320
|
+
(click)="opcMenu(item, btn); $event.stopPropagation();"
|
|
321
|
+
[matMenuTriggerFor]="menuOtrosBarra.menu"
|
|
322
|
+
>
|
|
323
|
+
<div class="flex w-full items-center justify-between uppercase text-2xs"
|
|
324
|
+
>
|
|
325
|
+
<mat-icon *ngIf="btn.icono" [svgIcon]="btn.icono"
|
|
326
|
+
class="flex-none icon-xs"
|
|
327
|
+
></mat-icon>
|
|
328
|
+
<span class="grow text-2xs">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>
|
|
329
|
+
<mat-icon class="flex-none icon-xs" svgIcon="fa5sCaretRight"></mat-icon>
|
|
330
|
+
</div>
|
|
331
|
+
</button>
|
|
332
|
+
|
|
333
|
+
<jvs-tabla-mantenimiento-menu #menuOtrosBarra
|
|
334
|
+
[objThis]="objThis"
|
|
335
|
+
[nombreColeccion]="nombreColeccion"
|
|
336
|
+
[item]="item"
|
|
337
|
+
[derechosActuales]="derechosActuales"
|
|
338
|
+
[subItems]="btn.subItems"
|
|
339
|
+
(opcionSelecionada)="opcMenu($event.item, $event.btn)"
|
|
340
|
+
[botonTemplate]="botonesContextual"
|
|
341
|
+
>
|
|
342
|
+
</jvs-tabla-mantenimiento-menu>
|
|
343
|
+
</ng-container>
|
|
344
|
+
<ng-container *ngIf="!btn.subItems || btn.subItems.length == 0">
|
|
345
|
+
<ng-container *ngIf="btn.tipo == '-#SEPARADOR#-'; else itemsNormales">
|
|
346
|
+
<mat-divider></mat-divider>
|
|
347
|
+
</ng-container>
|
|
348
|
+
<ng-template #itemsNormales>
|
|
349
|
+
<button class="flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent" mat-menu-item type="button"
|
|
350
|
+
*ngIf="!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))"
|
|
351
|
+
[class]="(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')"
|
|
352
|
+
[ngClass]="{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}"
|
|
353
|
+
[disabled]="!btn.esIndependiente && botonDisabled(btn, item)"
|
|
354
|
+
(click)="opcMenu(item, btn)"
|
|
355
|
+
>
|
|
356
|
+
<div class="flex w-full items-center justify-between uppercase text-2xs">
|
|
357
|
+
<mat-icon *ngIf="btn.icono" [svgIcon]="btn.icono" class="flex-none icon-xs"
|
|
358
|
+
></mat-icon>
|
|
359
|
+
<span class="grow text-2xs">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>
|
|
360
|
+
</div>
|
|
361
|
+
</button>
|
|
362
|
+
</ng-template>
|
|
363
|
+
|
|
364
|
+
</ng-container>
|
|
365
|
+
|
|
366
|
+
</ng-template>
|
|
367
|
+
|
|
368
|
+
</ng-template>
|
|
369
|
+
|
|
370
|
+
<ng-template #userMenu let-item="item">
|
|
371
|
+
<div class="mat-menu bg-white rounded mat-elevation-z8 shadow botonesContextual">
|
|
372
|
+
<ng-container *ngFor="let btn of listaMenuCompleto">
|
|
373
|
+
<ng-container *ngTemplateOutlet="botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}"></ng-container>
|
|
374
|
+
</ng-container>
|
|
375
|
+
</div>
|
|
376
|
+
</ng-template>
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
<mat-menu #menuOpciones="matMenu" xPosition="before" yPosition="below">
|
|
380
|
+
<ng-container *ngFor="let btn of listaMenuCompleto">
|
|
381
|
+
<ng-container
|
|
382
|
+
*ngTemplateOutlet="botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}"></ng-container>
|
|
383
|
+
</ng-container>
|
|
384
|
+
</mat-menu>
|
|
385
|
+
|