ngx-dsxlibrary 1.0.52 → 1.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class KpicardComponent {
3
- option: import("@angular/core").InputSignal<"currency" | "integer">;
3
+ option: import("@angular/core").InputSignal<"currency" | "integer" | "percent">;
4
4
  label: import("@angular/core").InputSignal<string>;
5
5
  iconType: import("@angular/core").InputSignal<string>;
6
6
  color: import("@angular/core").InputSignal<string | undefined>;
7
7
  valor: import("@angular/core").InputSignal<number>;
8
8
  theme: import("@angular/core").InputSignal<"light" | "dark" | "aqua" | "sunset" | "mint" | "peach" | "plasma" | "nebula">;
9
- options: Record<'currency' | 'integer', any>;
9
+ options: Record<'currency' | 'integer' | 'percent', any>;
10
10
  getSelectedOption(): any;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<KpicardComponent, never>;
12
12
  static ɵcmp: i0.ɵɵComponentDeclaration<KpicardComponent, "app-kpicard", never, { "option": { "alias": "option"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "iconType": { "alias": "iconType"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "valor": { "alias": "valor"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -0,0 +1,39 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Directiva que permite solo la entrada de:
5
+ * - Dígitos (0-9)
6
+ * - Separadores punto (.)
7
+ * - Rango con guión (-)
8
+ *
9
+ * Ejemplos válidos:
10
+ * - 1.2.3
11
+ * - 4-6
12
+ * - 1.3.5-9
13
+ *
14
+ * Restringe:
15
+ * - Letras
16
+ * - Espacios
17
+ * - Caracteres especiales
18
+ * - Doble punto (..), doble guión (--), o combinaciones como (.-)
19
+ */
20
+ export declare class OnlyRangoPatternDirective {
21
+ private el;
22
+ constructor(el: ElementRef<HTMLInputElement>);
23
+ /**
24
+ * Expresión regular para permitir caracteres válidos individualmente (tecla por tecla).
25
+ */
26
+ private keyRegex;
27
+ /**
28
+ * Escucha el evento de teclado y permite únicamente teclas válidas.
29
+ * También evita combinaciones inválidas como `..`, `--`, `.1`, etc.
30
+ */
31
+ onKeyDown(event: KeyboardEvent): void;
32
+ /**
33
+ * Previene el pegado de cadenas que no cumplan con la estructura válida.
34
+ * Solo permite: número o número separados por punto o guión correctamente.
35
+ */
36
+ onPaste(event: ClipboardEvent): void;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<OnlyRangoPatternDirective, never>;
38
+ static ɵdir: i0.ɵɵDirectiveDeclaration<OnlyRangoPatternDirective, "[appOnlyRangoPattern]", never, {}, {}, never, never, true, never>;
39
+ }
@@ -107,6 +107,62 @@ export declare class UtilityAddService {
107
107
  * @returns FilterOption[] Listado filtrado, tipado y ordenado alfabéticamente
108
108
  */
109
109
  getUniqueValues<T>(data: T[], field: keyof T): FilterOption[];
110
+ /**
111
+ * Función pura que procesa una cadena de texto conteniendo números individuales y/o rangos numéricos,
112
+ * devolviendo un array con todos los números expandidos.
113
+ *
114
+ * @param input - Cadena de texto con el formato: número[.número][.inicio-fin][...]
115
+ * @returns Array de números con todos los valores individuales y rangos expandidos
116
+ *
117
+ * @example
118
+ * // Uso básico
119
+ * const result = parseNumericRanges('1.5.7.10-12');
120
+ * // Retorna: [1, 5, 7, 10, 11, 12]
121
+ *
122
+ * @example
123
+ * // Con espacios y caracteres especiales
124
+ * const result = parseNumericRanges(' 3. 5-7 .10-12abc');
125
+ * // Retorna: [3, 5, 6, 7, 10, 11, 12]
126
+ *
127
+ * @example
128
+ * // Rangos invertidos (serán ignorados)
129
+ * const result = parseNumericRanges('10-8');
130
+ * // Retorna: [] (array vacío)
131
+ *
132
+ * @note
133
+ * Características especiales:
134
+ * - Elimina automáticamente espacios y caracteres no numéricos
135
+ * - Los números deben estar separados por puntos (.)
136
+ * - Los rangos deben usar guión (-) sin espacios entre números
137
+ * - Es tolerante a formatos inconsistentes
138
+ * - Omite elementos inválidos sin generar errores
139
+ */
140
+ parseNumericRanges(input: string): number[];
141
+ /**
142
+ * Adaptador para procesar eventos de input y extraer rangos numéricos.
143
+ *
144
+ * @param event - Objeto Event del DOM, preferiblemente de un elemento input
145
+ * @returns Array de números generado a partir del valor del input
146
+ *
147
+ * @example
148
+ * // Uso en template Angular
149
+ * <input (input)="processNumericRangesFromEvent($event)">
150
+ *
151
+ * @example
152
+ * // Uso directo
153
+ * const result = processNumericRangesFromEvent(inputEvent);
154
+ *
155
+ * @note
156
+ * Esta función es un wrapper que:
157
+ * - Extrae el valor del input del evento
158
+ * - Delega el procesamiento a parseNumericRanges()
159
+ * - Mantiene compatibilidad con eventos de diferentes frameworks
160
+ *
161
+ * @dependencies
162
+ * Requiere que el evento tenga la propiedad target.value (standard DOM)
163
+ * Para otros tipos de eventos (ej. Angular Material) puede necesitar ajustes
164
+ */
165
+ processNumericRangesFromEvent(event: Event): number[];
110
166
  static ɵfac: i0.ɵɵFactoryDeclaration<UtilityAddService, never>;
111
167
  static ɵprov: i0.ɵɵInjectableDeclaration<UtilityAddService>;
112
168
  }
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-dsxlibrary",
3
- "version": "1.0.52",
3
+ "version": "1.0.54",
4
4
  "description": "Libreria para control de código automatizado.",
5
5
  "author": "DevSoftXela",
6
6
  "peerDependencies": {
@@ -21,34 +21,34 @@
21
21
  "types": "./index.d.ts",
22
22
  "default": "./fesm2022/ngx-dsxlibrary.mjs"
23
23
  },
24
- "./src/lib/directives": {
25
- "types": "./src/lib/directives/index.d.ts",
26
- "default": "./fesm2022/ngx-dsxlibrary-src-lib-directives.mjs"
27
- },
28
24
  "./src/lib/components": {
29
25
  "types": "./src/lib/components/index.d.ts",
30
26
  "default": "./fesm2022/ngx-dsxlibrary-src-lib-components.mjs"
31
27
  },
28
+ "./src/lib/directives": {
29
+ "types": "./src/lib/directives/index.d.ts",
30
+ "default": "./fesm2022/ngx-dsxlibrary-src-lib-directives.mjs"
31
+ },
32
32
  "./src/lib/injections": {
33
33
  "types": "./src/lib/injections/index.d.ts",
34
34
  "default": "./fesm2022/ngx-dsxlibrary-src-lib-injections.mjs"
35
35
  },
36
- "./src/lib/interceptors": {
37
- "types": "./src/lib/interceptors/index.d.ts",
38
- "default": "./fesm2022/ngx-dsxlibrary-src-lib-interceptors.mjs"
39
- },
40
- "./src/lib/models": {
41
- "types": "./src/lib/models/index.d.ts",
42
- "default": "./fesm2022/ngx-dsxlibrary-src-lib-models.mjs"
43
- },
44
36
  "./src/lib/pipe": {
45
37
  "types": "./src/lib/pipe/index.d.ts",
46
38
  "default": "./fesm2022/ngx-dsxlibrary-src-lib-pipe.mjs"
47
39
  },
40
+ "./src/lib/interceptors": {
41
+ "types": "./src/lib/interceptors/index.d.ts",
42
+ "default": "./fesm2022/ngx-dsxlibrary-src-lib-interceptors.mjs"
43
+ },
48
44
  "./src/lib/services": {
49
45
  "types": "./src/lib/services/index.d.ts",
50
46
  "default": "./fesm2022/ngx-dsxlibrary-src-lib-services.mjs"
51
47
  },
48
+ "./src/lib/models": {
49
+ "types": "./src/lib/models/index.d.ts",
50
+ "default": "./fesm2022/ngx-dsxlibrary-src-lib-models.mjs"
51
+ },
52
52
  "./src/lib/validations": {
53
53
  "types": "./src/lib/validations/index.d.ts",
54
54
  "default": "./fesm2022/ngx-dsxlibrary-src-lib-validations.mjs"
package/public-api.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from './lib/components';
2
2
  export * from './lib/components/json-values-debuj/json-values-debuj.component';
3
3
  export * from './lib/components/loading/loading.component';
4
4
  export * from './lib/components/navbar-dsx/navbar-dsx.component';
5
+ export * from './lib/directives/only-rango-pattern.directive';
5
6
  export * from './lib/directives/select-all-on-focus.directive';
6
7
  export * from './lib/injections/cache.token';
7
8
  export * from './lib/injections/environment.token';
@@ -1,12 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class KpicardComponent {
3
- option: import("@angular/core").InputSignal<"currency" | "integer">;
3
+ option: import("@angular/core").InputSignal<"currency" | "integer" | "percent">;
4
4
  label: import("@angular/core").InputSignal<string>;
5
5
  iconType: import("@angular/core").InputSignal<string>;
6
6
  color: import("@angular/core").InputSignal<string | undefined>;
7
7
  valor: import("@angular/core").InputSignal<number>;
8
8
  theme: import("@angular/core").InputSignal<"light" | "dark" | "aqua" | "sunset" | "mint" | "peach" | "plasma" | "nebula">;
9
- options: Record<'currency' | 'integer', any>;
9
+ options: Record<'currency' | 'integer' | 'percent', any>;
10
10
  getSelectedOption(): any;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<KpicardComponent, never>;
12
12
  static ɵcmp: i0.ɵɵComponentDeclaration<KpicardComponent, "app-kpicard", never, { "option": { "alias": "option"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "iconType": { "alias": "iconType"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "valor": { "alias": "valor"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
Binary file