ngx-sp-infra 1.4.89 → 1.4.91
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.
|
@@ -3,6 +3,34 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
/**
|
|
4
4
|
* Diretiva que adiciona um asterisco vermelho (*) ao lado de um elemento <label>
|
|
5
5
|
* para indicar que o campo é obrigatório.
|
|
6
|
+
*
|
|
7
|
+
* ## Uso
|
|
8
|
+
*
|
|
9
|
+
* No seu template HTML, você pode usar a diretiva de duas maneiras:
|
|
10
|
+
*
|
|
11
|
+
* 1. Sem especificar o valor, onde o marcador será exibido por padrão:
|
|
12
|
+
*
|
|
13
|
+
* ```html
|
|
14
|
+
* <label libRequired for="inputTeste" class="form-label">Pessoa</label>
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* 2. Especificando explicitamente o valor (true ou false):
|
|
18
|
+
*
|
|
19
|
+
* ```html
|
|
20
|
+
* <label [libRequired]="true" for="inputTeste" class="form-label">Nome</label>
|
|
21
|
+
* <label [libRequired]="false" for="inputTeste" class="form-label">Empresa</label>
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* ### Inputs
|
|
25
|
+
*
|
|
26
|
+
* - `libRequired`: boolean | string
|
|
27
|
+
* - Determina se o asterisco de obrigatoriedade deve ser exibido.
|
|
28
|
+
* - Aceita valores booleanos (`true` ou `false`) ou strings (`"true"` ou `"false"`).
|
|
29
|
+
* - Padrão: `true`
|
|
30
|
+
*
|
|
31
|
+
* - `sisID`: string
|
|
32
|
+
* - Identificador único para o elemento `<span>` criado.
|
|
33
|
+
* - Útil para manipulação direta do DOM ou testes.
|
|
6
34
|
*/
|
|
7
35
|
export class RequiredDirective {
|
|
8
36
|
/**
|
|
@@ -20,50 +48,57 @@ export class RequiredDirective {
|
|
|
20
48
|
* Define se o asterisco de obrigatoriedade deve ser exibido.
|
|
21
49
|
* Se nenhum valor for especificado, o padrão é true.
|
|
22
50
|
*/
|
|
23
|
-
set showMarker(value) { this._showMarker = value !== false; /* Qualquer valor diferente de false será tratado como true
|
|
51
|
+
set showMarker(value) { this._showMarker = value !== false && value !== 'false'; /* Qualquer valor diferente de false será tratado como true*/ }
|
|
24
52
|
get showMarker() { return this._showMarker; }
|
|
25
53
|
ngOnInit() {
|
|
26
54
|
if (this.showMarker) {
|
|
27
|
-
|
|
28
|
-
spanElement.className = "text-danger";
|
|
29
|
-
spanElement.innerHTML = "*";
|
|
30
|
-
spanElement.id = this.spanID;
|
|
31
|
-
this._renderer.appendChild(this._elementRef.nativeElement, spanElement);
|
|
55
|
+
this.addMarker();
|
|
32
56
|
}
|
|
33
57
|
}
|
|
34
58
|
ngOnChanges(changes) {
|
|
35
59
|
if (changes["showMarker"]?.currentValue !== changes["showMarker"]?.previousValue && changes["showMarker"]?.previousValue !== undefined) {
|
|
36
60
|
if (this.showMarker) {
|
|
37
|
-
|
|
38
|
-
spanElement.className = "text-danger";
|
|
39
|
-
spanElement.innerHTML = "*";
|
|
40
|
-
spanElement.id = this.spanID;
|
|
41
|
-
this._renderer.appendChild(this._elementRef.nativeElement, spanElement);
|
|
61
|
+
this.addMarker();
|
|
42
62
|
}
|
|
43
63
|
else {
|
|
44
|
-
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const spanElement = document.getElementById(this.spanID);
|
|
48
|
-
if (spanElement !== null) {
|
|
49
|
-
this._renderer.removeChild(this._elementRef.nativeElement, spanElement);
|
|
50
|
-
}
|
|
64
|
+
this.removeMarker();
|
|
51
65
|
}
|
|
52
66
|
}
|
|
53
67
|
}
|
|
68
|
+
/** Adiciona o marcador de asterisco ao elemento <label>. */
|
|
69
|
+
addMarker() {
|
|
70
|
+
if (document.getElementById(this.spanID)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const spanElement = document.createElement("span");
|
|
74
|
+
spanElement.className = "text-danger";
|
|
75
|
+
spanElement.innerHTML = "*";
|
|
76
|
+
spanElement.id = this.spanID;
|
|
77
|
+
this._renderer.appendChild(this._elementRef.nativeElement, spanElement);
|
|
78
|
+
}
|
|
79
|
+
/** Remove o marcador de asterisco do elemento <label>. */
|
|
80
|
+
removeMarker() {
|
|
81
|
+
if (this.spanID === "") {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const spanElement = document.getElementById(this.spanID);
|
|
85
|
+
if (spanElement !== null) {
|
|
86
|
+
this._renderer.removeChild(this._elementRef.nativeElement, spanElement);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
54
89
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RequiredDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RequiredDirective, selector: "label[
|
|
90
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RequiredDirective, selector: "label[sisRequired]", inputs: { showMarker: ["sisRequired", "showMarker"], spanID: ["sisID", "spanID"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
56
91
|
}
|
|
57
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RequiredDirective, decorators: [{
|
|
58
93
|
type: Directive,
|
|
59
94
|
args: [{
|
|
60
|
-
selector: "label[
|
|
95
|
+
selector: "label[sisRequired]"
|
|
61
96
|
}]
|
|
62
97
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { showMarker: [{
|
|
63
98
|
type: Input,
|
|
64
|
-
args: ["
|
|
99
|
+
args: ["sisRequired"]
|
|
65
100
|
}], spanID: [{
|
|
66
101
|
type: Input,
|
|
67
102
|
args: ["sisID"]
|
|
68
103
|
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvZGlyZWN0aXZlcy9yZXF1aXJlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDOztBQUUxRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFHNUI7OztPQUdHO0lBQ0gsWUFDVSxXQUF1QixFQUN2QixTQUFvQjtRQURwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBUnRCLGdCQUFXLEdBQVksSUFBSSxDQUFDLENBQUMsZUFBZTtRQW1CcEQseURBQXlEO1FBQ3pDLFdBQU0sR0FBVyxFQUFFLENBQUM7SUFYaEMsQ0FBQztJQUVMOzs7T0FHRztJQUNILElBQ0ksVUFBVSxDQUFDLEtBQXVCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQ2xLLElBQUksVUFBVSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFNdEQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLGFBQWEsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLENBQUM7aUJBQ3JDLENBQUM7Z0JBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUdELDREQUE0RDtJQUNwRCxTQUFTO1FBQ2YsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFckQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxXQUFXLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUN0QyxXQUFXLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM1QixXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELDBEQUEwRDtJQUNsRCxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRW5DLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFBQyxDQUFDO0lBQ3hHLENBQUM7K0dBdkRVLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO3VHQWtCSyxVQUFVO3NCQURiLEtBQUs7dUJBQUMsYUFBYTtnQkFLSixNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBEaXJldGl2YSBxdWUgYWRpY2lvbmEgdW0gYXN0ZXJpc2NvIHZlcm1lbGhvICgqKSBhbyBsYWRvIGRlIHVtIGVsZW1lbnRvIDxsYWJlbD5cclxuICogcGFyYSBpbmRpY2FyIHF1ZSBvIGNhbXBvIMOpIG9icmlnYXTDs3Jpby5cclxuICogXHJcbiAqICMjIFVzb1xyXG4gKiBcclxuICogTm8gc2V1IHRlbXBsYXRlIEhUTUwsIHZvY8OqIHBvZGUgdXNhciBhIGRpcmV0aXZhIGRlIGR1YXMgbWFuZWlyYXM6XHJcbiAqIFxyXG4gKiAxLiBTZW0gZXNwZWNpZmljYXIgbyB2YWxvciwgb25kZSBvIG1hcmNhZG9yIHNlcsOhIGV4aWJpZG8gcG9yIHBhZHLDo286XHJcbiAqIFxyXG4gKiBgYGBodG1sXHJcbiAqIDxsYWJlbCBsaWJSZXF1aXJlZCBmb3I9XCJpbnB1dFRlc3RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGVzc29hPC9sYWJlbD5cclxuICogYGBgXHJcbiAqIFxyXG4gKiAyLiBFc3BlY2lmaWNhbmRvIGV4cGxpY2l0YW1lbnRlIG8gdmFsb3IgKHRydWUgb3UgZmFsc2UpOlxyXG4gKiBcclxuICogYGBgaHRtbFxyXG4gKiA8bGFiZWwgW2xpYlJlcXVpcmVkXT1cInRydWVcIiBmb3I9XCJpbnB1dFRlc3RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Tm9tZTwvbGFiZWw+XHJcbiAqIDxsYWJlbCBbbGliUmVxdWlyZWRdPVwiZmFsc2VcIiBmb3I9XCJpbnB1dFRlc3RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RW1wcmVzYTwvbGFiZWw+XHJcbiAqIGBgYFxyXG4gKiBcclxuICogIyMjIElucHV0c1xyXG4gKiBcclxuICogLSBgbGliUmVxdWlyZWRgOiBib29sZWFuIHwgc3RyaW5nXHJcbiAqICAgLSBEZXRlcm1pbmEgc2UgbyBhc3RlcmlzY28gZGUgb2JyaWdhdG9yaWVkYWRlIGRldmUgc2VyIGV4aWJpZG8uIFxyXG4gKiAgIC0gQWNlaXRhIHZhbG9yZXMgYm9vbGVhbm9zIChgdHJ1ZWAgb3UgYGZhbHNlYCkgb3Ugc3RyaW5ncyAoYFwidHJ1ZVwiYCBvdSBgXCJmYWxzZVwiYCkuXHJcbiAqICAgLSBQYWRyw6NvOiBgdHJ1ZWBcclxuICogXHJcbiAqIC0gYHNpc0lEYDogc3RyaW5nXHJcbiAqICAgLSBJZGVudGlmaWNhZG9yIMO6bmljbyBwYXJhIG8gZWxlbWVudG8gYDxzcGFuPmAgY3JpYWRvLlxyXG4gKiAgIC0gw5p0aWwgcGFyYSBtYW5pcHVsYcOnw6NvIGRpcmV0YSBkbyBET00gb3UgdGVzdGVzLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwibGFiZWxbc2lzUmVxdWlyZWRdXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcXVpcmVkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgX3Nob3dNYXJrZXI6IGJvb2xlYW4gPSB0cnVlOyAvLyBWYWxvciBwYWRyw6NvXHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSBfZWxlbWVudFJlZiAtIFJlZmVyw6puY2lhIGFvIGVsZW1lbnRvIERPTSBhbyBxdWFsIGEgZGlyZXRpdmEgZXN0w6EgYXNzb2NpYWRhLlxyXG4gICAqIEBwYXJhbSBfcmVuZGVyZXIgLSBTZXJ2acOnbyBBbmd1bGFyIHBhcmEgbWFuaXB1bGHDp8OjbyBzZWd1cmEgZG8gRE9NLlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIHNlIG8gYXN0ZXJpc2NvIGRlIG9icmlnYXRvcmllZGFkZSBkZXZlIHNlciBleGliaWRvLlxyXG4gICAqIFNlIG5lbmh1bSB2YWxvciBmb3IgZXNwZWNpZmljYWRvLCBvIHBhZHLDo28gw6kgdHJ1ZS5cclxuICAgKi9cclxuICBASW5wdXQoXCJzaXNSZXF1aXJlZFwiKVxyXG4gIHNldCBzaG93TWFya2VyKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7IHRoaXMuX3Nob3dNYXJrZXIgPSB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09ICdmYWxzZSc7IC8qIFF1YWxxdWVyIHZhbG9yIGRpZmVyZW50ZSBkZSBmYWxzZSBzZXLDoSB0cmF0YWRvIGNvbW8gdHJ1ZSovIH1cclxuICBnZXQgc2hvd01hcmtlcigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3Nob3dNYXJrZXI7IH1cclxuXHJcbiAgLyoqIElkZW50aWZpY2Fkb3Igw7puaWNvIHBhcmEgbyBlbGVtZW50byA8c3Bhbj4gY3JpYWRvLiAqL1xyXG4gIEBJbnB1dChcInNpc0lEXCIpIHNwYW5JRDogc3RyaW5nID0gXCJcIjtcclxuXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2hvd01hcmtlcikge1xyXG4gICAgICB0aGlzLmFkZE1hcmtlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJzaG93TWFya2VyXCJdPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbXCJzaG93TWFya2VyXCJdPy5wcmV2aW91c1ZhbHVlICYmIGNoYW5nZXNbXCJzaG93TWFya2VyXCJdPy5wcmV2aW91c1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMuc2hvd01hcmtlcikgeyB0aGlzLmFkZE1hcmtlcigpOyB9XHJcbiAgICAgIGVsc2UgeyB0aGlzLnJlbW92ZU1hcmtlcigpOyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqIEFkaWNpb25hIG8gbWFyY2Fkb3IgZGUgYXN0ZXJpc2NvIGFvIGVsZW1lbnRvIDxsYWJlbD4uICovXHJcbiAgcHJpdmF0ZSBhZGRNYXJrZXIoKTogdm9pZCB7XHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zcGFuSUQpKSB7IHJldHVybjsgfVxyXG5cclxuICAgIGNvbnN0IHNwYW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XHJcbiAgICBzcGFuRWxlbWVudC5jbGFzc05hbWUgPSBcInRleHQtZGFuZ2VyXCI7XHJcbiAgICBzcGFuRWxlbWVudC5pbm5lckhUTUwgPSBcIipcIjtcclxuICAgIHNwYW5FbGVtZW50LmlkID0gdGhpcy5zcGFuSUQ7XHJcbiAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHNwYW5FbGVtZW50KTtcclxuICB9XHJcblxyXG4gIC8qKiBSZW1vdmUgbyBtYXJjYWRvciBkZSBhc3RlcmlzY28gZG8gZWxlbWVudG8gPGxhYmVsPi4gKi9cclxuICBwcml2YXRlIHJlbW92ZU1hcmtlcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNwYW5JRCA9PT0gXCJcIikgeyByZXR1cm47IH1cclxuXHJcbiAgICBjb25zdCBzcGFuRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3BhbklEKTtcclxuICAgIGlmIChzcGFuRWxlbWVudCAhPT0gbnVsbCkgeyB0aGlzLl9yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHNwYW5FbGVtZW50KTsgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1672,6 +1672,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1672
1672
|
/**
|
|
1673
1673
|
* Diretiva que adiciona um asterisco vermelho (*) ao lado de um elemento <label>
|
|
1674
1674
|
* para indicar que o campo é obrigatório.
|
|
1675
|
+
*
|
|
1676
|
+
* ## Uso
|
|
1677
|
+
*
|
|
1678
|
+
* No seu template HTML, você pode usar a diretiva de duas maneiras:
|
|
1679
|
+
*
|
|
1680
|
+
* 1. Sem especificar o valor, onde o marcador será exibido por padrão:
|
|
1681
|
+
*
|
|
1682
|
+
* ```html
|
|
1683
|
+
* <label libRequired for="inputTeste" class="form-label">Pessoa</label>
|
|
1684
|
+
* ```
|
|
1685
|
+
*
|
|
1686
|
+
* 2. Especificando explicitamente o valor (true ou false):
|
|
1687
|
+
*
|
|
1688
|
+
* ```html
|
|
1689
|
+
* <label [libRequired]="true" for="inputTeste" class="form-label">Nome</label>
|
|
1690
|
+
* <label [libRequired]="false" for="inputTeste" class="form-label">Empresa</label>
|
|
1691
|
+
* ```
|
|
1692
|
+
*
|
|
1693
|
+
* ### Inputs
|
|
1694
|
+
*
|
|
1695
|
+
* - `libRequired`: boolean | string
|
|
1696
|
+
* - Determina se o asterisco de obrigatoriedade deve ser exibido.
|
|
1697
|
+
* - Aceita valores booleanos (`true` ou `false`) ou strings (`"true"` ou `"false"`).
|
|
1698
|
+
* - Padrão: `true`
|
|
1699
|
+
*
|
|
1700
|
+
* - `sisID`: string
|
|
1701
|
+
* - Identificador único para o elemento `<span>` criado.
|
|
1702
|
+
* - Útil para manipulação direta do DOM ou testes.
|
|
1675
1703
|
*/
|
|
1676
1704
|
class RequiredDirective {
|
|
1677
1705
|
/**
|
|
@@ -1689,48 +1717,55 @@ class RequiredDirective {
|
|
|
1689
1717
|
* Define se o asterisco de obrigatoriedade deve ser exibido.
|
|
1690
1718
|
* Se nenhum valor for especificado, o padrão é true.
|
|
1691
1719
|
*/
|
|
1692
|
-
set showMarker(value) { this._showMarker = value !== false; /* Qualquer valor diferente de false será tratado como true
|
|
1720
|
+
set showMarker(value) { this._showMarker = value !== false && value !== 'false'; /* Qualquer valor diferente de false será tratado como true*/ }
|
|
1693
1721
|
get showMarker() { return this._showMarker; }
|
|
1694
1722
|
ngOnInit() {
|
|
1695
1723
|
if (this.showMarker) {
|
|
1696
|
-
|
|
1697
|
-
spanElement.className = "text-danger";
|
|
1698
|
-
spanElement.innerHTML = "*";
|
|
1699
|
-
spanElement.id = this.spanID;
|
|
1700
|
-
this._renderer.appendChild(this._elementRef.nativeElement, spanElement);
|
|
1724
|
+
this.addMarker();
|
|
1701
1725
|
}
|
|
1702
1726
|
}
|
|
1703
1727
|
ngOnChanges(changes) {
|
|
1704
1728
|
if (changes["showMarker"]?.currentValue !== changes["showMarker"]?.previousValue && changes["showMarker"]?.previousValue !== undefined) {
|
|
1705
1729
|
if (this.showMarker) {
|
|
1706
|
-
|
|
1707
|
-
spanElement.className = "text-danger";
|
|
1708
|
-
spanElement.innerHTML = "*";
|
|
1709
|
-
spanElement.id = this.spanID;
|
|
1710
|
-
this._renderer.appendChild(this._elementRef.nativeElement, spanElement);
|
|
1730
|
+
this.addMarker();
|
|
1711
1731
|
}
|
|
1712
1732
|
else {
|
|
1713
|
-
|
|
1714
|
-
return;
|
|
1715
|
-
}
|
|
1716
|
-
const spanElement = document.getElementById(this.spanID);
|
|
1717
|
-
if (spanElement !== null) {
|
|
1718
|
-
this._renderer.removeChild(this._elementRef.nativeElement, spanElement);
|
|
1719
|
-
}
|
|
1733
|
+
this.removeMarker();
|
|
1720
1734
|
}
|
|
1721
1735
|
}
|
|
1722
1736
|
}
|
|
1737
|
+
/** Adiciona o marcador de asterisco ao elemento <label>. */
|
|
1738
|
+
addMarker() {
|
|
1739
|
+
if (document.getElementById(this.spanID)) {
|
|
1740
|
+
return;
|
|
1741
|
+
}
|
|
1742
|
+
const spanElement = document.createElement("span");
|
|
1743
|
+
spanElement.className = "text-danger";
|
|
1744
|
+
spanElement.innerHTML = "*";
|
|
1745
|
+
spanElement.id = this.spanID;
|
|
1746
|
+
this._renderer.appendChild(this._elementRef.nativeElement, spanElement);
|
|
1747
|
+
}
|
|
1748
|
+
/** Remove o marcador de asterisco do elemento <label>. */
|
|
1749
|
+
removeMarker() {
|
|
1750
|
+
if (this.spanID === "") {
|
|
1751
|
+
return;
|
|
1752
|
+
}
|
|
1753
|
+
const spanElement = document.getElementById(this.spanID);
|
|
1754
|
+
if (spanElement !== null) {
|
|
1755
|
+
this._renderer.removeChild(this._elementRef.nativeElement, spanElement);
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1723
1758
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RequiredDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1724
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RequiredDirective, selector: "label[
|
|
1759
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RequiredDirective, selector: "label[sisRequired]", inputs: { showMarker: ["sisRequired", "showMarker"], spanID: ["sisID", "spanID"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
1725
1760
|
}
|
|
1726
1761
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RequiredDirective, decorators: [{
|
|
1727
1762
|
type: Directive,
|
|
1728
1763
|
args: [{
|
|
1729
|
-
selector: "label[
|
|
1764
|
+
selector: "label[sisRequired]"
|
|
1730
1765
|
}]
|
|
1731
1766
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { showMarker: [{
|
|
1732
1767
|
type: Input,
|
|
1733
|
-
args: ["
|
|
1768
|
+
args: ["sisRequired"]
|
|
1734
1769
|
}], spanID: [{
|
|
1735
1770
|
type: Input,
|
|
1736
1771
|
args: ["sisID"]
|