@onemrvapublic/design-system 16.2.39 → 16.2.42
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,51 +1,75 @@
|
|
|
1
1
|
export class OnemrvaValidators {
|
|
2
|
+
static bceValidator(required = false, control) {
|
|
3
|
+
if (control.value === null || control.value.trim() === '') {
|
|
4
|
+
return !required ? null : { bceNull: true };
|
|
5
|
+
}
|
|
6
|
+
let bceCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
7
|
+
if (bceCandidate.length !== 10)
|
|
8
|
+
return { bceLengthError: { value: bceCandidate } };
|
|
9
|
+
if (Number.isNaN(+bceCandidate))
|
|
10
|
+
return { bceNan: { value: bceCandidate } };
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
2
13
|
static bce(required = false) {
|
|
3
14
|
return (control) => {
|
|
4
|
-
|
|
5
|
-
return !required ? null : { bceNull: true };
|
|
6
|
-
}
|
|
7
|
-
let bceCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
8
|
-
if (bceCandidate.length !== 10)
|
|
9
|
-
return { bceLengthError: { value: bceCandidate } };
|
|
10
|
-
if (Number.isNaN(+bceCandidate))
|
|
11
|
-
return { bceNan: { value: bceCandidate } };
|
|
12
|
-
return null;
|
|
15
|
+
return this.bceValidator(required, control);
|
|
13
16
|
};
|
|
14
17
|
}
|
|
18
|
+
static nissValidator(required = false, control) {
|
|
19
|
+
if (control.value === null || control.value.trim() === '') {
|
|
20
|
+
return !required ? null : { nissNull: true };
|
|
21
|
+
}
|
|
22
|
+
let nissCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
23
|
+
if (nissCandidate.length !== 11) {
|
|
24
|
+
return { nissLengthError: { value: nissCandidate } };
|
|
25
|
+
}
|
|
26
|
+
if (Number.isNaN(+nissCandidate)) {
|
|
27
|
+
return { nissNan: { value: nissCandidate } };
|
|
28
|
+
}
|
|
29
|
+
// Niss day and year are actual values, the month can be different according to the logic below
|
|
30
|
+
// [20-32] & [40-52] => foreigners & temporary NISS values
|
|
31
|
+
// it is not necessary to check for the actual date to be valid
|
|
32
|
+
const checksumValue = nissCandidate.substring(9);
|
|
33
|
+
const nissNumbersToCheck = nissCandidate.substring(0, 9);
|
|
34
|
+
const isValidChecksumYear1900 = 97 - (+nissNumbersToCheck % 97) === +checksumValue;
|
|
35
|
+
const isValidChecksumYear2000 = 97 - (+`2${nissNumbersToCheck}` % 97) === +checksumValue;
|
|
36
|
+
if (!isValidChecksumYear1900 && !isValidChecksumYear2000) {
|
|
37
|
+
return { nissCheckDigitError: { value: nissCandidate } };
|
|
38
|
+
}
|
|
39
|
+
/*
|
|
40
|
+
Below checks aren't really necessary but are here to exclude even more potential errors
|
|
41
|
+
We could still improve this to include february days & 30 day months + the real potential ranges
|
|
42
|
+
*/
|
|
43
|
+
const monthString = nissCandidate.substring(2, 4);
|
|
44
|
+
const month = parseInt(monthString) - 1;
|
|
45
|
+
const real_month = (parseInt(monthString) % 20) - 1;
|
|
46
|
+
if (real_month > 11 || month > 51) {
|
|
47
|
+
return { nissInvalidMonth: { value: nissCandidate } };
|
|
48
|
+
}
|
|
49
|
+
const day = +nissCandidate.substring(4, 6);
|
|
50
|
+
if (day > 31) {
|
|
51
|
+
return { nissInvalidDate: { value: nissCandidate } };
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
15
55
|
static niss(required = false) {
|
|
56
|
+
return (control) => {
|
|
57
|
+
return this.nissValidator(required, control);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
static nissOrBce(required = false) {
|
|
16
61
|
return (control) => {
|
|
17
62
|
if (control.value === null || control.value.trim() === '')
|
|
18
63
|
return !required ? null : { nissNull: true };
|
|
19
64
|
let nissCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
20
|
-
if (
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const currentYear = new Date().getFullYear() - 2000;
|
|
28
|
-
let year = +nissCandidate.substring(0, 2);
|
|
29
|
-
year = year > currentYear ? 1900 + year : 2000 + year;
|
|
30
|
-
// Check month
|
|
31
|
-
if (real_month > 11 || month > 51)
|
|
32
|
-
return { nissInvalidMonth: { value: nissCandidate } };
|
|
33
|
-
// Check date
|
|
34
|
-
if (date > 31)
|
|
35
|
-
return { nissInvalidDate: { value: nissCandidate } };
|
|
36
|
-
// Check date consistency
|
|
37
|
-
const d = new Date(year, real_month, date);
|
|
38
|
-
if (d.getDate() !== date || d.getMonth() !== real_month)
|
|
39
|
-
// This catches errors such as 32 Jan, which becomes 1 Feb inside the date object
|
|
40
|
-
return { nissInconsistentDate: { value: nissCandidate } };
|
|
41
|
-
// Check digit
|
|
42
|
-
let nissStart = year < 2000
|
|
43
|
-
? +nissCandidate.substring(0, 9)
|
|
44
|
-
: +('2' + nissCandidate.substring(0, 9));
|
|
45
|
-
if (97 - (nissStart % 97) !== +nissCandidate.substring(9))
|
|
46
|
-
return { nissCheckDigitError: { value: nissCandidate } };
|
|
47
|
-
return null;
|
|
65
|
+
if (control.value.length === 11) {
|
|
66
|
+
return this.nissValidator(required, control);
|
|
67
|
+
}
|
|
68
|
+
else if (control.value.length === 10) {
|
|
69
|
+
return this.bceValidator(required, control);
|
|
70
|
+
}
|
|
71
|
+
return { lengthError: { value: nissCandidate } };
|
|
48
72
|
};
|
|
49
73
|
}
|
|
50
74
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS12YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL3NoYXJlZC9zcmMvbGliL3ZhbGlkYXRvcnMvb25lbXJ2YS12YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxpQkFBaUI7SUFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxFQUFFLE9BQXdCO1FBQ3BFLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDekQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUM3QztRQUVELElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssRUFBRTtZQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUM7UUFFckQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBRTVFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUs7UUFDekIsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDM0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMs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QU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtnQkFDdkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUUvQyxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFbEUsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDOUM7aUJBQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDN0M7WUFDRCxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUM7UUFDbkQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjbGFzcyBPbmVtcnZhVmFsaWRhdG9ycyB7XG4gIHByaXZhdGUgc3RhdGljIGJjZVZhbGlkYXRvcihyZXF1aXJlZCA9IGZhbHNlLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gbnVsbCB8fCBjb250cm9sLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybiAhcmVxdWlyZWQgPyBudWxsIDogeyBiY2VOdWxsOiB0cnVlIH07XG4gICAgfVxuXG4gICAgbGV0IGJjZUNhbmRpZGF0ZSA9IGNvbnRyb2wudmFsdWUudHJpbSgpLnJlcGxhY2UoL1xcL3xcXC58XFwtL2csICcnKTtcblxuICAgIGlmIChiY2VDYW5kaWRhdGUubGVuZ3RoICE9PSAxMClcbiAgICAgIHJldHVybiB7IGJjZUxlbmd0aEVycm9yOiB7IHZhbHVlOiBiY2VDYW5kaWRhdGUgfSB9O1xuXG4gICAgaWYgKE51bWJlci5pc05hTigrYmNlQ2FuZGlkYXRlKSkgcmV0dXJuIHsgYmNlTmFuOiB7IHZhbHVlOiBiY2VDYW5kaWRhdGUgfSB9O1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgYmNlKHJlcXVpcmVkID0gZmFsc2UpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5iY2VWYWxpZGF0b3IocmVxdWlyZWQsIGNvbnRyb2wpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBuaXNzVmFsaWRhdG9yKHJlcXVpcmVkID0gZmFsc2UsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmIChjb250cm9sLnZhbHVlID09PSBudWxsIHx8IGNvbnRyb2wudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgcmV0dXJuICFyZXF1aXJlZCA/IG51bGwgOiB7IG5pc3NOdWxsOiB0cnVlIH07XG4gICAgfVxuXG4gICAgbGV0IG5pc3NDYW5kaWRhdGUgPSBjb250cm9sLnZhbHVlLnRyaW0oKS5yZXBsYWNlKC9cXC98XFwufFxcLS9nLCAnJyk7XG5cbiAgICBpZiAobmlzc0NhbmRpZGF0ZS5sZW5ndGggIT09IDExKSB7XG4gICAgICByZXR1cm4geyBuaXNzTGVuZ3RoRXJyb3I6IHsgdmFsdWU6IG5pc3NDYW5kaWRhdGUgfSB9O1xuICAgIH1cblxuICAgIGlmIChOdW1iZXIuaXNOYU4oK25pc3NDYW5kaWRhdGUpKSB7XG4gICAgICByZXR1cm4geyBuaXNzTmFuOiB7IHZhbHVlOiBuaXNzQ2FuZGlkYXRlIH0gfTtcbiAgICB9XG5cbiAgICAvLyBOaXNzIGRheSBhbmQgeWVhciBhcmUgYWN0dWFsIHZhbHVlcywgdGhlIG1vbnRoIGNhbiBiZSBkaWZmZXJlbnQgYWNjb3JkaW5nIHRvIHRoZSBsb2dpYyBiZWxvd1xuICAgIC8vIFsyMC0zMl0gJiBbNDAtNTJdID0+IGZvcmVpZ25lcnMgJiB0ZW1wb3JhcnkgTklTUyB2YWx1ZXNcbiAgICAvLyBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNoZWNrIGZvciB0aGUgYWN0dWFsIGRhdGUgdG8gYmUgdmFsaWRcblxuICAgIGNvbnN0IGNoZWNrc3VtVmFsdWUgPSBuaXNzQ2FuZGlkYXRlLnN1YnN0cmluZyg5KTtcbiAgICBjb25zdCBuaXNzTnVtYmVyc1RvQ2hlY2sgPSBuaXNzQ2FuZGlkYXRlLnN1YnN0cmluZygwLCA5KTtcbiAgICBjb25zdCBpc1ZhbGlkQ2hlY2tzdW1ZZWFyMTkwMCA9XG4gICAgICA5NyAtICgrbmlzc051bWJlcnNUb0NoZWNrICUgOTcpID09PSArY2hlY2tzdW1WYWx1ZTtcbiAgICBjb25zdCBpc1ZhbGlkQ2hlY2tzdW1ZZWFyMjAwMCA9XG4gICAgICA5NyAtICgrYDIke25pc3NOdW1iZXJzVG9DaGVja31gICUgOTcpID09PSArY2hlY2tzdW1WYWx1ZTtcblxuICAgIGlmICghaXNWYWxpZENoZWNrc3VtWWVhcjE5MDAgJiYgIWlzVmFsaWRDaGVja3N1bVllYXIyMDAwKSB7XG4gICAgICByZXR1cm4geyBuaXNzQ2hlY2tEaWdpdEVycm9yOiB7IHZhbHVlOiBuaXNzQ2FuZGlkYXRlIH0gfTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAgQmVsb3cgY2hlY2tzIGFyZW4ndCByZWFsbHkgbmVjZXNzYXJ5IGJ1dCBhcmUgaGVyZSB0byBleGNsdWRlIGV2ZW4gbW9yZSBwb3RlbnRpYWwgZXJyb3JzXG4gICAgICBXZSBjb3VsZCBzdGlsbCBpbXByb3ZlIHRoaXMgdG8gaW5jbHVkZSBmZWJydWFyeSBkYXlzICYgMzAgZGF5IG1vbnRocyArIHRoZSByZWFsIHBvdGVudGlhbCByYW5nZXNcbiAgICAqL1xuICAgIGNvbnN0IG1vbnRoU3RyaW5nID0gbmlzc0NhbmRpZGF0ZS5zdWJzdHJpbmcoMiwgNCk7XG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludChtb250aFN0cmluZykgLSAxO1xuICAgIGNvbnN0IHJlYWxfbW9udGggPSAocGFyc2VJbnQobW9udGhTdHJpbmcpICUgMjApIC0gMTtcblxuICAgIGlmIChyZWFsX21vbnRoID4gMTEgfHwgbW9udGggPiA1MSkge1xuICAgICAgcmV0dXJuIHsgbmlzc0ludmFsaWRNb250aDogeyB2YWx1ZTogbmlzc0NhbmRpZGF0ZSB9IH07XG4gICAgfVxuXG4gICAgY29uc3QgZGF5ID0gK25pc3NDYW5kaWRhdGUuc3Vic3RyaW5nKDQsIDYpO1xuICAgIGlmIChkYXkgPiAzMSkge1xuICAgICAgcmV0dXJuIHsgbmlzc0ludmFsaWREYXRlOiB7IHZhbHVlOiBuaXNzQ2FuZGlkYXRlIH0gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBuaXNzKHJlcXVpcmVkID0gZmFsc2UpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5uaXNzVmFsaWRhdG9yKHJlcXVpcmVkLCBjb250cm9sKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIG5pc3NPckJjZShyZXF1aXJlZCA9IGZhbHNlKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgPT09IG51bGwgfHwgY29udHJvbC52YWx1ZS50cmltKCkgPT09ICcnKVxuICAgICAgICByZXR1cm4gIXJlcXVpcmVkID8gbnVsbCA6IHsgbmlzc051bGw6IHRydWUgfTtcblxuICAgICAgbGV0IG5pc3NDYW5kaWRhdGUgPSBjb250cm9sLnZhbHVlLnRyaW0oKS5yZXBsYWNlKC9cXC98XFwufFxcLS9nLCAnJyk7XG5cbiAgICAgIGlmIChjb250cm9sLnZhbHVlLmxlbmd0aCA9PT0gMTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmlzc1ZhbGlkYXRvcihyZXF1aXJlZCwgY29udHJvbCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoID09PSAxMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iY2VWYWxpZGF0b3IocmVxdWlyZWQsIGNvbnRyb2wpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbGVuZ3RoRXJyb3I6IHsgdmFsdWU6IG5pc3NDYW5kaWRhdGUgfSB9O1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -549,52 +549,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
549
549
|
}] });
|
|
550
550
|
|
|
551
551
|
class OnemrvaValidators {
|
|
552
|
+
static bceValidator(required = false, control) {
|
|
553
|
+
if (control.value === null || control.value.trim() === '') {
|
|
554
|
+
return !required ? null : { bceNull: true };
|
|
555
|
+
}
|
|
556
|
+
let bceCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
557
|
+
if (bceCandidate.length !== 10)
|
|
558
|
+
return { bceLengthError: { value: bceCandidate } };
|
|
559
|
+
if (Number.isNaN(+bceCandidate))
|
|
560
|
+
return { bceNan: { value: bceCandidate } };
|
|
561
|
+
return null;
|
|
562
|
+
}
|
|
552
563
|
static bce(required = false) {
|
|
553
564
|
return (control) => {
|
|
554
|
-
|
|
555
|
-
return !required ? null : { bceNull: true };
|
|
556
|
-
}
|
|
557
|
-
let bceCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
558
|
-
if (bceCandidate.length !== 10)
|
|
559
|
-
return { bceLengthError: { value: bceCandidate } };
|
|
560
|
-
if (Number.isNaN(+bceCandidate))
|
|
561
|
-
return { bceNan: { value: bceCandidate } };
|
|
562
|
-
return null;
|
|
565
|
+
return this.bceValidator(required, control);
|
|
563
566
|
};
|
|
564
567
|
}
|
|
568
|
+
static nissValidator(required = false, control) {
|
|
569
|
+
if (control.value === null || control.value.trim() === '') {
|
|
570
|
+
return !required ? null : { nissNull: true };
|
|
571
|
+
}
|
|
572
|
+
let nissCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
573
|
+
if (nissCandidate.length !== 11) {
|
|
574
|
+
return { nissLengthError: { value: nissCandidate } };
|
|
575
|
+
}
|
|
576
|
+
if (Number.isNaN(+nissCandidate)) {
|
|
577
|
+
return { nissNan: { value: nissCandidate } };
|
|
578
|
+
}
|
|
579
|
+
// Niss day and year are actual values, the month can be different according to the logic below
|
|
580
|
+
// [20-32] & [40-52] => foreigners & temporary NISS values
|
|
581
|
+
// it is not necessary to check for the actual date to be valid
|
|
582
|
+
const checksumValue = nissCandidate.substring(9);
|
|
583
|
+
const nissNumbersToCheck = nissCandidate.substring(0, 9);
|
|
584
|
+
const isValidChecksumYear1900 = 97 - (+nissNumbersToCheck % 97) === +checksumValue;
|
|
585
|
+
const isValidChecksumYear2000 = 97 - (+`2${nissNumbersToCheck}` % 97) === +checksumValue;
|
|
586
|
+
if (!isValidChecksumYear1900 && !isValidChecksumYear2000) {
|
|
587
|
+
return { nissCheckDigitError: { value: nissCandidate } };
|
|
588
|
+
}
|
|
589
|
+
/*
|
|
590
|
+
Below checks aren't really necessary but are here to exclude even more potential errors
|
|
591
|
+
We could still improve this to include february days & 30 day months + the real potential ranges
|
|
592
|
+
*/
|
|
593
|
+
const monthString = nissCandidate.substring(2, 4);
|
|
594
|
+
const month = parseInt(monthString) - 1;
|
|
595
|
+
const real_month = (parseInt(monthString) % 20) - 1;
|
|
596
|
+
if (real_month > 11 || month > 51) {
|
|
597
|
+
return { nissInvalidMonth: { value: nissCandidate } };
|
|
598
|
+
}
|
|
599
|
+
const day = +nissCandidate.substring(4, 6);
|
|
600
|
+
if (day > 31) {
|
|
601
|
+
return { nissInvalidDate: { value: nissCandidate } };
|
|
602
|
+
}
|
|
603
|
+
return null;
|
|
604
|
+
}
|
|
565
605
|
static niss(required = false) {
|
|
606
|
+
return (control) => {
|
|
607
|
+
return this.nissValidator(required, control);
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
static nissOrBce(required = false) {
|
|
566
611
|
return (control) => {
|
|
567
612
|
if (control.value === null || control.value.trim() === '')
|
|
568
613
|
return !required ? null : { nissNull: true };
|
|
569
614
|
let nissCandidate = control.value.trim().replace(/\/|\.|\-/g, '');
|
|
570
|
-
if (
|
|
571
|
-
return
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
const currentYear = new Date().getFullYear() - 2000;
|
|
578
|
-
let year = +nissCandidate.substring(0, 2);
|
|
579
|
-
year = year > currentYear ? 1900 + year : 2000 + year;
|
|
580
|
-
// Check month
|
|
581
|
-
if (real_month > 11 || month > 51)
|
|
582
|
-
return { nissInvalidMonth: { value: nissCandidate } };
|
|
583
|
-
// Check date
|
|
584
|
-
if (date > 31)
|
|
585
|
-
return { nissInvalidDate: { value: nissCandidate } };
|
|
586
|
-
// Check date consistency
|
|
587
|
-
const d = new Date(year, real_month, date);
|
|
588
|
-
if (d.getDate() !== date || d.getMonth() !== real_month)
|
|
589
|
-
// This catches errors such as 32 Jan, which becomes 1 Feb inside the date object
|
|
590
|
-
return { nissInconsistentDate: { value: nissCandidate } };
|
|
591
|
-
// Check digit
|
|
592
|
-
let nissStart = year < 2000
|
|
593
|
-
? +nissCandidate.substring(0, 9)
|
|
594
|
-
: +('2' + nissCandidate.substring(0, 9));
|
|
595
|
-
if (97 - (nissStart % 97) !== +nissCandidate.substring(9))
|
|
596
|
-
return { nissCheckDigitError: { value: nissCandidate } };
|
|
597
|
-
return null;
|
|
615
|
+
if (control.value.length === 11) {
|
|
616
|
+
return this.nissValidator(required, control);
|
|
617
|
+
}
|
|
618
|
+
else if (control.value.length === 10) {
|
|
619
|
+
return this.bceValidator(required, control);
|
|
620
|
+
}
|
|
621
|
+
return { lengthError: { value: nissCandidate } };
|
|
598
622
|
};
|
|
599
623
|
}
|
|
600
624
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onemrvapublic-design-system-shared.mjs","sources":["../../../../projects/onemrva/design-system/shared/src/lib/directives/digit-only.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/mat-row-clickable.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/if-width-is.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/color.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/mask.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/components/clipboard-icon/clipboard-icon.component.ts","../../../../projects/onemrva/design-system/shared/src/lib/components/clipboard-icon/clipboard-icon.component.html","../../../../projects/onemrva/design-system/shared/src/lib/directives/clipboard.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/index.ts","../../../../projects/onemrva/design-system/shared/src/lib/shared.module.ts","../../../../projects/onemrva/design-system/shared/src/lib/pipes/onemrva-bce.pipe.ts","../../../../projects/onemrva/design-system/shared/src/lib/pipes/onemrva-niss.pipe.ts","../../../../projects/onemrva/design-system/shared/src/lib/validators/onemrva-validators.ts","../../../../projects/onemrva/design-system/shared/index.ts","../../../../projects/onemrva/design-system/shared/onemrvapublic-design-system-shared.ts"],"sourcesContent":["import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[digitOnly]',\n})\nexport class DigitOnlyDirective {\n constructor() {}\n\n @HostListener('keydown', ['$event']) onKeyDown(event: any) {\n let e = <KeyboardEvent>event;\n\n const allowedKey = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n ',',\n ' ',\n 'Backspace',\n 'Delete',\n 'Tab',\n '-',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ];\n if (allowedKey.indexOf(e.key) >= 0) return;\n\n // HWKTODO manage ctrl Z and ctrl U\n const allowedCtrlShortcuts = ['a', 'c', 'x', 'v'];\n if (e.ctrlKey && allowedCtrlShortcuts.indexOf(e.key) >= 0) return;\n\n e.preventDefault();\n }\n}\n","import {Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output} from '@angular/core';\nimport {OnemrvaMatColor} from \"@onemrvapublic/design-system/utils\";\n\n@Directive({\n selector: '[mat-row-clickable]'\n})\nexport class MatRowClickableDirective {\n\n @Output('mat-row-clickable')\n matRowClickable: EventEmitter<any> = new EventEmitter<any>();\n\n @Input()\n color: OnemrvaMatColor = '';\n\n constructor(private el:ElementRef) {}\n\n @HostListener('click', ['$event'])\n click(event: any) {\n this.matRowClickable.emit();\n }\n\n @HostBinding('class.onemrva-clickable-row')\n public cssClass = true;\n\n ngOnInit() {\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-info')\n public get _isInfo(): boolean {\n return this.color === OnemrvaMatColor.INFO;\n }\n}\n","import { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Conditionally adds component to the tree if screen width matches at least one size in input\n */\n@Directive({\n selector: '[ifWidthIs]',\n})\nexport class IfWidthIsDirective implements OnInit {\n @Input() ifWidthIs!: typeof Breakpoints[keyof typeof Breakpoints][];\n\n constructor(\n public breakpointObserver: BreakpointObserver,\n private _templateRef: TemplateRef<any>,\n private _viewContainer: ViewContainerRef\n ) {}\n\n ngOnInit() {\n this.breakpointObserver.observe([...this.ifWidthIs]).subscribe((state: BreakpointState) => {\n this._viewContainer.clear();\n if (state.matches) {\n this._viewContainer.createEmbeddedView(this._templateRef);\n }\n });\n }\n}\n","import {Directive, HostBinding, Input} from '@angular/core';\nimport {OnemrvaMatColor} from \"@onemrvapublic/design-system/utils\";\n\n/**\n * Conditionally adds component to the tree if screen width matches at least one size in input\n */\n@Directive({\n selector: 'mat-card[color],mat-chip[color]',\n})\nexport class OnemRvaColorDirective {\n\n constructor() {}\n\n @Input()\n color: OnemrvaMatColor = '';\n\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-info')\n public get _isInfo(): boolean {\n return this.color === OnemrvaMatColor.INFO;\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\nconst UNDO_STACK_MAX_LENGTH = 50;\n\n/**\n * 0: digits\n * A: letters (uppercase or lowercase) and digits\n * S: only letters (uppercase or lowercase)\n * U: only letters uppercase\n * L: only letters lowercase\n */\n\n@Directive({\n selector: '[onemrvamask]',\n})\nexport class OnemrvaMaskDirective {\n @Input() onemrvamask!: string;\n\n private inputStack: string[] = ['']; // Stack for undo/redo\n private stackIdx: number = 0; // Current index in undo/redo stack\n\n markForDelete = false;\n\n @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n // Allow functional keystrokes\n let e = <KeyboardEvent>event;\n\n let specialKeys = [\n 'Tab',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ];\n if (specialKeys.indexOf(e.key) >= 0) return;\n\n specialKeys = ['Backspace', 'Delete'];\n if (specialKeys.indexOf(e.key) >= 0) {\n this.markForDelete = true;\n return;\n }\n\n // Undo\n if (e.ctrlKey && 'z' === e.key && this.stackIdx > 0) {\n this.stackIdx--;\n this.el.nativeElement.value = this.inputStack[this.stackIdx];\n event.preventDefault();\n }\n\n // Redo\n if (\n e.ctrlKey &&\n 'u' === e.key &&\n this.stackIdx < this.inputStack.length - 1\n ) {\n this.stackIdx++;\n this.el.nativeElement.value = this.inputStack[this.stackIdx];\n event.preventDefault();\n }\n\n const allowedCtrlShortcuts = ['a', 'c', 'x', 'v'];\n if (e.ctrlKey && allowedCtrlShortcuts.indexOf(e.key) >= 0) return;\n }\n\n @HostListener('input', ['$event']) onInput(event: any) {\n let selectionStart = event.target?.selectionStart;\n\n /*\n * Step 1\n * This block lets a delete execution if the new value is compliant.\n * There are 2 deletion cases, after which the new value is not compliant\n * - dd/MX/yyyy: X is deleted, then the date becomes dd/M/yyyy\n * This case is resolved by step 2 and the date will become: dd/My/yyy\n * - dd/MMXyyyy: the last '/' is deleted, then the date becomes dd/MMyyyy\n * In this particular case, step 2 will automatically add the missing slash, so the date will remain dd/MM/yyyy\n * The issue is that the caret position will remain stuck where it was, so if the user keeps hitting the delete key, nothing will change at all. This is resolved in step 4 by moving the caret to the left\n */\n if (this.markForDelete) {\n const isCompliantAfterDeletion =\n [...this.el.nativeElement.value].findIndex((char, idx) => {\n let rule = this.onemrvamask[idx];\n\n if (rule === null || rule === undefined) return true;\n\n if (isNaN(char) && char.toLowerCase() === char.toUpperCase())\n return char !== rule;\n\n return !isAllowed(rule, char);\n }) < 0;\n\n if (isCompliantAfterDeletion) {\n this.markForDelete = false;\n return;\n }\n }\n\n // Step 2\n const compliantValue = [...this.el.nativeElement.value]\n .filter((char) => isAllowed('A', char)) // Necessary when several special char in a row\n .reduce((newValue, char) => {\n let idx = newValue.length;\n let rule = this.onemrvamask[idx];\n\n if (rule === null || rule === undefined) return newValue;\n\n newValue = !isAllowed(rule, char) ? newValue : newValue + char;\n\n // Add all trailing special characters\n let nextRule = this.onemrvamask[++idx];\n let i = 0;\n\n while (\n nextRule !== null &&\n nextRule !== undefined &&\n ['0', 'A', 'S', 'U', 'L'].indexOf(nextRule) < 0\n ) {\n i++;\n newValue += nextRule;\n nextRule = this.onemrvamask[++idx];\n\n if (i > 50) break;\n }\n\n return newValue;\n }, '');\n\n this.el.nativeElement.value = compliantValue;\n\n // Step 3 - Find the new cursor position. If the last new character is just before special character, move the caret after\n let idx = selectionStart;\n let nextRule = this.onemrvamask[idx];\n while (\n nextRule !== null &&\n nextRule !== undefined &&\n ['0', 'A', 'S', 'U', 'L'].indexOf(nextRule) < 0\n ) {\n idx++;\n nextRule = this.onemrvamask[idx];\n if (\n nextRule !== null &&\n nextRule &&\n ['0', 'A', 'S', 'U', 'L'].indexOf(nextRule) < 0\n ) {\n } else break;\n }\n\n // Step 4 - Update inputStack only when all characters are processed\n if (compliantValue !== this.inputStack[this.stackIdx]) {\n this.stackIdx++;\n\n let stack =\n this.stackIdx > UNDO_STACK_MAX_LENGTH - 1\n ? this.inputStack.slice(1)\n : this.inputStack.splice(0, this.stackIdx);\n this.stackIdx =\n this.stackIdx > UNDO_STACK_MAX_LENGTH - 1\n ? UNDO_STACK_MAX_LENGTH - 1\n : this.stackIdx;\n\n this.inputStack = [...stack, compliantValue];\n\n this.el.nativeElement.setSelectionRange(idx, idx);\n } else {\n if (this.markForDelete) {\n let i = idx - 1;\n /* Finds the last rule character before the special character.\n * e.g: (nnn)/nnnn\n * If the user tries to delete '/', the caret will move just before ')'\n */\n while (i > 0) {\n const previousRule = this.onemrvamask[i - 1];\n if (['0', 'A', 'S', 'U', 'L'].indexOf(previousRule) < 0) {\n i--;\n } else break;\n }\n this.el.nativeElement.setSelectionRange(i, i);\n }\n }\n this.markForDelete = false;\n }\n constructor(private el: ElementRef) {}\n}\n\nfunction isAllowed(rule: string, character: string) {\n switch (rule) {\n // Any digit\n case '0':\n if (character === ' ') return false;\n return !isNaN(+character);\n\n // A: letters (uppercase or lowercase) and digits\n case 'A':\n if (character === ' ') return false;\n return (\n !isNaN(+character) || character.toLowerCase() != character.toUpperCase()\n );\n\n // only letters (uppercase or lowercase)\n case 'S':\n return character.toLowerCase() != character.toUpperCase();\n\n // only uppercase letters\n case 'U':\n return (\n character.toLowerCase() != character.toUpperCase() &&\n character === character.toUpperCase()\n );\n\n // only lowercase letters\n case 'L':\n return (\n character.toLowerCase() != character.toUpperCase() &&\n character === character.toLowerCase()\n );\n }\n\n return false;\n}\n","import {Component, ElementRef, ViewChild} from '@angular/core';\nimport {MatIconModule} from \"@angular/material/icon\";\nimport {MatTooltipModule} from \"@angular/material/tooltip\";\nimport {Clipboard} from \"@angular/cdk/clipboard\";\n\n@Component({\n selector: 'lib-clipboard-icon',\n templateUrl: './clipboard-icon.component.html',\n styleUrls: ['./clipboard-icon.component.css'],\n standalone: true,\n imports: [\n MatIconModule,\n MatTooltipModule\n ]\n})\nexport class ClipboardIconComponent {\n constructor(\n public _elementRef : ElementRef,\n private clipboardService : Clipboard) {\n }\n\n}\n","<mat-icon [matTooltip]=\"'TEST'\">content_copy</mat-icon>\n","import {\n ChangeDetectorRef,\n ComponentFactoryResolver, ComponentRef,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n Renderer2,\n ViewContainerRef\n} from '@angular/core';\nimport {Clipboard} from \"@angular/cdk/clipboard\";\nimport {ClipboardIconComponent} from \"../components/clipboard-icon/clipboard-icon.component\";\n\n/**\n * Conditionally adds component to the tree if screen width matches at least one size in input\n */\n@Directive({\n selector: 'span[clipboard]',\n host: {\n // '[style.padding]': '\"pointer\"',\n },\n\n})\nexport class OnemRvaClipboardDirective implements OnInit{\n\n private icon: ComponentRef<ClipboardIconComponent>;\n private iconEl: any;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private factory: ComponentFactoryResolver,\n private vcRef: ViewContainerRef,\n private clipboardService : Clipboard) {\n\n const miFactory = this.factory.resolveComponentFactory(ClipboardIconComponent);\n this.icon = this.vcRef.createComponent(miFactory);\n this.iconEl = this.icon.injector.get(ClipboardIconComponent)._elementRef.nativeElement;\n\n }\n\n @HostBinding('class')\n class = \"\";\n\n @Input()\n clipboard: string = '';\n\n ngOnInit(): void {\n this.vcRef.clear();\n\n\n this.renderer.appendChild(this.elementRef.nativeElement, this.iconEl);\n }\n}\n","import { DigitOnlyDirective } from './digit-only.directive';\nimport { MatRowClickableDirective } from './mat-row-clickable.directive';\nimport { IfWidthIsDirective } from './if-width-is.directive';\nimport { OnemRvaColorDirective } from './color.directive';\nimport { OnemrvaMaskDirective } from './mask.directive';\nimport {OnemRvaClipboardDirective} from \"./clipboard.directive\";\n\nexport const directives: any[] = [\n DigitOnlyDirective,\n MatRowClickableDirective,\n OnemRvaClipboardDirective,\n IfWidthIsDirective,\n OnemRvaColorDirective,\n OnemrvaMaskDirective,\n];\n\nexport * from './digit-only.directive';\nexport * from './mat-row-clickable.directive';\nexport * from './if-width-is.directive';\nexport * from './color.directive';\nexport * from './mask.directive';\nexport * from './clipboard.directive';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { directives } from './directives';\n\n@NgModule({\n declarations: [...directives],\n imports: [CommonModule],\n exports: [...directives, CommonModule],\n})\nexport class OnemrvaSharedModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'onemrvaBce',\n standalone: true,\n})\nexport class OnemrvaBcePipe implements PipeTransform {\n transform(value: string): string {\n let strOut = value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (strOut.length !== 10) return '?01?.???.???';\n\n return `${strOut.substring(0, 4)}.${strOut.substring(\n 4,\n 7\n )}.${strOut.substring(7, 10)}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'onemrvaNiss',\n standalone: true,\n})\nexport class OnemrvaNissPipe implements PipeTransform {\n transform(value: string): string {\n let strOut = value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (strOut.length !== 11) return '??01??/???-??';\n\n return `${strOut.substring(0, 6)}/${strOut.substring(\n 6,\n 9\n )}-${strOut.substring(9, 11)}`;\n }\n}\n","import { ValidationErrors } from '@angular/forms';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport class OnemrvaValidators {\n static bce(required = false): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value === null || control.value.trim() === '') {\n return !required ? null : { bceNull: true };\n }\n\n let bceCandidate = control.value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (bceCandidate.length !== 10)\n return { bceLengthError: { value: bceCandidate } };\n\n if (Number.isNaN(+bceCandidate))\n return { bceNan: { value: bceCandidate } };\n\n return null;\n };\n }\n\n static niss(required = false): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value === null || control.value.trim() === '')\n return !required ? null : { nissNull: true };\n\n let nissCandidate = control.value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (nissCandidate.length !== 11)\n return { nissLengthError: { value: nissCandidate } };\n\n if (Number.isNaN(+nissCandidate))\n return { bceNan: { value: nissCandidate } };\n\n const date = +nissCandidate.substring(4, 6);\n const month = +nissCandidate.substring(2, 4) - 1;\n const real_month = month%20;\n const currentYear = new Date().getFullYear() - 2000;\n let year = +nissCandidate.substring(0, 2);\n year = year > currentYear ? 1900 + year : 2000 + year;\n\n // Check month\n if (real_month > 11 || month > 51 ) return { nissInvalidMonth: { value: nissCandidate } };\n\n // Check date\n if (date > 31) return { nissInvalidDate: { value: nissCandidate } };\n\n // Check date consistency\n const d = new Date(year, real_month, date);\n if (d.getDate() !== date || d.getMonth() !== real_month)\n // This catches errors such as 32 Jan, which becomes 1 Feb inside the date object\n return { nissInconsistentDate: { value: nissCandidate } };\n\n // Check digit\n let nissStart =\n year < 2000\n ? +nissCandidate.substring(0, 9)\n : +('2' + nissCandidate.substring(0, 9));\n\n if (97 - (nissStart % 97) !== +nissCandidate.substring(9))\n return { nissCheckDigitError: { value: nissCandidate } };\n\n return null;\n };\n }\n}\n","/*\n * Public API Surface of shared\n */\n\nexport * from './src/lib/directives';\nexport * from './src/lib/shared.module';\nexport * from './src/lib/pipes';\nexport * from './src/lib/validators/onemrva-validators';\n\nexport const NISS_MASK = '000000/000-00';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.DigitOnlyDirective","i2.MatRowClickableDirective","i3.OnemRvaClipboardDirective","i4.IfWidthIsDirective","i5.OnemRvaColorDirective","i6.OnemrvaMaskDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"onemrvapublic-design-system-shared.mjs","sources":["../../../../projects/onemrva/design-system/shared/src/lib/directives/digit-only.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/mat-row-clickable.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/if-width-is.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/color.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/mask.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/components/clipboard-icon/clipboard-icon.component.ts","../../../../projects/onemrva/design-system/shared/src/lib/components/clipboard-icon/clipboard-icon.component.html","../../../../projects/onemrva/design-system/shared/src/lib/directives/clipboard.directive.ts","../../../../projects/onemrva/design-system/shared/src/lib/directives/index.ts","../../../../projects/onemrva/design-system/shared/src/lib/shared.module.ts","../../../../projects/onemrva/design-system/shared/src/lib/pipes/onemrva-bce.pipe.ts","../../../../projects/onemrva/design-system/shared/src/lib/pipes/onemrva-niss.pipe.ts","../../../../projects/onemrva/design-system/shared/src/lib/validators/onemrva-validators.ts","../../../../projects/onemrva/design-system/shared/index.ts","../../../../projects/onemrva/design-system/shared/onemrvapublic-design-system-shared.ts"],"sourcesContent":["import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[digitOnly]',\n})\nexport class DigitOnlyDirective {\n constructor() {}\n\n @HostListener('keydown', ['$event']) onKeyDown(event: any) {\n let e = <KeyboardEvent>event;\n\n const allowedKey = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n ',',\n ' ',\n 'Backspace',\n 'Delete',\n 'Tab',\n '-',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ];\n if (allowedKey.indexOf(e.key) >= 0) return;\n\n // HWKTODO manage ctrl Z and ctrl U\n const allowedCtrlShortcuts = ['a', 'c', 'x', 'v'];\n if (e.ctrlKey && allowedCtrlShortcuts.indexOf(e.key) >= 0) return;\n\n e.preventDefault();\n }\n}\n","import {Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output} from '@angular/core';\nimport {OnemrvaMatColor} from \"@onemrvapublic/design-system/utils\";\n\n@Directive({\n selector: '[mat-row-clickable]'\n})\nexport class MatRowClickableDirective {\n\n @Output('mat-row-clickable')\n matRowClickable: EventEmitter<any> = new EventEmitter<any>();\n\n @Input()\n color: OnemrvaMatColor = '';\n\n constructor(private el:ElementRef) {}\n\n @HostListener('click', ['$event'])\n click(event: any) {\n this.matRowClickable.emit();\n }\n\n @HostBinding('class.onemrva-clickable-row')\n public cssClass = true;\n\n ngOnInit() {\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-info')\n public get _isInfo(): boolean {\n return this.color === OnemrvaMatColor.INFO;\n }\n}\n","import { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Conditionally adds component to the tree if screen width matches at least one size in input\n */\n@Directive({\n selector: '[ifWidthIs]',\n})\nexport class IfWidthIsDirective implements OnInit {\n @Input() ifWidthIs!: typeof Breakpoints[keyof typeof Breakpoints][];\n\n constructor(\n public breakpointObserver: BreakpointObserver,\n private _templateRef: TemplateRef<any>,\n private _viewContainer: ViewContainerRef\n ) {}\n\n ngOnInit() {\n this.breakpointObserver.observe([...this.ifWidthIs]).subscribe((state: BreakpointState) => {\n this._viewContainer.clear();\n if (state.matches) {\n this._viewContainer.createEmbeddedView(this._templateRef);\n }\n });\n }\n}\n","import {Directive, HostBinding, Input} from '@angular/core';\nimport {OnemrvaMatColor} from \"@onemrvapublic/design-system/utils\";\n\n/**\n * Conditionally adds component to the tree if screen width matches at least one size in input\n */\n@Directive({\n selector: 'mat-card[color],mat-chip[color]',\n})\nexport class OnemRvaColorDirective {\n\n constructor() {}\n\n @Input()\n color: OnemrvaMatColor = '';\n\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-info')\n public get _isInfo(): boolean {\n return this.color === OnemrvaMatColor.INFO;\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\nconst UNDO_STACK_MAX_LENGTH = 50;\n\n/**\n * 0: digits\n * A: letters (uppercase or lowercase) and digits\n * S: only letters (uppercase or lowercase)\n * U: only letters uppercase\n * L: only letters lowercase\n */\n\n@Directive({\n selector: '[onemrvamask]',\n})\nexport class OnemrvaMaskDirective {\n @Input() onemrvamask!: string;\n\n private inputStack: string[] = ['']; // Stack for undo/redo\n private stackIdx: number = 0; // Current index in undo/redo stack\n\n markForDelete = false;\n\n @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n // Allow functional keystrokes\n let e = <KeyboardEvent>event;\n\n let specialKeys = [\n 'Tab',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ];\n if (specialKeys.indexOf(e.key) >= 0) return;\n\n specialKeys = ['Backspace', 'Delete'];\n if (specialKeys.indexOf(e.key) >= 0) {\n this.markForDelete = true;\n return;\n }\n\n // Undo\n if (e.ctrlKey && 'z' === e.key && this.stackIdx > 0) {\n this.stackIdx--;\n this.el.nativeElement.value = this.inputStack[this.stackIdx];\n event.preventDefault();\n }\n\n // Redo\n if (\n e.ctrlKey &&\n 'u' === e.key &&\n this.stackIdx < this.inputStack.length - 1\n ) {\n this.stackIdx++;\n this.el.nativeElement.value = this.inputStack[this.stackIdx];\n event.preventDefault();\n }\n\n const allowedCtrlShortcuts = ['a', 'c', 'x', 'v'];\n if (e.ctrlKey && allowedCtrlShortcuts.indexOf(e.key) >= 0) return;\n }\n\n @HostListener('input', ['$event']) onInput(event: any) {\n let selectionStart = event.target?.selectionStart;\n\n /*\n * Step 1\n * This block lets a delete execution if the new value is compliant.\n * There are 2 deletion cases, after which the new value is not compliant\n * - dd/MX/yyyy: X is deleted, then the date becomes dd/M/yyyy\n * This case is resolved by step 2 and the date will become: dd/My/yyy\n * - dd/MMXyyyy: the last '/' is deleted, then the date becomes dd/MMyyyy\n * In this particular case, step 2 will automatically add the missing slash, so the date will remain dd/MM/yyyy\n * The issue is that the caret position will remain stuck where it was, so if the user keeps hitting the delete key, nothing will change at all. This is resolved in step 4 by moving the caret to the left\n */\n if (this.markForDelete) {\n const isCompliantAfterDeletion =\n [...this.el.nativeElement.value].findIndex((char, idx) => {\n let rule = this.onemrvamask[idx];\n\n if (rule === null || rule === undefined) return true;\n\n if (isNaN(char) && char.toLowerCase() === char.toUpperCase())\n return char !== rule;\n\n return !isAllowed(rule, char);\n }) < 0;\n\n if (isCompliantAfterDeletion) {\n this.markForDelete = false;\n return;\n }\n }\n\n // Step 2\n const compliantValue = [...this.el.nativeElement.value]\n .filter((char) => isAllowed('A', char)) // Necessary when several special char in a row\n .reduce((newValue, char) => {\n let idx = newValue.length;\n let rule = this.onemrvamask[idx];\n\n if (rule === null || rule === undefined) return newValue;\n\n newValue = !isAllowed(rule, char) ? newValue : newValue + char;\n\n // Add all trailing special characters\n let nextRule = this.onemrvamask[++idx];\n let i = 0;\n\n while (\n nextRule !== null &&\n nextRule !== undefined &&\n ['0', 'A', 'S', 'U', 'L'].indexOf(nextRule) < 0\n ) {\n i++;\n newValue += nextRule;\n nextRule = this.onemrvamask[++idx];\n\n if (i > 50) break;\n }\n\n return newValue;\n }, '');\n\n this.el.nativeElement.value = compliantValue;\n\n // Step 3 - Find the new cursor position. If the last new character is just before special character, move the caret after\n let idx = selectionStart;\n let nextRule = this.onemrvamask[idx];\n while (\n nextRule !== null &&\n nextRule !== undefined &&\n ['0', 'A', 'S', 'U', 'L'].indexOf(nextRule) < 0\n ) {\n idx++;\n nextRule = this.onemrvamask[idx];\n if (\n nextRule !== null &&\n nextRule &&\n ['0', 'A', 'S', 'U', 'L'].indexOf(nextRule) < 0\n ) {\n } else break;\n }\n\n // Step 4 - Update inputStack only when all characters are processed\n if (compliantValue !== this.inputStack[this.stackIdx]) {\n this.stackIdx++;\n\n let stack =\n this.stackIdx > UNDO_STACK_MAX_LENGTH - 1\n ? this.inputStack.slice(1)\n : this.inputStack.splice(0, this.stackIdx);\n this.stackIdx =\n this.stackIdx > UNDO_STACK_MAX_LENGTH - 1\n ? UNDO_STACK_MAX_LENGTH - 1\n : this.stackIdx;\n\n this.inputStack = [...stack, compliantValue];\n\n this.el.nativeElement.setSelectionRange(idx, idx);\n } else {\n if (this.markForDelete) {\n let i = idx - 1;\n /* Finds the last rule character before the special character.\n * e.g: (nnn)/nnnn\n * If the user tries to delete '/', the caret will move just before ')'\n */\n while (i > 0) {\n const previousRule = this.onemrvamask[i - 1];\n if (['0', 'A', 'S', 'U', 'L'].indexOf(previousRule) < 0) {\n i--;\n } else break;\n }\n this.el.nativeElement.setSelectionRange(i, i);\n }\n }\n this.markForDelete = false;\n }\n constructor(private el: ElementRef) {}\n}\n\nfunction isAllowed(rule: string, character: string) {\n switch (rule) {\n // Any digit\n case '0':\n if (character === ' ') return false;\n return !isNaN(+character);\n\n // A: letters (uppercase or lowercase) and digits\n case 'A':\n if (character === ' ') return false;\n return (\n !isNaN(+character) || character.toLowerCase() != character.toUpperCase()\n );\n\n // only letters (uppercase or lowercase)\n case 'S':\n return character.toLowerCase() != character.toUpperCase();\n\n // only uppercase letters\n case 'U':\n return (\n character.toLowerCase() != character.toUpperCase() &&\n character === character.toUpperCase()\n );\n\n // only lowercase letters\n case 'L':\n return (\n character.toLowerCase() != character.toUpperCase() &&\n character === character.toLowerCase()\n );\n }\n\n return false;\n}\n","import {Component, ElementRef, ViewChild} from '@angular/core';\nimport {MatIconModule} from \"@angular/material/icon\";\nimport {MatTooltipModule} from \"@angular/material/tooltip\";\nimport {Clipboard} from \"@angular/cdk/clipboard\";\n\n@Component({\n selector: 'lib-clipboard-icon',\n templateUrl: './clipboard-icon.component.html',\n styleUrls: ['./clipboard-icon.component.css'],\n standalone: true,\n imports: [\n MatIconModule,\n MatTooltipModule\n ]\n})\nexport class ClipboardIconComponent {\n constructor(\n public _elementRef : ElementRef,\n private clipboardService : Clipboard) {\n }\n\n}\n","<mat-icon [matTooltip]=\"'TEST'\">content_copy</mat-icon>\n","import {\n ChangeDetectorRef,\n ComponentFactoryResolver, ComponentRef,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n Renderer2,\n ViewContainerRef\n} from '@angular/core';\nimport {Clipboard} from \"@angular/cdk/clipboard\";\nimport {ClipboardIconComponent} from \"../components/clipboard-icon/clipboard-icon.component\";\n\n/**\n * Conditionally adds component to the tree if screen width matches at least one size in input\n */\n@Directive({\n selector: 'span[clipboard]',\n host: {\n // '[style.padding]': '\"pointer\"',\n },\n\n})\nexport class OnemRvaClipboardDirective implements OnInit{\n\n private icon: ComponentRef<ClipboardIconComponent>;\n private iconEl: any;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private factory: ComponentFactoryResolver,\n private vcRef: ViewContainerRef,\n private clipboardService : Clipboard) {\n\n const miFactory = this.factory.resolveComponentFactory(ClipboardIconComponent);\n this.icon = this.vcRef.createComponent(miFactory);\n this.iconEl = this.icon.injector.get(ClipboardIconComponent)._elementRef.nativeElement;\n\n }\n\n @HostBinding('class')\n class = \"\";\n\n @Input()\n clipboard: string = '';\n\n ngOnInit(): void {\n this.vcRef.clear();\n\n\n this.renderer.appendChild(this.elementRef.nativeElement, this.iconEl);\n }\n}\n","import { DigitOnlyDirective } from './digit-only.directive';\nimport { MatRowClickableDirective } from './mat-row-clickable.directive';\nimport { IfWidthIsDirective } from './if-width-is.directive';\nimport { OnemRvaColorDirective } from './color.directive';\nimport { OnemrvaMaskDirective } from './mask.directive';\nimport {OnemRvaClipboardDirective} from \"./clipboard.directive\";\n\nexport const directives: any[] = [\n DigitOnlyDirective,\n MatRowClickableDirective,\n OnemRvaClipboardDirective,\n IfWidthIsDirective,\n OnemRvaColorDirective,\n OnemrvaMaskDirective,\n];\n\nexport * from './digit-only.directive';\nexport * from './mat-row-clickable.directive';\nexport * from './if-width-is.directive';\nexport * from './color.directive';\nexport * from './mask.directive';\nexport * from './clipboard.directive';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { directives } from './directives';\n\n@NgModule({\n declarations: [...directives],\n imports: [CommonModule],\n exports: [...directives, CommonModule],\n})\nexport class OnemrvaSharedModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'onemrvaBce',\n standalone: true,\n})\nexport class OnemrvaBcePipe implements PipeTransform {\n transform(value: string): string {\n let strOut = value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (strOut.length !== 10) return '?01?.???.???';\n\n return `${strOut.substring(0, 4)}.${strOut.substring(\n 4,\n 7\n )}.${strOut.substring(7, 10)}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'onemrvaNiss',\n standalone: true,\n})\nexport class OnemrvaNissPipe implements PipeTransform {\n transform(value: string): string {\n let strOut = value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (strOut.length !== 11) return '??01??/???-??';\n\n return `${strOut.substring(0, 6)}/${strOut.substring(\n 6,\n 9\n )}-${strOut.substring(9, 11)}`;\n }\n}\n","import { ValidationErrors } from '@angular/forms';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport class OnemrvaValidators {\n private static bceValidator(required = false, control: AbstractControl) {\n if (control.value === null || control.value.trim() === '') {\n return !required ? null : { bceNull: true };\n }\n\n let bceCandidate = control.value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (bceCandidate.length !== 10)\n return { bceLengthError: { value: bceCandidate } };\n\n if (Number.isNaN(+bceCandidate)) return { bceNan: { value: bceCandidate } };\n\n return null;\n }\n\n static bce(required = false): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n return this.bceValidator(required, control);\n };\n }\n\n private static nissValidator(required = false, control: AbstractControl) {\n if (control.value === null || control.value.trim() === '') {\n return !required ? null : { nissNull: true };\n }\n\n let nissCandidate = control.value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (nissCandidate.length !== 11) {\n return { nissLengthError: { value: nissCandidate } };\n }\n\n if (Number.isNaN(+nissCandidate)) {\n return { nissNan: { value: nissCandidate } };\n }\n\n // Niss day and year are actual values, the month can be different according to the logic below\n // [20-32] & [40-52] => foreigners & temporary NISS values\n // it is not necessary to check for the actual date to be valid\n\n const checksumValue = nissCandidate.substring(9);\n const nissNumbersToCheck = nissCandidate.substring(0, 9);\n const isValidChecksumYear1900 =\n 97 - (+nissNumbersToCheck % 97) === +checksumValue;\n const isValidChecksumYear2000 =\n 97 - (+`2${nissNumbersToCheck}` % 97) === +checksumValue;\n\n if (!isValidChecksumYear1900 && !isValidChecksumYear2000) {\n return { nissCheckDigitError: { value: nissCandidate } };\n }\n\n /*\n Below checks aren't really necessary but are here to exclude even more potential errors\n We could still improve this to include february days & 30 day months + the real potential ranges\n */\n const monthString = nissCandidate.substring(2, 4);\n const month = parseInt(monthString) - 1;\n const real_month = (parseInt(monthString) % 20) - 1;\n\n if (real_month > 11 || month > 51) {\n return { nissInvalidMonth: { value: nissCandidate } };\n }\n\n const day = +nissCandidate.substring(4, 6);\n if (day > 31) {\n return { nissInvalidDate: { value: nissCandidate } };\n }\n\n return null;\n }\n\n static niss(required = false): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n return this.nissValidator(required, control);\n };\n }\n\n static nissOrBce(required = false): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value === null || control.value.trim() === '')\n return !required ? null : { nissNull: true };\n\n let nissCandidate = control.value.trim().replace(/\\/|\\.|\\-/g, '');\n\n if (control.value.length === 11) {\n return this.nissValidator(required, control);\n } else if (control.value.length === 10) {\n return this.bceValidator(required, control);\n }\n return { lengthError: { value: nissCandidate } };\n };\n }\n}\n","/*\n * Public API Surface of shared\n */\n\nexport * from './src/lib/directives';\nexport * from './src/lib/shared.module';\nexport * from './src/lib/pipes';\nexport * from './src/lib/validators/onemrva-validators';\n\nexport const NISS_MASK = '000000/000-00';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.DigitOnlyDirective","i2.MatRowClickableDirective","i3.OnemRvaClipboardDirective","i4.IfWidthIsDirective","i5.OnemRvaColorDirective","i6.OnemrvaMaskDirective"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { ValidatorFn } from '@angular/forms';
|
|
2
2
|
export declare class OnemrvaValidators {
|
|
3
|
+
private static bceValidator;
|
|
3
4
|
static bce(required?: boolean): ValidatorFn;
|
|
5
|
+
private static nissValidator;
|
|
4
6
|
static niss(required?: boolean): ValidatorFn;
|
|
7
|
+
static nissOrBce(required?: boolean): ValidatorFn;
|
|
5
8
|
}
|