ms-data-grid 0.0.131 → 0.0.132

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.
@@ -0,0 +1,63 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ValidationsService {
4
+ constructor() { }
5
+ getValidator(column) {
6
+ if (!column?.validateFn)
7
+ return null;
8
+ if (column.__compiledValidateFn) {
9
+ return column.__compiledValidateFn;
10
+ }
11
+ if (typeof column.validateFn === 'function') {
12
+ column.__compiledValidateFn = column.validateFn;
13
+ return column.validateFn;
14
+ }
15
+ if (typeof column.validateFn === 'string') {
16
+ try {
17
+ const normalized = this.normalizeTsFn(column.validateFn);
18
+ const fn = new Function(`return ${normalized}`)();
19
+ if (typeof fn !== 'function')
20
+ return null;
21
+ column.__compiledValidateFn = fn;
22
+ return fn;
23
+ }
24
+ catch (err) {
25
+ console.error(`Invalid validator function for column "${column?.header}"`, err);
26
+ return null;
27
+ }
28
+ }
29
+ return null;
30
+ }
31
+ normalizeTsFn(fn) {
32
+ return fn
33
+ .replace(/:\s*[a-zA-Z0-9_<>\[\]\|]+/g, '')
34
+ .replace(/\)\s*:\s*[a-zA-Z0-9_<>\[\]\|]+\s*=>/g, ') =>')
35
+ .replace(/(interface|type)\s+\w+\s*{[^}]*}/g, '')
36
+ .trim();
37
+ }
38
+ findOriginalRow(dataset, rowId) {
39
+ for (const row of dataset) {
40
+ if (row.id === rowId || row._id === rowId)
41
+ return row;
42
+ if (row.children && row.children.length) {
43
+ const found = this.findOriginalRow(row.children, rowId);
44
+ if (found)
45
+ return found;
46
+ }
47
+ }
48
+ return null;
49
+ }
50
+ isValueValid(row, column, value) {
51
+ const fn = this.getValidator(column);
52
+ return fn ? fn(row, column, value) : true;
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
55
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationsService, providedIn: 'root' }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationsService, decorators: [{
58
+ type: Injectable,
59
+ args: [{
60
+ providedIn: 'root'
61
+ }]
62
+ }], ctorParameters: function () { return []; } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL3NlcnZpY2VzL3ZhbGlkYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixnQkFBZ0IsQ0FBQztJQUVsQixZQUFZLENBQ1QsTUFBVztRQUVYLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXJDLElBQUksTUFBTSxDQUFDLG9CQUFvQixFQUFFO1lBQy9CLE9BQU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDO1NBQ3BDO1FBRUQsSUFBSSxPQUFPLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1lBQzNDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2hELE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQztTQUMxQjtRQUVELElBQUksT0FBTyxNQUFNLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUN6QyxJQUFJO2dCQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUV6RCxNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFFbEQsSUFBSSxPQUFPLEVBQUUsS0FBSyxVQUFVO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUUxQyxNQUFNLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FDWCwwQ0FBMEMsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUMzRCxHQUFHLENBQ0osQ0FBQztnQkFDRixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxhQUFhLENBQUMsRUFBVTtRQUM5QixPQUFPLEVBQUU7YUFDTixPQUFPLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxDQUFDO2FBQ3pDLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxNQUFNLENBQUM7YUFDdkQsT0FBTyxDQUFDLG1DQUFtQyxFQUFFLEVBQUUsQ0FBQzthQUNoRCxJQUFJLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFHRCxlQUFlLENBQUMsT0FBYyxFQUFFLEtBQVU7UUFDeEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFDekIsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUssSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUs7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFDdEQsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELElBQUksS0FBSztvQkFBRSxPQUFPLEtBQUssQ0FBQzthQUN6QjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUEsWUFBWSxDQUFDLEdBQVEsRUFBRSxNQUFXLEVBQUUsS0FBVTtRQUM3QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVDLENBQUM7K0dBL0RVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuIGdldFZhbGlkYXRvcihcbiAgICBjb2x1bW46IGFueVxuICApOiAoKHJvdzogYW55LCBjb2x1bW46IGFueSwgdmFsdWU6IGFueSkgPT4gYm9vbGVhbikgfCBudWxsIHtcbiAgICBpZiAoIWNvbHVtbj8udmFsaWRhdGVGbikgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAoY29sdW1uLl9fY29tcGlsZWRWYWxpZGF0ZUZuKSB7XG4gICAgICByZXR1cm4gY29sdW1uLl9fY29tcGlsZWRWYWxpZGF0ZUZuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29sdW1uLnZhbGlkYXRlRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbHVtbi5fX2NvbXBpbGVkVmFsaWRhdGVGbiA9IGNvbHVtbi52YWxpZGF0ZUZuO1xuICAgICAgcmV0dXJuIGNvbHVtbi52YWxpZGF0ZUZuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29sdW1uLnZhbGlkYXRlRm4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVUc0ZuKGNvbHVtbi52YWxpZGF0ZUZuKTtcblxuICAgICAgICBjb25zdCBmbiA9IG5ldyBGdW5jdGlvbihgcmV0dXJuICR7bm9ybWFsaXplZH1gKSgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbHVtbi5fX2NvbXBpbGVkVmFsaWRhdGVGbiA9IGZuO1xuICAgICAgICByZXR1cm4gZm47XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgSW52YWxpZCB2YWxpZGF0b3IgZnVuY3Rpb24gZm9yIGNvbHVtbiBcIiR7Y29sdW1uPy5oZWFkZXJ9XCJgLFxuICAgICAgICAgIGVyclxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVHNGbihmbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm5cbiAgICAgIC5yZXBsYWNlKC86XFxzKlthLXpBLVowLTlfPD5cXFtcXF1cXHxdKy9nLCAnJylcbiAgICAgIC5yZXBsYWNlKC9cXClcXHMqOlxccypbYS16QS1aMC05Xzw+XFxbXFxdXFx8XStcXHMqPT4vZywgJykgPT4nKVxuICAgICAgLnJlcGxhY2UoLyhpbnRlcmZhY2V8dHlwZSlcXHMrXFx3K1xccyp7W159XSp9L2csICcnKVxuICAgICAgLnRyaW0oKTtcbiAgfVxuXG5cbiAgZmluZE9yaWdpbmFsUm93KGRhdGFzZXQ6IGFueVtdLCByb3dJZDogYW55KTogYW55IHtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiBkYXRhc2V0KSB7XG4gICAgICBpZiAocm93LmlkID09PSByb3dJZCB8fCByb3cuX2lkID09PSByb3dJZCkgcmV0dXJuIHJvdztcbiAgICAgIGlmIChyb3cuY2hpbGRyZW4gJiYgcm93LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZE9yaWdpbmFsUm93KHJvdy5jaGlsZHJlbiwgcm93SWQpO1xuICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAgaXNWYWx1ZVZhbGlkKHJvdzogYW55LCBjb2x1bW46IGFueSwgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZuID0gdGhpcy5nZXRWYWxpZGF0b3IoY29sdW1uKTtcbiAgICByZXR1cm4gZm4gPyBmbihyb3csIGNvbHVtbiwgdmFsdWUpIDogdHJ1ZTtcbiAgfVxufVxuIl19