@c80/ui 1.0.42 → 1.0.45
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/c80-ui.d.ts +5 -0
- package/esm2022/c80-ui.js +5 -0
- package/esm2022/c80-ui.js.map +1 -0
- package/esm2022/index.js +6 -0
- package/esm2022/index.js.map +1 -0
- package/esm2022/lib/card-level/card-level.component.js +56 -0
- package/esm2022/lib/card-level/card-level.component.js.map +1 -0
- package/esm2022/lib/card-level/card-level.interface.js +2 -0
- package/esm2022/lib/card-level/card-level.interface.js.map +1 -0
- package/esm2022/lib/card-level/index.js +3 -0
- package/esm2022/lib/card-level/index.js.map +1 -0
- package/esm2022/lib/icon/icon.component.js +48 -0
- package/esm2022/lib/icon/icon.component.js.map +1 -0
- package/esm2022/lib/icon/icon.constants.js +237 -0
- package/esm2022/lib/icon/icon.constants.js.map +1 -0
- package/esm2022/lib/icon/icon.types.js +2 -0
- package/esm2022/lib/icon/icon.types.js.map +1 -0
- package/esm2022/lib/icon/icon.utils.js +4 -0
- package/esm2022/lib/icon/icon.utils.js.map +1 -0
- package/esm2022/lib/icon/index.js +4 -0
- package/esm2022/lib/icon/index.js.map +1 -0
- package/esm2022/lib/modal/index.js +3 -0
- package/esm2022/lib/modal/index.js.map +1 -0
- package/esm2022/lib/modal/modal.component.js +86 -0
- package/esm2022/lib/modal/modal.component.js.map +1 -0
- package/esm2022/lib/modal/modal.service.js +83 -0
- package/esm2022/lib/modal/modal.service.js.map +1 -0
- package/esm2022/lib/stat-card/index.js +2 -0
- package/esm2022/lib/stat-card/index.js.map +1 -0
- package/esm2022/lib/stat-card/stat-card.component.js +13 -0
- package/esm2022/lib/stat-card/stat-card.component.js.map +1 -0
- package/esm2022/lib/table/index.js +9 -0
- package/esm2022/lib/table/index.js.map +1 -0
- package/esm2022/lib/table/table-column-visibility.service.js +105 -0
- package/esm2022/lib/table/table-column-visibility.service.js.map +1 -0
- package/esm2022/lib/table/table-crud-state.service.js +115 -0
- package/esm2022/lib/table/table-crud-state.service.js.map +1 -0
- package/esm2022/lib/table/table-data-converter.service.js +145 -0
- package/esm2022/lib/table/table-data-converter.service.js.map +1 -0
- package/esm2022/lib/table/table-data-utils.service.js +193 -0
- package/esm2022/lib/table/table-data-utils.service.js.map +1 -0
- package/esm2022/lib/table/table-selection.service.js +121 -0
- package/esm2022/lib/table/table-selection.service.js.map +1 -0
- package/esm2022/lib/table/table.component.js +413 -0
- package/esm2022/lib/table/table.component.js.map +1 -0
- package/esm2022/lib/table/table.types.js +5 -0
- package/esm2022/lib/table/table.types.js.map +1 -0
- package/esm2022/lib/table/table.utils.js +107 -0
- package/esm2022/lib/table/table.utils.js.map +1 -0
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/modal/index.d.ts +2 -3
- package/lib/stat-card/stat-card.component.d.ts +2 -2
- package/lib/table/index.d.ts +1 -0
- package/lib/table/table-column-visibility.service.d.ts +17 -35
- package/lib/table/table-crud-state.service.d.ts +10 -27
- package/lib/table/table-data-utils.service.d.ts +15 -5
- package/lib/table/table-selection.service.d.ts +19 -18
- package/lib/table/table.component.d.ts +123 -98
- package/lib/table/table.types.d.ts +25 -2
- package/lib/table/table.utils.d.ts +42 -0
- package/package.json +7 -9
- package/esm2022/c80-ui.mjs +0 -5
- package/esm2022/index.mjs +0 -6
- package/esm2022/lib/card-level/card-level.component.mjs +0 -57
- package/esm2022/lib/card-level/card-level.interface.mjs +0 -2
- package/esm2022/lib/card-level/index.mjs +0 -3
- package/esm2022/lib/icon/icon.component.mjs +0 -49
- package/esm2022/lib/icon/icon.constants.mjs +0 -237
- package/esm2022/lib/icon/icon.types.mjs +0 -2
- package/esm2022/lib/icon/icon.utils.mjs +0 -4
- package/esm2022/lib/icon/index.mjs +0 -4
- package/esm2022/lib/modal/index.mjs +0 -3
- package/esm2022/lib/modal/modal.component.mjs +0 -86
- package/esm2022/lib/modal/modal.service.mjs +0 -83
- package/esm2022/lib/stat-card/index.mjs +0 -2
- package/esm2022/lib/stat-card/stat-card.component.mjs +0 -16
- package/esm2022/lib/table/index.mjs +0 -8
- package/esm2022/lib/table/table-column-visibility.service.mjs +0 -156
- package/esm2022/lib/table/table-crud-state.service.mjs +0 -186
- package/esm2022/lib/table/table-data-converter.service.mjs +0 -145
- package/esm2022/lib/table/table-data-utils.service.mjs +0 -166
- package/esm2022/lib/table/table-selection.service.mjs +0 -138
- package/esm2022/lib/table/table.component.mjs +0 -476
- package/esm2022/lib/table/table.types.mjs +0 -5
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform function para convertir valores string/boolean a boolean
|
|
3
|
+
* Usado en @Input() con transform para habilitar sintaxis de atributos booleanos
|
|
4
|
+
* @example [searchable]="true" o simplemente searchable
|
|
5
|
+
*/
|
|
6
|
+
export function booleanAttribute(value) {
|
|
7
|
+
return value === '' || value === true || value === 'true';
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Extrae mensaje de error de forma segura desde un objeto unknown
|
|
11
|
+
* @param err - Error desconocido (puede ser Error, string, object, etc.)
|
|
12
|
+
* @returns Mensaje de error legible
|
|
13
|
+
*/
|
|
14
|
+
export function getErrorMessage(err) {
|
|
15
|
+
const error = err;
|
|
16
|
+
return error?.message || 'Error al cargar datos';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Obtiene el valor de un input HTML según el tipo de columna
|
|
20
|
+
* IMPORTANTE: Convierte el valor al tipo correcto antes de retornarlo
|
|
21
|
+
* @param event - Evento del input
|
|
22
|
+
* @param col - Definición de columna (opcional)
|
|
23
|
+
* @returns Valor extraído y convertido según el tipo de columna
|
|
24
|
+
*/
|
|
25
|
+
export function getInputValue(event, col) {
|
|
26
|
+
if (col?.type === 'boolean') {
|
|
27
|
+
return event.target.checked;
|
|
28
|
+
}
|
|
29
|
+
const target = event.target;
|
|
30
|
+
const rawValue = target?.value;
|
|
31
|
+
if (!col) {
|
|
32
|
+
return rawValue;
|
|
33
|
+
}
|
|
34
|
+
return convertInputValueByType(rawValue, col.type);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Convierte un valor de input según el tipo de columna especificado
|
|
38
|
+
* @param rawValue - Valor crudo del input (string)
|
|
39
|
+
* @param type - Tipo de columna
|
|
40
|
+
* @returns Valor convertido al tipo apropiado
|
|
41
|
+
*/
|
|
42
|
+
function convertInputValueByType(rawValue, type) {
|
|
43
|
+
if (!type || type === 'string' || type === 'password' || type === 'date') {
|
|
44
|
+
return rawValue;
|
|
45
|
+
}
|
|
46
|
+
if (type === 'integer' || type === 'number') {
|
|
47
|
+
return convertToNumber(rawValue, type === 'integer');
|
|
48
|
+
}
|
|
49
|
+
if (type === 'enum') {
|
|
50
|
+
return convertEnumValue(rawValue);
|
|
51
|
+
}
|
|
52
|
+
return rawValue;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Convierte string a number o integer
|
|
56
|
+
*/
|
|
57
|
+
function convertToNumber(value, isInteger) {
|
|
58
|
+
if (value === '' || value === null || value === undefined) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const num = Number(value);
|
|
62
|
+
if (Number.isNaN(num)) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
return isInteger ? Math.floor(num) : num;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Convierte valor de enum (intenta convertir a número si es posible)
|
|
69
|
+
*/
|
|
70
|
+
function convertEnumValue(value) {
|
|
71
|
+
const num = Number(value);
|
|
72
|
+
return Number.isNaN(num) ? value : num;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Extrae el ID de una fila para usar como trackBy en ngFor
|
|
76
|
+
* @param index - Índice de la fila
|
|
77
|
+
* @param row - Fila de datos
|
|
78
|
+
* @returns ID como string o índice como fallback
|
|
79
|
+
*/
|
|
80
|
+
export function trackById(index, row) {
|
|
81
|
+
const id = row && typeof row === 'object' && 'id' in row
|
|
82
|
+
? row['id']
|
|
83
|
+
: undefined;
|
|
84
|
+
return typeof id === 'string' ? id : index;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Verifica si una acción debe mostrarse para una fila específica
|
|
88
|
+
* CREATE se excluye porque se maneja con el botón "+" en el header
|
|
89
|
+
* @param action - Acción a verificar
|
|
90
|
+
* @param row - Fila de datos
|
|
91
|
+
* @returns true si la acción debe mostrarse
|
|
92
|
+
*/
|
|
93
|
+
export function shouldShowAction(action, row) {
|
|
94
|
+
if (action.name === 'create') {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return !action.condition || action.condition(row);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Obtiene el tooltip de una acción (usa tooltip personalizado o name por defecto)
|
|
101
|
+
* @param action - Acción
|
|
102
|
+
* @returns Texto del tooltip
|
|
103
|
+
*/
|
|
104
|
+
export function getActionTooltip(action) {
|
|
105
|
+
return action.tooltip || action.name;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=table.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.utils.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/table/table.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { C80TableColDef, CustomTableAction } from './table.types';\n\n/**\n * Transform function para convertir valores string/boolean a boolean\n * Usado en @Input() con transform para habilitar sintaxis de atributos booleanos\n * @example [searchable]=\"true\" o simplemente searchable\n */\nexport function booleanAttribute(value: boolean | string): boolean {\n return value === '' || value === true || value === 'true';\n}\n\n/**\n * Extrae mensaje de error de forma segura desde un objeto unknown\n * @param err - Error desconocido (puede ser Error, string, object, etc.)\n * @returns Mensaje de error legible\n */\nexport function getErrorMessage(err: unknown): string {\n const error = err as { message?: string };\n return error?.message || 'Error al cargar datos';\n}\n\n/**\n * Obtiene el valor de un input HTML según el tipo de columna\n * IMPORTANTE: Convierte el valor al tipo correcto antes de retornarlo\n * @param event - Evento del input\n * @param col - Definición de columna (opcional)\n * @returns Valor extraído y convertido según el tipo de columna\n */\nexport function getInputValue(event: Event, col?: C80TableColDef): unknown {\n if (col?.type === 'boolean') {\n return (event.target as HTMLInputElement).checked;\n }\n\n const target = event.target as HTMLInputElement | HTMLSelectElement;\n const rawValue = target?.value;\n\n if (!col) {\n return rawValue;\n }\n\n return convertInputValueByType(rawValue, col.type);\n}\n\n/**\n * Convierte un valor de input según el tipo de columna especificado\n * @param rawValue - Valor crudo del input (string)\n * @param type - Tipo de columna\n * @returns Valor convertido al tipo apropiado\n */\nfunction convertInputValueByType(\n rawValue: string,\n type?: 'string' | 'number' | 'integer' | 'boolean' | 'password' | 'enum' | 'date'\n): unknown {\n if (!type || type === 'string' || type === 'password' || type === 'date') {\n return rawValue;\n }\n\n if (type === 'integer' || type === 'number') {\n return convertToNumber(rawValue, type === 'integer');\n }\n\n if (type === 'enum') {\n return convertEnumValue(rawValue);\n }\n\n return rawValue;\n}\n\n/**\n * Convierte string a number o integer\n */\nfunction convertToNumber(value: string, isInteger: boolean): number | undefined {\n if (value === '' || value === null || value === undefined) {\n return undefined;\n }\n const num = Number(value);\n if (Number.isNaN(num)) {\n return undefined;\n }\n return isInteger ? Math.floor(num) : num;\n}\n\n/**\n * Convierte valor de enum (intenta convertir a número si es posible)\n */\nfunction convertEnumValue(value: string): string | number {\n const num = Number(value);\n return Number.isNaN(num) ? value : num;\n}\n\n/**\n * Extrae el ID de una fila para usar como trackBy en ngFor\n * @param index - Índice de la fila\n * @param row - Fila de datos\n * @returns ID como string o índice como fallback\n */\nexport function trackById<T extends Record<string, unknown>>(index: number, row: T): string | number {\n const id = row && typeof row === 'object' && 'id' in row\n ? (row as Record<string, unknown>)['id']\n : undefined;\n return typeof id === 'string' ? id : index;\n}\n\n/**\n * Verifica si una acción debe mostrarse para una fila específica\n * CREATE se excluye porque se maneja con el botón \"+\" en el header\n * @param action - Acción a verificar\n * @param row - Fila de datos\n * @returns true si la acción debe mostrarse\n */\nexport function shouldShowAction<T extends Record<string, unknown>>(\n action: CustomTableAction,\n row: T\n): boolean {\n if (action.name === 'create') {\n return false;\n }\n return !action.condition || action.condition(row);\n}\n\n/**\n * Obtiene el tooltip de una acción (usa tooltip personalizado o name por defecto)\n * @param action - Acción\n * @returns Texto del tooltip\n */\nexport function getActionTooltip(action: CustomTableAction): string {\n return action.tooltip || action.name;\n}\n"]}
|
|
@@ -16,7 +16,7 @@ export declare class C80IconComponent {
|
|
|
16
16
|
readonly iconColor: import("@angular/core").Signal<string>;
|
|
17
17
|
readonly iconOpacity: import("@angular/core").Signal<0.5 | 0.7 | 1>;
|
|
18
18
|
readonly iconPath: import("@angular/core").Signal<string>;
|
|
19
|
-
readonly additionalShapes: import("@angular/core").Signal<import("
|
|
19
|
+
readonly additionalShapes: import("@angular/core").Signal<import("@c80/ui").ShapeAttributes[]>;
|
|
20
20
|
onButtonClick(event: Event): void;
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<C80IconComponent, never>;
|
|
22
22
|
static ɵcmp: i0.ɵɵComponentDeclaration<C80IconComponent, "c80-icon", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "customColor": { "alias": "customColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "textLeft": { "alias": "textLeft"; "required": false; "isSignal": true; }; "textRight": { "alias": "textRight"; "required": false; "isSignal": true; }; }, { "iconClick": "iconClick"; }, never, never, true, never>;
|
package/lib/modal/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export type { ModalConfig, ModalResult, ModalType } from './modal.component';
|
|
1
|
+
export * from './modal.component';
|
|
2
|
+
export * from './modal.service';
|
|
@@ -7,7 +7,7 @@ export interface CardDef {
|
|
|
7
7
|
count: number;
|
|
8
8
|
}
|
|
9
9
|
export declare class C80StatCardComponent {
|
|
10
|
-
cards: CardDef[]
|
|
10
|
+
readonly cards: import("@angular/core").InputSignal<CardDef[]>;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<C80StatCardComponent, never>;
|
|
12
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<C80StatCardComponent, "c80-stat-card", never, { "cards": { "alias": "cards"; "required": false; }; }, {}, never, never, true, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<C80StatCardComponent, "c80-stat-card", never, { "cards": { "alias": "cards"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
13
|
}
|
package/lib/table/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C80TableColDef
|
|
1
|
+
import { C80TableColDef } from './table.types';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
/**
|
|
4
4
|
* Servicio para gestionar la lógica de visibilidad de columnas en tablas C80
|
|
@@ -10,6 +10,7 @@ import * as i0 from "@angular/core";
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class TableColumnVisibilityService {
|
|
12
12
|
private readonly dataConverter;
|
|
13
|
+
private readonly dataUtils;
|
|
13
14
|
/**
|
|
14
15
|
* Actualiza las keys de columnas visibles basándose en el estado actual
|
|
15
16
|
* @param columns - Definiciones de columnas
|
|
@@ -18,54 +19,35 @@ export declare class TableColumnVisibilityService {
|
|
|
18
19
|
* @param editing - ID de fila en edición (null si no hay edición)
|
|
19
20
|
* @returns Array de accessors de columnas visibles
|
|
20
21
|
*/
|
|
21
|
-
updateVisibleKeys<T extends Record<string, unknown>>(columns: C80TableColDef[], data: T[], creating: boolean, editing:
|
|
22
|
+
updateVisibleKeys<T extends Record<string, unknown>>(columns: C80TableColDef[], data: T[], creating: boolean, editing: string | null): string[];
|
|
22
23
|
/**
|
|
23
24
|
* Determina si una columna debe ser visible basándose en su configuración y datos
|
|
25
|
+
* Método unificado que maneja todos los casos de visibilidad
|
|
24
26
|
* @param column - La definición de la columna
|
|
25
27
|
* @param data - Datos actuales de la tabla
|
|
26
|
-
* @param
|
|
28
|
+
* @param options - Opciones de contexto (creación, edición, fila específica)
|
|
27
29
|
* @returns true si la columna debe ser visible
|
|
28
30
|
*/
|
|
29
|
-
isColumnVisible<T extends Record<string, unknown>>(column: C80TableColDef, data: T[],
|
|
31
|
+
isColumnVisible<T extends Record<string, unknown>>(column: C80TableColDef, data: T[], options?: {
|
|
32
|
+
forceShowInCreation?: boolean;
|
|
33
|
+
creating?: boolean;
|
|
34
|
+
editing?: string | null;
|
|
35
|
+
row?: T;
|
|
36
|
+
}): boolean;
|
|
30
37
|
/**
|
|
31
38
|
* Determina si una columna debe ser visible en los headers
|
|
32
|
-
*
|
|
33
|
-
* @param data - Datos actuales de la tabla
|
|
34
|
-
* @param creating - Si está en modo creación
|
|
35
|
-
* @param editing - ID de fila en edición (null si no hay edición)
|
|
36
|
-
* @returns true si el header debe ser visible
|
|
39
|
+
* Wrapper para mantener compatibilidad con API existente
|
|
37
40
|
*/
|
|
38
|
-
isColumnVisibleInHeader<T extends Record<string, unknown>>(column: C80TableColDef, data: T[], creating: boolean, editing:
|
|
41
|
+
isColumnVisibleInHeader<T extends Record<string, unknown>>(column: C80TableColDef, data: T[], creating: boolean, editing: string | null): boolean;
|
|
39
42
|
/**
|
|
40
|
-
* Determina si una columna debe ser visible en una fila específica
|
|
41
|
-
*
|
|
42
|
-
* @param row - La fila actual
|
|
43
|
-
* @param data - Datos actuales de la tabla
|
|
44
|
-
* @param editing - ID de fila en edición (null si no hay edición)
|
|
45
|
-
* @returns true si la columna debe ser visible para esta fila
|
|
43
|
+
* Determina si una columna debe ser visible en una fila específica
|
|
44
|
+
* Wrapper para mantener compatibilidad con API existente
|
|
46
45
|
*/
|
|
47
|
-
isColumnVisibleForRow<T extends Record<string, unknown>>(column: C80TableColDef, row: T, data: T[], editing:
|
|
46
|
+
isColumnVisibleForRow<T extends Record<string, unknown>>(column: C80TableColDef, row: T, data: T[], editing: string | null): boolean;
|
|
48
47
|
/**
|
|
49
48
|
* Verifica si todos los valores de una columna están vacíos/nulos
|
|
50
|
-
* @param column - La definición de la columna
|
|
51
|
-
* @param data - Datos actuales de la tabla
|
|
52
|
-
* @returns true si todos los valores están vacíos
|
|
53
|
-
*/
|
|
54
|
-
areAllColumnValuesEmpty<T extends Record<string, unknown>>(column: C80TableColDef, data: T[]): boolean;
|
|
55
|
-
/**
|
|
56
|
-
* Obtiene el valor de una celda usando el accessor, soportando notación de punto para propiedades anidadas
|
|
57
|
-
* @param row - La fila de datos
|
|
58
|
-
* @param accessor - El accessor de la columna
|
|
59
|
-
* @returns El valor de la celda
|
|
60
|
-
*/
|
|
61
|
-
private getCellValue;
|
|
62
|
-
/**
|
|
63
|
-
* Obtiene el valor de un objeto usando notación de punto (ej: 'task.name')
|
|
64
|
-
* @param obj - Objeto del cual obtener el valor
|
|
65
|
-
* @param accessor - Ruta de acceso usando notación de punto
|
|
66
|
-
* @returns El valor anidado o undefined
|
|
67
49
|
*/
|
|
68
|
-
private
|
|
50
|
+
private areAllColumnValuesEmpty;
|
|
69
51
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnVisibilityService, never>;
|
|
70
52
|
static ɵprov: i0.ɵɵInjectableDeclaration<TableColumnVisibilityService>;
|
|
71
53
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { C80TableColDef, ID } from './table.types';
|
|
1
|
+
import { C80TableColDef } from './table.types';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
/**
|
|
5
4
|
* Servicio para gestionar el estado CRUD (Crear, Leer, Actualizar, Eliminar) en tablas C80
|
|
@@ -8,19 +7,15 @@ import * as i0 from "@angular/core";
|
|
|
8
7
|
* - Estado de creación y edición
|
|
9
8
|
* - Gestión de datos temporales (newRow, editRow)
|
|
10
9
|
* - Aplicación de valores dinámicos
|
|
11
|
-
* - Validación y conversión de datos
|
|
10
|
+
* - Validación y conversión de datos
|
|
12
11
|
*/
|
|
13
12
|
export declare class TableCrudStateService {
|
|
14
13
|
private readonly visibilityService;
|
|
15
|
-
private readonly
|
|
14
|
+
private readonly dataUtils;
|
|
16
15
|
/**
|
|
17
16
|
* Filtra columnas visibles y editables
|
|
18
17
|
*/
|
|
19
18
|
private getEditableColumns;
|
|
20
|
-
/**
|
|
21
|
-
* Convierte valores de row según definición de columnas
|
|
22
|
-
*/
|
|
23
|
-
private convertRowValues;
|
|
24
19
|
/**
|
|
25
20
|
* Inicializa row para creación con valores por defecto
|
|
26
21
|
*/
|
|
@@ -36,34 +31,22 @@ export declare class TableCrudStateService {
|
|
|
36
31
|
createCrudState<T extends Record<string, unknown>>(): {
|
|
37
32
|
creating: import("@angular/core").Signal<boolean>;
|
|
38
33
|
newRow: import("@angular/core").Signal<Partial<T> | null>;
|
|
39
|
-
editing: import("@angular/core").Signal<
|
|
34
|
+
editing: import("@angular/core").Signal<string | null>;
|
|
40
35
|
editRow: import("@angular/core").Signal<Partial<T> | null>;
|
|
41
36
|
startCreate: (columns: C80TableColDef[], data: T[]) => void;
|
|
42
37
|
cancelCreate: () => void;
|
|
43
38
|
updateNewRow: (key: string, value: unknown) => void;
|
|
44
|
-
saveCreate: (columns: C80TableColDef[], data: T[], createEmitter: EventEmitter<{
|
|
45
|
-
row: Partial<T>;
|
|
46
|
-
done: (result: boolean) => void;
|
|
47
|
-
}>) => void;
|
|
48
39
|
startEdit: (row: T, columns: C80TableColDef[], data: T[]) => void;
|
|
49
40
|
cancelEdit: () => void;
|
|
50
41
|
updateEditRow: (key: string, value: unknown) => void;
|
|
51
|
-
saveEdit: (rowId: ID, columns: C80TableColDef[], data: T[], updateEmitter: EventEmitter<{
|
|
52
|
-
id: ID;
|
|
53
|
-
changes: Partial<T>;
|
|
54
|
-
done: (result: boolean) => void;
|
|
55
|
-
}>) => void;
|
|
56
42
|
applyInputValues: (partialValues: Partial<T>) => void;
|
|
57
43
|
};
|
|
58
|
-
private
|
|
59
|
-
private
|
|
60
|
-
private
|
|
61
|
-
private
|
|
62
|
-
private
|
|
63
|
-
private
|
|
64
|
-
private createUpdateEditRowFn;
|
|
65
|
-
private createSaveEditFn;
|
|
66
|
-
private createApplyInputValuesFn;
|
|
44
|
+
private startCreate;
|
|
45
|
+
private cancelCreate;
|
|
46
|
+
private updateRow;
|
|
47
|
+
private startEdit;
|
|
48
|
+
private cancelEdit;
|
|
49
|
+
private applyInputValues;
|
|
67
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableCrudStateService, never>;
|
|
68
51
|
static ɵprov: i0.ɵɵInjectableDeclaration<TableCrudStateService>;
|
|
69
52
|
}
|
|
@@ -27,15 +27,25 @@ export declare class TableDataUtilsService {
|
|
|
27
27
|
/**
|
|
28
28
|
* Devuelve el valor de display para una celda, mostrando '-' para valores falsy excepto 0, false y objetos/arrays vacíos
|
|
29
29
|
* @param value - Valor a formatear
|
|
30
|
+
* @param col - Definición de columna (opcional) para formateo específico por tipo
|
|
30
31
|
* @returns Cadena formateada para display
|
|
31
32
|
*/
|
|
32
|
-
getDisplayValue(value: unknown): string;
|
|
33
|
+
getDisplayValue(value: unknown, col?: C80TableColDef): string;
|
|
34
|
+
private formatValueByType;
|
|
35
|
+
private formatPrimitiveValue;
|
|
33
36
|
/**
|
|
34
|
-
*
|
|
35
|
-
* @param value - Valor
|
|
36
|
-
* @
|
|
37
|
-
* @returns Texto formateado del enum
|
|
37
|
+
* Formatea un valor de fecha a formato legible
|
|
38
|
+
* @param value - Valor de fecha (Date, string ISO, timestamp)
|
|
39
|
+
* @returns Fecha formateada como DD/MM/YYYY HH:MM
|
|
38
40
|
*/
|
|
41
|
+
private formatDateValue;
|
|
42
|
+
private parseDate;
|
|
43
|
+
private formatObjectValue; /**
|
|
44
|
+
* Obtiene el texto de display para un valor enum
|
|
45
|
+
* @param value - Valor del enum
|
|
46
|
+
* @param col - Definición de la columna
|
|
47
|
+
* @returns Texto formateado del enum
|
|
48
|
+
*/
|
|
39
49
|
getEnumDisplayValue(value: unknown, col: C80TableColDef): string;
|
|
40
50
|
/**
|
|
41
51
|
* Obtiene las opciones del enum como array para dropdowns select
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ID } from './table.types';
|
|
1
|
+
import { OutputEmitterRef } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
/**
|
|
5
4
|
* Servicio para gestionar la selección de elementos en tablas C80
|
|
@@ -15,31 +14,33 @@ export declare class TableSelectionService {
|
|
|
15
14
|
* Inicializa el estado de selección para una nueva tabla
|
|
16
15
|
* @returns Objeto con signals y métodos de selección
|
|
17
16
|
*/
|
|
18
|
-
createSelectionState<
|
|
19
|
-
selectedItems: import("@angular/core").Signal<Set<
|
|
17
|
+
createSelectionState<T extends Record<string, unknown>>(): {
|
|
18
|
+
selectedItems: import("@angular/core").Signal<Set<string>>;
|
|
20
19
|
selectAllChecked: import("@angular/core").Signal<boolean>;
|
|
21
20
|
selectAllIndeterminate: import("@angular/core").Signal<boolean>;
|
|
22
21
|
clearSelection: () => void;
|
|
23
|
-
toggleSelectAll: (allItems:
|
|
24
|
-
toggleItemSelection: (item:
|
|
25
|
-
isItemSelected: (item:
|
|
26
|
-
preserveSelection: (newData:
|
|
27
|
-
getSelectedItems: (allData:
|
|
22
|
+
toggleSelectAll: (allItems: T[]) => void;
|
|
23
|
+
toggleItemSelection: (item: T, multiple: boolean) => void;
|
|
24
|
+
isItemSelected: (item: T) => boolean;
|
|
25
|
+
preserveSelection: (newData: T[]) => void;
|
|
26
|
+
getSelectedItems: (allData: T[]) => T[];
|
|
28
27
|
};
|
|
29
|
-
private
|
|
30
|
-
private
|
|
31
|
-
private
|
|
32
|
-
private
|
|
33
|
-
private
|
|
34
|
-
private
|
|
28
|
+
private clearSelection;
|
|
29
|
+
private toggleSelectAll;
|
|
30
|
+
private toggleItemSelection;
|
|
31
|
+
private isItemSelected;
|
|
32
|
+
private preserveSelection;
|
|
33
|
+
private getSelectedItems;
|
|
35
34
|
private updateSelectAllState;
|
|
36
35
|
/**
|
|
37
|
-
* Emite los elementos seleccionados a través del
|
|
36
|
+
* Emite los elementos seleccionados a través del output proporcionado
|
|
38
37
|
* @param selectionState - Estado de selección
|
|
39
38
|
* @param allData - Todos los datos de la tabla
|
|
40
|
-
* @param selectableEmitter -
|
|
39
|
+
* @param selectableEmitter - Output para emitir la selección
|
|
41
40
|
*/
|
|
42
|
-
emitSelection<T extends Record<string, unknown>>(selectionState:
|
|
41
|
+
emitSelection<T extends Record<string, unknown>>(selectionState: {
|
|
42
|
+
getSelectedItems: (allData: T[]) => T[];
|
|
43
|
+
}, allData: T[], selectableEmitter: OutputEmitterRef<T[]>): void;
|
|
43
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableSelectionService, never>;
|
|
44
45
|
static ɵprov: i0.ɵɵInjectableDeclaration<TableSelectionService>;
|
|
45
46
|
}
|