@wemake4u/form-player-se 1.0.5 → 1.0.7
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/controls/factory.mjs +5 -1
- package/esm2022/lib/directives/accordionpanel.directive.mjs +27 -0
- package/esm2022/lib/directives/collapse.directive.mjs +143 -0
- package/esm2022/lib/directives/date.directive.mjs +2 -2
- package/esm2022/lib/directives/disableform.directive.mjs +42 -0
- package/esm2022/lib/directives/framesecurity.directive.mjs +66 -0
- package/esm2022/lib/directives/repeat.directive.mjs +3 -11
- package/esm2022/lib/directives/tabcontrol.directive.mjs +46 -0
- package/esm2022/lib/directives/text.directive.mjs +100 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +33 -16
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +119 -41
- package/esm2022/lib/locale/locale-it.mjs +4 -2
- package/esm2022/lib/services/feel.service.mjs +1 -1
- package/esm2022/lib/services/metadata.service.mjs +29 -0
- package/esm2022/lib/services/programmability.service.mjs +2 -1
- package/esm2022/lib/utils/groupByRow.mjs +2 -1
- package/fesm2022/wemake4u-form-player-se.mjs +537 -119
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/directives/accordionpanel.directive.d.ts +7 -0
- package/lib/directives/collapse.directive.d.ts +31 -0
- package/lib/directives/repeat.directive.d.ts +0 -1
- package/lib/directives/tabcontrol.directive.d.ts +14 -0
- package/lib/directives/text.directive.d.ts +20 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +7 -1
- package/lib/dynamic-form/dynamic-form.component.d.ts +12 -1
- package/lib/locale/locale-it.d.ts +2 -0
- package/lib/services/metadata.service.d.ts +13 -0
- package/lib/utils/gridCells.d.ts +4 -0
- package/lib/utils/groupByRow.d.ts +2 -0
- package/package.json +2 -2
- package/esm2022/lib/directives/disable-form.directive.mjs +0 -42
- package/esm2022/lib/directives/frame-security.directive.mjs +0 -66
- /package/lib/directives/{disable-form.directive.d.ts → disableform.directive.d.ts} +0 -0
- /package/lib/directives/{frame-security.directive.d.ts → framesecurity.directive.d.ts} +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
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 TextDirective {
|
|
5
|
+
sirioInput;
|
|
6
|
+
renderer;
|
|
7
|
+
textcase = '';
|
|
8
|
+
maxlength = null;
|
|
9
|
+
constructor(sirioInput, renderer) {
|
|
10
|
+
this.sirioInput = sirioInput;
|
|
11
|
+
this.renderer = renderer;
|
|
12
|
+
const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);
|
|
13
|
+
const coerceValue = this.coerceValue.bind(this);
|
|
14
|
+
this.sirioInput.registerOnChange = function (fn) {
|
|
15
|
+
registerOnChange(function (value) {
|
|
16
|
+
fn(coerceValue(value));
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
ngAfterViewInit() {
|
|
21
|
+
this.configureTextCase();
|
|
22
|
+
this.configureMaxLength();
|
|
23
|
+
}
|
|
24
|
+
ngOnChanges(changes) {
|
|
25
|
+
if (changes["maxlength"]) {
|
|
26
|
+
this.configureMaxLength();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
coerceValue(value) {
|
|
30
|
+
return this.applyMaxLength(this.applyCase(value));
|
|
31
|
+
}
|
|
32
|
+
applyCase(value) {
|
|
33
|
+
if (this.textcase === "uppercase") {
|
|
34
|
+
return value.toUpperCase();
|
|
35
|
+
}
|
|
36
|
+
else if (this.textcase === "lowercase") {
|
|
37
|
+
return value.toLowerCase();
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
applyMaxLength(value) {
|
|
44
|
+
if (this.maxlength != null && value.length > this.maxlength) {
|
|
45
|
+
return value.slice(0, Math.max(0, this.maxlength));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
configureTextCase() {
|
|
52
|
+
const inputElement = this.sirioInput.sirioInput?.nativeElement;
|
|
53
|
+
if (inputElement && (this.textcase === 'uppercase' || this.textcase === 'lowercase')) {
|
|
54
|
+
this.renderer.setStyle(inputElement, 'text-transform', this.textcase);
|
|
55
|
+
inputElement.oninput = (event) => {
|
|
56
|
+
const input = event.target;
|
|
57
|
+
const value = input.value;
|
|
58
|
+
var newValue = this.coerceValue(value);
|
|
59
|
+
if (newValue != value) {
|
|
60
|
+
this.replaceInputValue(input, newValue);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
configureMaxLength() {
|
|
66
|
+
const inputElement = this.sirioInput.sirioInput?.nativeElement;
|
|
67
|
+
if (inputElement) {
|
|
68
|
+
if (this.maxlength == null) {
|
|
69
|
+
inputElement.removeAttribute('maxlength');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
inputElement.maxLength = this.maxlength;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
replaceInputValue(input, value) {
|
|
77
|
+
const start = input.selectionStart || 0;
|
|
78
|
+
const end = input.selectionEnd || 0;
|
|
79
|
+
input.value = value;
|
|
80
|
+
setTimeout(() => {
|
|
81
|
+
input.setSelectionRange(start, end);
|
|
82
|
+
}, 0);
|
|
83
|
+
}
|
|
84
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextDirective, deps: [{ token: i1.SirioInputComponent, host: true }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
85
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TextDirective, isStandalone: true, selector: "[textcase], [maxlength]", inputs: { textcase: "textcase", maxlength: "maxlength" }, usesOnChanges: true, ngImport: i0 });
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextDirective, decorators: [{
|
|
88
|
+
type: Directive,
|
|
89
|
+
args: [{
|
|
90
|
+
selector: '[textcase], [maxlength]',
|
|
91
|
+
standalone: true
|
|
92
|
+
}]
|
|
93
|
+
}], ctorParameters: () => [{ type: i1.SirioInputComponent, decorators: [{
|
|
94
|
+
type: Host
|
|
95
|
+
}] }, { type: i0.Renderer2 }], propDecorators: { textcase: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], maxlength: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}] } });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL3RleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFhLEtBQUssRUFBMkMsTUFBTSxlQUFlLENBQUM7OztBQU8zRyxNQUFNLE9BQU8sYUFBYTtJQUlJO0lBQ2hCO0lBSkgsUUFBUSxHQUFtQyxFQUFFLENBQUM7SUFDOUMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFekMsWUFBNEIsVUFBK0IsRUFDL0MsUUFBbUI7UUFESCxlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUMvQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRTdCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWhGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxFQUFvQjtZQUMvRCxnQkFBZ0IsQ0FBQyxVQUFVLEtBQVU7Z0JBQ25DLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFD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Qzt3R0EvRlUsYUFBYTs0RkFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUp6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBS2MsSUFBSTtpRUFIUixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QsIFJlbmRlcmVyMiwgSW5wdXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaXJpb0lucHV0Q29tcG9uZW50IH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0ZXh0Y2FzZV0sIFttYXhsZW5ndGhdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSB0ZXh0Y2FzZTogJycgfCAndXBwZXJjYXNlJyB8ICdsb3dlcmNhc2UnID0gJyc7XHJcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoQEhvc3QoKSBwcml2YXRlIHNpcmlvSW5wdXQ6IFNpcmlvSW5wdXRDb21wb25lbnRcclxuICAgICwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XHJcblxyXG4gICAgY29uc3QgcmVnaXN0ZXJPbkNoYW5nZSA9IHRoaXMuc2lyaW9JbnB1dC5yZWdpc3Rlck9uQ2hhbmdlLmJpbmQodGhpcy5zaXJpb0lucHV0KTtcclxuXHJcbiAgICBjb25zdCBjb2VyY2VWYWx1ZSA9IHRoaXMuY29lcmNlVmFsdWUuYmluZCh0aGlzKTtcclxuXHJcbiAgICB0aGlzLnNpcmlvSW5wdXQucmVnaXN0ZXJPbkNoYW5nZSA9IGZ1bmN0aW9uIChmbjogKF86IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9uICh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgZm4oY29lcmNlVmFsdWUodmFsdWUpKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmVUZXh0Q2FzZSgpO1xyXG4gICAgdGhpcy5jb25maWd1cmVNYXhMZW5ndGgoKTsgICAgXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcIm1heGxlbmd0aFwiXSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyZU1heExlbmd0aCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2VyY2VWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nXHJcbiAge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBwbHlNYXhMZW5ndGgoXHJcbiAgICAgIHRoaXMuYXBwbHlDYXNlKHZhbHVlKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Q2FzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnRleHRjYXNlID09PSBcInVwcGVyY2FzZVwiKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy50ZXh0Y2FzZSA9PT0gXCJsb3dlcmNhc2VcIikge1xyXG4gICAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5TWF4TGVuZ3RoKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMubWF4bGVuZ3RoICE9IG51bGwgJiYgdmFsdWUubGVuZ3RoID4gdGhpcy5tYXhsZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIE1hdGgubWF4KDAsIHRoaXMubWF4bGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25maWd1cmVUZXh0Q2FzZSgpIHtcclxuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuc2lyaW9JbnB1dC5zaXJpb0lucHV0Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKGlucHV0RWxlbWVudCAmJiAodGhpcy50ZXh0Y2FzZSA9PT0gJ3VwcGVyY2FzZScgfHwgdGhpcy50ZXh0Y2FzZSA9PT0gJ2xvd2VyY2FzZScpKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW5wdXRFbGVtZW50LCAndGV4dC10cmFuc2Zvcm0nLCB0aGlzLnRleHRjYXNlKTtcclxuXHJcbiAgICAgIGlucHV0RWxlbWVudC5vbmlucHV0ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC52YWx1ZTtcclxuXHJcbiAgICAgICAgdmFyIG5ld1ZhbHVlID0gdGhpcy5jb2VyY2VWYWx1ZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPSB2YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5yZXBsYWNlSW5wdXRWYWx1ZShpbnB1dCwgbmV3VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25maWd1cmVNYXhMZW5ndGgoKSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLnNpcmlvSW5wdXQuc2lyaW9JbnB1dD8ubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAoaW5wdXRFbGVtZW50KSB7XHJcbiAgICAgIGlmICh0aGlzLm1heGxlbmd0aCA9PSBudWxsKSB7XHJcbiAgICAgICAgaW5wdXRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbWF4bGVuZ3RoJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaW5wdXRFbGVtZW50Lm1heExlbmd0aCA9IHRoaXMubWF4bGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXBsYWNlSW5wdXRWYWx1ZShpbnB1dDogSFRNTElucHV0RWxlbWVudCwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCB8fCAwO1xyXG4gICAgY29uc3QgZW5kID0gaW5wdXQuc2VsZWN0aW9uRW5kIHx8IDA7XHJcblxyXG4gICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|