ngx-rut-v2 1.6.0 → 1.6.3
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/fesm2022/ngx-rut-v2.mjs +105 -79
- package/fesm2022/ngx-rut-v2.mjs.map +1 -1
- package/lib/directives/rut-validator.directive.d.ts +3 -8
- package/lib/directives/rut-value-accessor.directive.d.ts +8 -5
- package/lib/directives/rut.directive.d.ts +3 -7
- package/lib/helpers/rut-helpers.d.ts +17 -0
- package/package.json +4 -4
package/fesm2022/ngx-rut-v2.mjs
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { forwardRef, Directive,
|
|
2
|
+
import { forwardRef, Directive, HostListener, Pipe } from '@angular/core';
|
|
3
3
|
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param value The RUT string to clean.
|
|
8
|
+
* @description Cleans a RUT (Rol Único Tributario) string by removing non-numeric characters and leading zeros.
|
|
9
|
+
* Converts the RUT to uppercase and returns it.
|
|
10
|
+
* @returns The cleaned RUT string.
|
|
11
|
+
*/
|
|
5
12
|
function rutClean(value) {
|
|
6
13
|
if (typeof value === 'string') {
|
|
7
14
|
return value
|
|
@@ -11,63 +18,75 @@ function rutClean(value) {
|
|
|
11
18
|
}
|
|
12
19
|
return '';
|
|
13
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* @param value The RUT string to validate.
|
|
23
|
+
* @description Validates a RUT (Rol Único Tributario) string.
|
|
24
|
+
* @returns True if the RUT is valid, false otherwise.
|
|
25
|
+
*/
|
|
14
26
|
function rutValidate(value) {
|
|
15
27
|
if (typeof value !== 'string') {
|
|
16
28
|
return false;
|
|
17
29
|
}
|
|
18
30
|
const rut = rutClean(value);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
if (rut.length < 2) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const body = rut.slice(0, -1);
|
|
35
|
+
const dv = rut.slice(-1).toUpperCase();
|
|
36
|
+
let sum = 0;
|
|
37
|
+
let multiplier = 2;
|
|
38
|
+
for (let i = body.length - 1; i >= 0; i--) {
|
|
39
|
+
sum += parseInt(body.charAt(i), 10) * multiplier;
|
|
40
|
+
multiplier = multiplier === 7 ? 2 : multiplier + 1;
|
|
41
|
+
}
|
|
42
|
+
const expectedDv = 11 - (sum % 11);
|
|
43
|
+
let expectedDvStr = '';
|
|
44
|
+
if (expectedDv === 11) {
|
|
45
|
+
expectedDvStr = '0';
|
|
46
|
+
}
|
|
47
|
+
else if (expectedDv === 10) {
|
|
48
|
+
expectedDvStr = 'K';
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
expectedDvStr = expectedDv.toString();
|
|
52
|
+
}
|
|
53
|
+
return dv === expectedDvStr;
|
|
28
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Formats a RUT (Rol Único Tributario) string.
|
|
57
|
+
* @param value The RUT string to format.
|
|
58
|
+
* @returns The formatted RUT string.
|
|
59
|
+
*/
|
|
29
60
|
function rutFormat(value) {
|
|
30
61
|
const rut = rutClean(value);
|
|
31
62
|
if (rut.length <= 1) {
|
|
32
63
|
return rut;
|
|
33
64
|
}
|
|
34
|
-
let result = `${rut.slice(-4, -1)}-${rut.
|
|
65
|
+
let result = `${rut.slice(-4, -1)}-${rut.slice(-1)}`;
|
|
35
66
|
for (let i = 4; i < rut.length; i += 3) {
|
|
36
67
|
result = `${rut.slice(-3 - i, -i)}.${result}`;
|
|
37
68
|
}
|
|
38
69
|
return result;
|
|
39
70
|
}
|
|
40
71
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return rutValidate(c.value) ? null : { invalidRut: true };
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function RutValidatorReactive() {
|
|
50
|
-
return (control) => {
|
|
51
|
-
if (!control.value) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
return rutValidate(control.value) ? null : { invalidRut: true };
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
class RutValidator {
|
|
58
|
-
validator;
|
|
59
|
-
constructor() {
|
|
60
|
-
this.validator = validateRutFactory(rutValidate);
|
|
72
|
+
// Single reusable ValidatorFn
|
|
73
|
+
const rutValidator = (control) => {
|
|
74
|
+
const value = control.value;
|
|
75
|
+
if (!value) {
|
|
76
|
+
return null;
|
|
61
77
|
}
|
|
62
|
-
|
|
63
|
-
|
|
78
|
+
return rutValidate(value) ? null : { invalidRut: true };
|
|
79
|
+
};
|
|
80
|
+
class RutValidator {
|
|
81
|
+
validate(control) {
|
|
82
|
+
return rutValidator(control);
|
|
64
83
|
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
66
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.
|
|
84
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
85
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: RutValidator, isStandalone: true, selector: "[validateRut][ngModel],[validateRut][formControl]", providers: [
|
|
67
86
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => RutValidator), multi: true },
|
|
68
87
|
], ngImport: i0 });
|
|
69
88
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutValidator, decorators: [{
|
|
71
90
|
type: Directive,
|
|
72
91
|
args: [{
|
|
73
92
|
selector: '[validateRut][ngModel],[validateRut][formControl]',
|
|
@@ -76,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
76
95
|
],
|
|
77
96
|
standalone: true
|
|
78
97
|
}]
|
|
79
|
-
}]
|
|
98
|
+
}] });
|
|
80
99
|
|
|
81
100
|
const RUT_VALUE_ACCESSOR = {
|
|
82
101
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -86,77 +105,84 @@ const RUT_VALUE_ACCESSOR = {
|
|
|
86
105
|
class RutValueAccessor {
|
|
87
106
|
renderer;
|
|
88
107
|
elementRef;
|
|
108
|
+
onChange = () => { };
|
|
109
|
+
onTouched = () => { };
|
|
89
110
|
constructor(renderer, elementRef) {
|
|
90
111
|
this.renderer = renderer;
|
|
91
112
|
this.elementRef = elementRef;
|
|
92
113
|
}
|
|
93
|
-
|
|
94
|
-
|
|
114
|
+
onInput(value) {
|
|
115
|
+
this.onChange(rutClean(value));
|
|
116
|
+
}
|
|
117
|
+
onBlur() {
|
|
118
|
+
const value = this.elementRef.nativeElement.value;
|
|
119
|
+
const formatted = rutFormat(value);
|
|
120
|
+
this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted);
|
|
121
|
+
this.onTouched();
|
|
122
|
+
}
|
|
95
123
|
writeValue(value) {
|
|
96
|
-
|
|
97
|
-
this.renderer.setProperty(this.elementRef.nativeElement, 'value',
|
|
124
|
+
const formatted = rutFormat(value) || '';
|
|
125
|
+
this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted);
|
|
126
|
+
}
|
|
127
|
+
registerOnChange(fn) {
|
|
128
|
+
this.onChange = fn;
|
|
129
|
+
}
|
|
130
|
+
registerOnTouched(fn) {
|
|
131
|
+
this.onTouched = fn;
|
|
132
|
+
}
|
|
133
|
+
setDisabledState(isDisabled) {
|
|
134
|
+
this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);
|
|
98
135
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: RutValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
102
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: RutValueAccessor, isStandalone: true, selector: "input[formatRut]", host: { listeners: { "rutChange": "onChange($event)", "blur": "onTouched($event)" } }, providers: [RUT_VALUE_ACCESSOR], ngImport: i0 });
|
|
136
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
137
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: RutValueAccessor, isStandalone: true, selector: "input[formatRut]", host: { listeners: { "input": "onInput($event.target.value)", "blur": "onBlur()" } }, providers: [RUT_VALUE_ACCESSOR], ngImport: i0 });
|
|
103
138
|
}
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutValueAccessor, decorators: [{
|
|
105
140
|
type: Directive,
|
|
106
141
|
args: [{
|
|
107
142
|
selector: 'input[formatRut]',
|
|
108
|
-
host: {
|
|
109
|
-
'(rutChange)': 'onChange($event)',
|
|
110
|
-
'(blur)': 'onTouched($event)',
|
|
111
|
-
},
|
|
112
143
|
standalone: true,
|
|
113
144
|
providers: [RUT_VALUE_ACCESSOR],
|
|
114
145
|
}]
|
|
115
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }]
|
|
146
|
+
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { onInput: [{
|
|
147
|
+
type: HostListener,
|
|
148
|
+
args: ['input', ['$event.target.value']]
|
|
149
|
+
}], onBlur: [{
|
|
150
|
+
type: HostListener,
|
|
151
|
+
args: ['blur']
|
|
152
|
+
}] } });
|
|
116
153
|
|
|
117
154
|
class RutDirective {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
this.rutChange = new EventEmitter();
|
|
121
|
-
}
|
|
122
|
-
onFocus(ev) {
|
|
123
|
-
let htmlInputElement = ev.target;
|
|
124
|
-
htmlInputElement.value = rutClean(htmlInputElement.value);
|
|
125
|
-
}
|
|
126
|
-
onBlur(ev) {
|
|
127
|
-
let htmlInputElement = ev.target;
|
|
128
|
-
htmlInputElement.value = rutFormat(htmlInputElement.value) || '';
|
|
155
|
+
onFocus(input) {
|
|
156
|
+
input.value = rutClean(input.value);
|
|
129
157
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
this.rutChange.emit(rutClean(htmlInputElement.value));
|
|
158
|
+
onBlur(input) {
|
|
159
|
+
input.value = rutFormat(input.value) || '';
|
|
133
160
|
}
|
|
134
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
135
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.
|
|
161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
162
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: RutDirective, isStandalone: true, selector: "[formatRut]", host: { listeners: { "focus": "onFocus($event.target)", "blur": "onBlur($event.target)" } }, ngImport: i0 });
|
|
136
163
|
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutDirective, decorators: [{
|
|
138
165
|
type: Directive,
|
|
139
166
|
args: [{
|
|
140
167
|
selector: '[formatRut]',
|
|
141
|
-
host: {
|
|
142
|
-
'(blur)': 'onBlur($event)',
|
|
143
|
-
'(focus)': 'onFocus($event)',
|
|
144
|
-
'(input)': 'onChange($event)',
|
|
145
|
-
},
|
|
146
168
|
standalone: true
|
|
147
169
|
}]
|
|
148
|
-
}],
|
|
149
|
-
type:
|
|
170
|
+
}], propDecorators: { onFocus: [{
|
|
171
|
+
type: HostListener,
|
|
172
|
+
args: ['focus', ['$event.target']]
|
|
173
|
+
}], onBlur: [{
|
|
174
|
+
type: HostListener,
|
|
175
|
+
args: ['blur', ['$event.target']]
|
|
150
176
|
}] } });
|
|
151
177
|
|
|
152
178
|
class RutPipe {
|
|
153
179
|
transform(value) {
|
|
154
180
|
return rutFormat(value);
|
|
155
181
|
}
|
|
156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
157
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.
|
|
182
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
183
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: RutPipe, isStandalone: true, name: "rut" });
|
|
158
184
|
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RutPipe, decorators: [{
|
|
160
186
|
type: Pipe,
|
|
161
187
|
args: [{
|
|
162
188
|
name: 'rut',
|
|
@@ -172,5 +198,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
172
198
|
* Generated bundle index. Do not edit.
|
|
173
199
|
*/
|
|
174
200
|
|
|
175
|
-
export { RutDirective, RutPipe, RutValidator,
|
|
201
|
+
export { RutDirective, RutPipe, RutValidator, RutValueAccessor, rutClean, rutFormat, rutValidate, rutValidator };
|
|
176
202
|
//# sourceMappingURL=ngx-rut-v2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rut-v2.mjs","sources":["../../../projects/ngx-rut-v2/src/lib/helpers/rut-helpers.ts","../../../projects/ngx-rut-v2/src/lib/directives/rut-validator.directive.ts","../../../projects/ngx-rut-v2/src/lib/directives/rut-value-accessor.directive.ts","../../../projects/ngx-rut-v2/src/lib/directives/rut.directive.ts","../../../projects/ngx-rut-v2/src/lib/pipes/rut.pipe.ts","../../../projects/ngx-rut-v2/src/public-api.ts","../../../projects/ngx-rut-v2/src/ngx-rut-v2.ts"],"sourcesContent":["export function rutClean(value: string) {\r\n if (typeof value === 'string') {\r\n return value\r\n .replace(/[^0-9kK]+/g, '')\r\n .replace(/^0+/, '')\r\n .toUpperCase();\r\n }\r\n return '';\r\n}\r\n\r\nexport function rutValidate(value: string) {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n\r\n const rut: string = rutClean(value);\r\n let rutDigits: number = parseInt(rut.slice(0, -1), 10);\r\n let m: number = 0;\r\n let s: number = 1;\r\n\r\n while (rutDigits > 0) {\r\n s = (s + rutDigits % 10 * (9 - m++ % 6)) % 11;\r\n rutDigits = Math.floor(rutDigits / 10);\r\n }\r\n const checkDigit: string = (s > 0) ? String((s - 1)) : 'K';\r\n\r\n return (checkDigit === rut.slice(-1));\r\n}\r\n\r\nexport function rutFormat(value: string) {\r\n const rut: string = rutClean(value);\r\n\r\n if (rut.length <= 1) {\r\n return rut;\r\n }\r\n\r\n let result: string = `${rut.slice(-4, -1)}-${rut.substr(rut.length - 1)}`;\r\n for (let i: number = 4; i < rut.length; i += 3) {\r\n result = `${rut.slice(-3 - i, -i)}.${result}`;\r\n }\r\n\r\n return result;\r\n}\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, UntypedFormControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';\r\nimport { rutValidate } from '../helpers/rut-helpers';\r\n\r\n\r\nexport function validateRutFactory(rutValidate: Function) {\r\n return (c: UntypedFormControl) => {\r\n if (!c.value) {\r\n return null;\r\n }\r\n return rutValidate(c.value) ? null : { invalidRut: true };\r\n };\r\n}\r\n\r\nexport function RutValidatorReactive(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n if(!control.value) {\r\n return null;\r\n }\r\n return rutValidate(control.value) ? null : { invalidRut: true };\r\n };\r\n}\r\n\r\n\r\n@Directive({\r\n selector: '[validateRut][ngModel],[validateRut][formControl]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => RutValidator), multi: true },\r\n ],\r\n standalone: true\r\n})\r\nexport class RutValidator implements Validator {\r\n\r\n private validator: Function;\r\n\r\n constructor() {\r\n this.validator = validateRutFactory(rutValidate);\r\n }\r\n\r\n public validate(c: UntypedFormControl) {\r\n return this.validator(c);\r\n }\r\n\r\n}\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { rutFormat } from '../helpers/rut-helpers';\r\n\r\nimport { ElementRef, Renderer2 } from '@angular/core';\r\n\r\nconst RUT_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RutValueAccessor),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: 'input[formatRut]',\r\n host: {\r\n '(rutChange)': 'onChange($event)',\r\n '(blur)': 'onTouched($event)',\r\n },\r\n standalone: true,\r\n providers: [RUT_VALUE_ACCESSOR],\r\n})\r\nexport class RutValueAccessor implements ControlValueAccessor {\r\n constructor(\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n ) { }\r\n\r\n public onChange: any = (_: any) => { /*Empty*/ };\r\n public onTouched: any = () => { /*Empty*/ };\r\n\r\n public writeValue(value: any): void {\r\n let normalizedValue: string = rutFormat(value) || '';\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', normalizedValue);\r\n }\r\n\r\n public registerOnChange(fn: (_: any) => void): void { this.onChange = fn; }\r\n public registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n}\r\n","import {Directive, EventEmitter, Output} from '@angular/core';\r\nimport * as rutHelpers from '../helpers/rut-helpers';\r\n\r\n@Directive({\r\n selector: '[formatRut]',\r\n host: {\r\n '(blur)': 'onBlur($event)',\r\n '(focus)': 'onFocus($event)',\r\n '(input)': 'onChange($event)',\r\n },\r\n standalone: true\r\n})\r\nexport class RutDirective {\r\n @Output() public rutChange: EventEmitter<any>;\r\n\r\n constructor() {\r\n this.rutChange = new EventEmitter();\r\n }\r\n\r\n public onFocus(ev: Event) {\r\n let htmlInputElement: HTMLInputElement = <HTMLInputElement> ev.target;\r\n htmlInputElement.value = rutHelpers.rutClean(htmlInputElement.value);\r\n }\r\n\r\n public onBlur(ev: Event) {\r\n let htmlInputElement: HTMLInputElement = <HTMLInputElement> ev.target;\r\n htmlInputElement.value = rutHelpers.rutFormat(htmlInputElement.value) || '';\r\n }\r\n\r\n public onChange(ev: Event) {\r\n let htmlInputElement: HTMLInputElement = <HTMLInputElement> ev.target;\r\n this.rutChange.emit(rutHelpers.rutClean(htmlInputElement.value));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { rutFormat } from '../helpers/rut-helpers';\r\n\r\n@Pipe({\r\n name: 'rut',\r\n standalone: true\r\n})\r\nexport class RutPipe implements PipeTransform {\r\n public transform(value: string): string {\r\n return rutFormat(value);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-rut-v2\r\n */\r\n\r\nexport * from './lib/helpers/rut-helpers';\r\nexport * from './lib/directives/rut-validator.directive';\r\nexport * from './lib/directives/rut-value-accessor.directive';\r\nexport * from './lib/directives/rut.directive';\r\nexport * from './lib/pipes/rut.pipe';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["rutHelpers.rutClean","rutHelpers.rutFormat"],"mappings":";;;;AAAM,SAAU,QAAQ,CAAC,KAAa,EAAA;AACpC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,YAAY,EAAE,EAAE;AACxB,aAAA,OAAO,CAAC,KAAK,EAAE,EAAE;AACjB,aAAA,WAAW,EAAE;;AAElB,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,WAAW,CAAC,KAAa,EAAA;AACvC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;;AAGd,IAAA,MAAM,GAAG,GAAW,QAAQ,CAAC,KAAK,CAAC;AACnC,IAAA,IAAI,SAAS,GAAW,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACtD,IAAI,CAAC,GAAW,CAAC;IACjB,IAAI,CAAC,GAAW,CAAC;AAEjB,IAAA,OAAO,SAAS,GAAG,CAAC,EAAE;AACpB,QAAA,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;QAC7C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;;IAExC,MAAM,UAAU,GAAW,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG;IAE1D,QAAQ,UAAU,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC;AAEM,SAAU,SAAS,CAAC,KAAa,EAAA;AACrC,IAAA,MAAM,GAAG,GAAW,QAAQ,CAAC,KAAK,CAAC;AAEnC,IAAA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;AACnB,QAAA,OAAO,GAAG;;IAGZ,IAAI,MAAM,GAAW,CAAA,EAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAE;AACzE,IAAA,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9C,QAAA,MAAM,GAAG,CAAG,EAAA,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAI,CAAA,EAAA,MAAM,EAAE;;AAG/C,IAAA,OAAO,MAAM;AACf;;ACrCM,SAAU,kBAAkB,CAAC,WAAqB,EAAA;IACtD,OAAO,CAAC,CAAqB,KAAI;AAC/B,QAAA,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;AAC3D,KAAC;AACH;SAEgB,oBAAoB,GAAA;IAClC,OAAO,CAAC,OAAwB,KAA6B;AAE3D,QAAA,IAAG,CAAC,OAAO,CAAC,KAAK,EAAE;AACjB,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;AACjE,KAAC;AACH;MAUa,YAAY,CAAA;AAEf,IAAA,SAAS;AAEjB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC;;AAG3C,IAAA,QAAQ,CAAC,CAAqB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;uGATf,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EALZ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACrF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAGU,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mDAAmD;AAC7D,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACrF,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACzBD,MAAM,kBAAkB,GAAQ;AAC9B,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,IAAA,KAAK,EAAE,IAAI;CACZ;MAWY,gBAAgB,CAAA;AAEjB,IAAA,QAAA;AACA,IAAA,UAAA;IAFV,WACU,CAAA,QAAmB,EACnB,UAAsB,EAAA;QADtB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;;AAGb,IAAA,QAAQ,GAAQ,CAAC,CAAM,KAAI,GAAc;AACzC,IAAA,SAAS,GAAQ,MAAK,GAAc;AAEpC,IAAA,UAAU,CAAC,KAAU,EAAA;QAC1B,IAAI,eAAe,GAAW,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC;;IAG7E,gBAAgB,CAAC,EAAoB,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IAClE,iBAAiB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;uGAf1D,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAFhB,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEpB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,QAAQ,EAAE,mBAAmB;AAC9B,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAChC,iBAAA;;;MCRY,YAAY,CAAA;AACN,IAAA,SAAS;AAE1B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,EAAE;;AAG9B,IAAA,OAAO,CAAC,EAAS,EAAA;AACtB,QAAA,IAAI,gBAAgB,GAAwC,EAAE,CAAC,MAAM;QACrE,gBAAgB,CAAC,KAAK,GAAGA,QAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAG/D,IAAA,MAAM,CAAC,EAAS,EAAA;AACrB,QAAA,IAAI,gBAAgB,GAAwC,EAAE,CAAC,MAAM;AACrE,QAAA,gBAAgB,CAAC,KAAK,GAAGC,SAAoB,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE;;AAGtE,IAAA,QAAQ,CAAC,EAAS,EAAA;AACvB,QAAA,IAAI,gBAAgB,GAAwC,EAAE,CAAC,MAAM;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAACD,QAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;;uGAnBvD,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,QAAQ,EAAE,gBAAgB;AAC1B,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;wDAEkB,SAAS,EAAA,CAAA;sBAAzB;;;MCNU,OAAO,CAAA;AACX,IAAA,SAAS,CAAC,KAAa,EAAA;AAC5B,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC;;uGAFd,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACND;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-rut-v2.mjs","sources":["../../../projects/ngx-rut-v2/src/lib/helpers/rut-helpers.ts","../../../projects/ngx-rut-v2/src/lib/directives/rut-validator.directive.ts","../../../projects/ngx-rut-v2/src/lib/directives/rut-value-accessor.directive.ts","../../../projects/ngx-rut-v2/src/lib/directives/rut.directive.ts","../../../projects/ngx-rut-v2/src/lib/pipes/rut.pipe.ts","../../../projects/ngx-rut-v2/src/public-api.ts","../../../projects/ngx-rut-v2/src/ngx-rut-v2.ts"],"sourcesContent":["/**\r\n *\r\n * @param value The RUT string to clean.\r\n * @description Cleans a RUT (Rol Único Tributario) string by removing non-numeric characters and leading zeros.\r\n * Converts the RUT to uppercase and returns it.\r\n * @returns The cleaned RUT string.\r\n */\r\nexport function rutClean(value: string): string {\r\n if (typeof value === 'string') {\r\n return value\r\n .replace(/[^0-9kK]+/g, '')\r\n .replace(/^0+/, '')\r\n .toUpperCase();\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * @param value The RUT string to validate.\r\n * @description Validates a RUT (Rol Único Tributario) string.\r\n * @returns True if the RUT is valid, false otherwise.\r\n */\r\nexport function rutValidate(value: string): boolean {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n\r\n const rut: string = rutClean(value);\r\n if (rut.length < 2) {\r\n return false;\r\n }\r\n\r\n const body: string = rut.slice(0, -1);\r\n const dv: string = rut.slice(-1).toUpperCase();\r\n\r\n let sum = 0;\r\n let multiplier = 2;\r\n\r\n for (let i = body.length - 1; i >= 0; i--) {\r\n sum += parseInt(body.charAt(i), 10) * multiplier;\r\n multiplier = multiplier === 7 ? 2 : multiplier + 1;\r\n }\r\n\r\n const expectedDv = 11 - (sum % 11);\r\n let expectedDvStr = '';\r\n\r\n if (expectedDv === 11) {\r\n expectedDvStr = '0';\r\n } else if (expectedDv === 10) {\r\n expectedDvStr = 'K';\r\n } else {\r\n expectedDvStr = expectedDv.toString();\r\n }\r\n\r\n return dv === expectedDvStr;\r\n}\r\n\r\n/**\r\n * Formats a RUT (Rol Único Tributario) string.\r\n * @param value The RUT string to format.\r\n * @returns The formatted RUT string.\r\n */\r\nexport function rutFormat(value: string): string {\r\n const rut: string = rutClean(value);\r\n\r\n if (rut.length <= 1) {\r\n return rut;\r\n }\r\n\r\n let result: string = `${rut.slice(-4, -1)}-${rut.slice(-1)}`;\r\n for (let i: number = 4; i < rut.length; i += 3) {\r\n result = `${rut.slice(-3 - i, -i)}.${result}`;\r\n }\r\n\r\n return result;\r\n}\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';\r\nimport { rutValidate } from '../helpers/rut-helpers';\r\n\r\n// Single reusable ValidatorFn\r\nexport const rutValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value) {\r\n return null;\r\n }\r\n return rutValidate(value) ? null : { invalidRut: true };\r\n};\r\n\r\n@Directive({\r\n selector: '[validateRut][ngModel],[validateRut][formControl]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => RutValidator), multi: true },\r\n ],\r\n standalone: true\r\n})\r\nexport class RutValidator implements Validator {\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return rutValidator(control);\r\n }\r\n}\r\n","\r\nimport { Directive, forwardRef, ElementRef, Renderer2, HostListener } from '@angular/core';\r\nimport { rutFormat, rutClean } from '../helpers/rut-helpers';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nconst RUT_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RutValueAccessor),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: 'input[formatRut]',\r\n standalone: true,\r\n providers: [RUT_VALUE_ACCESSOR],\r\n})\r\nexport class RutValueAccessor implements ControlValueAccessor {\r\n private onChange: (value: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor(\r\n private readonly renderer: Renderer2,\r\n private readonly elementRef: ElementRef,\r\n ) {}\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n onInput(value: string) {\r\n this.onChange(rutClean(value));\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n const value = this.elementRef.nativeElement.value;\r\n const formatted = rutFormat(value);\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: any): void {\r\n const formatted = rutFormat(value) || '';\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted);\r\n }\r\n\r\n registerOnChange(fn: (_: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\nimport { rutClean, rutFormat } from '../helpers/rut-helpers';\r\n\r\n@Directive({\r\n selector: '[formatRut]',\r\n standalone: true\r\n})\r\nexport class RutDirective {\r\n @HostListener('focus', ['$event.target'])\r\n onFocus(input: HTMLInputElement) {\r\n input.value = rutClean(input.value);\r\n }\r\n\r\n @HostListener('blur', ['$event.target'])\r\n onBlur(input: HTMLInputElement) {\r\n input.value = rutFormat(input.value) || '';\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { rutFormat } from '../helpers/rut-helpers';\r\n\r\n@Pipe({\r\n name: 'rut',\r\n standalone: true\r\n})\r\nexport class RutPipe implements PipeTransform {\r\n public transform(value: string): string {\r\n return rutFormat(value);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-rut-v2\r\n */\r\n\r\nexport * from './lib/helpers/rut-helpers';\r\nexport * from './lib/directives/rut-validator.directive';\r\nexport * from './lib/directives/rut-value-accessor.directive';\r\nexport * from './lib/directives/rut.directive';\r\nexport * from './lib/pipes/rut.pipe';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare
|
|
4
|
-
invalidRut: boolean;
|
|
5
|
-
} | null;
|
|
6
|
-
export declare function RutValidatorReactive(): ValidatorFn;
|
|
3
|
+
export declare const rutValidator: ValidatorFn;
|
|
7
4
|
export declare class RutValidator implements Validator {
|
|
8
|
-
|
|
9
|
-
constructor();
|
|
10
|
-
validate(c: UntypedFormControl): any;
|
|
5
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
11
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<RutValidator, never>;
|
|
12
7
|
static ɵdir: i0.ɵɵDirectiveDeclaration<RutValidator, "[validateRut][ngModel],[validateRut][formControl]", never, {}, {}, never, never, true, never>;
|
|
13
8
|
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { ControlValueAccessor } from '@angular/forms';
|
|
2
1
|
import { ElementRef, Renderer2 } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class RutValueAccessor implements ControlValueAccessor {
|
|
5
|
-
private renderer;
|
|
6
|
-
private elementRef;
|
|
5
|
+
private readonly renderer;
|
|
6
|
+
private readonly elementRef;
|
|
7
|
+
private onChange;
|
|
8
|
+
private onTouched;
|
|
7
9
|
constructor(renderer: Renderer2, elementRef: ElementRef);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
onInput(value: string): void;
|
|
11
|
+
onBlur(): void;
|
|
10
12
|
writeValue(value: any): void;
|
|
11
13
|
registerOnChange(fn: (_: any) => void): void;
|
|
12
14
|
registerOnTouched(fn: () => void): void;
|
|
15
|
+
setDisabledState(isDisabled: boolean): void;
|
|
13
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<RutValueAccessor, never>;
|
|
14
17
|
static ɵdir: i0.ɵɵDirectiveDeclaration<RutValueAccessor, "input[formatRut]", never, {}, {}, never, never, true, never>;
|
|
15
18
|
}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
2
1
|
import * as i0 from "@angular/core";
|
|
3
2
|
export declare class RutDirective {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
onFocus(ev: Event): void;
|
|
7
|
-
onBlur(ev: Event): void;
|
|
8
|
-
onChange(ev: Event): void;
|
|
3
|
+
onFocus(input: HTMLInputElement): void;
|
|
4
|
+
onBlur(input: HTMLInputElement): void;
|
|
9
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<RutDirective, never>;
|
|
10
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RutDirective, "[formatRut]", never, {}, {
|
|
6
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RutDirective, "[formatRut]", never, {}, {}, never, never, true, never>;
|
|
11
7
|
}
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param value The RUT string to clean.
|
|
4
|
+
* @description Cleans a RUT (Rol Único Tributario) string by removing non-numeric characters and leading zeros.
|
|
5
|
+
* Converts the RUT to uppercase and returns it.
|
|
6
|
+
* @returns The cleaned RUT string.
|
|
7
|
+
*/
|
|
1
8
|
export declare function rutClean(value: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* @param value The RUT string to validate.
|
|
11
|
+
* @description Validates a RUT (Rol Único Tributario) string.
|
|
12
|
+
* @returns True if the RUT is valid, false otherwise.
|
|
13
|
+
*/
|
|
2
14
|
export declare function rutValidate(value: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Formats a RUT (Rol Único Tributario) string.
|
|
17
|
+
* @param value The RUT string to format.
|
|
18
|
+
* @returns The formatted RUT string.
|
|
19
|
+
*/
|
|
3
20
|
export declare function rutFormat(value: string): string;
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-rut-v2",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/danieldiazastudillo/ngx-rut-v2"
|
|
8
8
|
},
|
|
9
9
|
"peerDependencies": {
|
|
10
|
-
"@angular/common": "^19.
|
|
11
|
-
"@angular/core": "^19.
|
|
10
|
+
"@angular/common": "^19.2.14",
|
|
11
|
+
"@angular/core": "^19.2.14"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"tslib": "^2.
|
|
14
|
+
"tslib": "^2.8.1"
|
|
15
15
|
},
|
|
16
16
|
"sideEffects": false,
|
|
17
17
|
"module": "fesm2022/ngx-rut-v2.mjs",
|