@seniorsistemas/angular-components 19.9.13 → 19.9.14-develop-23365630
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/card/lib/card/card.component.d.ts +2 -0
- package/confirm-dialog/README.md +2 -0
- package/confirm-dialog/lib/confirm-dialog.model.d.ts +2 -0
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +1 -0
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +0 -1
- package/esm2022/card/lib/card/card.component.mjs +17 -3
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +3 -3
- package/esm2022/confirm-dialog/lib/confirm-dialog.model.mjs +1 -1
- package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +3 -3
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +12 -7
- package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -5
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-card.mjs +16 -2
- package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +11 -6
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +2 -4
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -117,7 +117,7 @@ export class TextAreaComponent {
|
|
|
117
117
|
useExisting: forwardRef(() => TextAreaComponent),
|
|
118
118
|
multi: true,
|
|
119
119
|
},
|
|
120
|
-
], viewQueries: [{ propertyName: "textAreaElement", first: true, predicate: ["textArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{
|
|
120
|
+
], viewQueries: [{ propertyName: "textAreaElement", first: true, predicate: ["textArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{background:#fbfafc;border-color:#dedce5;color:#c1c1cc;cursor:default}.textarea:focus-visible{outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SpeechRecognitionComponent, selector: "s-speech-recognition", inputs: ["textAreaElement", "keepContext", "speechRecognitionPlaceholder", "moreOptionsIconClass", "disabledSpeechRecognition"], outputs: ["recognizedText"] }] });
|
|
121
121
|
}
|
|
122
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
123
123
|
type: Component,
|
|
@@ -127,7 +127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
127
127
|
useExisting: forwardRef(() => TextAreaComponent),
|
|
128
128
|
multi: true,
|
|
129
129
|
},
|
|
130
|
-
], standalone: true, imports: [FormsModule, KeyFilter, NgStyle, SpeechRecognitionComponent], template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{
|
|
130
|
+
], standalone: true, imports: [FormsModule, KeyFilter, NgStyle, SpeechRecognitionComponent], template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [attr.required]=\"required ? '' : null\"\r\n [attr.aria-required]=\"required || null\"\r\n [attr.aria-invalid]=\"invalid || null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{background:#fbfafc;border-color:#dedce5;color:#c1c1cc;cursor:default}.textarea:focus-visible{outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"] }]
|
|
131
131
|
}], propDecorators: { textAreaElement: [{
|
|
132
132
|
type: ViewChild,
|
|
133
133
|
args: ['textArea', { read: ElementRef }]
|
|
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
152
152
|
}], readOnly: [{
|
|
153
153
|
type: Input
|
|
154
154
|
}] } });
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RyxPQUFPLEVBQW9CLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7O0FBRW5HOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBZUgsTUFBTSxPQUFPLGlCQUFpQjtJQUNULEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLFNBQVMsR0FBcUIsSUFBSSxDQUFDO0lBRTNDLFFBQVEsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzdDLFNBQVMsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FB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O2dCQVVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgS2V5RmlsdGVyUGF0dGVybiwgS2V5RmlsdGVyIH0gZnJvbSAncHJpbWVuZy9rZXlmaWx0ZXInO1xyXG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbic7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgw6FyZWEgZGUgdGV4dG8gY29tIHN1cG9ydGUgYSByZWNvbmhlY2ltZW50byBkZSB2b3osXHJcbiAqIGZpbHRybyBkZSB0ZWNsYXMsIGNvbXByaW1lbnRvIG3DoXhpbW8gZSBpbnRlZ3Jhw6fDo28gY29tIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAuXHJcbiAqIFJlbmRlcml6YSBjb25kaWNpb25hbG1lbnRlIG8gY29tcG9uZW50ZSBgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnRgIHF1YW5kb1xyXG4gKiBhIGZsYWcgYHNwZWVjaFJlY29nbml0aW9uYCBlc3TDoSBhdGl2YS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy10ZXh0YXJlYVxyXG4gKiAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaWNhb1wiXHJcbiAqICAgW3Jvd3NdPVwiNlwiXHJcbiAqICAgW21heExlbmd0aF09XCI1MDBcIlxyXG4gKiAgIHBsYWNlaG9sZGVyPVwiRGlnaXRlIGFxdWkuLi5cIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtdGV4dGFyZWEnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90ZXh0LWFyZWEuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRleHRBcmVhQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBLZXlGaWx0ZXIsIE5nU3R5bGUsIFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICAgIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB2YWx1ZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBfdGV4dEFyZWFFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3RleHRBcmVhJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgZ2V0IHRleHRBcmVhRWxlbWVudCgpOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEFyZWFFbGVtZW50IGFzIEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB0ZXh0QXJlYUVsZW1lbnQodmFsdWU6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcclxuICAgICAgICB0aGlzLl90ZXh0QXJlYUVsZW1lbnQgPSB2YWx1ZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIElkZW50aWZpY2Fkb3IgZG8gZWxlbWVudG8gYDx0ZXh0YXJlYT5gIG5vIERPTS4gQGRlZmF1bHQgJ3RleHRhcmVhLXtyYW5kb219JyAqL1xyXG4gICAgQElucHV0KCkgaW5wdXRJZCA9IGB0ZXh0YXJlYS0ke01hdGgucmFuZG9tKCl9YDtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBkZSBsaW5oYXMgdmlzw612ZWlzIG5vIHRleHRhcmVhLiBAZGVmYXVsdCA1ICovXHJcbiAgICBASW5wdXQoKSByb3dzID0gNTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgbyBib3TDo28gZGUgcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb24gPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdHJvIGRlIHRlY2xhcyBhY2VpdGFzLCB1c2FuZG8gcGFkcsOjbyBvdSBleHByZXNzw6NvIHJlZ3VsYXIuICovXHJcbiAgICBASW5wdXQoKSBrZXlGaWx0ZXI6IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBtYW50w6ltIG8gY29udGV4dG8gYW8gcmVpbmljaWFyIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkga2VlcENvbnRleHQgPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUGxhY2Vob2xkZXIgZXhpYmlkbyBkdXJhbnRlIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCAnJyAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb25QbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBhY2VpdG9zLiBAZGVmYXVsdCBudWxsIChpbGltaXRhZG8pICovXHJcbiAgICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIHF1YW5kbyBvIGNhbXBvIGVzdMOhIHZhemlvLiAqL1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBwcml2YXRlIF9pbnB1dFN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge1xyXG4gICAgICAgIHJlc2l6ZTogJ3ZlcnRpY2FsJyxcclxuICAgIH07XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVzdGlsb3MgaW5saW5lIGFwbGljYWRvcyBhbyBlbGVtZW50byBgPHRleHRhcmVhPmAgaW50ZXJuby4gQGRlZmF1bHQgYHsgcmVzaXplOiAndmVydGljYWwnIH1gICovXHJcbiAgICBASW5wdXQoKSBnZXQgaW5wdXRTdHlsZSgpOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRTdHlsZTtcclxuICAgIH1cclxuICAgIHNldCBpbnB1dFN0eWxlKHZhbHVlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5faW5wdXRTdHlsZSA9IHtcclxuICAgICAgICAgICAgLi4udmFsdWUsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuX2lucHV0U3R5bGUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29sb2NhIG8gdGV4dGFyZWEgZW0gbW9kbyBzb21lbnRlIGxlaXR1cmEuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZChzKSBkbyhzKSBlbGVtZW50byhzKSBxdWUgZGVzY3JldmVtIG8gY2FtcG8gKGV4LjogdGV4dG8gZGUgYWp1ZGEpLiBFbmNhbWluaGFkbyBjb21vIGBhcmlhLWRlc2NyaWJlZGJ5YCBhbyBgPHRleHRhcmVhPmAuIEBkZWZhdWx0IG51bGwgKi9cclxuICAgIGFyaWFEZXNjcmliZWRCeSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG5cclxuICAgIHJlbmRlclRleHRBcmVhID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBvIGNvbnRyb2wgZG8gZm9ybXVsw6FyaW8gcG9zc3VpIGBWYWxpZGF0b3JzLnJlcXVpcmVkYC4gVXNhZG8gZW0gYHJlcXVpcmVkYCBlIGBhcmlhLXJlcXVpcmVkYC4gKi9cclxuICAgIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIG8gY29udHJvbCBkbyBmb3JtdWzDoXJpbyBlc3TDoSBpbnbDoWxpZG8uIFVzYWRvIGVtIGBhcmlhLWludmFsaWRgLiAqL1xyXG4gICAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmludmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlY29nbml6ZWRUZXh0KHJlY29nbml6ZWRUZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnNldFZhbHVlKHJlY29nbml6ZWRUZXh0KTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGtleUZpbHRlcikge1xyXG4gICAgPHRleHRhcmVhXHJcbiAgICAgICAgI3RleHRBcmVhXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYVwiXHJcbiAgICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5RmlsdGVyXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICcnIDogbnVsbFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCB8fCBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaW52YWxpZCB8fCBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSgpXCJcclxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnJ1wiXHJcbiAgICA+PC90ZXh0YXJlYT5cclxufVxyXG5cclxuQGlmICgha2V5RmlsdGVyKSB7XHJcbiAgICA8dGV4dGFyZWFcclxuICAgICAgICAjdGV4dEFyZWFcclxuICAgICAgICBjbGFzcz1cInRleHRhcmVhXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxyXG4gICAgICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkID8gJycgOiBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkIHx8IG51bGxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5KClcIlxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRWYWx1ZSgkZXZlbnQpXCJcclxuICAgID48L3RleHRhcmVhPlxyXG59XHJcblxyXG5AaWYgKHNwZWVjaFJlY29nbml0aW9uICYmIHJlbmRlclRleHRBcmVhKSB7XHJcbiAgICA8cy1zcGVlY2gtcmVjb2duaXRpb25cclxuICAgICAgICBbdGV4dEFyZWFFbGVtZW50XT1cInRleHRBcmVhRWxlbWVudC5uYXRpdmVFbGVtZW50XCJcclxuICAgICAgICBba2VlcENvbnRleHRdPVwia2VlcENvbnRleHRcIlxyXG4gICAgICAgIFtzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXT1cInNwZWVjaFJlY29nbml0aW9uUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uXT1cImRpc2FibGVkXCJcclxuICAgICAgICAocmVjb2duaXplZFRleHQpPVwiaGFuZGxlUmVjb2duaXplZFRleHQoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG5cclxufVxyXG4iXX0=
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RyxPQUFPLEVBQW9CLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7O0FBRW5HOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBZUgsTUFBTSxPQUFPLGlCQUFpQjtJQUNULEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLFNBQVMsR0FBcUIsSUFBSSxDQUFDO0lBRTNDLFFBQVEsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzdDLFNBQVMsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FB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O2dCQVVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgS2V5RmlsdGVyUGF0dGVybiwgS2V5RmlsdGVyIH0gZnJvbSAncHJpbWVuZy9rZXlmaWx0ZXInO1xyXG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbic7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgw6FyZWEgZGUgdGV4dG8gY29tIHN1cG9ydGUgYSByZWNvbmhlY2ltZW50byBkZSB2b3osXHJcbiAqIGZpbHRybyBkZSB0ZWNsYXMsIGNvbXByaW1lbnRvIG3DoXhpbW8gZSBpbnRlZ3Jhw6fDo28gY29tIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAuXHJcbiAqIFJlbmRlcml6YSBjb25kaWNpb25hbG1lbnRlIG8gY29tcG9uZW50ZSBgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnRgIHF1YW5kb1xyXG4gKiBhIGZsYWcgYHNwZWVjaFJlY29nbml0aW9uYCBlc3TDoSBhdGl2YS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy10ZXh0YXJlYVxyXG4gKiAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaWNhb1wiXHJcbiAqICAgW3Jvd3NdPVwiNlwiXHJcbiAqICAgW21heExlbmd0aF09XCI1MDBcIlxyXG4gKiAgIHBsYWNlaG9sZGVyPVwiRGlnaXRlIGFxdWkuLi5cIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtdGV4dGFyZWEnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90ZXh0LWFyZWEuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRleHRBcmVhQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBLZXlGaWx0ZXIsIE5nU3R5bGUsIFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICAgIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB2YWx1ZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBfdGV4dEFyZWFFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3RleHRBcmVhJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgZ2V0IHRleHRBcmVhRWxlbWVudCgpOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEFyZWFFbGVtZW50IGFzIEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB0ZXh0QXJlYUVsZW1lbnQodmFsdWU6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcclxuICAgICAgICB0aGlzLl90ZXh0QXJlYUVsZW1lbnQgPSB2YWx1ZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIElkZW50aWZpY2Fkb3IgZG8gZWxlbWVudG8gYDx0ZXh0YXJlYT5gIG5vIERPTS4gQGRlZmF1bHQgJ3RleHRhcmVhLXtyYW5kb219JyAqL1xyXG4gICAgQElucHV0KCkgaW5wdXRJZCA9IGB0ZXh0YXJlYS0ke01hdGgucmFuZG9tKCl9YDtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBkZSBsaW5oYXMgdmlzw612ZWlzIG5vIHRleHRhcmVhLiBAZGVmYXVsdCA1ICovXHJcbiAgICBASW5wdXQoKSByb3dzID0gNTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgbyBib3TDo28gZGUgcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb24gPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdHJvIGRlIHRlY2xhcyBhY2VpdGFzLCB1c2FuZG8gcGFkcsOjbyBvdSBleHByZXNzw6NvIHJlZ3VsYXIuICovXHJcbiAgICBASW5wdXQoKSBrZXlGaWx0ZXI6IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBtYW50w6ltIG8gY29udGV4dG8gYW8gcmVpbmljaWFyIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkga2VlcENvbnRleHQgPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUGxhY2Vob2xkZXIgZXhpYmlkbyBkdXJhbnRlIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCAnJyAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb25QbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBhY2VpdG9zLiBAZGVmYXVsdCBudWxsIChpbGltaXRhZG8pICovXHJcbiAgICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIHF1YW5kbyBvIGNhbXBvIGVzdMOhIHZhemlvLiAqL1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBwcml2YXRlIF9pbnB1dFN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge1xyXG4gICAgICAgIHJlc2l6ZTogJ3ZlcnRpY2FsJyxcclxuICAgIH07XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVzdGlsb3MgaW5saW5lIGFwbGljYWRvcyBhbyBlbGVtZW50byBgPHRleHRhcmVhPmAgaW50ZXJuby4gQGRlZmF1bHQgYHsgcmVzaXplOiAndmVydGljYWwnIH1gICovXHJcbiAgICBASW5wdXQoKSBnZXQgaW5wdXRTdHlsZSgpOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRTdHlsZTtcclxuICAgIH1cclxuICAgIHNldCBpbnB1dFN0eWxlKHZhbHVlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5faW5wdXRTdHlsZSA9IHtcclxuICAgICAgICAgICAgLi4udmFsdWUsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuX2lucHV0U3R5bGUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29sb2NhIG8gdGV4dGFyZWEgZW0gbW9kbyBzb21lbnRlIGxlaXR1cmEuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZChzKSBkbyhzKSBlbGVtZW50byhzKSBxdWUgZGVzY3JldmVtIG8gY2FtcG8gKGV4LjogdGV4dG8gZGUgYWp1ZGEpLiBFbmNhbWluaGFkbyBjb21vIGBhcmlhLWRlc2NyaWJlZGJ5YCBhbyBgPHRleHRhcmVhPmAuIEBkZWZhdWx0IG51bGwgKi9cclxuICAgIGFyaWFEZXNjcmliZWRCeSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG5cclxuICAgIHJlbmRlclRleHRBcmVhID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBvIGNvbnRyb2wgZG8gZm9ybXVsw6FyaW8gcG9zc3VpIGBWYWxpZGF0b3JzLnJlcXVpcmVkYC4gVXNhZG8gZW0gYHJlcXVpcmVkYCBlIGBhcmlhLXJlcXVpcmVkYC4gKi9cclxuICAgIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIG8gY29udHJvbCBkbyBmb3JtdWzDoXJpbyBlc3TDoSBpbnbDoWxpZG8uIFVzYWRvIGVtIGBhcmlhLWludmFsaWRgLiAqL1xyXG4gICAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmludmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlY29nbml6ZWRUZXh0KHJlY29nbml6ZWRUZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnNldFZhbHVlKHJlY29nbml6ZWRUZXh0KTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGtleUZpbHRlcikge1xyXG4gICAgPHRleHRhcmVhXHJcbiAgICAgICAgI3RleHRBcmVhXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYVwiXHJcbiAgICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5RmlsdGVyXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICcnIDogbnVsbFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCB8fCBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaW52YWxpZCB8fCBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSgpXCJcclxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnJ1wiXHJcbiAgICA+PC90ZXh0YXJlYT5cclxufVxyXG5cclxuQGlmICgha2V5RmlsdGVyKSB7XHJcbiAgICA8dGV4dGFyZWFcclxuICAgICAgICAjdGV4dEFyZWFcclxuICAgICAgICBjbGFzcz1cInRleHRhcmVhXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxyXG4gICAgICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkID8gJycgOiBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkIHx8IG51bGxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5KClcIlxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRWYWx1ZSgkZXZlbnQpXCJcclxuICAgID48L3RleHRhcmVhPlxyXG59XHJcblxyXG5AaWYgKHNwZWVjaFJlY29nbml0aW9uICYmIHJlbmRlclRleHRBcmVhKSB7XHJcbiAgICA8cy1zcGVlY2gtcmVjb2duaXRpb25cclxuICAgICAgICBbdGV4dEFyZWFFbGVtZW50XT1cInRleHRBcmVhRWxlbWVudC5uYXRpdmVFbGVtZW50XCJcclxuICAgICAgICBba2VlcENvbnRleHRdPVwia2VlcENvbnRleHRcIlxyXG4gICAgICAgIFtzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXT1cInNwZWVjaFJlY29nbml0aW9uUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uXT1cImRpc2FibGVkXCJcclxuICAgICAgICAocmVjb2duaXplZFRleHQpPVwiaGFuZGxlUmVjb2duaXplZFRleHQoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG5cclxufVxyXG4iXX0=
|
|
@@ -42,6 +42,20 @@ class CardComponent {
|
|
|
42
42
|
const hasHeaderAttributes = this.title || this.subtitle || this.icon;
|
|
43
43
|
return headerTemplate || hasHeaderAttributes;
|
|
44
44
|
}
|
|
45
|
+
onClick(event) {
|
|
46
|
+
if (this.clickable) {
|
|
47
|
+
this.clicked.emit(event);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
onKeydown(event) {
|
|
51
|
+
if (!this.clickable || event.target !== event.currentTarget) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (event.key === ' ') {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
}
|
|
57
|
+
this.clicked.emit(event);
|
|
58
|
+
}
|
|
45
59
|
async ngAfterContentInit() {
|
|
46
60
|
await this._setShowBanner();
|
|
47
61
|
this._setTemplates();
|
|
@@ -83,11 +97,11 @@ class CardComponent {
|
|
|
83
97
|
});
|
|
84
98
|
}
|
|
85
99
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "s-card", inputs: { bannerImage: "bannerImage", fullWidth: "fullWidth", clickable: "clickable", title: "title", subtitle: "subtitle", icon: "icon" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div\r\n class=\"inline-flex flex-col bg-grayscale-0 rounded-medium shadow-[0px_1px_5px_0px_#00000040] overflow-hidden\"\r\n [class.w-full]=\"fullWidth\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [ngClass]=\"{\r\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': clickable\r\n }\"\r\n (click)=\"
|
|
100
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "s-card", inputs: { bannerImage: "bannerImage", fullWidth: "fullWidth", clickable: "clickable", title: "title", subtitle: "subtitle", icon: "icon" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div\r\n class=\"inline-flex flex-col bg-grayscale-0 rounded-medium shadow-[0px_1px_5px_0px_#00000040] overflow-hidden\"\r\n [class.w-full]=\"fullWidth\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [ngClass]=\"{\r\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': clickable\r\n }\"\r\n (click)=\"onClick($event)\"\r\n (keydown.enter)=\"onKeydown($event)\"\r\n (keydown.space)=\"onKeydown($event)\"\r\n>\r\n @if (showBanner) {\r\n <div\r\n class=\"bg-no-repeat bg-cover h-[150px] w-full\"\r\n [ngStyle]=\"{ 'background-image': 'url(' + bannerImage + ')' }\"\r\n ></div>\r\n }\r\n\r\n <!-- @if (hasCustomTemplates) {\r\n @if (headerTemplate) {\r\n <div class=\"header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (bodyTemplate) {\r\n <div class=\"body\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (footerTemplate) {\r\n <div class=\"footer\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n} @else {\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n } -->\r\n\r\n @if (hasHeader) {\r\n <div class=\"py-4 px-3\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n @if (!headerTemplate) {\r\n <div class=\"flex gap-3\">\r\n @if (icon) {\r\n <div class=\"rounded-[50%] bg-grayscale-20 w-[3em] flex items-center justify-center min-h-[3em]\">\r\n <i [class]=\"icon\"></i>\r\n </div>\r\n }\r\n <div>\r\n @if (title) {\r\n <div class=\"text-grayscale-90 text-sm font-bold\">\r\n {{ title }}\r\n </div>\r\n }\r\n @if (subtitle) {\r\n <div class=\"text-grayscale-60 text-sm font-normal\">\r\n {{ subtitle }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"p-4\" [class.border-t]=\"hasHeader\" [class.border-t-grayscale-30]=\"hasHeader\">\r\n @if (bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n\r\n @if (footerTemplate) {\r\n <div class=\"p-4 border-t border-t-grayscale-30\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
87
101
|
}
|
|
88
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardComponent, decorators: [{
|
|
89
103
|
type: Component,
|
|
90
|
-
args: [{ selector: 's-card', standalone: true, imports: [NgClass, NgStyle, NgTemplateOutlet], template: "<div\r\n class=\"inline-flex flex-col bg-grayscale-0 rounded-medium shadow-[0px_1px_5px_0px_#00000040] overflow-hidden\"\r\n [class.w-full]=\"fullWidth\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [ngClass]=\"{\r\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': clickable\r\n }\"\r\n (click)=\"
|
|
104
|
+
args: [{ selector: 's-card', standalone: true, imports: [NgClass, NgStyle, NgTemplateOutlet], template: "<div\r\n class=\"inline-flex flex-col bg-grayscale-0 rounded-medium shadow-[0px_1px_5px_0px_#00000040] overflow-hidden\"\r\n [class.w-full]=\"fullWidth\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [ngClass]=\"{\r\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': clickable\r\n }\"\r\n (click)=\"onClick($event)\"\r\n (keydown.enter)=\"onKeydown($event)\"\r\n (keydown.space)=\"onKeydown($event)\"\r\n>\r\n @if (showBanner) {\r\n <div\r\n class=\"bg-no-repeat bg-cover h-[150px] w-full\"\r\n [ngStyle]=\"{ 'background-image': 'url(' + bannerImage + ')' }\"\r\n ></div>\r\n }\r\n\r\n <!-- @if (hasCustomTemplates) {\r\n @if (headerTemplate) {\r\n <div class=\"header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (bodyTemplate) {\r\n <div class=\"body\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (footerTemplate) {\r\n <div class=\"footer\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n} @else {\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n } -->\r\n\r\n @if (hasHeader) {\r\n <div class=\"py-4 px-3\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n @if (!headerTemplate) {\r\n <div class=\"flex gap-3\">\r\n @if (icon) {\r\n <div class=\"rounded-[50%] bg-grayscale-20 w-[3em] flex items-center justify-center min-h-[3em]\">\r\n <i [class]=\"icon\"></i>\r\n </div>\r\n }\r\n <div>\r\n @if (title) {\r\n <div class=\"text-grayscale-90 text-sm font-bold\">\r\n {{ title }}\r\n </div>\r\n }\r\n @if (subtitle) {\r\n <div class=\"text-grayscale-60 text-sm font-normal\">\r\n {{ subtitle }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"p-4\" [class.border-t]=\"hasHeader\" [class.border-t-grayscale-30]=\"hasHeader\">\r\n @if (bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n\r\n @if (footerTemplate) {\r\n <div class=\"p-4 border-t border-t-grayscale-30\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n" }]
|
|
91
105
|
}], propDecorators: { bannerImage: [{
|
|
92
106
|
type: Input
|
|
93
107
|
}], fullWidth: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-card.mjs","sources":["../../projects/angular-components/card/src/lib/card/card.component.ts","../../projects/angular-components/card/src/lib/card/card.component.html","../../projects/angular-components/card/src/lib/card/card.module.ts","../../projects/angular-components/card/src/seniorsistemas-angular-components-card.ts"],"sourcesContent":["import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, TemplateRef } from '@angular/core';\r\n\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\n\r\n/**\r\n * @description Componente de cartão com suporte a banner, cabeçalho (título, subtítulo e ícone)\r\n * e templates customizáveis para cabeçalho, corpo e rodapé via `TemplateDirective`.\r\n *\r\n * @example\r\n * ```html\r\n * <s-card title=\"Título\" subtitle=\"Subtítulo\">\r\n * <ng-template sTemplate type=\"body\">Conteúdo</ng-template>\r\n * </s-card>\r\n * ```\r\n *\r\n * @category Structure\r\n */\r\n@Component({\r\n selector: 's-card',\r\n templateUrl: './card.component.html',\r\n standalone: true,\r\n imports: [NgClass, NgStyle, NgTemplateOutlet],\r\n})\r\nexport class CardComponent implements AfterContentInit {\r\n /** @description URL da imagem exibida como banner no topo do card. */\r\n @Input()\r\n public bannerImage?: string;\r\n\r\n /** @description Faz o card ocupar 100% da largura disponível. @default false */\r\n @Input()\r\n public fullWidth = false;\r\n\r\n /** @description Torna o card interativo, habilitando foco por teclado e clique no elemento raiz. @default false */\r\n @Input()\r\n public clickable = false;\r\n\r\n /** @description Emitido quando o usuário clica ou pressiona Enter/Espaço no card (requer `clickable = true`). */\r\n @Output()\r\n public clicked = new EventEmitter<MouseEvent>();\r\n\r\n /** @description Título exibido no cabeçalho do card. @default '' */\r\n @Input() title = '';\r\n\r\n /** @description Subtítulo exibido abaixo do título. @default '' */\r\n @Input() subtitle = '';\r\n\r\n /** @description Classe do ícone exibido no cabeçalho. @default '' */\r\n @Input() icon = '';\r\n\r\n public showBanner = false;\r\n\r\n @ContentChildren(TemplateDirective)\r\n public templates?: QueryList<TemplateDirective>;\r\n\r\n public hasCustomTemplates = false;\r\n public headerTemplate?: TemplateRef<unknown>;\r\n public bodyTemplate?: TemplateRef<unknown>;\r\n public footerTemplate?: TemplateRef<unknown>;\r\n\r\n public get hasHeader() {\r\n const headerTemplate = !!this.headerTemplate;\r\n const hasHeaderAttributes = this.title || this.subtitle || this.icon;\r\n return headerTemplate || hasHeaderAttributes;\r\n }\r\n\r\n public async ngAfterContentInit(): Promise<void> {\r\n await this._setShowBanner();\r\n this._setTemplates();\r\n }\r\n\r\n private _getHeaderTemplate(): TemplateRef<unknown> | undefined {\r\n return this._getCustomTemplate('header');\r\n }\r\n\r\n private _getBodyTemplate(): TemplateRef<unknown> | undefined {\r\n return this._getCustomTemplate('body');\r\n }\r\n\r\n private _getFooterTemplate(): TemplateRef<unknown> | undefined {\r\n return this._getCustomTemplate('footer');\r\n }\r\n\r\n private _getCustomTemplate(type: string): TemplateRef<unknown> | undefined {\r\n return this.templates?.find((template: TemplateDirective) => template.type === type)?.template;\r\n }\r\n\r\n private _setTemplates(): void {\r\n this.headerTemplate = this._getHeaderTemplate();\r\n this.bodyTemplate = this._getBodyTemplate();\r\n this.footerTemplate = this._getFooterTemplate();\r\n\r\n this.hasCustomTemplates = !!(this.headerTemplate || this.bodyTemplate || this.footerTemplate);\r\n }\r\n\r\n private _setShowBanner() {\r\n return new Promise<void>((resolve) => {\r\n if (!this.bannerImage) {\r\n resolve();\r\n return;\r\n }\r\n\r\n const img = new Image();\r\n img.src = this.bannerImage;\r\n img.onload = () => {\r\n this.showBanner = true;\r\n resolve();\r\n };\r\n\r\n img.onerror = () => {\r\n this.showBanner = false;\r\n resolve();\r\n };\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"inline-flex flex-col bg-grayscale-0 rounded-medium shadow-[0px_1px_5px_0px_#00000040] overflow-hidden\"\r\n [class.w-full]=\"fullWidth\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [ngClass]=\"{\r\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': clickable\r\n }\"\r\n (click)=\"clickable && clicked.emit($event)\"\r\n (keydown.enter)=\"clickable && clicked.emit($any($event))\"\r\n (keydown.space)=\"clickable && clicked.emit($any($event)); $event.preventDefault()\"\r\n>\r\n @if (showBanner) {\r\n <div\r\n class=\"bg-no-repeat bg-cover h-[150px] w-full\"\r\n [ngStyle]=\"{ 'background-image': 'url(' + bannerImage + ')' }\"\r\n ></div>\r\n }\r\n\r\n <!-- @if (hasCustomTemplates) {\r\n @if (headerTemplate) {\r\n <div class=\"header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (bodyTemplate) {\r\n <div class=\"body\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (footerTemplate) {\r\n <div class=\"footer\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n} @else {\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n } -->\r\n\r\n @if (hasHeader) {\r\n <div class=\"py-4 px-3\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n @if (!headerTemplate) {\r\n <div class=\"flex gap-3\">\r\n @if (icon) {\r\n <div class=\"rounded-[50%] bg-grayscale-20 w-[3em] flex items-center justify-center min-h-[3em]\">\r\n <i [class]=\"icon\"></i>\r\n </div>\r\n }\r\n <div>\r\n @if (title) {\r\n <div class=\"text-grayscale-90 text-sm font-bold\">\r\n {{ title }}\r\n </div>\r\n }\r\n @if (subtitle) {\r\n <div class=\"text-grayscale-60 text-sm font-normal\">\r\n {{ subtitle }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"p-4\" [class.border-t]=\"hasHeader\" [class.border-t-grayscale-30]=\"hasHeader\">\r\n @if (bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n\r\n @if (footerTemplate) {\r\n <div class=\"p-4 border-t border-t-grayscale-30\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CardComponent } from './card.component';\r\n\r\n@NgModule({\r\n imports: [CardComponent],\r\n exports: [CardComponent],\r\n})\r\nexport class CardModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-card.mjs","sources":["../../projects/angular-components/card/src/lib/card/card.component.ts","../../projects/angular-components/card/src/lib/card/card.component.html","../../projects/angular-components/card/src/lib/card/card.module.ts","../../projects/angular-components/card/src/seniorsistemas-angular-components-card.ts"],"sourcesContent":["import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, TemplateRef } from '@angular/core';\r\n\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\n\r\n/**\r\n * @description Componente de cartão com suporte a banner, cabeçalho (título, subtítulo e ícone)\r\n * e templates customizáveis para cabeçalho, corpo e rodapé via `TemplateDirective`.\r\n *\r\n * @example\r\n * ```html\r\n * <s-card title=\"Título\" subtitle=\"Subtítulo\">\r\n * <ng-template sTemplate type=\"body\">Conteúdo</ng-template>\r\n * </s-card>\r\n * ```\r\n *\r\n * @category Structure\r\n */\r\n@Component({\r\n selector: 's-card',\r\n templateUrl: './card.component.html',\r\n standalone: true,\r\n imports: [NgClass, NgStyle, NgTemplateOutlet],\r\n})\r\nexport class CardComponent implements AfterContentInit {\r\n /** @description URL da imagem exibida como banner no topo do card. */\r\n @Input()\r\n public bannerImage?: string;\r\n\r\n /** @description Faz o card ocupar 100% da largura disponível. @default false */\r\n @Input()\r\n public fullWidth = false;\r\n\r\n /** @description Torna o card interativo, habilitando foco por teclado e clique no elemento raiz. @default false */\r\n @Input()\r\n public clickable = false;\r\n\r\n /** @description Emitido quando o usuário clica ou pressiona Enter/Espaço no card (requer `clickable = true`). */\r\n @Output()\r\n public clicked = new EventEmitter<MouseEvent>();\r\n\r\n /** @description Título exibido no cabeçalho do card. @default '' */\r\n @Input() title = '';\r\n\r\n /** @description Subtítulo exibido abaixo do título. @default '' */\r\n @Input() subtitle = '';\r\n\r\n /** @description Classe do ícone exibido no cabeçalho. @default '' */\r\n @Input() icon = '';\r\n\r\n public showBanner = false;\r\n\r\n @ContentChildren(TemplateDirective)\r\n public templates?: QueryList<TemplateDirective>;\r\n\r\n public hasCustomTemplates = false;\r\n public headerTemplate?: TemplateRef<unknown>;\r\n public bodyTemplate?: TemplateRef<unknown>;\r\n public footerTemplate?: TemplateRef<unknown>;\r\n\r\n public get hasHeader() {\r\n const headerTemplate = !!this.headerTemplate;\r\n const hasHeaderAttributes = this.title || this.subtitle || this.icon;\r\n return headerTemplate || hasHeaderAttributes;\r\n }\r\n\r\n public onClick(event: MouseEvent): void {\r\n if (this.clickable) {\r\n this.clicked.emit(event);\r\n }\r\n }\r\n\r\n public onKeydown(event: Event): void {\r\n if (!this.clickable || event.target !== event.currentTarget) {\r\n return;\r\n }\r\n\r\n if ((event as KeyboardEvent).key === ' ') {\r\n event.preventDefault();\r\n }\r\n this.clicked.emit(event as unknown as MouseEvent);\r\n }\r\n\r\n public async ngAfterContentInit(): Promise<void> {\r\n await this._setShowBanner();\r\n this._setTemplates();\r\n }\r\n\r\n private _getHeaderTemplate(): TemplateRef<unknown> | undefined {\r\n return this._getCustomTemplate('header');\r\n }\r\n\r\n private _getBodyTemplate(): TemplateRef<unknown> | undefined {\r\n return this._getCustomTemplate('body');\r\n }\r\n\r\n private _getFooterTemplate(): TemplateRef<unknown> | undefined {\r\n return this._getCustomTemplate('footer');\r\n }\r\n\r\n private _getCustomTemplate(type: string): TemplateRef<unknown> | undefined {\r\n return this.templates?.find((template: TemplateDirective) => template.type === type)?.template;\r\n }\r\n\r\n private _setTemplates(): void {\r\n this.headerTemplate = this._getHeaderTemplate();\r\n this.bodyTemplate = this._getBodyTemplate();\r\n this.footerTemplate = this._getFooterTemplate();\r\n\r\n this.hasCustomTemplates = !!(this.headerTemplate || this.bodyTemplate || this.footerTemplate);\r\n }\r\n\r\n private _setShowBanner() {\r\n return new Promise<void>((resolve) => {\r\n if (!this.bannerImage) {\r\n resolve();\r\n return;\r\n }\r\n\r\n const img = new Image();\r\n img.src = this.bannerImage;\r\n img.onload = () => {\r\n this.showBanner = true;\r\n resolve();\r\n };\r\n\r\n img.onerror = () => {\r\n this.showBanner = false;\r\n resolve();\r\n };\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"inline-flex flex-col bg-grayscale-0 rounded-medium shadow-[0px_1px_5px_0px_#00000040] overflow-hidden\"\r\n [class.w-full]=\"fullWidth\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [ngClass]=\"{\r\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': clickable\r\n }\"\r\n (click)=\"onClick($event)\"\r\n (keydown.enter)=\"onKeydown($event)\"\r\n (keydown.space)=\"onKeydown($event)\"\r\n>\r\n @if (showBanner) {\r\n <div\r\n class=\"bg-no-repeat bg-cover h-[150px] w-full\"\r\n [ngStyle]=\"{ 'background-image': 'url(' + bannerImage + ')' }\"\r\n ></div>\r\n }\r\n\r\n <!-- @if (hasCustomTemplates) {\r\n @if (headerTemplate) {\r\n <div class=\"header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (bodyTemplate) {\r\n <div class=\"body\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n }\r\n @if (footerTemplate) {\r\n <div class=\"footer\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n} @else {\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n } -->\r\n\r\n @if (hasHeader) {\r\n <div class=\"py-4 px-3\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n @if (!headerTemplate) {\r\n <div class=\"flex gap-3\">\r\n @if (icon) {\r\n <div class=\"rounded-[50%] bg-grayscale-20 w-[3em] flex items-center justify-center min-h-[3em]\">\r\n <i [class]=\"icon\"></i>\r\n </div>\r\n }\r\n <div>\r\n @if (title) {\r\n <div class=\"text-grayscale-90 text-sm font-bold\">\r\n {{ title }}\r\n </div>\r\n }\r\n @if (subtitle) {\r\n <div class=\"text-grayscale-60 text-sm font-normal\">\r\n {{ subtitle }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"p-4\" [class.border-t]=\"hasHeader\" [class.border-t-grayscale-30]=\"hasHeader\">\r\n @if (bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n\r\n @if (footerTemplate) {\r\n <div class=\"p-4 border-t border-t-grayscale-30\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CardComponent } from './card.component';\r\n\r\n@NgModule({\r\n imports: [CardComponent],\r\n exports: [CardComponent],\r\n})\r\nexport class CardModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -302,7 +302,7 @@ class ChipsComponent {
|
|
|
302
302
|
useExisting: forwardRef(() => ChipsComponent),
|
|
303
303
|
multi: true,
|
|
304
304
|
},
|
|
305
|
-
], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border
|
|
305
|
+
], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-offset-[-2px] focus-within:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [class.border-grayscale-30]=\"!disabled\"\n [class.bg-grayscale-0]=\"!disabled\"\n [class.border-grayscale-20]=\"disabled\"\n [class.bg-grayscale-5]=\"disabled\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"], dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip", "showRemove", "removeIconClass", "hidePointerEvents"], outputs: ["clickRemove", "chipClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }] });
|
|
306
306
|
}
|
|
307
307
|
__decorate([
|
|
308
308
|
CheckDisabled()
|
|
@@ -318,7 +318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
318
318
|
useExisting: forwardRef(() => ChipsComponent),
|
|
319
319
|
multi: true,
|
|
320
320
|
},
|
|
321
|
-
], standalone: true, imports: [ChipItemComponent, FormsModule, KeyFilter], template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border
|
|
321
|
+
], standalone: true, imports: [ChipItemComponent, FormsModule, KeyFilter], template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-offset-[-2px] focus-within:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [class.border-grayscale-30]=\"!disabled\"\n [class.bg-grayscale-0]=\"!disabled\"\n [class.border-grayscale-20]=\"disabled\"\n [class.bg-grayscale-5]=\"disabled\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"] }]
|
|
322
322
|
}], propDecorators: { disabled: [{
|
|
323
323
|
type: Input
|
|
324
324
|
}], field: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-chips.mjs","sources":["../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.ts","../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.html","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.ts","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.html","../../projects/angular-components/chips/src/lib/chips/chips.module.ts","../../projects/angular-components/chips/src/seniorsistemas-angular-components-chips.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, input, Input, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n/**\r\n * @description Componente interno de item individual de chip, utilizado pelo {@link ChipsComponent}.\r\n * Responsável pela renderização do texto, tooltip e botão de remoção de cada chip.\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chip-item',\r\n templateUrl: './chip-item.component.html',\r\n standalone: true,\r\n imports: [TooltipDirective, NgTemplateOutlet, NgClass, TranslateModule],\r\n})\r\nexport class ChipItemComponent {\r\n /** @description Conteúdo a ser exibido no chip (string ou objeto). Campo obrigatório. */\r\n @Input({ required: true }) dataRender!: string | Object;\r\n /** @description Chave do objeto usada para exibição quando `dataRender` for um objeto. */\r\n @Input() objectField: string | undefined;\r\n /** @description Desabilita os eventos de clique do chip. Campo obrigatório. */\r\n @Input({ required: true }) disabled = false;\r\n /** @description Template personalizado para renderização interna do chip. */\r\n @Input() templateRef!: TemplateRef<any> | undefined;\r\n /** @description Índice do chip na lista, usado ao emitir o evento de remoção. Campo obrigatório. */\r\n @Input({ required: true }) itemIndex = -1;\r\n /** @description Habilita o tooltip para chips com texto truncado. Campo obrigatório. */\r\n @Input({ required: true }) showTooltip = true;\r\n /** @description Limite de caracteres exibidos antes de truncar o texto do chip.*/\r\n @Input() maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Controla a exibição do botão de remoção do chip. */\r\n showRemove = input(true);\r\n\r\n /** @description Classe do ícone do botão de remoção do chip. @default 'fas fa-times' */\r\n removeIconClass = input('fas fa-times');\r\n\r\n /** @description Controla a exibição de eventos de ponteiro no chip. @default false */\r\n hidePointerEvents = input(false);\r\n\r\n /** @description Emitido ao clicar no botão de remoção do chip. */\r\n @Output() clickRemove = new EventEmitter<{ itemIndex: number; event: Event }>();\r\n /** @description Emitido ao clicar sobre o chip (fora do botão de remoção). */\r\n @Output() chipClicked = new EventEmitter<{ event: Event; data: string | Object }>();\r\n\r\n @ViewChild('chipElement')\r\n private readonly chipElement?: ElementRef<HTMLElement>;\r\n\r\n @CheckDisabled()\r\n clickedRemove($event: Event) {\r\n if (!this.showRemove()) {\r\n return;\r\n }\r\n $event.preventDefault();\r\n this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });\r\n }\r\n @CheckDisabled()\r\n onChipClicked($event: Event) {\r\n $event.preventDefault();\r\n this.chipClicked.emit({ event: $event, data: this.dataRender });\r\n }\r\n\r\n public focus(): void {\r\n this.chipElement?.nativeElement.focus();\r\n }\r\n\r\n get _text() {\r\n const _text = this._rawText;\r\n return (\r\n _text.substring(\r\n 0,\r\n _text.length > this.maxLengthRenderWithoutTooltip ? this.maxLengthRenderWithoutTooltip : _text.length,\r\n ) + (_text.length > this.maxLengthRenderWithoutTooltip ? '...' : '')\r\n );\r\n }\r\n\r\n get _rawText() {\r\n return this.objectField ? (this.dataRender as any)[this.objectField] || '' : this.dataRender || '';\r\n }\r\n}\r\n","<ng-template #itemRender>\n <div\n #chipElement\n class=\"flex items-center gap-2 break-words rounded-medium border border-grayscale-50 bg-grayscale-10 px-1.5 text-center text-xs focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [ngClass]=\"{\n 'hover:bg-grayscale-30': !disabled,\n 'opacity-50': disabled,\n 'pointer-events-none': hidePointerEvents(),\n }\"\n role=\"button\"\n [attr.aria-label]=\"_rawText + ', ' + ('platform.angular_components.remove' | translate)\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (click)=\"onChipClicked($event)\"\n (keydown.enter)=\"onChipClicked($event)\"\n (keydown.space)=\"onChipClicked($event)\"\n (keydown.backspace)=\"clickedRemove($event)\"\n (keydown.delete)=\"clickedRemove($event)\"\n [sTooltip]=\"_rawText\"\n [showDelay]=\"0\"\n [visible]=\"showTooltip ? _rawText.length > maxLengthRenderWithoutTooltip : false\"\n >\n @if (templateRef) {\n <ng-container *ngTemplateOutlet=\"templateRef; context: { $implicit: dataRender, text: _text }\">\n </ng-container>\n } @else {\n {{ _text }}\n }\n @if (showRemove()) {\n <i\n [class]=\"removeIconClass()\"\n aria-hidden=\"true\"\n [ngClass]=\"{ 'cursor-pointer': !disabled, 'cursor-default': disabled }\"\n (click)=\"clickedRemove($event)\"\n ></i>\n }\n </div>\n</ng-template>\n\n@if (objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (!objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren,\r\n inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nimport { KeyFilterPattern, KeyFilter } from 'primeng/keyfilter';\r\n\r\nimport { ChipAddEvent, ChipClickEvent, ChipRemoveEvent } from '../models/chip-models';\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { isNullOrUndefined, randomHash } from '@seniorsistemas/angular-components/utils';\r\nimport { CheckDisabled, restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';\r\nimport { ChipItemComponent } from '../chip-item/chip-item.component';\r\n\r\n/**\r\n * @description Componente de entrada de tags/chips que permite adicionar e remover\r\n * itens de texto livremente ou a partir de uma lista. Suporta templates personalizados\r\n * para renderização de cada chip, filtro de teclas, limite de itens e duplicação configurável.\r\n * Implementa {@link ControlValueAccessor} para uso em formulários Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <s-chips\r\n * formControlName=\"tags\"\r\n * placeholder=\"Adicionar tag...\"\r\n * [max]=\"10\"\r\n * [allowDuplicated]=\"false\"\r\n * (added)=\"onAdded($event)\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ChipsComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [ChipItemComponent, FormsModule, KeyFilter],\r\n})\r\nexport class ChipsComponent implements AfterViewInit, ControlValueAccessor {\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n public newItem = '';\r\n public chipTemplate?: TemplateRef<any>;\r\n\r\n /** @description Desabilita a interação com o componente. @default false */\r\n @Input()\r\n public disabled = false;\r\n\r\n /** @description Chave do objeto usada para exibição quando os itens são objetos complexos. @default '' */\r\n @Input()\r\n public field = '';\r\n\r\n /** @description Lista de chips atualmente exibidos. @default [] */\r\n @Input()\r\n public value: any[] = [];\r\n\r\n /** @description Texto de placeholder exibido no campo de entrada quando vazio. */\r\n @Input()\r\n public placeholder: string | undefined;\r\n\r\n /** @description Número máximo de chips permitidos. @default Infinity */\r\n @Input()\r\n public max = Infinity;\r\n\r\n /** @description Comprimento máximo do texto de cada chip. @default Infinity */\r\n @Input()\r\n public maxLength = Infinity;\r\n\r\n /** @description Identificador do elemento `<input>` interno. Gerado automaticamente se não informado. */\r\n @Input()\r\n public inputId = `chips-${randomHash()}`;\r\n\r\n /** @description Permite a adição de chips com valor duplicado. @default true */\r\n @Input()\r\n public allowDuplicated = true;\r\n\r\n /** @description Quando `false`, a comparação de duplicatas é case-insensitive. @default false */\r\n @Input()\r\n public caseSensitiveDuplication = false;\r\n\r\n /** @description Adiciona o chip ao pressionar Tab. @default true */\r\n @Input()\r\n public addOnTab = true;\r\n\r\n /** @description Adiciona o chip ao perder o foco (blur). @default true */\r\n @Input()\r\n public addOnBlur = true;\r\n\r\n /** @description Caractere separador que, quando digitado, confirma a adição de um novo chip. @default '' */\r\n @Input()\r\n public separator = '';\r\n\r\n /** @description Coloca o foco automaticamente no campo de entrada ao renderizar o componente. @default false */\r\n @Input()\r\n public autofocus = false;\r\n\r\n /** @description Texto informativo exibido abaixo do campo de entrada. @default '' */\r\n @Input()\r\n public infoLabel = '';\r\n\r\n /** @description Expressão regular ou padrão predefinido (PrimeNG KeyFilterPattern) para filtrar teclas aceitas. */\r\n @Input()\r\n public keyFilter?: RegExp | KeyFilterPattern;\r\n\r\n /** @description Exibe tooltip ao passar o mouse sobre chips com texto truncado. @default true */\r\n @Input()\r\n public showTooltip = true;\r\n\r\n /** @description Número máximo de caracteres exibidos diretamente no chip sem aplicar truncamento. @default 20 */\r\n @Input()\r\n public maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Emitido quando um novo chip é adicionado com sucesso. */\r\n @Output()\r\n public added = new EventEmitter<ChipAddEvent>();\r\n\r\n /** @description Emitido quando um chip é removido pelo usuário. */\r\n @Output()\r\n public removed = new EventEmitter<ChipRemoveEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada recebe foco. */\r\n @Output()\r\n public focused = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada perde o foco. */\r\n @Output()\r\n public focusLost = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o usuário clica em um chip existente. */\r\n @Output()\r\n public chipClicked = new EventEmitter<ChipClickEvent>();\r\n\r\n /** @description Emitido sempre que a lista de chips é alterada (adição ou remoção). */\r\n @Output()\r\n public valueChange = new EventEmitter<string[] | any[]>();\r\n\r\n @ContentChildren(TemplateDirective)\r\n private readonly templates: QueryList<TemplateDirective> | null = null;\r\n\r\n @ViewChild('input', { read: ElementRef })\r\n private readonly input: ElementRef<HTMLElement> | null = null;\r\n\r\n @ViewChildren(ChipItemComponent)\r\n private readonly chipItems: QueryList<ChipItemComponent> | null = null;\r\n\r\n public onChange: (value: string[] | any[]) => void = () => {};\r\n public onTouched: (value: string[] | any[]) => void = () => {};\r\n\r\n private isTabEventActive = false;\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.autofocus && this.input) {\r\n this.input.nativeElement.focus();\r\n }\r\n if (this.templates) {\r\n this.chipTemplate = this.templates.find((x) => x.type === 'chip-container')?.template;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n public writeValue(obj: string[] | any[]): void {\r\n if (isNullOrUndefined(obj)) {\r\n obj = [];\r\n }\r\n this.value = obj;\r\n }\r\n\r\n public registerOnChange(fn: (value: string[] | any[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n @CheckDisabled()\r\n public onKeydown($event: KeyboardEvent) {\r\n const isEnter = $event.key === 'Enter';\r\n const isSeparator = this.separator && $event.key === this.separator;\r\n const eventKeyIsTab = $event.key === 'Tab';\r\n if (eventKeyIsTab) {\r\n const tabTimeoutTime = 50;\r\n this.isTabEventActive = true;\r\n setTimeout(() => {\r\n this.isTabEventActive = false;\r\n }, tabTimeoutTime);\r\n if (this.addOnTab) {\r\n this.addItem();\r\n }\r\n return;\r\n }\r\n if (isEnter || isSeparator) {\r\n $event.preventDefault();\r\n this.addItem();\r\n }\r\n }\r\n\r\n public onInputFocus($event: FocusEvent) {\r\n this.focused.emit($event);\r\n }\r\n\r\n @CheckDisabled()\r\n public onInputLostFocus($event: FocusEvent) {\r\n if (!this.addOnBlur || this.isTabEventActive) {\r\n return;\r\n }\r\n this.addItem();\r\n this.focusLost.emit($event);\r\n }\r\n\r\n public removeItem({ itemIndex, event }: { itemIndex: number; event: Event }) {\r\n const _removedItem = this.value[itemIndex];\r\n this.value.splice(itemIndex, 1);\r\n this.removed.emit({ value: _removedItem, originalEvent: event });\r\n this.cdr.detectChanges();\r\n restoreFocusAfterRemoval(this.chipItems?.toArray() ?? [], itemIndex, () => this.input?.nativeElement.focus());\r\n }\r\n\r\n public onChipClicked({ event, data }: { event: Event; data: string | Object }) {\r\n this.chipClicked.emit({ value: data, originalEvent: event });\r\n }\r\n\r\n private addItem() {\r\n if (!this.hasValueToAdd()) {\r\n return;\r\n }\r\n if (this.isMaxReached()) {\r\n return;\r\n }\r\n if (!this.isValidItemLength()) {\r\n return;\r\n }\r\n const valueToAdd = this.getValueToAdd();\r\n if (!this.hasDuplicatedItem()) {\r\n this.storeValue(valueToAdd);\r\n }\r\n this.newItem = '';\r\n }\r\n\r\n private hasValueToAdd(): boolean {\r\n return !!this.newItem;\r\n }\r\n\r\n private isMaxReached(): boolean {\r\n return !!(this.max && this.value.length === this.max);\r\n }\r\n\r\n private isValidItemLength(): boolean {\r\n return this.maxLength ? this.newItem.length <= this.maxLength : true;\r\n }\r\n\r\n private getMappedValues(): string[] {\r\n return this.field ? this.value.map((x) => x[this.field]) : this.value;\r\n }\r\n\r\n private getValueToAdd(): any {\r\n return this.field ? { [this.field]: this.newItem } : this.newItem;\r\n }\r\n\r\n private hasDuplicatedItem(): boolean {\r\n if (this.allowDuplicated) {\r\n return false;\r\n }\r\n const mappedValues = this.getMappedValues();\r\n return !!mappedValues.find((x) => {\r\n if (this.caseSensitiveDuplication) {\r\n return x === this.newItem;\r\n } else {\r\n return x.toLowerCase() === this.newItem.toLowerCase();\r\n }\r\n });\r\n }\r\n\r\n private storeValue(value: any) {\r\n this.value = [...this.value, value];\r\n this.added.emit({ value });\r\n this.valueChange.emit(this.value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n}\r\n","<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border border-grayscale-30 bg-grayscale-0 list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-offset-[-2px] focus-within:outline-[var(--s-focus-ring-color,#0090ff)]\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n","import { NgModule } from '@angular/core';\r\nimport { ChipsComponent } from './chips/chips.component';\r\n\r\n@NgModule({\r\n imports: [ChipsComponent],\r\n exports: [ChipsComponent],\r\n})\r\nexport class ChipsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-chips.mjs","sources":["../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.ts","../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.html","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.ts","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.html","../../projects/angular-components/chips/src/lib/chips/chips.module.ts","../../projects/angular-components/chips/src/seniorsistemas-angular-components-chips.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, input, Input, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n/**\r\n * @description Componente interno de item individual de chip, utilizado pelo {@link ChipsComponent}.\r\n * Responsável pela renderização do texto, tooltip e botão de remoção de cada chip.\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chip-item',\r\n templateUrl: './chip-item.component.html',\r\n standalone: true,\r\n imports: [TooltipDirective, NgTemplateOutlet, NgClass, TranslateModule],\r\n})\r\nexport class ChipItemComponent {\r\n /** @description Conteúdo a ser exibido no chip (string ou objeto). Campo obrigatório. */\r\n @Input({ required: true }) dataRender!: string | Object;\r\n /** @description Chave do objeto usada para exibição quando `dataRender` for um objeto. */\r\n @Input() objectField: string | undefined;\r\n /** @description Desabilita os eventos de clique do chip. Campo obrigatório. */\r\n @Input({ required: true }) disabled = false;\r\n /** @description Template personalizado para renderização interna do chip. */\r\n @Input() templateRef!: TemplateRef<any> | undefined;\r\n /** @description Índice do chip na lista, usado ao emitir o evento de remoção. Campo obrigatório. */\r\n @Input({ required: true }) itemIndex = -1;\r\n /** @description Habilita o tooltip para chips com texto truncado. Campo obrigatório. */\r\n @Input({ required: true }) showTooltip = true;\r\n /** @description Limite de caracteres exibidos antes de truncar o texto do chip.*/\r\n @Input() maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Controla a exibição do botão de remoção do chip. */\r\n showRemove = input(true);\r\n\r\n /** @description Classe do ícone do botão de remoção do chip. @default 'fas fa-times' */\r\n removeIconClass = input('fas fa-times');\r\n\r\n /** @description Controla a exibição de eventos de ponteiro no chip. @default false */\r\n hidePointerEvents = input(false);\r\n\r\n /** @description Emitido ao clicar no botão de remoção do chip. */\r\n @Output() clickRemove = new EventEmitter<{ itemIndex: number; event: Event }>();\r\n /** @description Emitido ao clicar sobre o chip (fora do botão de remoção). */\r\n @Output() chipClicked = new EventEmitter<{ event: Event; data: string | Object }>();\r\n\r\n @ViewChild('chipElement')\r\n private readonly chipElement?: ElementRef<HTMLElement>;\r\n\r\n @CheckDisabled()\r\n clickedRemove($event: Event) {\r\n if (!this.showRemove()) {\r\n return;\r\n }\r\n $event.preventDefault();\r\n this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });\r\n }\r\n @CheckDisabled()\r\n onChipClicked($event: Event) {\r\n $event.preventDefault();\r\n this.chipClicked.emit({ event: $event, data: this.dataRender });\r\n }\r\n\r\n public focus(): void {\r\n this.chipElement?.nativeElement.focus();\r\n }\r\n\r\n get _text() {\r\n const _text = this._rawText;\r\n return (\r\n _text.substring(\r\n 0,\r\n _text.length > this.maxLengthRenderWithoutTooltip ? this.maxLengthRenderWithoutTooltip : _text.length,\r\n ) + (_text.length > this.maxLengthRenderWithoutTooltip ? '...' : '')\r\n );\r\n }\r\n\r\n get _rawText() {\r\n return this.objectField ? (this.dataRender as any)[this.objectField] || '' : this.dataRender || '';\r\n }\r\n}\r\n","<ng-template #itemRender>\n <div\n #chipElement\n class=\"flex items-center gap-2 break-words rounded-medium border border-grayscale-50 bg-grayscale-10 px-1.5 text-center text-xs focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [ngClass]=\"{\n 'hover:bg-grayscale-30': !disabled,\n 'opacity-50': disabled,\n 'pointer-events-none': hidePointerEvents(),\n }\"\n role=\"button\"\n [attr.aria-label]=\"_rawText + ', ' + ('platform.angular_components.remove' | translate)\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (click)=\"onChipClicked($event)\"\n (keydown.enter)=\"onChipClicked($event)\"\n (keydown.space)=\"onChipClicked($event)\"\n (keydown.backspace)=\"clickedRemove($event)\"\n (keydown.delete)=\"clickedRemove($event)\"\n [sTooltip]=\"_rawText\"\n [showDelay]=\"0\"\n [visible]=\"showTooltip ? _rawText.length > maxLengthRenderWithoutTooltip : false\"\n >\n @if (templateRef) {\n <ng-container *ngTemplateOutlet=\"templateRef; context: { $implicit: dataRender, text: _text }\">\n </ng-container>\n } @else {\n {{ _text }}\n }\n @if (showRemove()) {\n <i\n [class]=\"removeIconClass()\"\n aria-hidden=\"true\"\n [ngClass]=\"{ 'cursor-pointer': !disabled, 'cursor-default': disabled }\"\n (click)=\"clickedRemove($event)\"\n ></i>\n }\n </div>\n</ng-template>\n\n@if (objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (!objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren,\r\n inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nimport { KeyFilterPattern, KeyFilter } from 'primeng/keyfilter';\r\n\r\nimport { ChipAddEvent, ChipClickEvent, ChipRemoveEvent } from '../models/chip-models';\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { isNullOrUndefined, randomHash } from '@seniorsistemas/angular-components/utils';\r\nimport { CheckDisabled, restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';\r\nimport { ChipItemComponent } from '../chip-item/chip-item.component';\r\n\r\n/**\r\n * @description Componente de entrada de tags/chips que permite adicionar e remover\r\n * itens de texto livremente ou a partir de uma lista. Suporta templates personalizados\r\n * para renderização de cada chip, filtro de teclas, limite de itens e duplicação configurável.\r\n * Implementa {@link ControlValueAccessor} para uso em formulários Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <s-chips\r\n * formControlName=\"tags\"\r\n * placeholder=\"Adicionar tag...\"\r\n * [max]=\"10\"\r\n * [allowDuplicated]=\"false\"\r\n * (added)=\"onAdded($event)\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ChipsComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [ChipItemComponent, FormsModule, KeyFilter],\r\n})\r\nexport class ChipsComponent implements AfterViewInit, ControlValueAccessor {\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n public newItem = '';\r\n public chipTemplate?: TemplateRef<any>;\r\n\r\n /** @description Desabilita a interação com o componente. @default false */\r\n @Input()\r\n public disabled = false;\r\n\r\n /** @description Chave do objeto usada para exibição quando os itens são objetos complexos. @default '' */\r\n @Input()\r\n public field = '';\r\n\r\n /** @description Lista de chips atualmente exibidos. @default [] */\r\n @Input()\r\n public value: any[] = [];\r\n\r\n /** @description Texto de placeholder exibido no campo de entrada quando vazio. */\r\n @Input()\r\n public placeholder: string | undefined;\r\n\r\n /** @description Número máximo de chips permitidos. @default Infinity */\r\n @Input()\r\n public max = Infinity;\r\n\r\n /** @description Comprimento máximo do texto de cada chip. @default Infinity */\r\n @Input()\r\n public maxLength = Infinity;\r\n\r\n /** @description Identificador do elemento `<input>` interno. Gerado automaticamente se não informado. */\r\n @Input()\r\n public inputId = `chips-${randomHash()}`;\r\n\r\n /** @description Permite a adição de chips com valor duplicado. @default true */\r\n @Input()\r\n public allowDuplicated = true;\r\n\r\n /** @description Quando `false`, a comparação de duplicatas é case-insensitive. @default false */\r\n @Input()\r\n public caseSensitiveDuplication = false;\r\n\r\n /** @description Adiciona o chip ao pressionar Tab. @default true */\r\n @Input()\r\n public addOnTab = true;\r\n\r\n /** @description Adiciona o chip ao perder o foco (blur). @default true */\r\n @Input()\r\n public addOnBlur = true;\r\n\r\n /** @description Caractere separador que, quando digitado, confirma a adição de um novo chip. @default '' */\r\n @Input()\r\n public separator = '';\r\n\r\n /** @description Coloca o foco automaticamente no campo de entrada ao renderizar o componente. @default false */\r\n @Input()\r\n public autofocus = false;\r\n\r\n /** @description Texto informativo exibido abaixo do campo de entrada. @default '' */\r\n @Input()\r\n public infoLabel = '';\r\n\r\n /** @description Expressão regular ou padrão predefinido (PrimeNG KeyFilterPattern) para filtrar teclas aceitas. */\r\n @Input()\r\n public keyFilter?: RegExp | KeyFilterPattern;\r\n\r\n /** @description Exibe tooltip ao passar o mouse sobre chips com texto truncado. @default true */\r\n @Input()\r\n public showTooltip = true;\r\n\r\n /** @description Número máximo de caracteres exibidos diretamente no chip sem aplicar truncamento. @default 20 */\r\n @Input()\r\n public maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Emitido quando um novo chip é adicionado com sucesso. */\r\n @Output()\r\n public added = new EventEmitter<ChipAddEvent>();\r\n\r\n /** @description Emitido quando um chip é removido pelo usuário. */\r\n @Output()\r\n public removed = new EventEmitter<ChipRemoveEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada recebe foco. */\r\n @Output()\r\n public focused = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada perde o foco. */\r\n @Output()\r\n public focusLost = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o usuário clica em um chip existente. */\r\n @Output()\r\n public chipClicked = new EventEmitter<ChipClickEvent>();\r\n\r\n /** @description Emitido sempre que a lista de chips é alterada (adição ou remoção). */\r\n @Output()\r\n public valueChange = new EventEmitter<string[] | any[]>();\r\n\r\n @ContentChildren(TemplateDirective)\r\n private readonly templates: QueryList<TemplateDirective> | null = null;\r\n\r\n @ViewChild('input', { read: ElementRef })\r\n private readonly input: ElementRef<HTMLElement> | null = null;\r\n\r\n @ViewChildren(ChipItemComponent)\r\n private readonly chipItems: QueryList<ChipItemComponent> | null = null;\r\n\r\n public onChange: (value: string[] | any[]) => void = () => {};\r\n public onTouched: (value: string[] | any[]) => void = () => {};\r\n\r\n private isTabEventActive = false;\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.autofocus && this.input) {\r\n this.input.nativeElement.focus();\r\n }\r\n if (this.templates) {\r\n this.chipTemplate = this.templates.find((x) => x.type === 'chip-container')?.template;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n public writeValue(obj: string[] | any[]): void {\r\n if (isNullOrUndefined(obj)) {\r\n obj = [];\r\n }\r\n this.value = obj;\r\n }\r\n\r\n public registerOnChange(fn: (value: string[] | any[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n @CheckDisabled()\r\n public onKeydown($event: KeyboardEvent) {\r\n const isEnter = $event.key === 'Enter';\r\n const isSeparator = this.separator && $event.key === this.separator;\r\n const eventKeyIsTab = $event.key === 'Tab';\r\n if (eventKeyIsTab) {\r\n const tabTimeoutTime = 50;\r\n this.isTabEventActive = true;\r\n setTimeout(() => {\r\n this.isTabEventActive = false;\r\n }, tabTimeoutTime);\r\n if (this.addOnTab) {\r\n this.addItem();\r\n }\r\n return;\r\n }\r\n if (isEnter || isSeparator) {\r\n $event.preventDefault();\r\n this.addItem();\r\n }\r\n }\r\n\r\n public onInputFocus($event: FocusEvent) {\r\n this.focused.emit($event);\r\n }\r\n\r\n @CheckDisabled()\r\n public onInputLostFocus($event: FocusEvent) {\r\n if (!this.addOnBlur || this.isTabEventActive) {\r\n return;\r\n }\r\n this.addItem();\r\n this.focusLost.emit($event);\r\n }\r\n\r\n public removeItem({ itemIndex, event }: { itemIndex: number; event: Event }) {\r\n const _removedItem = this.value[itemIndex];\r\n this.value.splice(itemIndex, 1);\r\n this.removed.emit({ value: _removedItem, originalEvent: event });\r\n this.cdr.detectChanges();\r\n restoreFocusAfterRemoval(this.chipItems?.toArray() ?? [], itemIndex, () => this.input?.nativeElement.focus());\r\n }\r\n\r\n public onChipClicked({ event, data }: { event: Event; data: string | Object }) {\r\n this.chipClicked.emit({ value: data, originalEvent: event });\r\n }\r\n\r\n private addItem() {\r\n if (!this.hasValueToAdd()) {\r\n return;\r\n }\r\n if (this.isMaxReached()) {\r\n return;\r\n }\r\n if (!this.isValidItemLength()) {\r\n return;\r\n }\r\n const valueToAdd = this.getValueToAdd();\r\n if (!this.hasDuplicatedItem()) {\r\n this.storeValue(valueToAdd);\r\n }\r\n this.newItem = '';\r\n }\r\n\r\n private hasValueToAdd(): boolean {\r\n return !!this.newItem;\r\n }\r\n\r\n private isMaxReached(): boolean {\r\n return !!(this.max && this.value.length === this.max);\r\n }\r\n\r\n private isValidItemLength(): boolean {\r\n return this.maxLength ? this.newItem.length <= this.maxLength : true;\r\n }\r\n\r\n private getMappedValues(): string[] {\r\n return this.field ? this.value.map((x) => x[this.field]) : this.value;\r\n }\r\n\r\n private getValueToAdd(): any {\r\n return this.field ? { [this.field]: this.newItem } : this.newItem;\r\n }\r\n\r\n private hasDuplicatedItem(): boolean {\r\n if (this.allowDuplicated) {\r\n return false;\r\n }\r\n const mappedValues = this.getMappedValues();\r\n return !!mappedValues.find((x) => {\r\n if (this.caseSensitiveDuplication) {\r\n return x === this.newItem;\r\n } else {\r\n return x.toLowerCase() === this.newItem.toLowerCase();\r\n }\r\n });\r\n }\r\n\r\n private storeValue(value: any) {\r\n this.value = [...this.value, value];\r\n this.added.emit({ value });\r\n this.valueChange.emit(this.value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n}\r\n","<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-offset-[-2px] focus-within:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [class.border-grayscale-30]=\"!disabled\"\n [class.bg-grayscale-0]=\"!disabled\"\n [class.border-grayscale-20]=\"disabled\"\n [class.bg-grayscale-5]=\"disabled\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n","import { NgModule } from '@angular/core';\r\nimport { ChipsComponent } from './chips/chips.component';\r\n\r\n@NgModule({\r\n imports: [ChipsComponent],\r\n exports: [ChipsComponent],\r\n})\r\nexport class ChipsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -29,11 +29,11 @@ import { take } from 'rxjs';
|
|
|
29
29
|
class PopupConfirmDialogComponent {
|
|
30
30
|
confirmDialog;
|
|
31
31
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PopupConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PopupConfirmDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PopupConfirmDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n priority=\"link\"\n />\n }\n <s-button\n [label]=\"confirmDialog.acceptLabel\"\n (clicked)=\"activeDialog.close(true)\"\n [priority]=\"confirmDialog.acceptPriority ?? 'primary'\"\n />\n </div>\n </div>\n </ng-template>\n </s-dialog>\n}\n", dependencies: [{ kind: "component", type: DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside", "closeAriaLabel"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "directive", type: i1.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel", "ariaLabel"], outputs: ["clicked", "tieredMenuOpened", "tieredMenuClosed"] }] });
|
|
33
33
|
}
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PopupConfirmDialogComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
|
-
args: [{ standalone: true, imports: [DialogComponent, TemplateModule, ButtonModule], template: "@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n
|
|
36
|
+
args: [{ standalone: true, imports: [DialogComponent, TemplateModule, ButtonModule], template: "@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n priority=\"link\"\n />\n }\n <s-button\n [label]=\"confirmDialog.acceptLabel\"\n (clicked)=\"activeDialog.close(true)\"\n [priority]=\"confirmDialog.acceptPriority ?? 'primary'\"\n />\n </div>\n </div>\n </ng-template>\n </s-dialog>\n}\n" }]
|
|
37
37
|
}] });
|
|
38
38
|
|
|
39
39
|
class ConfirmDialogService {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-confirm-dialog.mjs","sources":["../../projects/angular-components/confirm-dialog/src/lib/popup-confirm-dialog/popup-confirm-dialog.component.ts","../../projects/angular-components/confirm-dialog/src/lib/popup-confirm-dialog/popup-confirm-dialog.component.html","../../projects/angular-components/confirm-dialog/src/lib/confirm-dialog.service.ts","../../projects/angular-components/confirm-dialog/src/seniorsistemas-angular-components-confirm-dialog.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { ConfirmDialog } from '../confirm-dialog.model';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n/**\n * @description Componente interno do diálogo de confirmação, renderizado pelo `ConfirmDialogService`.\n * Exibe uma janela modal com uma mensagem, título e botões de aceitar e rejeitar configuráveis.\n * Não deve ser instanciado diretamente; utilize `ConfirmDialogService.open()` para exibi-lo.\n *\n * @example\n * ```ts\n * // Uso via serviço\n * this.confirmDialogService.open({\n * header: 'Confirmar exclusão',\n * message: 'Deseja realmente excluir este item?',\n * acceptLabel: 'Excluir',\n * rejectLabel: 'Cancelar',\n * accept: () => this.delete(),\n * });\n * ```\n *\n * @category Overlay\n */\n@Component({\n standalone: true,\n imports: [DialogComponent, TemplateModule, ButtonModule],\n templateUrl: './popup-confirm-dialog.component.html',\n})\nexport class PopupConfirmDialogComponent {\n confirmDialog!: ConfirmDialog;\n}\n\n","@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-confirm-dialog.mjs","sources":["../../projects/angular-components/confirm-dialog/src/lib/popup-confirm-dialog/popup-confirm-dialog.component.ts","../../projects/angular-components/confirm-dialog/src/lib/popup-confirm-dialog/popup-confirm-dialog.component.html","../../projects/angular-components/confirm-dialog/src/lib/confirm-dialog.service.ts","../../projects/angular-components/confirm-dialog/src/seniorsistemas-angular-components-confirm-dialog.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { ConfirmDialog } from '../confirm-dialog.model';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n/**\n * @description Componente interno do diálogo de confirmação, renderizado pelo `ConfirmDialogService`.\n * Exibe uma janela modal com uma mensagem, título e botões de aceitar e rejeitar configuráveis.\n * Não deve ser instanciado diretamente; utilize `ConfirmDialogService.open()` para exibi-lo.\n *\n * @example\n * ```ts\n * // Uso via serviço\n * this.confirmDialogService.open({\n * header: 'Confirmar exclusão',\n * message: 'Deseja realmente excluir este item?',\n * acceptLabel: 'Excluir',\n * rejectLabel: 'Cancelar',\n * accept: () => this.delete(),\n * });\n * ```\n *\n * @category Overlay\n */\n@Component({\n standalone: true,\n imports: [DialogComponent, TemplateModule, ButtonModule],\n templateUrl: './popup-confirm-dialog.component.html',\n})\nexport class PopupConfirmDialogComponent {\n confirmDialog!: ConfirmDialog;\n}\n\n","@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n priority=\"link\"\n />\n }\n <s-button\n [label]=\"confirmDialog.acceptLabel\"\n (clicked)=\"activeDialog.close(true)\"\n [priority]=\"confirmDialog.acceptPriority ?? 'primary'\"\n />\n </div>\n </div>\n </ng-template>\n </s-dialog>\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ConfirmDialog } from './confirm-dialog.model';\nimport { DialogService } from '@seniorsistemas/angular-components/dialog';\nimport { PopupConfirmDialogComponent } from './popup-confirm-dialog/popup-confirm-dialog.component';\nimport { take } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmDialogService {\n private readonly dialogService = inject(DialogService);\n\n confirm(confirmDialog: ConfirmDialog) {\n const dialogRef = this.dialogService.open(PopupConfirmDialogComponent);\n\n dialogRef.componentInstance.confirmDialog = confirmDialog;\n\n dialogRef.closed.pipe(take(1)).subscribe((response) => {\n if (response) {\n confirmDialog.accept()\n } else if (!response && confirmDialog.reject) {\n confirmDialog.reject();\n }\n })\n\n dialogRef.dismissed.pipe(take(1)).subscribe(() => {\n if (confirmDialog.reject) {\n confirmDialog.reject()\n }\n })\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|