lib-portal-angular 0.0.59 → 0.0.61

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.
@@ -26,6 +26,11 @@ export * from './lib/components/select/select.component';
26
26
  export * from './lib/components/tables/data-table.component';
27
27
  export * from './lib/components/textarea/textarea.component';
28
28
  export * from './lib/components/tree-node/tree-node.component';
29
+ // Diretivas
30
+ export * from './lib/directive/autofocus-directive/autofocus.directive';
31
+ export * from './lib/directive/cep-mask.directive';
32
+ export * from './lib/directive/cnpj-mask.directive';
33
+ export * from './lib/directive/cpf-mask.directive';
29
34
  // Enums
30
35
  export * from './lib/enum/ButtonClassesEnum';
31
36
  // Módulos
@@ -38,4 +43,4 @@ export * from './lib/components/confirmation/confirmation.service';
38
43
  export * from './lib/components/tables/data-paginate.service';
39
44
  export * from './lib/service/refresh-service.service';
40
45
  export * from './lib/service/route-parameter.service';
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILGNBQWM7QUFDZCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxRQUFRO0FBQ1IsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxVQUFVO0FBQ1YsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFHaEQsVUFBVTtBQUNWLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygc2ltLWxpYlxuICpcbiAqIEVzdGUgYXJxdWl2byBleHBvcnRhIHRvZG9zIG9zIGNvbXBvbmVudGVzLCBlbnVtcyBlIG3Ds2R1bG9zIG5lY2Vzc8Ohcmlvc1xuICogcGFyYSBxdWUgb3MgY29uc3VtaWRvcmVzIGRhIGJpYmxpb3RlY2EgcG9zc2FtIHV0aWxpesOhLWxvcyBlbSBzdWFzIGFwbGljYcOnw7Vlcy5cbiAqL1xuXG4vLyBDb21wb25lbnRlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWIvdGFiLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlYXJjaC1jdXN0b21lci9zZWFyY2gtY3VzdG9tZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3VzdG9tLXN3aXRjaC9jdXN0b20tc3dpdGNoLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FwcC1iYWNrZ3JvdW5kL2FwcC1iYWNrZ3JvdW5kLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2ljLXJlZ2lzdHJhdGlvbi9iYXNpYy1yZWdpc3RyYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29kZS1oaWdobGlnaHQvY29kZS1oaWdobGlnaHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdXN0b20tcGFnaW5hdGlvbi9jdXN0b20tcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbXB1dC9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3JhZGlvL3JhZGlvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZXMvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90cmVlLW5vZGUvdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5cbi8vIEVudW1zXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnVtL0J1dHRvbkNsYXNzZXNFbnVtJztcblxuLy8gTcOzZHVsb3NcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29tcG9uZW50cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaWNvbnMvbHVjaWRlLWljb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9saWItcG9ydGFsLWFuZ3VsYXIubW9kdWxlJztcblxuXG4vLyBTZXJ2aWNlXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FsZXJ0L25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFibGVzL2RhdGEtcGFnaW5hdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3JlZnJlc2gtc2VydmljZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvcm91dGUtcGFyYW1ldGVyLnNlcnZpY2UnO1xuXG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILGNBQWM7QUFDZCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxZQUFZO0FBQ1osY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxRQUFRO0FBQ1IsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxVQUFVO0FBQ1YsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFHaEQsVUFBVTtBQUNWLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygc2ltLWxpYlxuICpcbiAqIEVzdGUgYXJxdWl2byBleHBvcnRhIHRvZG9zIG9zIGNvbXBvbmVudGVzLCBlbnVtcyBlIG3Ds2R1bG9zIG5lY2Vzc8Ohcmlvc1xuICogcGFyYSBxdWUgb3MgY29uc3VtaWRvcmVzIGRhIGJpYmxpb3RlY2EgcG9zc2FtIHV0aWxpesOhLWxvcyBlbSBzdWFzIGFwbGljYcOnw7Vlcy5cbiAqL1xuXG4vLyBDb21wb25lbnRlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWIvdGFiLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlYXJjaC1jdXN0b21lci9zZWFyY2gtY3VzdG9tZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3VzdG9tLXN3aXRjaC9jdXN0b20tc3dpdGNoLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FwcC1iYWNrZ3JvdW5kL2FwcC1iYWNrZ3JvdW5kLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2ljLXJlZ2lzdHJhdGlvbi9iYXNpYy1yZWdpc3RyYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29kZS1oaWdobGlnaHQvY29kZS1oaWdobGlnaHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdXN0b20tcGFnaW5hdGlvbi9jdXN0b20tcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbXB1dC9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3JhZGlvL3JhZGlvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZXMvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90cmVlLW5vZGUvdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5cbi8vIERpcmV0aXZhc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL2F1dG9mb2N1cy1kaXJlY3RpdmUvYXV0b2ZvY3VzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvY2VwLW1hc2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9jbnBqLW1hc2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9jcGYtbWFzay5kaXJlY3RpdmUnO1xuXG4vLyBFbnVtc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW51bS9CdXR0b25DbGFzc2VzRW51bSc7XG5cbi8vIE3Ds2R1bG9zXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2x1Y2lkZS1pY29ucy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGliLXBvcnRhbC1hbmd1bGFyLm1vZHVsZSc7XG5cblxuLy8gU2VydmljZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hbGVydC9ub3RpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhYmxlcy9kYXRhLXBhZ2luYXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9yZWZyZXNoLXNlcnZpY2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3JvdXRlLXBhcmFtZXRlci5zZXJ2aWNlJztcblxuIl19
@@ -1014,6 +1014,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1014
1014
  type: Output
1015
1015
  }] } });
1016
1016
 
1017
+ class CepMaskDirective {
1018
+ constructor(el, renderer) {
1019
+ this.el = el;
1020
+ this.renderer = renderer;
1021
+ this.enabled = false; // Define como opcional e padrão desabilitado
1022
+ }
1023
+ onInputChange(event) {
1024
+ if (!this.enabled)
1025
+ return; // Não aplica a máscara se não estiver habilitada
1026
+ // Obtém o valor atual e remove todos os caracteres não numéricos
1027
+ let initialValue = this.el.nativeElement.value.replace(/\D/g, '');
1028
+ // Limita o número de caracteres a 8 para CEP
1029
+ if (initialValue.length > 8) {
1030
+ initialValue = initialValue.slice(0, 8);
1031
+ }
1032
+ // Aplica a máscara de CEP
1033
+ const formattedValue = this.formatCep(initialValue);
1034
+ // Atualiza o valor do input se necessário
1035
+ if (formattedValue !== this.el.nativeElement.value) {
1036
+ this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);
1037
+ // Dispara um evento de input para atualizar o modelo
1038
+ if (event.target.dispatchEvent) {
1039
+ const newEvent = new Event('input', { bubbles: true });
1040
+ event.target.dispatchEvent(newEvent);
1041
+ }
1042
+ }
1043
+ }
1044
+ formatCep(value) {
1045
+ // Aplica a formatação de CEP: 12345-678
1046
+ return value.replace(/(\d{5})(\d)/, '$1-$2');
1047
+ }
1048
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CepMaskDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
1049
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CepMaskDirective, selector: "[cepMask]", inputs: { enabled: ["cepMask", "enabled"] }, host: { listeners: { "input": "onInputChange($event)" } }, ngImport: i0 }); }
1050
+ }
1051
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CepMaskDirective, decorators: [{
1052
+ type: Directive,
1053
+ args: [{
1054
+ selector: '[cepMask]',
1055
+ }]
1056
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { enabled: [{
1057
+ type: Input,
1058
+ args: ['cepMask']
1059
+ }], onInputChange: [{
1060
+ type: HostListener,
1061
+ args: ['input', ['$event']]
1062
+ }] } });
1063
+
1064
+ class CnpjMaskDirective {
1065
+ constructor(el, renderer) {
1066
+ this.el = el;
1067
+ this.renderer = renderer;
1068
+ this.enabled = false; // Define como opcional e padrão desabilitado
1069
+ }
1070
+ onInputChange(event) {
1071
+ if (!this.enabled)
1072
+ return; // Não aplica a máscara se não estiver habilitada
1073
+ // Obtém o valor atual e remove todos os caracteres não numéricos
1074
+ let initialValue = this.el.nativeElement.value.replace(/\D/g, '');
1075
+ // Limita o número de caracteres a 14 para CNPJ
1076
+ if (initialValue.length > 14) {
1077
+ initialValue = initialValue.slice(0, 14);
1078
+ }
1079
+ // Aplica a máscara de CNPJ
1080
+ const formattedValue = this.formatCnpj(initialValue);
1081
+ // Atualiza o valor do input se necessário
1082
+ if (formattedValue !== this.el.nativeElement.value) {
1083
+ this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);
1084
+ // Dispara um evento de input para atualizar o modelo
1085
+ if (event.target.dispatchEvent) {
1086
+ const newEvent = new Event('input', { bubbles: true });
1087
+ event.target.dispatchEvent(newEvent);
1088
+ }
1089
+ }
1090
+ }
1091
+ formatCnpj(value) {
1092
+ // Aplica a formatação de CNPJ: 12.345.678/0001-00
1093
+ return value
1094
+ .replace(/(\d{2})(\d)/, '$1.$2')
1095
+ .replace(/(\d{3})(\d)/, '$1.$2')
1096
+ .replace(/(\d{3})(\d{4})(\d)/, '$1/$2-$3')
1097
+ .replace(/(\d{4})(\d{2})$/, '$1-$2');
1098
+ }
1099
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CnpjMaskDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
1100
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CnpjMaskDirective, selector: "[cnpjMask]", inputs: { enabled: ["cnpjMask", "enabled"] }, host: { listeners: { "input": "onInputChange($event)" } }, ngImport: i0 }); }
1101
+ }
1102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CnpjMaskDirective, decorators: [{
1103
+ type: Directive,
1104
+ args: [{
1105
+ selector: '[cnpjMask]',
1106
+ }]
1107
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { enabled: [{
1108
+ type: Input,
1109
+ args: ['cnpjMask']
1110
+ }], onInputChange: [{
1111
+ type: HostListener,
1112
+ args: ['input', ['$event']]
1113
+ }] } });
1114
+
1115
+ class CpfMaskDirective {
1116
+ constructor(el, renderer) {
1117
+ this.el = el;
1118
+ this.renderer = renderer;
1119
+ this.enabled = false; // Define como opcional e padrão desabilitado
1120
+ }
1121
+ onInputChange(event) {
1122
+ if (!this.enabled)
1123
+ return;
1124
+ // Obtém o valor atual e remove todos os caracteres não numéricos
1125
+ let initialValue = this.el.nativeElement.value.replace(/\D/g, '');
1126
+ // Limita o número de caracteres a 11 para CPF
1127
+ if (initialValue.length > 11) {
1128
+ initialValue = initialValue.slice(0, 11);
1129
+ }
1130
+ // Aplica a máscara de CPF
1131
+ const formattedValue = this.formatCpf(initialValue);
1132
+ // Atualiza o valor do input se necessário
1133
+ if (formattedValue !== this.el.nativeElement.value) {
1134
+ this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);
1135
+ // Dispara um evento de input para atualizar o modelo
1136
+ if (event.target.dispatchEvent) {
1137
+ const newEvent = new Event('input', { bubbles: true });
1138
+ event.target.dispatchEvent(newEvent);
1139
+ }
1140
+ }
1141
+ }
1142
+ formatCpf(value) {
1143
+ // Aplica a formatação de CPF: 123.456.789-00
1144
+ return value
1145
+ .replace(/(\d{3})(\d)/, '$1.$2')
1146
+ .replace(/(\d{3})(\d)/, '$1.$2')
1147
+ .replace(/(\d{3})(\d{1,2})$/, '$1-$2');
1148
+ }
1149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CpfMaskDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
1150
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CpfMaskDirective, selector: "[cpfMask]", inputs: { enabled: ["cpfMask", "enabled"] }, host: { listeners: { "input": "onInputChange($event)" } }, ngImport: i0 }); }
1151
+ }
1152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CpfMaskDirective, decorators: [{
1153
+ type: Directive,
1154
+ args: [{
1155
+ selector: '[cpfMask]',
1156
+ }]
1157
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { enabled: [{
1158
+ type: Input,
1159
+ args: ['cpfMask']
1160
+ }], onInputChange: [{
1161
+ type: HostListener,
1162
+ args: ['input', ['$event']]
1163
+ }] } });
1164
+
1017
1165
  class InputComponent {
1018
1166
  constructor(authService) {
1019
1167
  this.authService = authService;
@@ -1028,6 +1176,11 @@ class InputComponent {
1028
1176
  this.required = false;
1029
1177
  this.pattern = null;
1030
1178
  this.autofocus = false;
1179
+ this.useCpfMask = false;
1180
+ this.useCnpjMask = false;
1181
+ this.useCepMask = false;
1182
+ this.onlyNumbers = false;
1183
+ this.validateInput = false;
1031
1184
  this.labelFontWeight = 400;
1032
1185
  this.inputEvent = new EventEmitter();
1033
1186
  this.changeEvent = new EventEmitter();
@@ -1039,17 +1192,116 @@ class InputComponent {
1039
1192
  this.onChangeCallback = () => { };
1040
1193
  this.onTouchedCallback = () => { };
1041
1194
  this.value = '';
1195
+ this.showErrorModal = false;
1196
+ this.errorMessage = '';
1042
1197
  this.subscriptions = [];
1043
1198
  }
1199
+ getInputType() {
1200
+ return this.onlyNumbers ? 'tel' : this.type;
1201
+ }
1044
1202
  onInput(event) {
1045
1203
  const inputElement = event.target;
1046
- this.value = inputElement.value;
1204
+ let inputValue = inputElement.value;
1205
+ if ((this.onlyNumbers) && !(this.useCpfMask || this.useCnpjMask || this.useCepMask)) {
1206
+ inputValue = inputValue.replace(/\D/g, '');
1207
+ }
1208
+ this.value = inputValue;
1047
1209
  this.onChangeCallback(this.value);
1048
1210
  this.inputEvent.emit(event);
1211
+ // Validar imediatamente após o último caractere numérico para CPF, CNPJ ou CEP
1212
+ const numericValue = this.value.replace(/\D/g, ''); // Remove todos os caracteres não numéricos
1213
+ if (this.validateInput) {
1214
+ if (this.useCpfMask && numericValue.length === 11 && !this.validateCpf(numericValue)) {
1215
+ this.clearAndShowValidationError('CPF inválido. Por favor, insira um CPF correto.');
1216
+ }
1217
+ else if (this.useCnpjMask && numericValue.length === 14 && !this.validateCnpj(numericValue)) {
1218
+ this.clearAndShowValidationError('CNPJ inválido. Por favor, insira um CNPJ correto.');
1219
+ }
1220
+ else if (this.useCepMask && numericValue.length === 8 && !this.validateCep(numericValue)) {
1221
+ this.clearAndShowValidationError('CEP inválido. Por favor, insira um CEP correto.');
1222
+ }
1223
+ }
1224
+ }
1225
+ onKeyDown(event) {
1226
+ if (this.onlyNumbers && !/^\d$/.test(event.key) && event.key !== 'Backspace' && event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {
1227
+ event.preventDefault();
1228
+ }
1049
1229
  }
1050
1230
  onChange(event) {
1231
+ const numericValue = this.value.replace(/\D/g, ''); // Remove todos os caracteres não numéricos
1232
+ // Validação também ocorre no blur para casos onde o input não está completo
1233
+ if (this.validateInput) {
1234
+ if (this.useCpfMask && !this.validateCpf(numericValue)) {
1235
+ this.clearAndShowValidationError('CPF inválido. Por favor, insira um CPF correto.');
1236
+ }
1237
+ else if (this.useCnpjMask && !this.validateCnpj(numericValue)) {
1238
+ this.clearAndShowValidationError('CNPJ inválido. Por favor, insira um CNPJ correto.');
1239
+ }
1240
+ else if (this.useCepMask && !this.validateCep(numericValue)) {
1241
+ this.clearAndShowValidationError('CEP inválido. Por favor, insira um CEP correto.');
1242
+ }
1243
+ }
1051
1244
  this.changeEvent.emit(event);
1052
1245
  }
1246
+ validateCpf(cpf) {
1247
+ if (cpf.length !== 11 || /^(\d)\1+$/.test(cpf))
1248
+ return false;
1249
+ let sum = 0, remainder;
1250
+ for (let i = 1; i <= 9; i++)
1251
+ sum += parseInt(cpf.substring(i - 1, i)) * (11 - i);
1252
+ remainder = (sum * 10) % 11;
1253
+ if (remainder === 10 || remainder === 11)
1254
+ remainder = 0;
1255
+ if (remainder !== parseInt(cpf.substring(9, 10)))
1256
+ return false;
1257
+ sum = 0;
1258
+ for (let i = 1; i <= 10; i++)
1259
+ sum += parseInt(cpf.substring(i - 1, i)) * (12 - i);
1260
+ remainder = (sum * 10) % 11;
1261
+ if (remainder === 10 || remainder === 11)
1262
+ remainder = 0;
1263
+ return remainder === parseInt(cpf.substring(10, 11));
1264
+ }
1265
+ validateCnpj(cnpj) {
1266
+ if (cnpj.length !== 14)
1267
+ return false;
1268
+ let length = cnpj.length - 2;
1269
+ let numbers = cnpj.substring(0, length);
1270
+ let digits = cnpj.substring(length);
1271
+ let sum = 0, pos = length - 7;
1272
+ for (let i = length; i >= 1; i--) {
1273
+ sum += parseInt(numbers.charAt(length - i)) * pos--;
1274
+ if (pos < 2)
1275
+ pos = 9;
1276
+ }
1277
+ let result = sum % 11 < 2 ? 0 : 11 - sum % 11;
1278
+ if (result !== parseInt(digits.charAt(0)))
1279
+ return false;
1280
+ length = length + 1;
1281
+ numbers = cnpj.substring(0, length);
1282
+ sum = 0;
1283
+ pos = length - 7;
1284
+ for (let i = length; i >= 1; i--) {
1285
+ sum += parseInt(numbers.charAt(length - i)) * pos--;
1286
+ if (pos < 2)
1287
+ pos = 9;
1288
+ }
1289
+ result = sum % 11 < 2 ? 0 : 11 - sum % 11;
1290
+ return result === parseInt(digits.charAt(1));
1291
+ }
1292
+ validateCep(cep) {
1293
+ return /^\d{8}$/.test(cep); // Valida apenas números, sem considerar a máscara
1294
+ }
1295
+ clearAndShowValidationError(message) {
1296
+ this.value = ''; // Limpa o valor do ngModel
1297
+ this.onChangeCallback(this.value); // Atualiza o ngModel com o valor limpo
1298
+ this.errorMessage = message;
1299
+ this.showErrorModal = true;
1300
+ }
1301
+ closeModal() {
1302
+ this.showErrorModal = false;
1303
+ this.errorMessage = '';
1304
+ }
1053
1305
  onFocus(event) {
1054
1306
  this.focusEvent.emit(event);
1055
1307
  }
@@ -1090,69 +1342,23 @@ class InputComponent {
1090
1342
  this.subscriptions.forEach(sub => sub.unsubscribe());
1091
1343
  }
1092
1344
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputComponent, deps: [{ token: AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
1093
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InputComponent, selector: "argenta-custom-input", inputs: { label: "label", placeholder: "placeholder", id: "id", type: "type", disabled: "disabled", readonly: "readonly", maxlength: "maxlength", minlength: "minlength", required: "required", pattern: "pattern", autofocus: "autofocus", labelFontWeight: "labelFontWeight", permissions: "permissions" }, outputs: { inputEvent: "inputEvent", changeEvent: "changeEvent", focusEvent: "focusEvent", blurEvent: "blurEvent", keyupEvent: "keyupEvent", keydownEvent: "keydownEvent", keypressEvent: "keypressEvent" }, providers: [
1345
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InputComponent, selector: "argenta-custom-input", inputs: { label: "label", placeholder: "placeholder", id: "id", type: "type", disabled: "disabled", readonly: "readonly", maxlength: "maxlength", minlength: "minlength", required: "required", pattern: "pattern", autofocus: "autofocus", useCpfMask: "useCpfMask", useCnpjMask: "useCnpjMask", useCepMask: "useCepMask", onlyNumbers: "onlyNumbers", validateInput: "validateInput", labelFontWeight: "labelFontWeight", permissions: "permissions" }, outputs: { inputEvent: "inputEvent", changeEvent: "changeEvent", focusEvent: "focusEvent", blurEvent: "blurEvent", keyupEvent: "keyupEvent", keydownEvent: "keydownEvent", keypressEvent: "keypressEvent" }, providers: [
1094
1346
  {
1095
1347
  provide: NG_VALUE_ACCESSOR,
1096
1348
  useExisting: forwardRef(() => InputComponent),
1097
1349
  multi: true
1098
1350
  }
1099
- ], ngImport: i0, template: `
1100
- <div *ngIf="hasPermission()" class="form-group">
1101
- <label [for]="id" [ngClass]="'label-styles'">{{ label }}</label>
1102
- <input [type]="type"
1103
- class="form-control custom-input"
1104
- [id]="id"
1105
- [placeholder]="placeholder"
1106
- [(ngModel)]="value"
1107
- (input)="onInput($event)"
1108
- (change)="onChange($event)"
1109
- (focus)="onFocus($event)"
1110
- (blur)="onBlur($event)"
1111
- (keyup)="keyupEvent.emit($event)"
1112
- (keydown)="keydownEvent.emit($event)"
1113
- (keypress)="keypressEvent.emit($event)"
1114
- [disabled]="disabled"
1115
- [readonly]="readonly"
1116
- [attr.maxlength]="maxlength"
1117
- [attr.minlength]="minlength"
1118
- [required]="required"
1119
- [attr.pattern]="pattern"
1120
- [autofocus]="autofocus">
1121
- </div>
1122
- `, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.form-group{font-family:Inter,Arial,sans-serif;font-size:1rem;font-weight:700}.form-check-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem}.form-check-label{width:623px;height:19px;top:1608px;left:133px;gap:0px;opacity:0px;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.form-label{font-family:Inter,Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1351
+ ], ngImport: i0, template: "<div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <input [type]=\"getInputType()\"\n class=\"form-control custom-input\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"keyupEvent.emit($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keypress)=\"keypressEvent.emit($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [attr.pattern]=\"pattern\"\n [autofocus]=\"autofocus\"\n [cpfMask]=\"useCpfMask\" \n [cnpjMask]=\"useCnpjMask\" \n [cepMask]=\"useCepMask\">\n\n <!-- Modal para exibir mensagens de erro -->\n <div class=\"modal-overlay\" *ngIf=\"showErrorModal\">\n <div class=\"modal-content\">\n <span class=\"close\" (click)=\"closeModal()\">&times;</span>\n <p>{{ errorMessage }}</p>\n <button class=\"btn-ok\" (click)=\"closeModal()\">OK</button>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.form-group{font-family:Inter,Arial,sans-serif;font-size:1rem;font-weight:700}.form-check-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem}.form-check-label{width:623px;height:19px;top:1608px;left:133px;gap:0px;opacity:0px;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.form-label{font-family:Inter,Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;padding:25px 30px;border-radius:8px;width:360px;text-align:center;position:relative;box-shadow:0 4px 12px #0003}.close{position:absolute;top:10px;right:15px;cursor:pointer;font-size:20px;color:#555;transition:color .3s}.close:hover{color:#f44336}.btn-ok{margin-top:20px;padding:8px 20px;border:none;background-color:#00444c;color:#fff;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .3s,transform .2s}.btn-ok:hover{background-color:#00363d;transform:scale(1.05)}.btn-ok:active{transform:scale(.98)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CepMaskDirective, selector: "[cepMask]", inputs: ["cepMask"] }, { kind: "directive", type: CnpjMaskDirective, selector: "[cnpjMask]", inputs: ["cnpjMask"] }, { kind: "directive", type: CpfMaskDirective, selector: "[cpfMask]", inputs: ["cpfMask"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1123
1352
  }
1124
1353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputComponent, decorators: [{
1125
1354
  type: Component,
1126
- args: [{ selector: 'argenta-custom-input', template: `
1127
- <div *ngIf="hasPermission()" class="form-group">
1128
- <label [for]="id" [ngClass]="'label-styles'">{{ label }}</label>
1129
- <input [type]="type"
1130
- class="form-control custom-input"
1131
- [id]="id"
1132
- [placeholder]="placeholder"
1133
- [(ngModel)]="value"
1134
- (input)="onInput($event)"
1135
- (change)="onChange($event)"
1136
- (focus)="onFocus($event)"
1137
- (blur)="onBlur($event)"
1138
- (keyup)="keyupEvent.emit($event)"
1139
- (keydown)="keydownEvent.emit($event)"
1140
- (keypress)="keypressEvent.emit($event)"
1141
- [disabled]="disabled"
1142
- [readonly]="readonly"
1143
- [attr.maxlength]="maxlength"
1144
- [attr.minlength]="minlength"
1145
- [required]="required"
1146
- [attr.pattern]="pattern"
1147
- [autofocus]="autofocus">
1148
- </div>
1149
- `, providers: [
1355
+ args: [{ selector: 'argenta-custom-input', providers: [
1150
1356
  {
1151
1357
  provide: NG_VALUE_ACCESSOR,
1152
1358
  useExisting: forwardRef(() => InputComponent),
1153
1359
  multi: true
1154
1360
  }
1155
- ], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.form-group{font-family:Inter,Arial,sans-serif;font-size:1rem;font-weight:700}.form-check-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem}.form-check-label{width:623px;height:19px;top:1608px;left:133px;gap:0px;opacity:0px;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.form-label{font-family:Inter,Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}\n"] }]
1361
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <input [type]=\"getInputType()\"\n class=\"form-control custom-input\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"keyupEvent.emit($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keypress)=\"keypressEvent.emit($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [attr.pattern]=\"pattern\"\n [autofocus]=\"autofocus\"\n [cpfMask]=\"useCpfMask\" \n [cnpjMask]=\"useCnpjMask\" \n [cepMask]=\"useCepMask\">\n\n <!-- Modal para exibir mensagens de erro -->\n <div class=\"modal-overlay\" *ngIf=\"showErrorModal\">\n <div class=\"modal-content\">\n <span class=\"close\" (click)=\"closeModal()\">&times;</span>\n <p>{{ errorMessage }}</p>\n <button class=\"btn-ok\" (click)=\"closeModal()\">OK</button>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.form-group{font-family:Inter,Arial,sans-serif;font-size:1rem;font-weight:700}.form-check-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem}.form-check-label{width:623px;height:19px;top:1608px;left:133px;gap:0px;opacity:0px;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.form-label{font-family:Inter,Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;padding:25px 30px;border-radius:8px;width:360px;text-align:center;position:relative;box-shadow:0 4px 12px #0003}.close{position:absolute;top:10px;right:15px;cursor:pointer;font-size:20px;color:#555;transition:color .3s}.close:hover{color:#f44336}.btn-ok{margin-top:20px;padding:8px 20px;border:none;background-color:#00444c;color:#fff;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .3s,transform .2s}.btn-ok:hover{background-color:#00363d;transform:scale(1.05)}.btn-ok:active{transform:scale(.98)}\n"] }]
1156
1362
  }], ctorParameters: function () { return [{ type: AuthService }]; }, propDecorators: { label: [{
1157
1363
  type: Input
1158
1364
  }], placeholder: [{
@@ -1175,6 +1381,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1175
1381
  type: Input
1176
1382
  }], autofocus: [{
1177
1383
  type: Input
1384
+ }], useCpfMask: [{
1385
+ type: Input
1386
+ }], useCnpjMask: [{
1387
+ type: Input
1388
+ }], useCepMask: [{
1389
+ type: Input
1390
+ }], onlyNumbers: [{
1391
+ type: Input
1392
+ }], validateInput: [{
1393
+ type: Input
1178
1394
  }], labelFontWeight: [{
1179
1395
  type: Input
1180
1396
  }], permissions: [{
@@ -2310,6 +2526,9 @@ class ComponentsModule {
2310
2526
  AlertComponent,
2311
2527
  ConfirmationComponent,
2312
2528
  AutofocusDirective,
2529
+ CepMaskDirective,
2530
+ CnpjMaskDirective,
2531
+ CpfMaskDirective,
2313
2532
  CustomPaginationComponent,
2314
2533
  TreeNodeComponent,
2315
2534
  SearchInputComponent,
@@ -2337,6 +2556,10 @@ class ComponentsModule {
2337
2556
  BadgeComponent,
2338
2557
  AlertComponent,
2339
2558
  ConfirmationComponent,
2559
+ AutofocusDirective,
2560
+ CepMaskDirective,
2561
+ CnpjMaskDirective,
2562
+ CpfMaskDirective,
2340
2563
  CustomPaginationComponent,
2341
2564
  TreeNodeComponent,
2342
2565
  SearchInputComponent,
@@ -2373,6 +2596,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2373
2596
  AlertComponent,
2374
2597
  ConfirmationComponent,
2375
2598
  AutofocusDirective,
2599
+ CepMaskDirective,
2600
+ CnpjMaskDirective,
2601
+ CpfMaskDirective,
2376
2602
  CustomPaginationComponent,
2377
2603
  TreeNodeComponent,
2378
2604
  SearchInputComponent,
@@ -2406,6 +2632,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2406
2632
  BadgeComponent,
2407
2633
  AlertComponent,
2408
2634
  ConfirmationComponent,
2635
+ AutofocusDirective,
2636
+ CepMaskDirective,
2637
+ CnpjMaskDirective,
2638
+ CpfMaskDirective,
2409
2639
  CustomPaginationComponent,
2410
2640
  TreeNodeComponent,
2411
2641
  SearchInputComponent,
@@ -2576,5 +2806,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2576
2806
  * Generated bundle index. Do not edit.
2577
2807
  */
2578
2808
 
2579
- export { AlertComponent, AppBackgroundComponent, BadgeComponent, BasicRegistrationComponent, ButtonClasses, ButtonComponent, CardComponent, CheckboxComponent, CodeHighlightComponent, ComponentsModule, ConfirmationComponent, ConfirmationService, CustomPaginationComponent, CustomSwitchComponent, DataPaginateService, DataTableComponent, InputComponent, LibPortalAngularModule, LucideIconsModule, MultiSelectComponent, NotificationService, RadioComponent, RefreshService, RouterParameterService, SearchCustomerComponent, SearchInputComponent, SelectComponent, TabComponent, TextareaComponent, TreeNodeComponent };
2809
+ export { AlertComponent, AppBackgroundComponent, AutofocusDirective, BadgeComponent, BasicRegistrationComponent, ButtonClasses, ButtonComponent, CardComponent, CepMaskDirective, CheckboxComponent, CnpjMaskDirective, CodeHighlightComponent, ComponentsModule, ConfirmationComponent, ConfirmationService, CpfMaskDirective, CustomPaginationComponent, CustomSwitchComponent, DataPaginateService, DataTableComponent, InputComponent, LibPortalAngularModule, LucideIconsModule, MultiSelectComponent, NotificationService, RadioComponent, RefreshService, RouterParameterService, SearchCustomerComponent, SearchInputComponent, SelectComponent, TabComponent, TextareaComponent, TreeNodeComponent };
2580
2810
  //# sourceMappingURL=lib-portal-angular.mjs.map