@wemake4u/form-player-se 1.0.3 → 1.0.5
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/esm2022/lib/directives/date.directive.mjs +93 -0
- package/esm2022/lib/directives/disable-form.directive.mjs +42 -0
- package/esm2022/lib/directives/disable.directive.mjs +39 -6
- package/esm2022/lib/directives/number.directive.mjs +111 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +17 -8
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +70 -58
- package/esm2022/lib/locale/locale-it.mjs +2 -1
- package/esm2022/lib/utils/gridCells.mjs +10 -7
- package/esm2022/lib/utils/gridUtils.mjs +75 -0
- package/esm2022/lib/utils/groupByRow.mjs +2 -1
- package/fesm2022/wemake4u-form-player-se.mjs +455 -90
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/directives/date.directive.d.ts +8 -0
- package/lib/directives/disable-form.directive.d.ts +17 -0
- package/lib/directives/disable.directive.d.ts +11 -3
- package/lib/directives/number.directive.d.ts +16 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +1 -0
- package/lib/dynamic-form/dynamic-form.component.d.ts +8 -5
- package/lib/locale/locale-it.d.ts +1 -0
- package/lib/utils/gridCells.d.ts +34 -0
- package/lib/utils/gridUtils.d.ts +4 -0
- package/lib/utils/groupByRow.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Directive, Host } from '@angular/core';
|
|
2
|
+
import { Datepicker } from 'vanillajs-datepicker';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-sirio-lib";
|
|
5
|
+
export class DateDirective {
|
|
6
|
+
sirioDatepicker;
|
|
7
|
+
constructor(sirioDatepicker) {
|
|
8
|
+
this.sirioDatepicker = sirioDatepicker;
|
|
9
|
+
const registerOnChange = this.sirioDatepicker.registerOnChange.bind(this.sirioDatepicker);
|
|
10
|
+
this.sirioDatepicker.registerOnChange = function (fn) {
|
|
11
|
+
registerOnChange(function (value) {
|
|
12
|
+
fn(dateToStore(value));
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
const writeValue = this.sirioDatepicker.writeValue.bind(this.sirioDatepicker);
|
|
16
|
+
this.sirioDatepicker.writeValue = function (value, event, updateCalendar) {
|
|
17
|
+
writeValue(dateToDisplay(value), event, updateCalendar);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateDirective, deps: [{ token: i1.SirioDatepickerComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DateDirective, isStandalone: true, selector: "[isoDate]", ngImport: i0 });
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateDirective, decorators: [{
|
|
24
|
+
type: Directive,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: '[isoDate]',
|
|
27
|
+
standalone: true
|
|
28
|
+
}]
|
|
29
|
+
}], ctorParameters: () => [{ type: i1.SirioDatepickerComponent, decorators: [{
|
|
30
|
+
type: Host
|
|
31
|
+
}] }] });
|
|
32
|
+
const dislayFormat = 'dd/mm/yyyy';
|
|
33
|
+
const storeFormat = 'yyyy-mm-dd';
|
|
34
|
+
function dateToDisplay(value) {
|
|
35
|
+
if (typeof value === "string") {
|
|
36
|
+
const date = parseStore(value) ?? parseDisplay(value);
|
|
37
|
+
return (date == null)
|
|
38
|
+
? value
|
|
39
|
+
: Datepicker.formatDate(date, dislayFormat, 'it');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function dateToStore(value) {
|
|
46
|
+
if (typeof value === "string") {
|
|
47
|
+
const date = parseStore(value) ?? parseDisplay(value);
|
|
48
|
+
return (date == null)
|
|
49
|
+
? null
|
|
50
|
+
: Datepicker.formatDate(date, storeFormat, 'it');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function parseDisplay(value) {
|
|
57
|
+
const regex = /^(\d{2})\/(\d{2})\/(\d{4})$/;
|
|
58
|
+
const match = value.match(regex);
|
|
59
|
+
if (!match)
|
|
60
|
+
return null;
|
|
61
|
+
const day = parseInt(match[1], 10);
|
|
62
|
+
const month = parseInt(match[2], 10);
|
|
63
|
+
const year = parseInt(match[3], 10);
|
|
64
|
+
const date = new Date(year, month - 1, day);
|
|
65
|
+
if (date.getFullYear() === year &&
|
|
66
|
+
date.getMonth() === month - 1 &&
|
|
67
|
+
date.getDate() === day) {
|
|
68
|
+
return date;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function parseStore(value) {
|
|
75
|
+
const regex = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
76
|
+
const match = value.match(regex);
|
|
77
|
+
if (!match) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const year = parseInt(match[1], 10);
|
|
81
|
+
const month = parseInt(match[2], 10);
|
|
82
|
+
const day = parseInt(match[3], 10);
|
|
83
|
+
const date = new Date(year, month - 1, day);
|
|
84
|
+
if (date.getFullYear() === year &&
|
|
85
|
+
date.getMonth() === month - 1 &&
|
|
86
|
+
date.getDate() === day) {
|
|
87
|
+
return date;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2RhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBTWxELE1BQU0sT0FBTyxhQUFhO0lBRUk7SUFBNUIsWUFBNEIsZUFBeUM7UUFBekMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBRW5FLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTFGLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxFQUFvQjtZQUNwRSxnQkFBZ0IsQ0FBQyxVQUFVLEtBQVU7Z0JBQ25DLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxLQUFVLEVBQUUsS0FBZSxFQUFFLGNBQXdCO1lBQy9GLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztJQUNKLENBQUM7d0dBakJVLGFBQWE7NEZBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFKekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztv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Q0FBQztJQUVuQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUU1QyxJQUNFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUN0QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO1NBQ0ksQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lyaW9EYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IERhdGVwaWNrZXIgfSBmcm9tICd2YW5pbGxhanMtZGF0ZXBpY2tlcic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tpc29EYXRlXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZURpcmVjdGl2ZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgcHJpdmF0ZSBzaXJpb0RhdGVwaWNrZXI6IFNpcmlvRGF0ZXBpY2tlckNvbXBvbmVudCkge1xyXG5cclxuICAgIGNvbnN0IHJlZ2lzdGVyT25DaGFuZ2UgPSB0aGlzLnNpcmlvRGF0ZXBpY2tlci5yZWdpc3Rlck9uQ2hhbmdlLmJpbmQodGhpcy5zaXJpb0RhdGVwaWNrZXIpO1xyXG5cclxuICAgIHRoaXMuc2lyaW9EYXRlcGlja2VyLnJlZ2lzdGVyT25DaGFuZ2UgPSBmdW5jdGlvbiAoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlvbiAodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGZuKGRhdGVUb1N0b3JlKHZhbHVlKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB3cml0ZVZhbHVlID0gdGhpcy5zaXJpb0RhdGVwaWNrZXIud3JpdGVWYWx1ZS5iaW5kKHRoaXMuc2lyaW9EYXRlcGlja2VyKTtcclxuXHJcbiAgICB0aGlzLnNpcmlvRGF0ZXBpY2tlci53cml0ZVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlOiBhbnksIGV2ZW50PzogYm9vbGVhbiwgdXBkYXRlQ2FsZW5kYXI/OiBib29sZWFuKSB7XHJcbiAgICAgIHdyaXRlVmFsdWUoZGF0ZVRvRGlzcGxheSh2YWx1ZSksIGV2ZW50LCB1cGRhdGVDYWxlbmRhcik7XHJcbiAgICB9O1xyXG4gIH0gIFxyXG59XHJcblxyXG5jb25zdCBkaXNsYXlGb3JtYXQgPSAnZGQvbW0veXl5eSc7XHJcbmNvbnN0IHN0b3JlRm9ybWF0ID0gJ3l5eXktbW0tZGQnO1xyXG5cclxuZnVuY3Rpb24gZGF0ZVRvRGlzcGxheSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgY29uc3QgZGF0ZSA9IHBhcnNlU3RvcmUodmFsdWUpID8/IHBhcnNlRGlzcGxheSh2YWx1ZSk7XHJcbiAgICByZXR1cm4gKGRhdGUgPT0gbnVsbClcclxuICAgICAgPyB2YWx1ZVxyXG4gICAgICA6IERhdGVwaWNrZXIuZm9ybWF0RGF0ZShkYXRlLCBkaXNsYXlGb3JtYXQsICdpdCcpO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0gIFxyXG59XHJcblxyXG5mdW5jdGlvbiBkYXRlVG9TdG9yZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgY29uc3QgZGF0ZSA9IHBhcnNlU3RvcmUodmFsdWUpID8/IHBhcnNlRGlzcGxheSh2YWx1ZSk7XHJcbiAgICByZXR1cm4gKGRhdGUgPT0gbnVsbClcclxuICAgICAgPyBudWxsXHJcbiAgICAgIDogRGF0ZXBpY2tlci5mb3JtYXREYXRlKGRhdGUsIHN0b3JlRm9ybWF0LCAnaXQnKTtcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9IFxyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZURpc3BsYXkodmFsdWU6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcclxuICBjb25zdCByZWdleCA9IC9eKFxcZHsyfSlcXC8oXFxkezJ9KVxcLyhcXGR7NH0pJC87XHJcbiAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZWdleCk7XHJcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XHJcblxyXG4gIGNvbnN0IGRheSA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XHJcbiAgY29uc3QgbW9udGggPSBwYXJzZUludChtYXRjaFsyXSwgMTApO1xyXG4gIGNvbnN0IHllYXIgPSBwYXJzZUludChtYXRjaFszXSwgMTApO1xyXG5cclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpO1xyXG5cclxuICBpZiAoXHJcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXIgJiZcclxuICAgIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGggLSAxICYmXHJcbiAgICBkYXRlLmdldERhdGUoKSA9PT0gZGF5XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gZGF0ZTtcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlU3RvcmUodmFsdWU6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcclxuICBjb25zdCByZWdleCA9IC9eKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkkLztcclxuICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKHJlZ2V4KTtcclxuICBpZiAoIW1hdGNoKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGNvbnN0IHllYXIgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xyXG4gIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQobWF0Y2hbMl0sIDEwKTtcclxuICBjb25zdCBkYXkgPSBwYXJzZUludChtYXRjaFszXSwgMTApO1xyXG5cclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpO1xyXG5cclxuICBpZiAoXHJcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXIgJiZcclxuICAgIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGggLSAxICYmXHJcbiAgICBkYXRlLmdldERhdGUoKSA9PT0gZGF5XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gZGF0ZTtcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DisableFormDirective {
|
|
5
|
+
templateRef;
|
|
6
|
+
viewContainer;
|
|
7
|
+
config;
|
|
8
|
+
constructor(templateRef, viewContainer) {
|
|
9
|
+
this.templateRef = templateRef;
|
|
10
|
+
this.viewContainer = viewContainer;
|
|
11
|
+
}
|
|
12
|
+
ngOnChanges(changes) {
|
|
13
|
+
if (this.hasValue(this.config.path) && this.config.formGroup) {
|
|
14
|
+
var formGroup = this.config.formGroup.get(this.config.path);
|
|
15
|
+
if (formGroup instanceof FormGroup) {
|
|
16
|
+
if (this.config.disabled) {
|
|
17
|
+
formGroup.disable({ emitEvent: false });
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
formGroup.enable({ emitEvent: false });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
this.viewContainer.clear();
|
|
25
|
+
}
|
|
26
|
+
hasValue(value) {
|
|
27
|
+
return value != null && value.trim().length > 0;
|
|
28
|
+
}
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableFormDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
30
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DisableFormDirective, isStandalone: true, selector: "[disableForm]", inputs: { config: ["disableForm", "config"] }, usesOnChanges: true, ngImport: i0 });
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableFormDirective, decorators: [{
|
|
33
|
+
type: Directive,
|
|
34
|
+
args: [{
|
|
35
|
+
selector: '[disableForm]',
|
|
36
|
+
standalone: true
|
|
37
|
+
}]
|
|
38
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { config: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: ['disableForm']
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS1mb3JtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvZGlzYWJsZS1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU0zQyxNQUFNLE9BQU8sb0JBQW9CO0lBUXJCO0lBQ0E7SUFSWSxNQUFNLENBSTFCO0lBRUYsWUFDVSxXQUE2QixFQUM3QixhQUErQjtRQUQvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO0lBQ3JDLENBQUM7SUFFTCxXQUFXLENBQUMsT0FBc0I7UUFFaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1RCxJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN6QixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzFDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFvQjtRQUNuQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQzt3R0E5QlUsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrR0FFdUIsTUFBTTtzQkFBM0IsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkaXNhYmxlRm9ybV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIERpc2FibGVGb3JtRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoJ2Rpc2FibGVGb3JtJykgY29uZmlnIToge1xyXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4gfCBudWxsO1xyXG4gICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgICBwYXRoOiBzdHJpbmc7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmhhc1ZhbHVlKHRoaXMuY29uZmlnLnBhdGgpICYmIHRoaXMuY29uZmlnLmZvcm1Hcm91cCkge1xyXG4gICAgICB2YXIgZm9ybUdyb3VwID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5wYXRoKTtcclxuICAgICAgaWYgKGZvcm1Hcm91cCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -3,26 +3,55 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
import * as i1 from "@angular/forms";
|
|
4
4
|
export class DisableDirective {
|
|
5
5
|
ngControl;
|
|
6
|
+
el;
|
|
7
|
+
renderer;
|
|
6
8
|
disableControl = null;
|
|
7
9
|
readonly = null;
|
|
8
|
-
|
|
10
|
+
placeholder = null;
|
|
11
|
+
componentRef;
|
|
12
|
+
constructor(ngControl, el, renderer) {
|
|
9
13
|
this.ngControl = ngControl;
|
|
14
|
+
this.el = el;
|
|
15
|
+
this.renderer = renderer;
|
|
10
16
|
}
|
|
17
|
+
disableClass = "fp-disabled";
|
|
18
|
+
readonlyClass = "fp-readonly";
|
|
11
19
|
ngOnChanges(changes) {
|
|
12
20
|
if (changes["disableControl"] || changes["readonly"]) {
|
|
13
21
|
if (this.ngControl.control) {
|
|
14
22
|
if (this.disableControl) {
|
|
15
23
|
this.ngControl.control.disable();
|
|
24
|
+
this.toggleClass(true, this.disableClass);
|
|
25
|
+
this.overridePlaceholder(false);
|
|
16
26
|
}
|
|
17
27
|
else {
|
|
18
28
|
this.ngControl.control.enable();
|
|
19
|
-
this.
|
|
29
|
+
this.toggleClass(false, this.disableClass);
|
|
30
|
+
const disabled = this.readonly === true;
|
|
31
|
+
this.ngControl.valueAccessor?.setDisabledState(disabled);
|
|
32
|
+
this.toggleClass(disabled, this.readonlyClass);
|
|
33
|
+
this.overridePlaceholder(disabled);
|
|
20
34
|
}
|
|
21
35
|
}
|
|
22
36
|
}
|
|
23
37
|
}
|
|
24
|
-
|
|
25
|
-
|
|
38
|
+
toggleClass(value, className) {
|
|
39
|
+
if (value) {
|
|
40
|
+
this.renderer.addClass(this.el.nativeElement, className);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.renderer.removeClass(this.el.nativeElement, className);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
overridePlaceholder(value) {
|
|
47
|
+
if ('placeholder' in this.componentRef) {
|
|
48
|
+
this.componentRef.placeholder = value
|
|
49
|
+
? "-"
|
|
50
|
+
: this.placeholder;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableDirective, deps: [{ token: i1.NgControl }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
54
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DisableDirective, isStandalone: true, selector: "[disableControl], [readonly]", inputs: { disableControl: "disableControl", readonly: "readonly", placeholder: "placeholder", componentRef: "componentRef" }, usesOnChanges: true, ngImport: i0 });
|
|
26
55
|
}
|
|
27
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableDirective, decorators: [{
|
|
28
57
|
type: Directive,
|
|
@@ -30,9 +59,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30
59
|
selector: '[disableControl], [readonly]',
|
|
31
60
|
standalone: true
|
|
32
61
|
}]
|
|
33
|
-
}], ctorParameters: () => [{ type: i1.NgControl }], propDecorators: { disableControl: [{
|
|
62
|
+
}], ctorParameters: () => [{ type: i1.NgControl }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { disableControl: [{
|
|
34
63
|
type: Input
|
|
35
64
|
}], readonly: [{
|
|
36
65
|
type: Input
|
|
66
|
+
}], placeholder: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], componentRef: [{
|
|
69
|
+
type: Input
|
|
37
70
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2Rpc2FibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQzs7O0FBT2xHLE1BQU0sT0FBTyxnQkFBZ0I7SUFNUDtJQUNSO0lBQ0E7SUFQSCxjQUFjLEdBQW1CLElBQUksQ0FBQztJQUN0QyxRQUFRLEdBQW1CLElBQUksQ0FBQztJQUNoQyxXQUFXLEdBQWtCLElBQUksQ0FBQztJQUNsQyxZQUFZLENBQU07SUFFM0IsWUFBb0IsU0FBb0IsRUFDNUIsRUFBYyxFQUNkLFFBQW1CO1FBRlgsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUM1QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUMvQixDQUFDO0lBRU8sWUFBWSxHQUFXLGFBQWEsQ0FBQztJQUNyQyxhQUFhLEdBQVcsYUFBYSxDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUVoQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO29CQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQXFCLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWMsRUFBRSxTQUFpQjtRQUNuRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQWM7UUFDeEMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUs7Z0JBQ25DLENBQUMsQ0FBQyxHQUFHO2dCQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO3dHQWhEVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0hBRVUsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2Rpc2FibGVDb250cm9sXSwgW3JlYWRvbmx5XScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlzYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgZGlzYWJsZUNvbnRyb2w6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBjb21wb25lbnRSZWY6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxyXG4gICAgLCBwcml2YXRlIGVsOiBFbGVtZW50UmVmXHJcbiAgICAsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlQ2xhc3M6IHN0cmluZyA9IFwiZnAtZGlzYWJsZWRcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5Q2xhc3M6IHN0cmluZyA9IFwiZnAtcmVhZG9ubHlcIjtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzW1wiZGlzYWJsZUNvbnRyb2xcIl0gfHwgY2hhbmdlc1tcInJlYWRvbmx5XCJdKSB7XHJcbiAgICAgIGlmICh0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZUNvbnRyb2wpIHtcclxuICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2dnbGVDbGFzcyh0cnVlLCB0aGlzLmRpc2FibGVDbGFzcyk7XHJcbiAgICAgICAgICB0aGlzLm92ZXJyaWRlUGxhY2Vob2xkZXIoZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2dnbGVDbGFzcyhmYWxzZSwgdGhpcy5kaXNhYmxlQ2xhc3MpO1xyXG4gICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLnJlYWRvbmx5ID09PSB0cnVlO1xyXG4gICAgICAgICAgKHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgYXMgYW55KT8uc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZCk7XHJcbiAgICAgICAgICB0aGlzLnRvZ2dsZUNsYXNzKGRpc2FibGVkLCB0aGlzLnJlYWRvbmx5Q2xhc3MpO1xyXG4gICAgICAgICAgdGhpcy5vdmVycmlkZVBsYWNlaG9sZGVyKGRpc2FibGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlQ2xhc3ModmFsdWU6IGJvb2xlYW4sIGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3ZlcnJpZGVQbGFjZWhvbGRlcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKCdwbGFjZWhvbGRlcicgaW4gdGhpcy5jb21wb25lbnRSZWYpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYucGxhY2Vob2xkZXIgPSB2YWx1ZVxyXG4gICAgICAgID8gXCItXCJcclxuICAgICAgICA6IHRoaXMucGxhY2Vob2xkZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Directive, Host, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "ngx-sirio-lib";
|
|
4
|
+
export class NumberDirective {
|
|
5
|
+
sirioInput;
|
|
6
|
+
defaultValue = null;
|
|
7
|
+
minimum = null;
|
|
8
|
+
maximum = null;
|
|
9
|
+
decimalDigits = null;
|
|
10
|
+
constructor(sirioInput) {
|
|
11
|
+
this.sirioInput = sirioInput;
|
|
12
|
+
const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);
|
|
13
|
+
const coerceValue = (value) => {
|
|
14
|
+
const originalValue = value;
|
|
15
|
+
if (value === null && this.defaultValue !== null) {
|
|
16
|
+
value = this.defaultValue;
|
|
17
|
+
}
|
|
18
|
+
if (value != null) {
|
|
19
|
+
if (this.minimum !== null && value < this.minimum) {
|
|
20
|
+
value = this.minimum;
|
|
21
|
+
}
|
|
22
|
+
if (this.maximum !== null && value > this.maximum) {
|
|
23
|
+
value = this.maximum;
|
|
24
|
+
}
|
|
25
|
+
if (this.decimalDigits != null && this.decimalDigits >= 0) {
|
|
26
|
+
const factor = Math.pow(10, this.decimalDigits);
|
|
27
|
+
value = Math.round(value * factor) / factor;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (originalValue !== value) {
|
|
31
|
+
this.sirioInput.writeValue(value, false);
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
};
|
|
35
|
+
this.sirioInput.registerOnChange = function (fn) {
|
|
36
|
+
registerOnChange(function (value) {
|
|
37
|
+
fn(coerceValue(valueToStore(value)));
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
ngAfterViewInit() {
|
|
42
|
+
const input = this.sirioInput.sirioInput.nativeElement;
|
|
43
|
+
input.addEventListener('keydown', (event) => {
|
|
44
|
+
const e = event;
|
|
45
|
+
if (e.key === '.'
|
|
46
|
+
|| (e.key === ',' && !this.acceptDecimal())
|
|
47
|
+
|| (e.key === '-' && !this.acceptSign())) {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
input.addEventListener('paste', (event) => {
|
|
52
|
+
const e = event;
|
|
53
|
+
const text = e.clipboardData?.getData('text') || '';
|
|
54
|
+
if (text.includes('.')
|
|
55
|
+
|| (text.includes(',') && !this.acceptDecimal())
|
|
56
|
+
|| (text.includes('-') && !this.acceptSign())) {
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
acceptSign() {
|
|
62
|
+
if (this.minimum !== null && this.minimum >= 0) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
acceptDecimal() {
|
|
68
|
+
if (this.decimalDigits !== null && this.decimalDigits === 0) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumberDirective, deps: [{ token: i1.SirioInputComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
74
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NumberDirective, isStandalone: true, selector: "[number]", inputs: { defaultValue: "defaultValue", minimum: "minimum", maximum: "maximum", decimalDigits: "decimalDigits" }, ngImport: i0 });
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumberDirective, decorators: [{
|
|
77
|
+
type: Directive,
|
|
78
|
+
args: [{
|
|
79
|
+
selector: '[number]',
|
|
80
|
+
standalone: true
|
|
81
|
+
}]
|
|
82
|
+
}], ctorParameters: () => [{ type: i1.SirioInputComponent, decorators: [{
|
|
83
|
+
type: Host
|
|
84
|
+
}] }], propDecorators: { defaultValue: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], minimum: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], maximum: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], decimalDigits: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}] } });
|
|
93
|
+
function valueToStore(value) {
|
|
94
|
+
if (typeof value === "string") {
|
|
95
|
+
if (value.trim() === '') {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const numericValue = parseFloat(value);
|
|
99
|
+
if (isNaN(numericValue)) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
return numericValue;
|
|
103
|
+
}
|
|
104
|
+
else if (typeof value === 'number') {
|
|
105
|
+
return value;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvbnVtYmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBaUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPdEUsTUFBTSxPQUFPLGVBQWU7SUFNRTtJQUxuQixZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixhQUFhLEdBQWtCLElBQUksQ0FBQztJQUU3QyxZQUE0QixVQUErQjtRQUEvQixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUV6RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVoRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQW9CLEVBQWlCLEVBQUU7WUFDMUQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBRTVCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNqRCxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM1QixDQUFDO1lBRUQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbEQsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNsRCxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdkIsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDaEQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLGFBQWEsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxFQUFvQjtZQUMvRCxnQkFBZ0IsQ0FBQyxVQUFVLEtBQVU7Z0JBQ25DLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBRWIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRXZELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNqRCxNQUFNLENBQUMsR0FBRyxLQUFzQixDQUFDO1lBQ2pDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHO21CQUNaLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7bUJBQ3hDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQy9DLE1BQU0sQ0FBQyxHQUFHLEtBQXVCLENBQUM7WUFDbEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7bUJBQ2pCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzttQkFDN0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBbkZVLGVBQWU7NEZBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFKM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFPYyxJQUFJO3lDQUxSLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLOztBQWtGUixTQUFTLFlBQVksQ0FBQyxLQUFhO0lBQ2pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztTQUNJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFlLENBQUM7SUFDekIsQ0FBQztTQUNJLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0LCBBZnRlclZpZXdJbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaXJpb0lucHV0Q29tcG9uZW50IH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tudW1iZXJdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG1pbmltdW06IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG1heGltdW06IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlY2ltYWxEaWdpdHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgc2lyaW9JbnB1dDogU2lyaW9JbnB1dENvbXBvbmVudCkge1xyXG5cclxuICAgIGNvbnN0IHJlZ2lzdGVyT25DaGFuZ2UgPSB0aGlzLnNpcmlvSW5wdXQucmVnaXN0ZXJPbkNoYW5nZS5iaW5kKHRoaXMuc2lyaW9JbnB1dCk7XHJcblxyXG4gICAgY29uc3QgY29lcmNlVmFsdWUgPSAodmFsdWU6IG51bWJlciB8IG51bGwpOiBudW1iZXIgfCBudWxsID0+IHtcclxuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsICYmIHRoaXMuZGVmYXVsdFZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5taW5pbXVtICE9PSBudWxsICYmIHZhbHVlIDwgdGhpcy5taW5pbXVtKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMubWluaW11bTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1heGltdW0gIT09IG51bGwgJiYgdmFsdWUgPiB0aGlzLm1heGltdW0pIHtcclxuICAgICAgICAgIHZhbHVlID0gdGhpcy5tYXhpbXVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbERpZ2l0cyAhPSBudWxsICYmIHRoaXMuZGVjaW1hbERpZ2l0cyA+PSAwKSB7XHJcbiAgICAgICAgICBjb25zdCBmYWN0b3IgPSBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsRGlnaXRzKTtcclxuICAgICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAqIGZhY3RvcikgLyBmYWN0b3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAob3JpZ2luYWxWYWx1ZSAhPT0gdmFsdWUpIHsgICAgICAgIFxyXG4gICAgICAgIHRoaXMuc2lyaW9JbnB1dC53cml0ZVZhbHVlKHZhbHVlLCBmYWxzZSk7ICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNpcmlvSW5wdXQucmVnaXN0ZXJPbkNoYW5nZSA9IGZ1bmN0aW9uIChmbjogKF86IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9uICh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgZm4oY29lcmNlVmFsdWUodmFsdWVUb1N0b3JlKHZhbHVlKSkpOyAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuc2lyaW9JbnB1dC5zaXJpb0lucHV0Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgZSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XHJcbiAgICAgIGlmIChlLmtleSA9PT0gJy4nXHJcbiAgICAgICAgfHwgKGUua2V5ID09PSAnLCcgJiYgIXRoaXMuYWNjZXB0RGVjaW1hbCgpKVxyXG4gICAgICAgIHx8IChlLmtleSA9PT0gJy0nICYmICF0aGlzLmFjY2VwdFNpZ24oKSkpIHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3Bhc3RlJywgKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICBjb25zdCBlID0gZXZlbnQgYXMgQ2xpcGJvYXJkRXZlbnQ7XHJcbiAgICAgIGNvbnN0IHRleHQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQnKSB8fCAnJztcclxuICAgICAgaWYgKHRleHQuaW5jbHVkZXMoJy4nKVxyXG4gICAgICAgIHx8ICh0ZXh0LmluY2x1ZGVzKCcsJykgJiYgIXRoaXMuYWNjZXB0RGVjaW1hbCgpKVxyXG4gICAgICAgIHx8ICh0ZXh0LmluY2x1ZGVzKCctJykgJiYgIXRoaXMuYWNjZXB0U2lnbigpKSkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjY2VwdFNpZ24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5taW5pbXVtICE9PSBudWxsICYmIHRoaXMubWluaW11bSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY2NlcHREZWNpbWFsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZGVjaW1hbERpZ2l0cyAhPT0gbnVsbCAmJiB0aGlzLmRlY2ltYWxEaWdpdHMgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB2YWx1ZVRvU3RvcmUodmFsdWU6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xyXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGlmICh2YWx1ZS50cmltKCkgPT09ICcnKSB7IFxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgaWYgKGlzTmFOKG51bWVyaWNWYWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtZXJpY1ZhbHVlO1xyXG4gIH1cclxuICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICByZXR1cm4gdmFsdWUgYXMgbnVtYmVyO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
|